Category Archives: Uncategorized

Making a Downwell

Ludum Dare has come and gone and I, being the busy person that I am, did not participate. But not to let a good idea go to waste I thought that maybe I could make a game from scratch really quickly. After all, I now have some experience working in Gamemaker Studio 2.

I have been on a little bit of a Roguelike kick recently playing games in this genre. Rogue Legacy and Spelunky are 2 of the games that I like to play most but recently I have started to play a little gem called Downwell. Downwell is a quaint little rogue like available for just about every platform under the sun. I have been playing it on my Playstation Vita and on my smartphone and I started thinking about what it would take to make something similar. After all, imitation is the sincerest form of flattery.

If we break Downwell into its 2 most basic parts there are vertical procedural levels and platforming. I have the platforming part down thanks to my work on Cursed Squire, and the platforming in this game would be even simpler than that, because the player will be constantly falling, I will not need to have the player be able to jump through platforms like in Cursed Squire, so I will “borrow” a lot of my platforming code from that game.

The second part is procedural levels. This part is going to be the hardest to do, mainly because of tweaking with variables so that levels are not incredibly easy nor completely impossible. Working on the newest game with the team over at Elektri has given me an idea of how to start with these levels using a ds_grid.

The first thing I will need to do is create a new script and make some macros for constant variables that I will need to refer back to several times.

The cells of the grid are going to be 32 pixels by 32 pixels each, and the values of the cells are either going to have a platform on them or be empty space that the player can fall through. To be able to get a visual representation of the level I created a 32*32 sprite and just made it solid red and a matching game object just called obj_solid. This game object is what is going to be put into the room to build our level.


#macro CELL_WIDTH 32
#macro CELL_HEIGHT 32
#macro PLATFORM -5
#macro VOID -6

In order to actually build the levels I created a level manager game object and put it into an empty room in Gamemaker. Downwell has tall and narrow levels, to build something similar my rooms are going to be 9 cells across by 100 cells in height. Inside the create event of my level manager I adjust the size of the room, and create local variables to reference the width and height of my level grid. Finally I will create the ds_grid that I will use to create the levels.


// Resize the room
room_width = CELL_WIDTH * 9;
room_height = CELL_HEIGHT * 100;

// Set the dimensions of the grid
var width = room_width div CELL_WIDTH;
var height = room_height div CELL_HEIGHT;

// Create the grid
grid = ds_grid_create(width, height);

Now that the grid has been created I can go about this in 2 different ways. I can fill the room with platforms and then carve out the empty space, or I can leave the grid empty and go through and place the platforms. With this example I am going to try to leave the room empty and add platforms instead of filling the room with platforms and carving out the empty space. So the next thing is to flag every single tile of our grid as void.


// Fill the grid with void
ds_grid_set_region(grid, 0, 0, width, height, VOID);

To place platforms inside of the empty grid I decided to loop through the entire grid and then I will choose if I should place a platform at a tile. I gave my script a 25% chance to place down a floor tile or leave it as empty space.


// The odds for creating a platform
var odds = 3;

