So it’s been quite a while. In case this is the first you’ve heard from this game since the last release, my apologies. I’m really bad at the whole social media thing. I am writing now though to let you know the lights are indeed still on over here! There was a somewhat long period where, to be perfectly honest, not much was getting done. I was in the middle of some major life changes and I just didn’t have the time or mental space to work on any projects. However, things have been settled down for a while now and great progress has been made. Unfortunately the next release will likely not contain a huge amount of new content, but it’s something that’s been a long time coming and will still come with some serious upgrades. Plus, moving forward will be so so much easier. Why is that? Because we have changed engines. This is gonna be a long one, so feel free to use the headers to skip around to sections you care about.
Why are you doing this?
In case you don’t know, a game engine is a software application that helps developers create games. All games have common points that will be implemented the same every time, so a game engine takes care of that basic stuff for you. We started out in Unity. Probably the most well-known engine for its popularity with indie devs. When this project was started, Unity was the game engine I knew the best that was suited to the scope we were looking at. However, during development, I became aware of a new(ish) engine you might have heard of called Godot. It’s open source and has a lot of really nice features for 2D games. Unity is honestly kind of annoying in 2D. It’s really a 3D engine that has a few poorly supported 2D features included, whereas Godot’s 2D is a full 2D engine from the ground up. I got to know Godot over a few months and decided it would be my primary engine for all 2D games going forward. I went back and forth for a bit on whether that meant I should port over Fujiwara Phoenix, but ultimately decided that it was the best move, even though that meant a huge amount of work that would not result in much to show. And that’s because this is not simply an engine port, this is a huge refactor/overhaul of the whole codebase.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Since the focus had been solely on pushing out new content for so long, the Unity project is, frankly, a total mess. It would make YandereDev blush. When you develop games, or any software, every once in a while, you take shortcuts. It’s unavoidable. Sometimes you just need to get something done quickly, sometimes you can’t figure out a better way. One shortcut is fine, dozens are annoying, hundreds are unusable. This accumulation is often called tech debt. Essentially you are “borrowing” your future dev time to finish something more quickly right now. Eventually you have to refactor and “pay back” the debt. Well, Fujiwara Phoenix had accumulated an enormous pile of tech debt and I decided to declare bankruptcy, as it were. The whole project needed to be rebuilt with proper foundations, it just so happens there was also a shiny new engine to do it in.
Okay, so what will we see from this?
Frankly? Not a whole lot. The game will undoubtedly run better. Lots of bugs that I could not get to the bottom of (due to the dense spaghetti at their core) will simply cease to exist. There will certainly be new ones, but the organization of the project should make them much much easier to solve. It will also feel a bit different in a way that’s hard to quantify. I’ve done extensive tuning to make the controls as similar as possible, but it will still run a little differently. There will also be a smattering of new features. Things that I either thought of as I was recreating existing mechanics or had always been planning to add and found a convenient time to do it while building that feature. One example, input buffering. But the true tangible result of all this work will be more frequent releases. It’s already so much faster to add new stuff to the project.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For example, enemies. Previously, adding any new enemy was a whole painstaking process of copying over a bunch of stuff and troubleshooting all the broken dependencies. I eventually created a generic enemy class, but half-assed the implementations and tried to apply it with minimal refactoring so it ended up not being terribly useful. It might take a couple days to just create a single new enemy. Well, for reference, in Godot I recreated every single enemy in the game in about 1 day’s worth of work. I put in the legwork of creating all the basic stuff first, so it can all be reused. This is proper programming practice, it was just difficult to do when the game was still in a massive state of change and prototyping. I should have done this forever ago once we finished the main prototyping. So now when we want to, for example, create 3 new enemies for the new area, the programming side can be easily done in just a day or two (since they will need tuning and playtesting). Now let’s take a look at some of the stuff that’s looking cool in the new version.
NEW STUFF!!
Again, don’t expect anything huge, but here are some of the bits of polish that are already in the new version:
First off, I mentioned it in the last section, but the next release of the game will include input buffering. So for example, if you press the attack button while stunned from taking damage, the attack will come out on the first frame after the stun ends. It’s a small thing but it’s surprising how much it helps the gamefeel. This is much easier now since the player properly implements a state machine.
Next, I want to show you the new effect on the flame dash. Godot has a fairly different particle system than Unity, so all the particle effects will look pretty different. I think the flame dash is major upgrade. Before, we had those weird flamey things above and below the player indicating when it was on cooldown. Now, there is a particle effect that is timed to end right when the cooldown does, so it feels much more natural.

You might have noticed in that gif, but the camera has also been overhauled. Before, there was an issue with the camera tracking directly on the player so it was hard to see ahead. Now, the camera is much more intelligent. It will track ahead in the direction you are moving, but stop tracking if you stop moving. So it will hopefully be still while you fight. Take a look:

The enemies’ behavior is also a bit different now, and I think for the better.
Dialogue scenes no longer start again from the beginning!
The coins have trails!
There are countless little changes like this, and there will only be more as more systems are recreated. I would show more, but if I add any more gifs, the whole game will be done by the time the page finishes loading
So… how much longer?
You’re not gonna like this, but… hard to say. All of the fundamental systems are finished. The biggest and most tedious task left is rebuilding all the levels. This will involve painstakingly placing every single tile for all the levels while cross-referencing the Unity project. I’ve been putting it off for a while, but honestly a few full days of work and it will be done. The other thing I’ve been putting off is the menus. I want to do a real pause menu this time, so look forward to that, but I’m also a complete noob at UI stuff in Godot so it will take a while to get it working well. I’m very reluctant to commit to any kind of date, but I promise, we are close. I have a full-time job now, so free time is a bit limited, but I’ve been very happy with my progress over the last month.
Anything else?
Yes, actually. So we sadly were not able to attend TouhouFest this year. That’s because I moved to Japan late last year. Remember the “major life changes” I mentioned before? Yeah. So getting to TouhouFest has become financially infeasible, but on the bright side, I would like to start building a Japanese audience. My Japanese still needs work, but translating this game would be excellent practice. Although the game itself still has priority, don’t worry. I checked out Reitaisai in May and I definitely want to bring our demo there soon. Perhaps next year.
I want to post more like this across various platforms in the future. The game itself takes priority, though, so no promises.
Thank you truly for all your patience if you’ve stuck around this long. It means so much to me that anyone at all has taken an interest in this game, and I will do everything in my power to make it worth it.
-S