### Conway’s Game of Life

Several years ago I saw a snippet of a documentary on mathematical modelling, or evolution… or something. I actually couldn’t remember what it was about, which was super frustrating because one of the segments featured a very simple and very cool program that modelled a 2D form of evolution. It demonstrated a method in which complex processes could arise from a set of very simple rules, and I wanted my own copy of the program to play with. When it came time to Google it however, I had zero luck in finding any additional information on the topic (I had close to no information to go off of).

Anyway, this morning I happened to stumble across the program again on Google+! As it turns out, what I should have been searching for was “Conway’s Game of Life”. From Wikipedia:

The universe of the Game of Life is an infinite two-dimensional orthogonal grid of square cells, each of which is in one of two possible states, alive or dead. Every cell interacts with its eight neighbours, which are the cells that are horizontally, vertically, or diagonally adjacent. At each step in time, the following transitions occur:
1. Any live cell with fewer than two live neighbours dies, as if caused by under-population.
2. Any live cell with two or three live neighbours lives on to the next generation.
3. Any live cell with more than three live neighbours dies, as if by overcrowding.
4. Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.

Anyway, I spent all day writing my own version. I’ve got the basic simulation running just fine, and I plan on chipping away at a polished version of the program that I could release for Mac, Windows, iOS, Android, and BB10.

### I think I Need to See “Cloud Atlas” Now

Earlier today I had kind of settled on the idea that would like to go see a movie.  It’s not something I do often, but every once in a while I feel like losing myself in a big dark room and being treated to the sort of spectacle only a movie theater can provide.  Big screen, loud noises, overpriced treats… yeah, it’s got it all.

As I was going through the list of available films, I noticed that “Atlas Cloud” only had a respectable 7.6/10 user review.  This is a movie that I’ve been pretty excited about for some time, and one that Roger Ebert recently described as “a demonstration of the magical, dreamlike qualities of the cinema“, and so I was a little taken aback that it didn’t have universal critical acclaim from Saskatoonian movie goers.

I took a closer look at the reviews over at Cinema Clock, and I love the story they tell:  You’re either going to love it or hate it.

I haven’t seen the movie yet myself, but I think I have to now.  Any movie that polarizes an audience like this has got to be worth my time and money.

### How I’m Using Tile Maps

Oh boy, it’s been a while since my last blog update! I was kindly reminded today that it’s been around 2 months since my last post!  In short, I’m still working on my upcoming project, and I’m working on a big update to my first game “Leyenda”.  I’m also farming, which has actually eaten up most of my time.  That and Diablo III.

Despite the lack of free time to invest into game development, I did manage to work on a problem I’ve encountered when working with tile maps, and I think I’ve come up with a potential solution.

But first, what is a tile map?  In short, a tile map is a way for game developers to take a small image, break it into parts and to reuse those parts over and over to create a much larger image.  As an example, a tile map engine can turn this:

Texture pack used to create desert themed maps

Into the image show below by reusing and stitching together the “tiles” within the texture pack:

Tile map composed out of images from a texture pack.

If you’ve played a 2D video game, odds are it probably used tile maps to create the world your character explored.  Mario, MegaMan and Pokemon are (probably) good examples.  This method has many advantages, such as keeping the size of your assets small, improving rendering performance, and allowing for basic collision detection and scripting events to be easily implemented.    It seems like an all around sweet deal, and so I started playing with a tile map editor and tinkering with code with the eventual goal of setting up an engine I could use to create a side scrolling adventure game.

As seen in my last post, I’ve managed to get collision detection, basic physics and player controls, and the tile map all playing nice together.  The only problem is that it’s ugly.  Or at least it was:

Since I’m aiming for something that looks a little more organic, the blocky appearance of the level and the pattern appearing in the grass texture was not acceptable.  My solution is the following:

I create a tile map out of a simple texture pack.  In my case, I only use two different tiles.  One is for normal ground and the other is for one way platforms.

A simple tile map

Then, using the magic of photoshop, I can create a second image that I superimpose over the tile map above in order to enhance the appearance of the level.  The example below shows a character running through the level shown above after the photoshop treatment.  You’ll notice that the far left side of the level still looks like it’s made out of tiles:

