Benjamin Frohlund
Programmer

My main task during my 7th project at The Game Assembly was the level editor, where I have had to maintain, improve and expand on it to make it able for our team to make the best games possible.
Here below are things I have helped develop or improve to make a better level editor.

Level Editor

Assets Window

In our assets window we are able to interact and see our assets directly in the engine. This makes it possible for our level/graphic designers to drop assets to the window to later drag them in to the scene.

My contribution to the assets window was to refactor and improve performance. When profiling the window we saw a massive loss in performance. I fixed this by mainly making a filewatcher where we only update the window when a file or folder has been changes instead of checking every file every frame.

Hierarchy Window

The hierarchy window shows us the current scene and all the object in the scene.

In the hierarchy we have a tree structure where there's a rootobject and inside are all the children. The blue object shows us that it's a prefab, while white is a normal object. There is also a gray with lower alpha and red. The gray shows a hidden object and red shows that the object has a error.

My contribution involved re-writing when we switch from ECS to component system. I also added the ability to search for a object in the hierarchy, along with being able to sort in alphabetic order and single/multi dragging objects from the hierarchy to other windows.

Inspector Window

The inspector window is used to see information about the selected object. Here we can see and change components, while giving the abilty to add new components and removing existing ones.

For the Inspector I mostly did the converting from our old editor and refactoring it to work with the new editor. I also added the abilty to show more advance information, locking the inspector and overriding prefabs.

Scene Window

The scene window visualizes the game scene. In this window we can fly around and interact with objects.

I contibuted with implemeting ImGuizmo to move the objects. I also made the grid and the little menu where we can choose transform space, options for the grid, rendering options, camera perspectiv and ortographic options and sound on/off.

We also have a game window where we can see the actual game perspective and play testing without having to close and build the game.

Material Edit

To make it possible for our graphics designers to make materials from there textures themselfs.
I made if possible to create a material in the Assets window and then edit it by dubble clicking on it. Then the designers can drag their textures to the right slot.

It was made with the thinking of fast implementation and simple UX.

Modelviewer

Before we had our own level editor, I made a modelviewer for our graphics designers.

With the modelviewer the graphics designers could verify their assets and see how they would look in our own engine.

In the modelviewer we could verify models, test animations, change materials, verify sprites, test lighting and get basic information about the model.

Prefabs

The last project me and my team worked on was a first person shooter against AI and we needed both a way to create enemies during runtime and for the designers to iterate and reuse assets. We decided on making prefabs, similar to Unity's prefabs.

The prefabs are setup so we can: create them from objects in the scene, override them to quickly change multiple instances at the same time and prefabs also have to abilty to keep local changes when being overriden.

As I developed the prefabs myself, it took some time to get them right. Especially when it came to local changes. Because every component handle its own saving and loading I had a hard time figuring out what data was a local change and not.