Game: Bit Cave

With the launch of Flashpunk’s new website, some of us in the community thought it would be fun to have a game jam with a “Welcome Home” theme. Jake and I teamed up for this, and made Bit Cave in about 72 hours. This is also my May entry for One Game a Month.

You can download and play it here: Bit Cave Download

icon mementos

https://i0.wp.com/i.imgur.com/YCwWPqu.png

The game is about navigating a large cave system (which is randomly generated), searching both for a way out, and for lost mementos scattered about the caves. You can’t just fly around and grab what you need though. It’s very cold and dark in the caves. Your body temperature is steadily decreasing, and if you fall into water, it is going to drop rapidly. Fortunately, you can find little campfires in the caves that can bring your temperature back to normal. It still isn’t that easy though, because one campfire may be a long ways away from the one you’re currently sheltered at, and you may have to swim through water to get to it!

We were trying to think more outside the box with this game. We were playing around with a dungeon generator, meant for top-down roguelike games. We thought it would be cool to use the same dungeon generator, but with a side view, trying to get up and out of the caves. Doing this made all the little crevices and inconsistencies actually interesting, as you’re trying to traverse them. The water system was added fairly early on. We didn’t have a clear purpose for it, but we thought it would be cool. The body temperature mechanic came a bit later, and that’s when we found a use for the water. As mentioned above, the cave system is randomly generated each time you restart the game. The waterfalls/lakes are also randomly generated, and the mementos and campfires are spawned in random locations.

Adding narrative to a game is very difficult to do for a game jam, but we attempted to do so here, though it’s not incredibly apparent what’s going on. The idea is that you are this man who had a wonderful life with his wife, but something happened and he lost her. The man now finds himself in these vast caves, in search of not only a means of survival, but also what remains of his past life with his wife. There is their wedding photo, a tube of her lipstick, some roses he bought for her that have wilted with age, the first love letter he received from her, and the engagement ring he bought for her. These are all that remain of her, the only things left to preserve her memory. These are the mementos he is trying to collect.

Now, he can just zip through the caves and head straight for the exit. He will survive, but he will have left behind all that remains of his wife and his memories of her. When he does escape the caves, he will come home to his old house. If he faithfully gathered all the mementos, he will see them placed where they would be if she were still with him. If he passed them by, though, there will be an uncomfortable emptiness to the house; her memories will be gone.

In reality, this narrative is simply a way to dress up the collection of items in the caves to make it more interesting. Something we added in is, depending on how many mementos you collect, the landscape at the end of the game will change. The more mementos collected, the happier it will look. The fewer collected, the more depressing it will look. This is something that people probably will not pick up on unless they are very observant and play multiple times, but we enjoy knowing it’s there.

To wrap up, here is what I worked on for this project:

  • All art
  • All audio
  • Campfires
  • Body temperature mechanic
  • Jetpack mechanic
  • Inventory system
  • Minimap system
  • Everything in the outside world

Special thanks to Alex Larioza for his super cool tile lighting system, which fit our retro vibe quite well!

Game: Awesome Blocky (I Don’t Like HTML5/Javascript)

So I made a game with HTML5/Javascript. I’m calling it Awesome Blocky for no particular reason, other than everything is boxes. You can download it here:  Awesome Blocky Download

icon

I’ll be honest, I would not have done this if I didn’t have to. This was made for a class I’m taking right now. The idea was just to show a basic understanding of HTML5 and Javascript. This game probably took a total of 8-12 hours to make, but even still, I have had more than my fill.

It turns out that in Javascript, color values formatted as “FFFFFF” work in Chrome and Safari, but break in IE, Opera, and Firefox (it just turns to black). If you want it to work in any of the latter 3 browsers, you need to do colors as “#FFFFFF”. This is such a small thing, which is why it infuriates me that the offending browsers don’t just support it!

Additionally, constants are not allowed in IE. It causes an error, and the program simply does not run. You gotta use vars.

On top of this, these fixes are assuming you’re running the most recent versions of the browsers! There are probably loads more issues with older versions.

To take it a step further, this game I made is incredibly simple, and I hardly used any of the functionality of HTML5 or Javascript. I’m sure there is a whole other world of conflicts that come up with the other features.

