top of page
Scarlett_edited.jpg

Scarlett is an experimental 2D Component Based Game Engine built on OpenGL in C++. This project initially came out of a much smaller scope. What had started as a small physics project for AIE assessment quickly turned into a larger project. The project was meant to include some simple physics examples, however after completing the required components for the assessment I had the urge to take things further.

First things I added was an interactable cloth and water surface simulation to the program. Our initial requirements for the project only required a rigid body collision system and a spring component system.

Interactable Cloth Simulation:

Cloth simulation utilizing springs and vector lines to connect vertices on the cloth. Using the mouse the player can hold down left click and slice through the cloth, severing the lines between vertices at the point of intersection and replacing them with two new connections, each attached to the connected vertices. This was done through line intersection checks in the physics loop and deleting and allocating new lines on the cloth.

​

Another feature included was stress snapping of the lines. If the stress applied to an edge became too large then the line would snap through the middle and would usually create a follow on effect with more weight being applied to other vertices which snap in turn.

Interactable Water Simulation:

Water surface simulation utilizing spring based mechanics to connect vertices that make up the surface of the water. These springs would have a set point to anchor themselves to which would result in sine wave patterns once disturbed as the springs attempt to reach their anchor point while transferring that energy down the line.

​

Using the mouse the player could drop pebbles into the water and see the water ripple from the point of impact, with the size of the ripple dependent on the speed and mass of the pebble as it was entering the surface.

Scarlett - Demo Game

And for the big one - Scarlett!. Which includes interactable menus through keyboard and mouse, events systems to chain events in game, and full sprite support for both single and animated sprites. List of features in the project included:

​

  • Event System

  • Interactable UI

  • Object Components - Some included types are player controllers and rigidbodies.

  • Player Controllers

  • Sprites - Animated and Single

  • Physics Engine including - Box, Sphere, Plane and Line colliders all with collision and trigger callbacks

​

A level editor is in the works which uses XML to save and store level data, allowing for design work to take place within the engine window.

​

Scarlett also uses the open source C++ Sound Engine irrKlang for audio within the game.

Scarlett In-Game.png

Future Plans:

Now while at the moment I do not have future plans to turn this into a feature complete game engine it has certainly given me crucial insights into the behind the scenes planning of complex systems as well as being lots of fun to make! I hope that given time in the future I can add more content to expand the capabilities of the engine and explore different ways of creating complex systems.

Download Soon

Scarlett - 2D Game Engine

bottom of page