Athena - Milestone 1

I always knew I wanted to make games; everything about making a game sounds exciting and interesting to me. The mixing of creative and analytical talents to make a great game is what I find so fascinating about game development. Imaginary worlds brought to life in a world limited by physical constraints is challenging but extremely rewarding.  However, in my career I don’t think I have had the chance to work in a truly balanced mixture of creative and technical talent. The biggest reason for this is because I myself didn’t have the abilities to contribute to those environments. I have worked on games professionally and as a hobby. I have used many tools including two big game engines, Unity and Unreal Engine. I knew how to make games when given a good foundation, but when there was no foundation or there was a problem with that foundation I was out of my depth. After talking to some of my friends with the knowledge I want to have and who work in parts of the industry that I want to be in it was clear that I needed to find a way to mend these holes in my skill set. This can be tricky with games though, since there aren’t many junior positions at this level and there is intense competition for them when they do open up. So I wanted, and needed, a way to learn about and show my passion for this type of core game development.

So I’m building a game from scratch! It is something that has been done a thousand times before me and will be done a thousand times after me. It is absolutely nothing new that the industry hasn’t seen before. I want to do it because it’s really fun and I think the best way to show how much I love making games.

Athena is a small game based on a bonus mini game in Mario Party 10 called Jewel Drop. It isn’t very complex, but it was a good starting goal suggested by my friend Stephan who is working on Athena with me. Some other high level goals I have for Athena are:

  1. It must be easily presentable and shareable.
  2. Must be easily playable with a friend
  3. Make something fun

That’s enough background for now so onto milestone 1!

Multiple objects and a Camera in World Space

The first milestone that Stephan suggested was that I get a basic representation of the jewels on screen. Now working in graphics is something very foreign to me. I have worked on a few small graphics projects, and have done some tutorials that took me through a small pipeline to get some triangles or objects on screen but never really grasped the core concepts. It was such a different way of thinking that just seeing it and reading about it was never enough for me. So we started talking about what possible paths I could take to accomplish this, one of the goals of the project was easily shareable and presentable so to me that meant it must work on multiple platforms. This meant we were probably going to use OpenGL for the graphics layer. Now we needed to find an implementation of OpenGL to work with and we ended up going with GLFW. We got that hooked up and I got a basic triangle on screen pretty quickly.

Hello Triangle!

 

I started working away on the project trying to figure out how to get to the first milestone. I started drawing more complex objects, creating and using the projection matrix, reading about transformations and different user defined spaces, writing more complex shaders, creating a basic hierarchy system and eventually was able to get a little robot guy into camera space.

As you can see it can also move its arms which were user controlled. This was great! I had multiple objects on screen and I could control them. However I still wanted to get a working camera before saying I had got to the first milestone. So I started reading about world space and its purpose as an intermediate space between model and view space to allow for a camera to exist and move around the world. That led to this:

 

This is the camera moving around the object…I promise!

 

With that I was satisfied enough to say I had reached the first milestone for Athena. I created a system that can place multiple cubes (jewels) into a world and even had a camera object set up to view them.

So this is what I am doing now! Hopefully you found this post interesting. Next time I should have some more details on implementations of more interesting stuff but I thought for now I would start of slow.

Thanks for reading!