1. Angel Wings
  2. News
  3. Angel Wings Dev Update III: Technical Details (Oct 2020)

Angel Wings Dev Update III: Technical Details (Oct 2020)

Hi all, virusek20 from the dev team here.
In this dev update we'll cover the technical side of Angel Wings and various challenges we had to overcome during development.
Just like the previous Dev Update, this one will also answer the question "Why is this taking so long?"

[h2]Picking the right tools for the job[/h2]
If you've ever tried making a visual novel, you’ve probably heard about RenPy or similar tools, right? We decided to use none of those, in favor of our own custom engine written in C++ using SFML. This was done in order to achieve an experience that reflected the original concept instead of trying to work around existing tech. RenPy basic setup takes only a couple of minutes, while designing everything from scratch is a several month-long project.
As development continued, some more complex problems were encountered. We found that SFML may have not been the best tool for the job. We contemplated switching to yet another library later during the development, but it was already too late at that point and we didn’t want to risk delaying the project yet again. After all, one could keep switching tech like this forever, never getting anything done, so we instead decided to stick with what we had.

[h2]Cutting edge tech for a cutting edge VN[/h2]
SFML is fine for its intended purpose, but the more tech-savvy readers may be puzzled as to why we decided to use a library like this if we claim we want to use cutting edge tech. We've slowly replaced pieces of this library bit by bit with modern technology used in high quality games while still retaining the fast development speeds that SFML offers. Honorable mentions are BC7 texture compression, DDS texture format, ZSTD compression for assets and the usage of modern OpenGL rendering techniques alongside the existing SFML pipeline.
We didn't implement all these features just for the sake of it, but as a result of various technical challenges we've come across during development. Did you know that every single CG and background are at least 4K, some of them even more? Some scenes in the game use dozens of these in short timespans, meaning we had to get around problems like slow HDD speeds and massive memory usage that comes with 4K textures. As it turns out, modern AAA titles have already solved all these issues, so we tried to implement the very same tech into our engine.



[h2]History of the Angel Wings codebase[/h2]
Before I joined, around 2017, there existed a prototype Angel Wings engine written in C# using Monogame that eventually got scrapped in favor of the current C++ based engine. This decision set the development back a few months, but I believe that this decision was worth it in the end. The major reason for such a big change was the fact that one of our lead developers was much more experienced with C++ and didn't want to slow the development down by using a language he wasn't proficient in. I personally never worked on this prototype as I joined after the switch, but as a .NET developer I must admit I would have preferred to refine the old version instead.




[h2]It's about the journey, not the destination[/h2]
While this project has slowly grown into a full-sized game it's always been more of a fun side project for me, so I never opposed choices that involved "reinventing the wheel" in favor of using existing tech. Could we make something similar in an existing engine? Sure, but we wouldn't learn as much as we did during the last few years while working on this game.
Given the fact that neither of us on the dev team are game developers by trade (or at least were at the start of this project), we’ve also gone through several rewrites of certain parts of the game because we realized that we went in a direction that lead to a dead end, so those also accounted for the longer dev time.

[h2]Final thoughts[/h2]
So now you see why the programming part of Angel Wings took as long, if not longer, as the art side covered by the last dev update. Despite maybe sounding a bit bitter about the whole journey, I can safely say I’ve had a lot of fun and that it’s been an invaluable experience for me, both for my professional life as well as making new friends along the way.
As always, please don't hesitate to reach out with questions or comments. We're always happy to provide updates on the game whenever we can.

-virusek20