With such flaky support across browsers even for absurdly simple things, and with how butt-awful-nasty Javascript is, I cannot take HTML5/Javascript seriously. I hope it’s a good long while before I have to deal with these again.

Game: No Other Home

From March 8th-10th, NASA hosted a nationwide 48-hour game jam! This was really cool of them to do. I’m extremely happy to see such a “high-profile” group publicly respecting and encouraging games.

The theme for the jam, unsurprisingly, was “space”. There were a few optional design restrictions presented to us, but I think we ignored most, if not all of them.

What we made is a sort of space exploration game with elements of a bullet hell thrown in. You can download it here: No Other Home (Download)

c1

The premise is that an alien race has invaded your solar system, and overtaken your home planet. In order to reclaim your home, you must go to each neighboring planet and eliminate the aliens. After you have cleared each planet, their mothership will appear, and you can board it to fight their “supreme ruler” (the boss).

The whole solar system deal was programmed by Jake, and I think it’s beautiful. We restricted it to generate only 5 planets, but each one has a random size, random color, and is a random distance from the previous planet. Within each planet is an entire little world that is also randomly generated.

Here’s most of what I did in this game:

  • Almost all art
  • Gathered most sound effects
  • Wrote/Recorded all music (No Other Home Soundtrack)
  • Some programming for the boss
  • HUD programming
  • Player input/movement programming

As cool as this game jam was, there was a rather uninspiring “aura” where we took part in it. Not a lot of people showed up for the event, and lots of people left in the middle of it or just stopped even trying to make a game. We got rather exhausted, and our motivation diminished rather quickly. I don’t think this game we made is bad, but I feel like the lack of inspiration shows.

It’s probably safe to say that I won’t be participating in another 48-hour game jam for several months. I’ve gotten a little burnt out, and there’s only so much you can do in that short amount of time. Plus, I want to focus on more important games for a while.

Where’s the February Game?

Well, here’s what happened…

Excuses

I was given a school assignment that took up nearly every waking moment of my time. This lasted for about a week or so at the beginning of the month.

After that, I spent a lot of time writing music for a friend’s game. More on that in a bit. This took up nearly a week.

Then, I assumed my schoolwork would continue to be as time-consuming and difficult as the first week. Well… it wasn’t, and we kept having snow days. Instead of trying to squeeze in a game for One Game a Month, I figured I wouldn’t have time and that school would pick up again.

Well, it didn’t. Right when I was about to start working on a game, I got asked to play guitar in a wedding. I accepted, thinking it wouldn’t take up much time. I was wrong. It took up a ton of time.

The point is, I did not make my own game for February because I assumed from the beginning that I would not have enough time to do so.

I Made Something for the Kinect…

I told myself that I would use some project I made for school, and I could still do that. In one of my classes, we had to work with the Kinect. It was really stupid and I sort of hate the Kinect. I did make a game though:

dumb

You stand in front of the Kinect and wave your arms around until the stupid thing recognizes you. Once it does, there are two cursors that follow your left hand and your right hand. They will say ‘N’ ‘S’ ‘E’ or ‘W’ on them. These represent the cardinal directions.

You will see a red ball bouncing back and forth. When the ball hits a square that is labelled with N, S, E, or W, it will immediately change direction to whatever the tile was. Hit an N tile? The ball will go up. W tile? It’ll go left. The ball also bounces off the walls in the opposite direction it was going.

The object of the game is to place the directional tiles in the path of the ball so that it hits the bright yellow tile. When it does, you win. Woop-de-freakin-do.

These are the kind of things you can make with the Kinect. Did I mention that I hate this device?

I’ve Started Working with UDK (Unreal Development Kit)

In a couple classes I’m taking, we’ve been working with the Unreal Engine. It’s been fun and I’ve learned a good deal. I have created a simple level, designed for typical multiplayer shooter action.

level

I’ve been learning how to work with Kismet (scripting) and Matinee (cutscene creator)


kismetmatinee

I’ve also been doing some work with Unrealscript and Scaleform. Nothing too cool to show from that yet. I will have a week to make pretty much anything I want in Unreal, starting in a couple days. Maybe that will be worth showing, though I don’t like “advertising” a project that I have to make closed source and that is not cross-platform.

I Made Some Music I’m Proud of

You can listen to the music as I talk about it! Here you are:

