GD2D: dev log #1

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.


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
  • 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., 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:

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, gradlew is not executable by default, so chmod 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 fix
  • haxelib run flow run web – build and run for html5
  • haxelib 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 9999 makes 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!

Leave a Reply

Your email address will not be published. Required fields are marked *