Annulus – Developer Diary – Week 1

Hello World

Annulus is a personal project I started working on in this week. As a game programming student at FIEA, UCF, it is going to be the project which I will be working on through the following 8 weeks as a part of the curriculum. I will be posting updated weekly on my website and its source code is available on my GitHub.

I have always been curious about game physics and after working on a game engine in the previous semester, I knew that I wanted to attempt to work on a physics engine as since I wanted to learn more about software/engine architecture apart from programming physics. Annulus is going to be my attempt at a platform agnostic 2D physics engine written in C++!

Specifications / Objective

The specifications of the physics engine I am attempting to make are as follows:

  • A 2-D physics engine supporting rigid body dynamics.
  • Support for bodies having material properties including density, restitution and friction.
  • Support for discrete collision detection.
  • Collisions between convex polygons using Separating Axis Theorem (SAT).
  • Support for constraints, and as a stretch goal, support for handling systems of constraints.

I will also visualize the collision system in a Testbed project using SFML, a cross platform software development API.

Progress Report

For the first week, my objective was to conduct as much physics related research as possible. Decide on which algorithms I will be using and what resources I will be using as a reference. Decide an API for visualizing the project and setting it up and get the game loop running.

I was able to achieve most of the above except for some concepts of physics. I still have to read more theory on constraints and Gilbert-Johnson-Keerthi algorithm for collision detection. However, as mentioned earlier, I have concluded that I will be using SFML for visualizing the project and set up the game loop in Visual Studio 2015.

I will be using Erin Catto’s Box2D as my reference physics engine along with his material provided through GDC archives and tutorials. I have made a pass at understanding the architecture of Box2D and referred to other physics based projects as well.

Engine Progress

  • Testbed Project
    • Set up SFML.
    • Implemented the game loop.
    • Tested the update call to for physics engine.
  • Annulus (Static Library Project)
    • World Class – A class which will manage all physics entities, their allocation and releasing of resources. The user will call methods on the world object in their game loop.
    • Settings Class – Defines the settings with which define the behavior of a world, such as the gravity for the world.
    • GameClock and GameTime Class – Classes which use the chorno time library of C++ to encapsulate objects useful for maintaining game clock.
    • Integrated GLM Math library.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s