// Flag the platforms
for (var cx = 0; cx < width; cx ++)
{
for (var cy = 0; cy < height; cy++)
{
if (irandom(odds) == odds)
{
grid[# cx, cy] = PLATFORM;
}
}
}

After filling the grid with the flags to see if the space is a platform or empty, I need to loop through the grid a second time and spawn in the ground platforms.


for (var xx = 0; xx <= width; xx++)
{
for (var yy = 0; yy < height; yy++)
{
if (grid[# xx, yy] == PLATFORM)
instance_create_layer (xx * CELL_WIDTH, yy * CELL_HEIGHT, "Instances", obj_platform);
}
}

All that is left is to test the game and see how it looks (I should point out that if you do not turn on views and give your camera a 16*9 vertical aspect ratio, your room will look a little bit weird).

Looking at this, apparently a 25% chance to spawn in a platform is a little bit too much. There is not enough space to be able to jump or free-fall. I want a fewer platforms than that a more negative space. Playing around with the numbers will be able to get you the amount of platforms that you would want for your own roguelike platformer. I switched mine over about 16% and I am pretty happy with the results.

After adding in the player object and my platforming code, ripped right out of Cursed Squire, I have a game object that I am able to navigate through a procedural generated well. All that is needed to turn this into something that people would want to play is some enemy types and combat mechanics.

My Second Game is now Complete

In August of this year I wrote about how I was working on a new video game, a love letter to a game of my youth, Snow Bros. I am now able to report that this game is now finished. This game is not one that I wanted to make for profit but rather to just challenge myself and to improve my programming and art skills.

The scope of my game is significantly smaller than that of Snow Brothers. Snow Brothers had 100 levels, with a boss fight on every 10th level, my game follows a similar pattern, but it only has 10 levels, with the single boss fight on the 10th level.

Despite this difference I am proud to say that I managed to finish it, and just as proud to say that I completed all of the programming and artwork myself (with the exception of the player character, Aaron Sokolowski gave me a bit of help with that). I have built 3 different enemies that behave differently, a boss fight, an intro and ending cut scene.

The music and sound effects for this game were taken from https://opengameart.org. This is a site that I would highly recommend for any game developer who needs some assets from an area that they are not skilled in.

I am quite satisfied with how this game came together, and with how easy it was to finish this game using Gamemaker Studio 2.

Working on my new game in Gamemaker Studio 2

Like with my Pixel Kitchen, I decided to work on this new project with Gamemaker Studio, but I am using the updated version, Gamemaker Studio 2. So far I have found working in Studio 2 a very pleasant experience and thankfully most of what I had learned in 1.4 directly translates over to 2.

The first thing that immediately jumped out at me is that the User Interface is so much better when compared to the previous version. Instead of having a horrible mess of windows and popups layered on top of one another, items are organized into a single work-space. You can specify if your project is going to be a Drag and Drop project or a GML (aka coding) project, this lets you bypass the step of having to drag a code action into a game object.

I am still doing pixel art in Aseprite instead of the built-in graphics editor; but, the new graphics editor is still a very useful pixel art and animation editor. I have found myself making quick modifications to sprites directly inside of Gamemaker Studio 2 because it is faster that having to open up Aseprite, export a sprite sheet and re-import into Gamemaker.

Speaking of pixel art, I have been trying to work around my limitations as an artist. I have been designing characters and enemies out of really simple and basic shapes, but complex enough to still give them some character. Most of my enemies are built out of a series of circles, but sometimes I walk on the wild side and throw a triangle into the mix.

Environments have been a little bit more of a challenge for me. What I ended up doing to be able to make the different levels was designing an incredibly simple pattern and repeating it for the whole level. It looks simplistic and basic, but this game is designed to be a clone of a NES game that I liked as a child, so on some level I think that it fits the aesthetic perfectly.

Development of this game is progressing smoothly and I hope to have more to discuss about it sometime soon.

My Next Solo Game

I am at the part of my game development “career” where I still consider myself to be learning. My inexperience leads me to try projects that are not too ambitious, which, ideally, will allow me to complete them. To make these projects easier I have been trying to recreate video games that I was fond of in my youth.

Now that I have successfully completed Pixel Kitchen, my very first independently developed video game, I am moving onto something that is inspired by another game, but has a lot more mechanics than the previous one.

I had spent many happy hours playing Snow Brothers with my younger brother when we were children. I have decided that I will try to build a game that is mechanically similar to Snow Brothers, which itself was heavily inspired by another title, Bubble Bobble. In Snow Brothers, the player controls one of the two titular snow brothers, they spawn into a room that is full of monsters and the objective is to clear the room to progress to the next.

Enemies are defeated by shooting show at them to turn them into snow balls and rolling them down the platforms. Items and power ups can be earned by hitting enemies with a rolling snowball. The game features 100 stages, if my memory is correct, and every 10 stages there is a boss battle. The bosses are defeated by rolling enemies into the boss.

Because I am working on this title independently I am going to be scaling back the features. I am going to be limiting the amount of stages to 10 instead of 100, and I am going to be eliminating the power up mechanic completely. This means I will need to complete

  • Player having multiple lives
  • Different states for the player and enemies and the behavior changing based on what state they are in
  • A Boss Fight
  • Intro Cut Scene

All of these mechanics are ones that I have never attempted before in a solo project. My previous game was a single screen / room, with a single state for the player. I am also going to be doing all of the artwork myself and to challenge myself I am going to increase the colour palette from the Gameboy monochromatic palette to something a little bit more robust, like the NES colour palette. These changes will help me improve my skills as an artist as well as a game designer / developer. After all, these projects / exercises are meant to help me learn and improve so that I can bring these skills back to my group over at Elektri.

Working on my Game

Jeeze, it has been almost a full year since I wrote anything on this WordPress site and quite a lot has happened. Currently, I have two games currently in active development. The first is a game I have been working on with my team since late 2015 called Project: Blue, and another that I am now calling “Pixel Kitchen”. My team is currently building Project: Blue in Unity3d and working on that game has been an invaluable learning experience.

Regardless of if that game is successful or not, what we have gained from that project will allow us to build an even better game even faster than this one.

Project BLue

While working on Project: Blue I had decided that I wanted to work on my own game, as a challenge and side project. Instead of using Unity3d I was going to use this opportunity to learn a new tool, Gamemaker Studio. This project was conceived as something that would allow me to finish a game inside of a month, but like with most things, the scope has become a little bit larger than what was originally intended.

Because my skills as a graphics artist and as a music composer are limited (read as non-existent) I wanted to design a game that would work with my artistic talents so that I could complete this game on my own. One of my favorite video games when I was growing up was Chef from Game and Watch Gallery 2 and I thought I would take a crack at trying to make a version of this game for iOS and Android.

I quickly found out that my current skill level, with pixel art specifically, would not be sufficient to be able to complete the project and I needed to practice before I could get too deep into development. That is when I had discovered Heartbeast Aka Benjamin Anderson, who has a series of Udemy and Teachable courses on the some subjects of game development and, more importantly, pixel art. I subscribed to his pixel art course and started to practice and I was quite pleased with the results of his lectures.

sprite sheet

I am not finished the lectures, I am actually about half way through, but I think I can move forward with the development of this game and I am happy to see that I am starting to learn a new skill that will help me in the future if I am going to try to turn this into a career. I hope to have more to show about this little side project of mine shortly.

Poking around with GameMaker Studio

Over on my other site, http://capsncoins.com, I have made a couple of blog posts about starting game development using Unity3d. While I really do like Unity, and we are, probably, going to continue to use it after we finish our current project, I decided that I wanted to try to make a mobile game on my own using GameMaker Studio.

I am not trying to create an overly ambitious project for the first solo game that I make, considering that the first game my team and I are making is not yet complete, but I have an idea in my head that I would like to make an attempt to turn into a reality. I had acquired a GameMaker Studio Pro license with the Android Export thanks to a Humble Bundle from a while ago so I have the means to get this idea into the Google Play store should I ever get it to the point where I like it.

Because I am working on this game completely on my own, and I have already picked an engine to use, I needed to come up with an art style that I felt I would be able to do on my own. It was happenstance that I stumbled into the pixel art tool Aseprite and I thought that I might be able to do some pretty simple pixel art to be able to convey the idea that I have in my head. So I headed over to their website and paid them the $15 needed to get myself a license and start trying to figure it out.icon

With playing around with the tool just for a little bit I am coming up with some sprites that actually think look pretty good, and I am pleased with the results. So I don’t think that artwork is going to be a huge issue anymore; however, it will still be a time-consuming one.

I suppose that my next steps are to go and look up some tutorial videos to see if I can get the mechanics of my game working the way I want them to. As of right now I am too used to the way that Unity3d does things and I have grown used to that engine. I am wondering if there is going to be a big learning curve or if most of my experience with Unity3d would translate to GameMaker. Only time will tell.

I plan to come back to this WordPress blog to write about my experiences working with GameMaker on my own, and the progress I make with my little game. Unlike at Caps N’ Coins I do not have the luxury of my editor, so all of this is right out of my head, probably with a lot of spelling and grammar mistakes. So because of that I plan on having smaller posts here than I have over at my other game focused blog / video site. Hopefully this works out for everybody.

Revision Control and off Site Backups

Repository servers are a really great tool. When I was developing Caps N’ Coins I was doing it solo, so a repo server was actually unnecessary. However I still chose to use one. The one that I have the most experience with is Mercurial. Mercurial is a great tool, it is primarily a command line application but Graphical User Interfaces for it to exist. Mercurial also has plugins so that it can be integrated with other development environments like Eclipse.

Mercurial, like Git, is a distributed revision application, and I do not use it properly what so ever. Every time I have used it either with the development of Project Cumulus or Caps N’ Coins I have used it as if it were client / server. I have a linux server set up with mercurial running and I push and pull changes to the server, never from any of the other developers directly. I have always assumed that I would like Subversion

These tools are great and when working with a team of developers you really should look into using one of these tools. With Mercurial you are able to see all of the changes that everybody makes to the code with each push, see what changes cause branches and you are able to do all of this securely. Mercurial is able to send and receive data over ssh so that all code changes will be encrypted before they are transmitted. This is a great thing if you are worried about security, as I am. I also have my linux server set up to use 2 factor authentication and Mercurial still works with this.

Getting mercurial set up to use ssh on windows is actually pretty easy, you just need to install Open SSH on your windows computer and then you can use the command

hg push ssh://user@server.com//path/to/repo

to push the change. You will be prompted for the password to the username you provided and if 2 factor authentication is set up you will also be asked to provide the pin.

One of the best things you can do on top of using a revision control system is to also make sure that all of your code is backed up in multiple locations. Having access to all of the changes to your code, that you have ever made, is great; but, it doesn’t help you if your hard drive is damaged or stolen. All of your code could be completely lost and all of your hard work would be for nothing if that were to happen.

I got into the habit of keeping my Mercurial repository in multiple locations. I have the repo on whatever machine I am currently doing the development on, and the server that I normally push the changes to. On top of those locations I have also recently started storing the repository files in cloud storage services. The three that immediately come to mind would be Dropbox, Microsoft Onedrive, and Google Drive. All of these services offer you multiple gigabytes of storage for free if you sign up, and they have applications you can install on your computer. A folder labeled for the service will show up in your “My Documents” directory, and whatever files you put in there will be sent to the remote servers and then you instantly have an off site backup.

The great thing is if you are concerned about security, as I am, all three of these services support two factor authentication using either sms or using the Google Authenticator app available for iOS and Android (there is a Blackberry 10 version that I use as well called Authomator). Revision control combined with off site backups could potentially save all of your hard work, get into the habit of using both of these things, you will be glad you did.

So it begins

Early 2014 I decided to finally stop being afraid and set up a gaming focused website along with some colleagues of mine. We had no idea what the real focus of the site was or how to go about doing it.

I was the only person who had any sort of programming experience so it was up to me to develop any customer software required. I have completed a post secondary education with advanced diplomas in Computer Programming and Computer Networking. I was confident that I would be able to manage the server just fine, but I had not done any significant programming in years as the job I got in I.T. was in the networking field.

Despite this, I set out to see what I could do. I had decided on wordpress as the CMS that would be used. It had the reputation of being the easiest to work with and it had a large selection of plugins to expand functionality quite easily.

I looked into twitter bootstrap after an old friend of mine recommended that I use it to build my front it. It seemed simple enough to work with so I downloaded it and I started poking around with it.

After playing around with bootstrap for long enough I felt it was finally time to actually start hooking bootstrap into wordpress. I, thankfully, found in incredible tutorial on building a responsive theme for wordpress at Team Treehouse and if it was not for that tutorial I do not think that I would have gotten very far with the development.

The tutorial was written for Bootstrap 2 and I was using Bootstrap 3 for my site, but I did not have any difficulty following the tutorial and just substituting in the bootstrap 3 version of the command the tutorial was having me complete.

According to my repository, I had been working for two and a half months before I had something that I felt was ready to show to the rest of the team. They were impressed with the work so we kept it.

Of course, as any creative person will tell you, you are never truly “done”. Every so often I find something that bugs me, or something that needs to be tweaked. This little project has been a great test of my skills and the best part of it is that it is going to continue to test my skills because what I have right now is not going to be the “Finished” version of the site, I am always going to need to add new features. This project looks like it will continue to be a challenge for some time to come.