A friend of mine remastered an older project of his. I wound up writing all the music for it, and we also collaborated on ideas and such. He did all of the programming, art, and sound effects. I just wrote the music and contributed ideas. I’ll be counting this as my February entry for One Game a Month, though.

The music was a blast to make. Each song has a very unique and expressive style.

“Three Notes and It’s a Deal” was a particularly fun one to write. When I thought about the level it appears in, I kept thinking “Las Vegas in the 40’s”. What you hear is the end result. If you are wondering, the name of the song comes from what you do in-game. You need to find 3 coins and give them to a guy who will then give you something that lets you continue on your “quest”. The name of the song is sort of a “jazz slang” way to describe that situation.

I also quite like “World of Wonder”. I can totally chill out to it.

You can download the game here: Humphrey’s Tiny Adventure: Remastered Download

In the End

So, at least I wasn’t just sitting around being a bum. I’ve been constantly working on game-related things, and I did, in fact, make a game (though it was dumb).

For March, I will be assuming that I will in fact have time to make a 1GAM game, so do expect something from me then!

Game: Must’ve Been Rats!

This past weekend, I made a silly stealth game with my friends Jake and Paul for the Global Game Jam.

You can download it here (just unzip it and run the MustveBeenRats.html file): Must’ve Been Rats! Download

You can also check out all the other games our friends created for the jam here: NHTI Global Game Jam Games

For those who don’t know, Global Game Jam is a 48-hour game jam. Basically, for 48 hours straight (or as close as one can physically manage), people come up with a game idea and create it! The theme this time was a heartbeat.

screenshot

About

Our game is called Must’ve Been Rats! As I’ve mentioned, it is a very silly, 2D stealth game. The idea is, you walk around in this big dark room, with only a few small lights placed about.

There is an elevator somewhere in the level that will let you continue on, but it requires a beating heart to power it. You must find this beating heart in one of many briefcases scattered throughout the level. You can tell if a briefcase contains the heart by getting up close and listening for a heartbeat coming from it.

To throw a wrench into things, there are guards patrolling the area with flashlights. If one sees you, he will start to come after you. If he gets close enough, he will lunge out and tackle you, causing you to restart the level. However, if you can manage to sneak up on them, you can scare them to make them pass out for a short time, allowing you to walk right past them.

You must evade these guards while searching for the briefcase with the heart. The heart is in a different one each time, though!

Development

We decided to use Flash, along with the Flashpunk framework, Jake’s super-awesome FLAkit library, and Ogmo Editor. These are all great, free, and open-source tools!

For some reason, which we cannot determine, we had a very tough time delegating work to each other. As such, things took longer than they should have, and we were consequently unable to add all the features and polish we hoped for. Regardless, we still had a blast making it, and we are happy with the result!

It was supposed to be a serious game. This started to change when Jake was explaining ideas on a whiteboard, and attempted to draw the player character. He looked really silly, and I jokingly said “that’s totally how I’ll draw him for the game”. Well, I started the art shortly after, and, after a few attempts to make it look serious, I caved and just drew it like Jake’s drawing. And…. that is what you play as in the game.

player

Our friend Mike Elser was working in the same room as us. He’s a pretty hilarious guy, so we decided to stick a headset on him while he worked, and record his voice. All the voices you hear from the guards are what came of this. It is literally 60% of what makes the game good. The “boogidy boogidy boogidy” sound the player makes when he scares people is Jake’s voice.

Here is what I did in this project:

  • All art
  • Level design
  • Recording, researching, and editing of all but two sounds
  • Creation of “music”
  • Most audio programming
  • Most briefcase and elevator programming

You can view the source code here: Must’ve Been Rats Source Code

LESSON LEARNED: Do not go into a 48-hour game jam with a pre-existing idea.

P.S. Here’s the title screen, which has almost nothing to do with the game!

Must've Been Rats!

Game: Scattered Song

Scattered Song is my first game of 2013, and it’s my January game for One Game a Month. It’s also also the first game in a long while that I have made entirely by myself.

It is a 2D adventure puzzle game. To me, it has an old-school Pokemon and Zelda vibe.

You can play here:

I knew I was going to have a lot of free time this month, so I didn’t need to impose as many restrictions on myself as I usually need to.

Design

