Update to Eighth One Game a Month Game

It’s been a while, but @lace_fire here again with an update to one of previous games, Snowman Day! I’ve tweaked a few of the game’s features to improve the game-play and hope I’ve been successful. Throughout the 2016 year I plan to finish the five remaining unfinished games that I submitted for #1GAM. This past weekend I attended an Indie Arcade event and was happy to verify that Blender and Unity are two software applications some indie game developers use when creating games. Though all of the games created for my year participation in #1GAM were created with Phaser, I do intend to learn Unity once I have completed these games.

Snowman Day Update

My Eighth One Game a Month Game

Happy new year from @lace_fire! For December’s #1GAM, the theme was “Snow Day” and I decided to create a game using solely Blender graphics. What better representation of a snow day than a snowman! I wanted to include some of the Phaser mechanics, something I really haven’t done much with since I joined #1GAM. Although the game is playable, more game design and physics will be required before I can consider this game finished. A couple of things were enforced this month with regards to creating games in general: game-play should take priority over graphics, and if the game-play is enjoyable enough, the motivation to finish will be increased. Good things to keep in mind from here on out!

SnowManDay

Learning: HTML5

Why HTML5?

I have a list of things I’d like to learn about and experiment with for MakingVsPlaying and I decided that HTML5 fits my life the best right now. It applies to some of what I do at work (I admit I have some knowledge here already, but not of version 5 specific tags), it applies to this website, and it is a platform independent language. Also, at work I have access to a learning service called SkillSoft and I found it has three sequential classes on HTML5. I have to take a few classes a year anyway so I’ll achieve two goals at once!

How?

First, I wanted to warm up on a quick overview of what was new in HTML5. I found an article fitting that description with a quick Google search.

After the classes from SkillSoft (or during/in between them), I’ve got another source of examples that I’m looking forward to exploring. Have a look at Hakim’s website and try out some of his games and experiments, especially Sinuous!

Additionally, I’ve found a list of HTML5 game engines (generally also using Javascript) here. I’m going to try a couple of them and find one that I like as I have an idea for a game to build a prototype for.

Expected Results

I expect that I’ll be adding a page (or pages) to this site for me to experiment on. My general goal is to share source for any experiments that I share in this or future learning efforts. However, if I come upon something I think could be turned into a more developed game I might hold onto it for a bit longer and find something else to share more immediately.

After I choose an HTML5 engine, there is this game idea I’ve been incubating for a couple months concerning decomposition. Don’t worry I won’t link you to the wiki article… The original idea came from a walk I took where a particular bit of moss growing under a tree gave me some inspiration. Describing my thoughts so far to a couple friends has confirmed that it might gross some people out. But really it could be “skinned” any number of ways, so first I need to see if the mechanics would be any fun.

Getting Involved

Part of the motivation for creating this website is…motivation! Therefore, in addition to this website, I am planning on getting involved in a number of other ways to help keep myself motivated.

Professional Organizations

Getting involved with a professional organization will provide me with chances to talk about game development and software development in general. However, they also provide other benefits like discounts on travelling and conferences, insurance, and access to lots of knowledge through people, research papers/articles, and publications. As a note, membership does cost money so these may not be options for everyone.

The first organization is obvious: the International Game Development Association or IGDA. The IGDA has a “local” chapter centered on Washington, D.C., and they also have several Special Interest Groups that a member can join covering various specialities. I haven’t picked out any of those just yet, but I know I’ll be joining more than one!

Two other organizations that apply more generally to programming and development are the ACM and the IEEE. The ACM has a Special Interest Group called SIGGRAPH that is about computer graphics and therefore game development. While the IEEE has a Computer Society that generally relates to computer software and a Computational Intelligence Society that specifically runs the IEEE Conference on Computational Intelligence and Games. I haven’t decided which of these two to get involved with, but chances are that I should just join both and see what I can get out of them.

Testing Myself

If you develop games and don’t know what a game jam is, take a moment to educate yourself via Wikipedia. Basically, you create a prototype for a game inside of a single weekend which sounds like a pretty intense experience. I don’t know yet which game jam will be my first, but I am certainly looking forward to participating in one! There is even the possibility that I may be attending my first game jam as one of the organizers. The details are a bit premature at this time, but if it falls into place and happens, expect a much more detailed post all about it! I am just not sure if I will get to actually create a game if I’m helping to host, but it will still serve the purpose of getting involved.

