After a long break, I started to make a new game. Working title: “Gloomy Dungeons 2D” (or GD2D).
It will be 2d remake of Gloomy Dungeons 3D (GD) and Gloomy Dungeons 2: Blood Honor (GD2). While GD and GD2 is old-school 3d shooters, GD2D will be top-down 2d shooter.
Idea
I have long been thinking about creation of new game, but, you know, I’m programmer. Good game is 40% of gameplay + 30% of graphics + 20% of music and only 10% of code. But! I already have pretty good graphics and levels – I can took them from GD and GD2. So basically idea is to remake GD and GD2 into 2D.
I also want to use this game for experiments, so this time I’ll try to make a good AI (let’s be honest, it was boring to shoot monsters in GD and GD2, because the AI was stupid).
Step 1: design document
That’s what how it looks initially:
- Tech
- Haxe
- Photoshop
- Sketch
- Info
- Weapon parameters
- …
- Weapon parameters
- Roadmap
- Make a good game 🙂
- Promotion
…
Haxe because I like this language, especially for cross-platform development. It can generate human-readable JavaScript and C++ code vs (for example) C# compiled into C++ via IL2CPP than to JavaScript via emscripten in Unity (huh, did you ever try to read emscipten-generated code?).
Photoshop because it is great graphics editor, and I have subscription 🙂
Sketch because I bought it some time ago, and, probaly, it can help me with vector graphics.
I do not like the way weapons are set up in GD and GD2, so I should thinking about it in Weapon parameters section.
Promotion – several links to video bloggers who have ever published a review of GD or GD2.
Step 2: engine
GD and GD2 are maked in pure Java exclusively for Android. Other games I made with help of OpenFL. But this time I want to try new game engine. I chose between Kha and luxe engine. Both are great game engines, there are plenty information about them in internet.
I have a little expirience with luxe engine several years ago, and I really like to read Sven’s posts (eg. https://luxeengine.com/tag/dev/), so I chose luxe. I’m a little worried about “luxe 1.0 is coming… Please be aware there is a major transition happening” on the main page, so I saved latest commit hashes of flow, snow and luxe in the text file, to be able to return to this configuration in any time.
Step 3: roadmap
Time to fill roadmap 🙂
- Preparation
- Collect links about luxe engine
- Find out what luxe and snow can do, try every demo application included in show and luxe, record the names of important demos
- Basics
- Learn how to do basic things in luxe
- We have something on the screen
- Output level, hero, monsters, objects; basic movememt and simple animation
- Wow, GD in 2D
- Make something playable, temporary use AI from GD2
- AI
- Improve AI; it can be smarter or simplier, but it should be interesting to play the game; at least something like AI in Wolfenstein 3D or 8Bit Killer
- Mobilization
- Add on-screen controls for mobile
- Sounds
- Find royalty-free music and sounds or buy it (OK, I can reuse sounds from GD, but music should be new). Create sound system.
- Simple polishing
- Add simple lighting, fog of war, particles
- Simple menu
- Simple menu and options screens
- Refactoring
- Chose UI library (port my own from OpenFL to luxe? Use mint?), use it for any UI in the game
- Make everything cool and shiny
- 3D
- Basic 3D rendering (walls and doors)
- Polishing
- Add shaders and camera effects (eg. shake, zoom, etc.)
- Last-time changes
- New icon, new background on menu screen
Step 4: preparation
Several links I found:
- https://luxeengine.com/guide/
- https://luxeengine.com/get/
- https://luxeengine.com/docs/api/
- https://github.com/anissen/awesome-snowkit
- https://snowkit.github.io/flow/flow.html
I know that it shound be much more, but that’s enough for me for the first time.
Than I copied demos and samples from show and luxe to separate folder, and looked at each of them (mostly compiling to html5).
haxelib run flow run– run specified project as native (C++)haxelib run flow run android– create project for android, than you should compile it itself using gradle (btw,gradlewis not executable by default, sochmod a+x gradlew)haxelib run flow ios– create iOS project, there is several problems it project (eg. invalid folder names), but it is easy to fixhaxelib run flow run web– build and run for html5haxelib run flow run web --timeout 9999– by default internal web server stops after finished serving filed; it looks handy, but sometimes is not (eg. test build in several browsers, or hot-debug by modifying compiles javascript files);--timeout 9999makes the server does not stop--debug– append this flag to enable debug build
While watching demos, I notice that luxe doesn’t support .ttf fonts, so there is new task in preparation section:
- Find tool to convert vector fonts into bitmap fonts (especially with support of distance field)
See you later!

2 thoughts on “GD2D: dev log #1”