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.

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.

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.