Future MakingVsPlaying Features

The last way that I will talk about getting involved is through this website. Obviously, the website already allows me to share my efforts, but there is more to come! In the future, you can expect to have forums and for these blog posts to be connected to those forums. The forums will be a place where everyone, including myself, can find some motivation and community. Additionally, prototypes that I share will eventually have their source code made open and accessible. The FleaGame will be the first project to have its source code shared — I just need to get around to it and work on the project settings a bit.

Allegro 5.0 and the FleaGame

Due to familiarity I came back to Allegro when I started getting the itch to work on video game development. I found out that Allegro had undergone a major version change and that I had some learning to do. I found a great set of tutorial videos that covered Allegro 5.0 at FixByProximity. My plan was to go through the tutorial videos and then to rewrite my Final Project from my Game Programming Class to prove I had learned enough of the new version to move on to new projects.

The tutorials cover sprites, animation, sound, collision detection, and other things. They really are a comprehensive, though basic, rundown of what you need to start game development with Allegro 5. You are expected to know a little bit of C++ and have a Windows computer due to the use of Visual Studio 2010 as the IDE (Integrated Development Environment). The excellent manual pages for Allegro 5 and the Wiki are available for the details of the library’s functionalities and other tutorials.

I finished the videos and was updating my old Final Project under the name of ReFinal but I was interrupted by a conversation with a co-worker. I was talking about what I was doing in my spare time and the co-worker (that is also interested in making video games) had some concern about the logic for a simple mechanic like jumping and a little collision detection. I stated I would show them and with just a little bit of time had a working program with a little black pixel that could jump, collide with a single other object (a floating block), fall off the object, and be affected by gravity (so that the jump ends). This was the beginning of my FleaGame.

The FleaGame may never become a legitimate game but it will get tinkered with over a long time span and it serves as a platform for trying out things. I did finish updating my old Final Project, but I did just enough to call it updated and then spent more time on the FleaGame. The details can be found at the FleaGame Project Page and includes links to videos on YouTube.

This article pretty much sums up my current game development efforts and the next article should be about learning something new!

Game Programming Class and Allegro 4.xx

I decided sometime around 2nd grade that I wanted to make video games, so I jumped at the chance to take Game Programming as an elective while working on my Bachelor’s degree. The class used the book Game Programming All In One (1st Edition) which features the Allegro game programming library. It is open source, cross-platform and written in C++. Check out the Introduction page here for a more official description.

We focused on 2d games in the class and a couple text ones to start. Overall the class included 7 or 8 programming assignments with a Final Project of our own design and a list of required features based on what we had learned. Each of our games was shown during class to get feedback and to see what others were doing. We covered sprites, animation, some collision logic, simple sound playback, double buffering, tiled backgrounds, and possibly a few other things I cannot recall. Most of the non-final games were pretty forgettable; though I incorporated Strongbad in one which had pretty funny results. It was an introduction for my teacher to Strongbad and she later commented to me that we must be drinking while watching them, hahaha!

One of the required features for the final, that for some reason I didn’t like, was using a tiled background because the way we had covered that feature was to use a large static array of tiles. Instead I came up with an idea for a tiled background that could be generated on the fly using a logic matrix describing which tiles could follow what other tiles. This concept brought me to the decision to make a vertically scrolling shooter. Then I figured I could have two layers of background that moved at different speeds with transparency in the tiles (which I later learned is called Parallax). For enemies, I wanted some random waves and then a multi-sprite boss.

Sadly, I ran out of time developing partly due to the necessity to MSPaint my own sprites and search the internet for sound effects (and all the other “life” stuff going on). I did not get to use all the functionality I programmed nor did I get to add all the features I wanted. Approaching the end I realized I still needed enemies to call it a game and so I threw together a logic framework and used that to describe 4 types of enemies with different movement patterns and firing chances.

One of my favorite final projects from the class was an RPG created by one of my friends. He grabbed sprites and music from some SNES classics and built several tile maps connected to each other. It was pretty impressive amongst the other final projects for the class. In the end, Game Programming was one of my favorite classes and it left me with an idea of how much effort goes into even a simple game project. I currently believe that video games are some of the most complex software out there but a lack of professional experience in making them might make that a bad assumption.