As the sole programmer/artist/designer of this game, I tend to keep the work minimum so I can progress as fast as possible when I have time to allocate to the project.
The part 1 of the tool post mentioned about the human readable/editable level files. Editing those files worked well until I starting willing to put more complexity into my levels.
I thought I should give some details about the tools I've developed to help with this.
Complexity = need for new tools
I like each of my level to be crafted to make them most enjoyable and challenging.
Each of them have a theme.
First one is the sewer level: quite fun to build, minimum texture set. I spent most of the time focusing on the layout.
The second one is the city level. this level is way more complex than the sewer one. The reason being that the city has various landmarks and is an "open sky" type of dungeon where buildings rise higher with more textures per grid cell.
After editing this level in a text editor, I started feeling the pain of the lack of "instant feedback" when designing this particular level.
As the beginning of the project, I started a simple level editor, that I eventually left unfinished to concentrate on more important things.
At the time, I wasn't also quite happy on how the editor user experience was.
So I decided to explore new ways of editing levels... let me tell you this adventure :)
2D level editor
What is simpler than a 3D level editor: a 2D one.
The one I took on building ended up like this:
It didn't get really far...
While building it, I quickly realized the limitation of it. one of them is the non flat nature of my levels.
Even by using the projected selected row at the bottom, it was light years away from being an efficient way of editing a level.
I quickly discarded it and put it in my virtual attic of software engineering things that didn't work but are to be kept for history records :)
Isometric level editor
Right after this, I felt strong that isometric would the answer to the 2D editor limitations.
I found a isometric javascript library called sheetengine and started building my level editor.
This one went further in development.
I really loved the style of it. Very neat and clean.
Building a level was rather fast and I could see the potential of it.
When I started using it for my most complex level, it shows that the lack of "free" camera was quite a problem. Especially in high-wall, narrow corridors.
This kind of sent me back to square one...
Back to full 3D
I finally decided to remove the dust on my full 3D level editor and give it a bit more love than I did before.
That is certainly what I should have done in the first place.
Unhappy with the user experience originally, I revamped the way tool selection was done.
From circular icon menus to normal top icon menus, adding shortcuts.
I also added a toggle between orbital camera and first person camera, so I can, at anytime, try it and see how the level looks like from the player point of view.
It has also a full undo/redo stack. That is a feature, I'm pretty happy to have develop for it, as this allow me to "make design mistake" and quickly come back from it and iterate on the design.
From a technical point of view, the level editor is built using Three.js running in a web browser. It loads and saves my human readable level files, so I'm still free to manual edit them if necessary.
As a necessity, I only develop the features that are really need when I need them. This makes the development process really focused and efficient.
I also got a long list of "nice to have" features, that will take me more effort to get to.
So far it serves its purpose very well and I've seen my productivity increased by a lot.
Conclusion
This experience shows that sometimes you have to "walk the path to know the path".
On the positive side, I have now a working level editor and I have learn something in the process.
I'll certainly post some screenshots of the game itself soon as I make good progress building the levels.
Stay tuned :)



No comments:
Post a Comment