I’ve decided to modernise my university first-year “Electric Birds” assignment to use modern C++ (smart pointers, etc.), but encountered some circular reference issues that were due to an error with the original design- this design was fine for the traditional-pointer style that the code used but created issues with smart pointers.
Another issue was that while the game did have a scene class, it dealt with the background and there wasn’t an actual scene manager within the game (GameObjects were just floating around, not good!).

Other issues included:

  • Systems referencing each other, one small change and everything breaks
  • Comparing floats with 0
  • Extremely large blocks of repetitive code

So I made the decision to rewrite the game, it’s true that the ASGE framework (what was used here) would still work but it’s an extremely rickety framework that’s prone to breaking (later versions did improve on this, such as adding multi-platform support), however there’s no support (it’s a framework that one of my old university lecturers wrote).

What am I going to rewrite the game in then? My Charon engine, which I wrote for one of my third-year university modules. It’s a DirectX 11 engine, supporting 3D and 2D objects- I didn’t get very far on it because I was concentrating on making the vertex and constant buffer system efficient, currently it doesn’t even support texturing!
This’ll be rewriting the game, but it’ll also be adding texture support to Charon- the game will be kept 2D and 3D features won’t be worked on (although technically supported).

Once texture support has been added, I’ll make public the repository so you can follow along- the reason for this is because my university work is still being moderated and that I need to make my code sufficiently different. This will just involve cleaning it up so it no longer reflects the relevant portion of my university work.
The Pivotal (project board) can be found here.

No responses yet

    Leave a Reply

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

    This site uses Akismet to reduce spam. Learn how your comment data is processed.