Znoozing Zoombie

Genre: Adventure

Production time: 8 weeks, 50%

Team size: 14

Engine: TGE (TGA in-house engine)


Main Contributions

For this project I created a lot of background systems, such as a component system, a scene manager, and a rendering system. I also contributed by making one of our obstacles and a simple component for climbing stars.


Component System


In my previous project we didn't have a great way of dealing with game objects, so I wanted to build a system that would make things simpler and more extendable for this project. It might've been a bit ambitious, considering the length of this project, but it was completed in good time and it received a bit of praise from my fellow programmers.

For this system I took inspiration from ECS and tried to keep components of the same type next to each other in memory, in order to better utilize the cache. Unlike ECS, the logic of our components is in the component and not in a separate system. After a stress test I found that it could handle 20k simple components while maintaining 60 frames per second.

This system was later used in future projects, and while it wasn't an issue for this project, I realized a flaw with this approach. As the components were stored in a standard library vector it could be reallocated in memory after adding a component, thus invalidating any pointer to any specific component. If I did this again in the future I would probably try to make a custom allocator to solve this issue.

(The image does not depict all functions of the system, but is only a brief overview of the important parts.)

Animatronic


An obstacle that breathes fire on a timer. I made it so that our level designers were able to change the parameters for it in Unity (which we used as our level editor.)

Stairs


A simple implementation for moving 2D sprites up a slope. Each stair has a direction that is compared with an entity's velocity. The entity is then moved up or down based on this comparison.