Friday, June 6, 2014

Game Development Resources

Game Development 

Beginning game development, or any large project can often be a daunting task, especially if you don't know quite where to look for help. For those of you who are thinking of developing a game or game engine, I have collected a list of helpful resources including some that I have used when developing my own game engine.

The first list of resources are for learning C++. Chances are if you are making a game, you've decided to use C++ as your language of choice. The following two sites have very good tutorials explaining the features of the language, and cplusplus also has very extensive documentation and example code snippets for the standard C++ library.

Next, making a game requires quite a number of different parts to work, including windowing, textures, sound, models, scripts, text, etc. Fortunately, there are a lot libraries out there to help out with those tasks.

Helpful Libraries:
  • SDL - SDL is a fantastic library. It has cross platform support for setting up windows with opengl rendering contexts, handles key events, and even has libraries for displaying fonts and playing sound. I use SDL in my engine to handle creating the game window and key events.
  • OpenGL - OpenGL is a cross platform graphics library for use when rendering 3D models on screen. It has similar functionality to Microsoft's Direct3D except it works on Linux and Mac computers, not just Windows. The graphics in my engine are powered by an OpenGL renderer.
  • OpenAL soft - This library is to playing sound what OpenGL is to rendering graphics, OpenAL even has an API style that is very similar to OpenGL's API. Additionally, OpenAL is also cross platform. My engine's sound components are powered by OpenAL.
  • FreeImage -FreeImage is a great, cross platform library for loading in images that can be used as textures by OpenGL. It supports a large number of file formats too. My engine uses FreeImage to load entity textures.
  • FreeType - FreeType is a cross platform library for font rendering. I use FreeType in my engine to render all my font textures.
  • Boost - Boost is a very extensive set of libraries supporting Serializing, File IO, Math/Linear Algebra, Networking and more.
  • FreeGLUT - GLUT is an alternative to SDL with support for setting up Windows with OpenGL contexts and has functions for event handling.
 Next, here are a few sites with information about game development.
  • My blog of course :)
  • Wolfire - The folks over at Wolfire games have a great blog that they update frequently chock-full of great posts on game development and design. Definitely check them out!
  • - gamedev is a great resource for game developers of all skill levels. They have lots of informative articles covering any range of game development topics and there are a ton of great QA posts.
  •  - This site has some good lecture slides on basic game engine design.
 Lastly is a list of open-source game engines. These are great for making your own games or if you decide to create your own engine instead of using a preexisting one, these can be great references.

If there was anything you think I missed, or something you would like me to elaborate upon, feel free to add it in the comments below.

Sunday, June 1, 2014

Engine Video Update 3

A new video, hurray!

Since the last video, I split my time between working on the engine code and working on the level editor. Most of my time was spent dealing with font rednering which in my engine is handled by the FreeType2 library. Font rendering is a fascinating subject that had many unseen issues that I ran into. All in all it was very educational reading through their documentation and tutorials. After getting the font rendering module working, I spent some time doing bug fixes, code clean up, and adding features to the level editor to make it much more usable.

Support for transparent images was a happy tangent to the font rendering and required thankfully very little changes to the existing texture code to use. Some other changes that didn't appear in the video are:
  • The engine now supports the loading of Item entities
  • New Font Vertex and Fragment Shaders
  • Better texture management in the level editor

After fixing the font rendering code to correctly size each letter, I plan on running some initial performance tests with the engine. Now that the engine has an on-screen fps counter, I will be making some benchmark/stress levels to see how well the engine holds up when faced with handling large amounts of entities. Other features that are coming up in the near future are improvements to the map editor and initial scripting support for the engine. Stay tuned and feel free to post any questions below!

Wednesday, May 21, 2014

Game Engine Video Update 2

Second blog post with a video!

I finally have gotten around to supporting choosing textures based on the .dat files for entities instead of using hard-coded strings in the engine. I also finished implementing in-engine map loading. This should make it really easy to test out changes and tweaks when we start making levels.

Now that I'm satisfied with the current state of the engine I'll begin working on implementing new features, most likely beginning with font rendering. Look forward to more updates in the coming days!

Tuesday, May 20, 2014

Hello, Internet Based World!

Hello everyone!

These past few weeks I have returned to working on a 2D game engine I started on with the intent to make a video game from it. This last week I added support for movement and jumping, making the engine more responsive to key presses, and then I spent the rest of the week cleaning up the engine code.

A video showing the new jumping mechanic in the engine.

Work on the horizon includes support for different types of in-game objects, font rendering, scripting, and improvements to the level editor, so stay tuned!