This allows me to use most of the benefits of a tile map, while still giving the game a more organic, hand drawn look.  I say “most of the benefits” because I’m still going to have to draw entire levels and save them as massive bitmaps.  This will take up a lot of valuable space (I’m trying to keep the game under 50mb) and so it may turn out not to be such a great idea after all.  However, I like the way it looks (or could look, this was a quick test an so I didn’t spend a lot of time drawing the level) and so I plan on playing around with the idea a bit more to see how practical it is.

Oh, and in case anyone is curious, I’m using a general purpose tile map editor called “Tiled” as a level editor.  It’s super flexible and free, so if you’re at all interested in tile map editing you should check it out!

Cheers!

### Tile Maps, Collision Detection, and a Camera!

I had a bit of time recently to invest in my game, and so I thought I would share where I’m at with the new project!

I added several features that are vital for a platformer style game.  I’m not able to create levels in an editor and them import those levels for use in the game.  In addition to that, I’ve added collision detection logic and a simple camera to manage everything on screen:

I have a lot of work left to do though. The next step will be to improve upon the collision detection logic for the tiles; I’d like to add slopes of varying degrees in order to make the levels look and feel more organic. Next I plan on adding game logic to import background and foreground objects, some of which the player will interact with.

After all that is done I have to figure out how to make it fun to play….

### Game Development!

Wow, I’ve been busy since my last blog post! In short, I decided to become an independent game developer. It’s an idea I had been playing around with for a long time, but it was only this last year that I decided to undertake a serious project.

I plan on writing a few updates in the next week (or whenever I get around to it) highlighting some of the interesting things I’ve learned throughout the process of making and publishing a game.

For now though, I’d like to share a little something that totally made my day. My first 1/5 star rating!

Haha.  What?  Liberal Trash?  I was expecting 1 star reviews if the game didn’t work properly or crashed people’s devices…. but this person actually found the content of the game offensive!  What!?  I’d make more fun of this person, but I suspect he or she is one of those people that owns a lot of guns.

Yeah, I don’t get it.  I’d be lying if I said I wasn’t just a little angry.  The ratings of games essentially make or break them on Google Play, and to have terrible reviews drag down the game’s average rating based on something other than the quality of the game is … annoying.

You know what really grinds my gears?  The many hundreds of replies in public forums to simple technological problems that can be boiled down to this generic response:  “Oh, just take it to [retailer] and they’ll fix it!”

Of course they can.  And if not, they can mail it away for two to four weeks and get the manufacturer to fix it.  But that doesn’t solve my problem does it?

When I have a problem, and I search for a solution, it’s because I want to fix it myself.  I don’t need an “expert” to look at the device in question and tell me what I already know:  “Yeah, it shouldn’t be doing that.  I don’t know what’s wrong with it.”  The only time I ever send anything away to be fixed/replaced is when I know beyond a shadow of a doubt that it’s actually something I cannot fix on my own.  Guess what people, I rarely resort to that (I also break a lot of things, but not because trying to fix stuff on your own is bad).  Is troubleshooting and problem solving a lost art?

Case in point, today I got the trackpad on my MacBook Pro damp.  Not wet, but damp.  Guess what?  The trackpad became unresponsive to touching, which since that’s all it’s really supposed to do, that was a problem.  I Googled the issue (by the way, I used the tab, arrows, delete, and return button to browse.  That’s old school computerizing right there).  I found that:

1. People spill all kinds of liquids on their laptops.
2. Spilling liquids on laptops is not recommend.
3. 90% of the “solutions” found were to take the computer to the “genius bar” where they would fix it for you!

People.  Taking a broken thing to someone else to fix it is not a solution.  The magic thing the other person does is the solution.

You know what the solution was (and still is if you came here with the same problem)?  Dry off the trackpad while the computer is powered down and wait a while.  MacBook Pros REALLY hate moisture on their track pads apparently.  Even a small amount will affect their performance, and if there is still moisture present when they boot back up the calibration of the trackpad will be very wrong.

Ta-da!