FGSL #002 : How I’m building the project

I thought to start out the series it might be worthwhile explaining how I’m going to build the fighting game.The game is being built using C++. No particular engine is being used, just a handful of libraries to help development. In the game’s current iteration I’m using the following api’s and libraries

  • OpenGL for rendering
  • GLFW for handling window management as well as keyboard and mouse input.
  • RapidJson for handling data mangement such as character frame data
  • ImGUI for handling debug gui elements

I’m using GLFW because I’m fairly familiar with the library. It’s a great way to get a window up so you can start focusing on your game and rendering code. I’m using OpenGL to render because it’s most familiar graphics API to me and I’d like to be able to target all the desktop OS’es at the very least. Right now I’m not being too careful about which spec I’m targeting but I’ll probably end up going for OpenGLES2 compliance since that’s the feature set I need and it tends to run on a lot of devices.

You can find out more about GLFW here : http://www.glfw.org/

RapidJson is the solution I chose when looking for Json soulutions via Google and various Json library comparison articles. I’m very happy with the library, it’s very easy to use. The reason I chose to use Json for data representation is really just so I can learn a new data definition format. I could have just as easily used XML but seeing as I’m very familiar with XML I figured I’d try something new. So far it’s working out great. I like the way you can declare arrays of data. Great for frame data definitions.

You can find out more about RapidJson here : https://github.com/miloyip/rapidjson

Here’s an example of some of the current frame data code definitions.

{

"looping": false,

"frame_data":
	[
		{
		"lifespan"		: 72,
		"hitbox_body"	:
			{
				"x"		: 10,
				"y"		: 10,
				"width"	: 150,
				"height": 350
			},
		"hitbox_attack" :
			[
				{
					"x"		: 100,
					"y"		: 100,
					"width"	: 45,
					"height": 100,
					"damage": 5,
					"knockback" : 0.4
				}
			]
		}, 

		{
		"lifespan"		: 114,
		"hitbox_body"	:
			{
				"x"		: 10,
				"y"		: 10,
				"width"	: 150,
				"height": 350
			},
		"hitbox_attack" :
			[
				 {
					"x"		: 50,
					"y"		: 100,
					"width"	: 245,
					"height": 50,
					"damage": 5,
					"knockback" : 0.4
				}
			]
		}
	]
}

ImGUI is a simple immidiate mode GUI system that is renderer agnostic and took essentially no effort to get hooked up in my rendering pipeline. I need a lot of diagnostic information when developing this game and didn’t want to spend a bunch of time making GUI elements. This library fit my needs perfectly. Small and un-intrusive. Exactly what I want in a GUI library.

Here’s a screenshot of the game with debug consoles enabled.

You can find out more about imgui here : https://github.com/ocornut/imgui

Opposable Eating Habits is released

I decided to spend a few more hours on my 3 hour game jam entry “3 Hour Opposite”. It’s now called Opposable Eating Habits.

Half of the time was spent adding some of the gameplay elements I didn’t have time to add during the 3 hours period of the game jam. The other half was exploring Haxe/OpenFL/Haxeflixel’s multiplatform capabilities.

After a small amount of pre-amble the Haxe development stack works surprisingly well. Getting the game to run in both Android and native Windows was relatively quite easy. I would definitely consider using the Haxe stack for mobile development in the future.

You can get the game for Windows or Android at itch.io. Here is the link to the games profile page :

http://alexm.itch.io/opposable-eating-habits

And here’s a screenshot of the game. It looks essentially the same as the 3 hour jam version :

opposableeatinghabits

I’ve been doing some cooking

A hobby I’ve always had is cooking. I was really sad and cancelled my cable when the Canadian food channel pretty much stopped showing cooking shows and only showed reality television or “food porn” shows that aren’t actually educational. That was around the time I cancelled my cable subscription.

Despite not being able to see shows like Chef at Home and French Food at Home I still like to cook when I can. Ideally I’d like to cook more often because even when my food isn’t super healthy , I still feel better than when I get takeout.

Anyways I’ve started a Tumblr where  I post about food I cooked that turned out well. I try not to post the total disasters :)

If you are interested you can visit the blog here:

http://alexmfoodblog.tumblr.com/

Here’s a selection of my favorite entries I’ve put in the blog so far :

 

