DEV Community

Whittington
Whittington

Posted on

Using Unity as a level Editor for a custom Game Engine

One of the big challenges of making a 3d game in a custom engine is that you need some kind of level editor to place items in the world. When starting out it is often easy to just hard-code the positions of the items to test things, but once you have a basic renderer implemented and you start testing different level layouts it becomes quite tedious to manually type in a position, compile and run and hope that you placed your object in the right position. This is one of the biggest challenges I faced in my former project while trying to figure out how I was going to get the artists to test out level designs.

I considered making a level editor, but that ended up being a great deal of work, so after looking into it I decided that a custom level editor was not the way to go about doing level editing for a custom game engine in a 4-month project that was already behind schedule, it would be a huge endeavour and not worth it in the long run. So I decided that it was easier to reverse-engineer the unity test-based scene file and grab the components I needed from there for the game.

In theory it was a good idea and I ran into some issues with the file-parsing due to a lack of experience with parsing YAML files, but I eventually got a working version of my editor that could take a unity scene file using some custom scripts to define metadata about the game objects and the materials and gameplay classes associated with each object and turn it into a custom xml-style scene file that I could then run validation on and then convert into binary to load faster into my game engine.

My solution wasn't super elegant, but it worked and I feel that I saved me a great deal of time in the long run although it took much longer than I intended. I still think that I could've built a terrible level editor faster than I built this unity scene loader, but this scene loader is more robust than anything I could've built in the same amount of time using a custom level editor so I have no regrets about my decision, especially since it was for artists, I rather give the artists a tool like unity than a terrible level editor with no features.

If you wanna check out my implementation of the scene loader check out this repo.

By Joseph Whittington

Top comments (1)

Collapse
 
robinpapa profile image
Robin Papa

Smart solution!