I managed to get most of the game’s functionality finished in time to have a couple weeks for level and general game design. This was the longest I’ve ever had to design things, other than initial brainstorming and quick, on-the-fly decisions.

I wanted to keep explicit tutorials to a minimum, and I was able to do so, having only the movement and shooting controls displayed outright. Anything else the player needs to learn is taught through level design, through puzzle-like drawings (similar to what Braid does), and (hopefully) through intuition.

I also wanted the player to be able to choose how they want to play, to as much of an extent as this simple game allows. Each level can be completed using arrows or without using arrows. For the most part, the game is much more difficult without arrows. Later in development, this gave me the idea of making an optional “Hard Mode”, where you have to play without arrows.

“Speedrun Mode” came about when I fixed a bug that I found interesting. It had to do with teleporters, and you were able to get to areas earlier than you should, skipping large parts of the level. It was rather silly, but I decided to keep some non-gamebreaking glitches such as this, and include them in a separate “speedrun mode”. I threw in a timer and time record system, and it was done. You can even do Speedrun Mode and Hard Mode combined, with a different set of record times.

Music & Audio

I wrote all of the music in the game. You can listen to or download the soundtrack here (pay what you want, no minimum): Scattered Song Soundtrack

The idea for collecting pieces of a song came pretty shortly after I created the orb and pedestal graphics. Each part had to be sparse and not make a whole lot of sense by itself, while also feeling complete when they were all together.

The music in each level came rather late in development. Things felt uncomfortably empty, so I decided to add something to fill the void. I wanted to keep them as rhythmic and non-melodic as possible, so that the home world had all the harmony, and truly felt like a relaxing home area.

I used Cakewalk Sonar X2 and PreSonus Studio One 2 as my DAWs. Most of the tracks are comprised of instruments from Native Instruments Kontakt, with Absynth, FM8, and Massive making up the rest.

Most sound effects are panned according to the player’s position on the X axis, relative to the center of the screen. I also set the volume of certain sounds according to the player’s distance from the source of the sound. I decided that these two techniques combined, with the camera angle taken into consideration, was the most natural-feeling audio solution.

Almost all of the sound effects were acquired from Freesound.org, a great resource. I tweaked them slightly to fit my needs.

Tech

I used FlashDevelopFlashpunk, and Ogmo Editor to make this game, all of which are free, open-source, and 100% awesome. If you have never used Ogmo, you absolutely need to check it out. My friend Jake made some sweet classes to connect Flashpunk and Ogmo. I used Inkscape and Photoshop for graphics.

If you’d like to view the source code, check out the project repository here: Scattered Song Repository

♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦

This game was great fun to work on, and I am proud of it. I hope you enjoy playing it, and I would love to hear feedback. Drop me an email, a tweet, a comment, or whatever else.

Why make one game a month?

A few hours before 2013, my friend and indie game dev partner Jake Albano, convinced me to participate in One Game a Month.

One Game a Month (1GAM) is simply a challenge to game developers to successfully finish a game at least once every month in a year.

Since I began programming, there would be regretfully long amounts of time where I never saw a single line of code.  This was usually between semesters of school. Whenever I did finally get back to coding, I had to spend precious time re-learning concepts, which slowed my development process and my growth as a programmer.

♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦

I’ve begun learning about indie game developers and their journey to “success”. Indie Game: The Movie and talks by Ed McMillen, Jonathan Blow, and Wolfire Games (3 of my most admired developers) have really taught me lessons in career and design as well as provided loads of inspiration. What is blindingly obvious is that, if you want to be an indie game developer, you need to WANT to be an indie game developer.

Though I fear what may or may not come with choosing to pursue independent game development as my living, and though I have personal things I need to wrestle with for this, I can’t imagine myself doing anything else. Too many things have aligned and gone right, too many great people have come my way, too much of it feels right, and I have too much fun with it to go anywhere else.

All of this and One Game a Month is where I am and what I am doing to get myself in gear and jumpstart my portfolio and my career. The future will be tough and will demand an inhuman amount of work, but with my friends and my incredibly supportive family, it also looks brilliantly bright.

Game: Vigilante

Vigilante is a side-scrolling action platformer. It was my team final project for my AG131 Intro to 2D and 3D Game Development course.

Click here to download the game: Vigilante.zip

Click here to view the source code: Vigilante Source Code

