Second #1GAM

So I had extra time to brain-storm this month due to being away from computers for two weekends and various other reasons. First there was the infinite runner with shooting instead of jumping. I started to question how to go about making it as simple as a jumping infinite runner (which uses just one button) and decided it might not be as simple as I had thought. Then I started thinking about the theme for the month.

The theme for April 2014 #1GAM is Water and I kept thinking about a platformer in the desert. But as I let that idea grow, it quickly became apparent that I didn’t want to do anything straight-forward enough given the time constraints. I was sort of discouraging myself for the April challenge and had to take a step back.

Simple, core idea, coriest of core (reference to corier core). Rain and fire. Rain puts out the fire. Let the player grab/fling the rain. I finished the majority of the game in about 6 hours, but there was no score or end condition. Here’s a screenshot:

ScreenShot

You could try to keep the flame alive, or hasten to extinguish it. I was feeling I had gone too simple and that it was boring, but the month was nearly over! So, embrace the simplicity; collect time-based score for both things the player could do and add a nice rain background sound. Play the game here!

For future reference, the extra thinking time this month didn’t help me accomplish anything!

One Game A Month

I have signed up for One Game a Month (#1GAM)! The basic premise is to publicly declare your participation and then follow through on it. Getting a game finished monthly forces you to follow through to the end of a project repeatedly, learning new things every month about the process of creating a game. The “rules” are pretty loose, but if you cannot be honest with yourself, you won’t be getting much out of it anyway.

Speaking of which, I sort of put off officially participating until I had already finished my first game… Oh well, gotta have your priorities straight, right? For now you can find it under the Projects Page in the Menu above and it is called EmoSine (<- or just follow the link). The elevator pitch on this game is “Flappybird but with a gravity mechanic.” So far, feedback includes “difficult” and “addictive”, so not bad so far! Of course it could use a few additions as briefly discussed over at my post on html5gamedevs, but I need to get started on April’s game first!

EmoSine Screencap

Continuing on with 1GAM, my intention is to follow through on some very simple game ideas. I currently have a list of 6 or 7 that I came up with during a meeting for my full-time job in which I had some spare time. Some of those ideas include: an alternate take on an endless runner, playing with crowd dynamics, learn about the physics engine capabilities of Phaser using a Lego-like building game, something to do with minions, and more!

Javascript Tree and HTML5 Flies

This is a progress update to my Learning HTML5 post. I completed the first two courses through SkillSoft about HTML5 and CSS3. I learned a bit about the new tags and attributes and what’s been deprecated and abandoned from older versions. However, what I was learning was not proving to be that helpful to my ability to develop an HTML5 game except the very short section on the canvas element. I decided to start fooling around with drawing on the canvas using JavaScript to learn more.

JavaScript Tree Thing

I had this image of a bunch of threads growing up and sprouting leaves and branches and sort of weaving together into a tree. The little tree thing growing there was a sad effort toward that end, but I wasn’t ready to try to build tree growing procedure at the time. Maybe when I get to exploring procedural generation I’ll revisit the visual I have for that in my head. Anyone know if it already exists out there?

One of the other things I said I would do using the List of HTML5 Game Engines was to pick an engine to dig into and learn. I found a few other resources in making my decision that might be useful to others:

Phaser

The game engine I decided to use is Phaser! Here’s a few places I’ve bookmarked as good resources so far:

The forum I found to help make my decision is also a great resource for Phaser development. As a curiosity I decided that it might be cool to port my flies over from the FleaGame. I used the starter project form LessMilk as the shell for my flies, but it turned into a very shoddy hack and hardly uses the Phaser framework at all… Anyway, here is a demo of the fly behavior minus the brief pause when they land that they have in the C++ Allegro version (because there isn’t anything for them to land on in this version).

Fly Movement Demo using Phaser


I did a little brain storming and generated a list of ideas for quick games to help me get into Phaser so expect some HTML5 games here in the near future! Along the way I’ll explore a few concepts that have been bouncing around in my head.

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.