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,gradlew
is 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 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!
2 thoughts on “GD2D: dev log #1”