FGSL #001 : Introduction to the Fighting Game Study Log

I’ve begun a study of how fighting games are made and have decided to start a FGSL (Fighting Game Study Log) blog post series posting my findings and progress developing fighting game code.

Besides being a huge fan of fighting games I’m very interested in how you program a well made fighting game. To do my study I’ve decided to build a fighting game engine and game prototype. Experience making a fighting game is invaluable into learning how making a good fighting game is done. I need to try, fail, and learn about the different techniques that would be used to make a complex fighting game system. I don’t know how long this project will take offhand, I imagine it will go on quite a while at a slow but steady pace. I’ve found so far I’m spending more time reflecting on design than I am programming.

As a software developer, I’m very interested in how I would be able tomanage the relatively complex state machine logic of a fighting game character. I have some ideas which I’m implementing now but I’m sure I’ll learn a lot in the process and have a much better solution in the future.

Right now the game is done in C++ and uses OpenGL for rendering. I’m not using an engine because for this particular project there’s a level of control I want over game loop timing and device input that an engine typically abstracts away too much for my liking. I will get into more specifics on the libraries and technology I’m using in the FGSL blog post.

Over the course of this study I will be posting FGSL blog posts about my findings. They will roughly break up into a few different categories such as :

  • Design : I will focus on different design issues in fighting games. These posts will be high level and won’t involve any programming code or implementation details.
  • Development : Progress on the development of the fighting game I’m writing.
  • Implementation Spotlights : Articles on how I implemented a specific design feature. These will include code samples.
  • Thoughts : On topic fighting game posts that don’t necessarily fit into the other categories

I’m hoping to gain a lot of new knowledge across many different disciplines by doing this study. Some of the categories of knowledge I hope to improve in from this study include game design, c++, game programming, complex finite state machine implementation & art. I hope my findings also prove useful to other people studying similar topics.

Here is a image of the game as it currently stands, the progress of this photo actually reflects where I am development-wise in blog #004 in this series.

1

Sleeping Dogs Definitive Editon

The past 6 months I’ve been working at United Front Games and it’s been really great. It’s a lot of hard work but it’s really interesting work and I’m learning a ton from some of the very seasoned programmers I work with.

The first game I’ve worked on at UFG is now announced : Sleeping Dogs Definitive Edition. It’s been great working on a game I’m personally interested in. It really drives me to want to make the game as good as I possibly can.

Here’s some screenshots of the game.

sleeping-dogs-definitive-edition-crumple_1920 sleeping-dogs-definitive-edition-world_1920 sleeping-dogs-definitive-edition-brutal_1920

3 Hour Opposite

I decided to participate in the 3 hour game jam. The title is pretty self explanatory. They announce a theme on Friday then you have to make a full game in only 3 hours before the end of Sunday. Submissions are then put to the vote during the week and a winner is announced the following week. This weeks theme is “Opposite”.

My entry is called 3 Hour Opposite. As you can see I spent a lot of time working on the title. The game involves you eating small cute green creatures and randomly the stat of the world will change from non-opposite to opposite. When the world changes state to opposite the creatures you are eating are now hunting you.

3houropposite

I managed to get the basic game done in the 3 hours along with about 30 mins of me getting re-acquainted to Haxe/Haxeflixel. I had used Unity the previous week and got stuck troubleshooting for so long I didn’t have anything to show after 3 hours. The lesson is if you are doing a ultra-short game jam then make sure you use your most comfortable development stack.

I plan to spend some more time on this game in the week. I suspect I need about another 5 hours to get the game I want to make. It will be interesting to see how many gains I get for the time spent in the next version of the game.

If you’d like to play the game you can play it here :

http://alexm.itch.io/3-hour-opposite

 

I’m a occasional writer for IndieRetroNews

Every new year I make a list of new things I want to learn, two of those things are to write more and play more indie games, preferably lesser known ones. So when I saw that IndieRetroNews was looking for writers I figured that would be a great way to achieve both those goals. Plus I’m a big retro game fan so the overall focus of the site is quite compatible with my tastes.

So far I’ve written 3 articles. On my first article I was nervous to pull the trigger on publishing it but that fear is subsiding with every article I write.

Here are 3 articles I’ve written so far :

    Console Saga
     Midboss
     Rampage Knights