Peek into the new engine
Demonizer’s engine is getting an overhaul for the next update, version 1.5, which I’ve been working on since July (along with client work to fund myself). For the game’s 1st birthday, I want to write a little about what this does for me and how it works.
Why?
As I mentioned before, the shmup genre is growing again, and I have ideas for further development to try to keep up. But the currently released engine is complex and easily broken, so adding content to that takes far longer than it has to. And I had enough ideas on how to do things better that a new engine iteration felt like a more productive endeavor.
Already my biggest gripes are gone from this code. I follow the programming model intended by Lua and LÖVE instead of fighting them. The dodgy, not well thought out imitation of Unity’s script system was replaced with simple function calls. The monolithic map data structure is now a few flat lists, holding only the data needed to draw sprites or spawn objects or what have you. The big bug-prone “AI controller” script was untangled and cut up into handy behavior modules.
Thanks to simpler subsystems with fewer inter-dependencies, I can code and make content with confidence that I won’t always be stuck with a lot of bugs afterward. After 1.1 I dreaded working on the game anymore. Now I’m excited for it again and cursing my day job when it pulls me away.
What’s new?
A new engine is a prime opportunity to expand the game’s capabilities. It wouldn’t be worthwhile if I only did the same stuff better.
The #1 problem I wanted to fix was the limited control over the AI. The old system was designed around a common routine - walk a fixed path at fixed speed and fire at a fixed rate - with awkward hacks inserted to allow minor variations and changes. I broke this up into component functions which AI character routines can pick and mix.
I complemented these with a path point scripting system, a less verbose and more visual option for doing complex actions at specific points. An AI runs each script on itself upon passing through the associated path point. The script calls functions from a small API to choose a different path, jump over a gap, skid to a halt, switch weapons, spin around and fire, gesture, flash an emote, and so on.
In this contrived example, the enemy is alarmed, then uses a few different attacks. The scripts along the path make it start and stop firing at different rates. All of the script API operates on the object itself, so I could use environment-setting to make the syntax simpler than normal Lua code.
This is how it looks in action.
Other additions aren’t too exciting, but can and do make my dev life easier. I moved character stats into a LibreOffice spreadsheet, which I export to CSV files for the game; spreadsheet operations like sorting and formulas are useful for bulk editing and game balancing. Building objects by hand in code is replaced with something I should have taken from Unity - prefabs, made in the map editor and the contents copied into new objects in-game.
What am I doing with all this?
With the new systems and better code, ideas for the game can flow freely again - maybe a new heroine to play with, an extra level or two, new enemy attacks that are more controlled, more dynamic, and more impressive.
At the top of the list is 1.5 Arrange Mode. In this mode humans with blue hearts will also turn around and fight for you after capturing them. You’ll use your main shot to shield a turned human and boost their attack power, or your focus shot to assign fellow succubi to do it. The more they defeat their former comrades, the more bonus you’ll get if they make it off the stage alive.
Here’s an early peek at the turning mechanic.
If all goes well, look forward to version 1.5 by Spring 2022. Thank you.
Get Demonizer
Demonizer
Turn hateful humans into lovable demons in this 90s arcade style shooter
Status | Released |
Author | IoriBranford |
Genre | Shooter, Action |
Tags | 2D, Arcade, Fantasy, Female Protagonist, Medieval, Monsters, Pixel Art, Score Attack, Shoot 'Em Up |
Languages | English |
Accessibility | Configurable controls, Interactive tutorial |
More posts
- Demonizer G arrange soundtrack in the worksJul 16, 2024
- Demonizer G difficulty settingJun 27, 2024
- Demonizer G beta Stage 2May 10, 2024
- Demonizer G in Famitsu magazine!Mar 06, 2024
- Demonizer G at Tokyo Indie Games Summit!Feb 23, 2024
- The 3rd birthday - the 1st demo of the 2nd versionOct 31, 2023
- Shmup Fest sale, 2.0 Stage 1 now open!Sep 25, 2023
- Linux audio fixApr 03, 2023
- 2 years old, 2.0 coming soon (?)Oct 30, 2022
Comments
Log in with itch.io to leave a comment.
Amazing work. Keep it up!
A game that just keeps on giving, thanks for all your work. It seems shmup devs really care for their games, Graze Counter is getting a GM edition, Blue Revolver update is still in the works and now Demonizer ♥