Preview

Suzan2D Overview

This is an overview of the 2D game engine that I am building up, this shows the editor application running - more specifically the animation editor. As you can see, there are more editors in the works to help the game development process along.

Purpose

The purpose of this application is to allow developers to use this application to give them a quick head start in development using C++, SFML and ImGui, along with Lua scripting capabilities and the ability to read JSON files. With the way the application is designed it mainly supports lua scripting, but should be able to support other scripting languages if the developer wanted to extend the scripting class and provide a factory class.

I started working on this because I was working on a game over Christmas to try and learn more about the components design pattern. This game was set to be a simple 2D platformer using SFML and I was programming my own physics with it, but with the Christmas holidays coming to a close and job hunting under way, I didn’t dedicate as much time as I should have for development on that.

I was always thinking I would pick the game back up again after coursework submission, and working on side projects helped me learn more over the last semester of 4th year - with one team creating their own 2D engine. The lead developer for that team, Charlie Gilles, who taught me more about components and how to properly setup a project and comments to an industry standard essentially. He would provide updates about the engine, it was exciting to hear what features he had implemented, and I started to wonder how I would go about implementing engine features myself. Since I have never properly implemented a game engine before, I was keen to see how I would cope with development and if I was able and willing.

I had a 2D game that I wanted to make using SFML, I wanted to make a 2D game engine for SFML games - so I started work on Suzan2D.

This is also good for a portfolio piece to try and gain some form of understanding for the underlying architecture of game engines. I think there is a lot taken for granted with game engines and I believe keeping in tune with and understanding underlying features is good practice.

Current Features

For the development of this project I have been using C++ in visual studio with SFML, ImGui, LUA, and JSON files. Also, I would like to mention the blog posts on Re:creation which have been a massive influence and guidance for this project so far. I would highly recommend checking them out when you get the chance, the game looks great and I look forward to it’s release!

Tools

Core

  • SFML and ImGui integration.
  • Editor and application separation.
      #define EDITOR 1	// To use the editor interface.
    
      #define EDITOR 0	// To play the game.
    
  • Entity-Component system.
  • Integrated scripting system (currently using LUA with LuaBridge).

Animation Editor

  • Selectable entities.
  • Selectable animations.
  • Play/Stop animations.
    Playing/Stopping an Animation

  • Editing animations.
    Editing an Animation

  • Adding animations.
    Adding an Animation

  • Removing animations.
    Removing an Animation

Roadmap

The current direction for this project is as follows:

Remaining Work
Here are features which are planned for this 2D game engine, and are subject to change over the course of development:

  • Create an entity editor.
  • Create a scene editor.
  • Create some basic physics.
  • Create some openGL shader implementations.

Prototype
For the prototype, this is mainly a testbed application to demonstrate the implemented features and is not the game I will be making with this technology.

  • Create 2 levels with the scene editor.
  • Source some royality free art for example gameplay.
  • Show the character moving through the levels.

Future Development

As for future endeavours for this project, I will consider making more editors for an easier development process, but overall from the original design not much will change. Otherwise, I feel development will keep rolling over constantly, there will need to be a point where I draw a line and say that is that.

I have in mind at least one game I would like to develop with this technology, but there is the possibility of making more games if the ideas are there.

Blog Updates

I will try and keep a fairly regular schedule for updating blog posts, but one of the most enjoyable things about this project is not having the pressure of major development deadlines. This project will be progressing at my own comfortable pace.

Thank you for checking this out, and keep an eye out here for any more updates!


Jason Mottershead

Rants about my projects and programming experiences.