Click here to view and download the soundtrack: Vigilante Original Soundtrack

Screenshot from Vigilante

The original idea for this game was to give it a classic Metroid vibe, with lots of parkour moves, and a Gears of War-style cover system.

Well, the art assets turned into a time-sucking vortex. We had to make many cuts, and limit ourselves to something simple.

Regardless, it was an excellent experience, and many good things came of it. I learned how to use Mappy to generate levels, I refined my screen-scrolling camera skills, and I learned about SAT collision.

Here is what I worked on in this project:

    • Creation and implementation of music. (Vigilante Original Soundtrack)
    • Implementation of sound effects.
    • All audio programming.
    • AI (very simple)
    • Level loading from Mappy
    • HUD, menu, enemy, and parallax background art
    • Control scheme
    • Collision

I spent a lot of time researching and implementing SAT Collision. Though it is not incredibly stable, I managed to create classes and take copious notes on the subject that could be useful to anyone.

You can see them here: SAT Collision Code

Game: PGTBDCRPG (I never came up with a real name)

For one of our labs in a game development course I was taking, we were told to just have fun and make a simple game using what we had learned in the course up to that point. I decided to try my hand at random, procedural generation as well as a turn-based RPG-style stat and battle system.

Click here to download and install the game: Procedural Turn-Based Dungeon Crawler.zip
Click here to view the code on the project’s repository: Procedural Turn-Based Dungeon Crawler Source Code
Click here to view and download the soundtrack: Procedurally Generated Role Playing Game Original Soundtrack

Screenshot of PGT… whatever I call it.

Working on this game went rather smoothly. Not surprisingly, the most time-consuming parts of it were the random map generation, enemy AI, and stat balancing. It was all very experimental, and no “official” algorithms were used. …or if there were, it was by accident!

The calculations I concocted for leveling up, damage, etc. were pretty convoluted. I basically just experimented with math through what was partially trial and error until things seemed to balance out.

Some interesting aspects I implemented are:

    • Stats (STR, AGI, etc.) will increase more depening on what actions you do in battle most often. For example, if you do a lot of melee attacks, your ATK will increase quicker. So ATK = melee, DEF = blocks (defends), MAG = magic, DEX = successful dodges.
    • HP and MP will increase more upon level up depending on if ATK or DEF is higher.
    • Known spells and weapons are based on MAG and ATK level (respectively).
    • Each weapon has a base damage amount, a critical hit chance, and an accuracy rate. Each of these, as well as both the attacker and target’s stats, are used in the equations to calculate the result of an attack.
    • Each spell was meant to be unique to each other. Fireball simply deals damage, Cure simply heals, Convert swaps the caster’s HP with their MP, and Absorb steals life from the target and gives it to the caster.

The AI is rather large and branching. Certainly too much to fit on this page. It is aware of it’s HP, MP, known spells, known melee attacks, and opponent’s HP and MP. Depending on all of these stats, they may choose to be aggressive, figuring the odds are in their favor. They may see that they are in danger and choose to play defensively. There is always a chance that they will behave recklessly, despite the circumstances. This is mostly to keep them beatable.

The map generation is rather convoluted and hard-coded. Feel free to look at it in the source code if you dare (Map Generation Code), but I won’t bother to try and put it into words.

This project was incredibly fun to work on and I am quite pleased with what I was able to accomplish in a week.

Game: Thirty Years After Year Zero

Thirty Days After Year Zero (TDAYZ) was a game my friend Jake Albano and I created for a 48-hour game jam.

You can play it on Kongregate here: Thirty Days After Year Zero on Kongregate

For this jam, we had our friends and anyone else vote on a theme and genre. We took the highest and lowest voted choices, and combined them, much like Mojang’s Mojam.

You can see the poll on our website here: Thaumaturgist Games 48-Hour Game Jam Poll.

What we wound up creating (after doing some tie-breaking) was a Post-Apocalyptic Sci-fi Beat-em-up RPG.

Screenshot of T.D.A.Y.Z.

We both wrote post-mortem blog posts for this jam. Here is mine: Post Game Jam Wrap-Up

As can be seen in my blog post, this jam was a little rough for us. It was my first ever game jam, and Jake’s first jam with another person. We learned many things about working in a game jam though, and in the end it was still a very valuable experience.

For this jam, here is what I did: