Sync and Ecco

C++ Custom Engine Game

Sync and Ecco

Development for Sync and Ecco began on the 22nd of July, and for 135 days in a team of 8 we made this vertical slice experience. My role was rather simply titled Programmer, as myself and Lochlan began to build the foundations of the engine and game from the ground up, immediately, because all streams starting on the same day. This meant Lochlan and I had a large challenge ahead with creating tooling and interfaces for our artists and designers ASAP. Given any other circumstance I would never recommend this.

So to get Sync and Ecco working we needed to build a multitude of systems. Early on we decided that to improve collaboration, and give us something to learn with, Lochlan and I would move the engine to an Entity Component System. Using ECS meant that we could both work independently on Systems or Components with minimal conflict errors. There was nothing better for maintaining a friendship and working relationship than a well maintained codebase and documentation, and ECS was the best friend of that friendship.

Working in ECS we had some major systems to implement, Lochlan and I mixed our work load, here are the things I was mostly responsible for:

  • Render System: handles all things rendering, eg. (Some fun notes on this in my Little Articles)
  • Enemy System: Manages enemy movement and abilities (Some fun notes on this in my Little Articles)
  • Physics System: Manages 2D Collisions and Raycasts (All Done In House)
  • Health System: Tracks damage and FX downstream of HP
  • Trigger System: Manages all components that activate / listen for a trigger
I'm incredibly proud of a lot of the features of this game that also don't fit into these small dot points, instead they will have their own small dot points:
  • Deferred PBR Rendering
  • Camera and Spotlight Frustum Culling
  • Static and Dynamic Render Passes
  • Colour, Size, Alpha, Particles
  • Conical Particle Emission
  • Rigid Body Broad Phase
  • Point Light and Spotlight Texture Over Time
  • SSAO, Bloom and HDR
  • Dynamic player or Target Camera Tracking
  • Physics Layers
All of these having as well their own ways to interface with within the engines work-space. (UI courtesy of ImGUI and Lochlan)

Collaboration and Custom Tooling

Development began rather humbly for Sync and Ecco. starting with some basic line rendering in space, control two player concepts around a scene. The scene was built with our alpha level editor, one of the players was driven using our physics engine to emulate a car, and the other with impulses.

Sync and Ecco included a mix of "Tried and Tested", and "Let's Try and Test This", some examples I dive deeper into the Little Articles below, but we also spent a lot of time physically learning how a car should steer and drive, which was 50% code and physics, and 50% me driving around a parking lot. But otherwise Sync and Ecco has been a project of learning, learning about deferred rendering, screen space decals, and SSAO. Learning about how to create tools for our artists to work in user friendly spaces. Learning how to manage our time with important features and deadlines, and learning how to not burn out.
Just like any creative outlet a custom engine project is demanding, but it has been incredibly fulfilling. I am so proud of my 3rd step into a custom physics pipeline, my first steps into a graphics pipeline and some artistic shaders, and my last steps as a formal student.

Links and Beyond

I hope if anything that the work we have done can be a great lesson in custom engine development for novices, so check out the Github and the games download link.

Little Articles

Through out the development of Sync and Ecco, I learnt a lot, some of these things I wrote up individual pieces on, check them out below.

Lines, Lights, and Shadows

Blending accessible artistic tools, and a beautiful game, as a programmer

Learn more

Texture LookUps and Movement

Avoiding path-finding AI while optimising

Learn more