Monday, March 16, 2015

EGX Rezzed 2015

Bounder Games and I just got back from an awesome weekend at EGX Rezzed 2015. This was our first Rezzed and we thoroughly enjoyed it! I played lots of games, and watched others that I didn't get a chance to play first hand. I even got to chat with some of the devs, which was definitely my favorite part of the trip.

While there were tons of awesome games, these were my personal favorites:

Machiavillain by Wild Factor (@WildFactorGames)


A bizarre cross between Prison Architect, Dungeon Keeper, and a 50s B horror movie, Machiavillain oozes charm (or is that brain matter?). I had not heard of this title before stumbling across it on the show floor, but I absolutely fell in love with the cute and well executed art style and the sim/management gameplay. The dev was also a delight to chat to, and I'm really looking forward to seeing this game progress to its finished state.

Tembo the Badass Elephant by Game Freak


Like Machiavillain, I hadn't heard of this title before finding it on the show floor. I was initially attracted to the stand by the huge, comic book style poster featuring Tembo, the game's leading pachyderm. Though I came for the art, I stayed for the gameplay - it's no wonder Sega is publishing this fast paced platformer, as it bears a striking resemblance to early Sonic titles. I'm normally pretty tired of platformers, but this just felt too good! Full disclosure, I may have snagged some Sonic themed swag from the booth!

Big Pharma by Twice Circled (@TwiceCircled)


Big Pharma is a management game where the player attempts to dominate the pharmaceutical industry by hook or by crook (or by conveyor belt, which seems to be the preferred method). I've been watching this title for a while now. Unfortunately I wasn't able to play this at Rezzed, but I wanted to give it a mention anyway because (A) it looks awesome and (B) I got to chat to the developer for quite a while about Unity, other automation management type games, and other random stuff, and that was very cool! He seems like a rad guy and I can't wait to see where he takes this awesome concept.

Nom Nom Galaxy by Pixel Junk (@PixelJunkNews)


If I had to choose, this would probably be my game of the show. The gameplay is a little like Terraria in the perspective and diggable terrain aspects, but departs greatly from the crafting RPG in the direction of factory management with the addition of automated robots, corridors, air locks, etc. All with the goal of making the best soup this side of the Milky Way, and shipping it all over the galaxy. I've been looking forward to this title for a long time, and it's super hard to wait until it's out on PS4 so my friends and I can run around making soup together! The game is available now on Steam Early Access, but I think it suits console better due to the multi-player aspect. So colourful and stylish, with awesome automation based management gameplay that is exactly my cup of tea (or soup).

Monstrum by Team Junkfish (@TeamJunkfish)


Monstrum is a procedurally generated horror game - so it's a new pants-pooping experience every time you play! I didn't play Monstrum at Rezzed mostly because the devs are from my own little town of Dundee and I can play it whenever I like at home, but I can definitely recommend it as an awesome horror experience, especially if you happen to have an Occulus Rift to play it on.

Mutiny! by Hidden Armada (@HiddenArmada)


As with Monstrum, the Mutiny! devs are from good ole Dundee so I'd already played the game before Rezzed. Mutiny! is a multi-player cooperative/competitive game in which a group of pirates must defend their ship while simultaneously competing for the captain's hat. Also, there are pigs. The bedlam that ensues is as chaotic as it is enjoyable, and I'm really looking forward to bringing this out at parties.

Rezzed was an awesome experience, and it has left me inspired and energized to return to my own game dev projects. Thanks to all the developers, coordinators, journalists, and gamers that made the event happen - You rock!

Wednesday, February 11, 2015

Soulmates - Out Now!


So, I decided to release a game this week!

There's a game jam play party on Thursday, and we're invited to show off games from any game jam in the last year. My best game jam entry last year was a little puzzle game called Soulmates, made for the Ludum Dare. Naturally I decided to spruce up the game a small amount, get it fit for mobile, and show it off!

Then I realized - Saturday is Valentine's Day, and Soulmates is super cute and lovey-dovey. So, with only a few days before the play party, I decided to release the game! It's out now, free on the google play store. There's no ads or anything!

It was interesting throwing the game together for release in such a short amount of time. A surprising amount of assets are needed for releasing a game, even one as low key as this. We needed an app icon, banner image for the play store, descriptions, twitter promotion images, and more. We also decided to make a set of "business cards" for the game, similar to what we did for Combo Carts, to pass out at the play party. We managed to throw most of the assets together in a single night, update the music, fix the interface and account for multiple resolutions, and fix most of the bugs. It was rather exhausting!

We don't plan to make any money on Soulmates - we haven't even included ads in the game. If it does somehow become popular, we could easily sell puzzle packs for it. But that was definitely not our aim.

Releasing this game is not about money - it's about spreading some indie love. Too many games are about hate and violence. Soulmates tries to be as inclusive as possible, and celebrates an excess of cuteness and happiness seldom seen in games.

And hey, if our brand spreads a bit thanks to this, then awesome as well. But I don't really expect it to. This release is a gift from us to the gaming world, and we hope you like it!

Soulmates is available on the Google Play store: Get it here!

Monday, December 22, 2014

Habit RPG - Gamifying My Life


Gamification is a subject I'm very interested in. The idea of using the engaging features of games to improve other areas of ones life, such as in education, is an awesome one. So, when I heard of HabitRPG, I was instantly interested. In this post, I'll talk a bit about what Habit RPG is, what parts of it's systems I especially like, and how well I think it accomplishes it's goals.

What Is Habit RPG?


HabitRPG is a todo system designed to bring the progression, rewards, and penalties of RPGs to bear against procrastination and laziness. You can defeat your tasks and habits to gain experience and money, and sometimes gear drops. The money can be used to buy gear, or to award yourself with things in real life. Failing to complete daily tasks or performing bad habits will cause you to lose life, possibly dying and losing money and equipment.

Task Types


HabitRPG has a bunch of different types of tasks:

  • Habits can be good or bad, and which can be improved or reduced. For example, I have a habit "Eat Well" which I increase when I eat fruits and vegetables, and decrease when I eat junk food like crisps. Decreasing a habit damages your character.
  • Dailies are tasks which must be done each day (or certain days of the week). If you don't finish a daily by the end of the day, your character is damaged.
  • To-Dos are more general taks and don't have to have a due date. They won't damage you if you don't finish them, but still reward you if you complete them.

Difficulty and Task Value


One of the big strengths in Habit RPG is the ability to customize tasks with a difficulty, and the auto adjustment of rewards based on difficulty and other factors. Higher difficulty tasks are more rewarding to the player, but also deal more damage when left incomplete. Tasks also naturally change in value over time based on how successful the player has been in completing them in the past (dailies and habits) or based on how long they have been sitting undone for To-Do tasks. This system organically encourages players to work on Habits, Dailies, or To-Dos that are troubling them, to avoid massive damage and to get bigger rewards. It also means they are protected if they mess up a daily that have previously been very strong in.

Party It Up



Another huge strength is a party system. Playing together with others encourages accountability, and encourages you to log in often to buff your friends to help them out. You can choose different classes to provide different kinds of buffs, such as healing, damage buffs, and increased drops.

Custome Rewards



The ability to define custom real life rewards to buy with your Habit RPG coins has also been a pretty good motivator for me. However, this naturally only works well if you limit yourself to these rewards when you buy them, and I haven't always had enough will power to do this.

The Tavern



I've also found it very helpful that, if due to unusual circumstances (huge overtime at work, illness, travel) you cannot complete your dailies, you can check in to the tavern in order to avoid taking damage from them. There are some times when you really can't hold yourself to doing daily tasks, and the game offering a way to deal with this is essential.

Does It Work?

So far, my experience with HabitRPG has been pretty positive. I have found that negative reinforcement seems to motivate me more than rewards - for example, if I've been damaged and am about to die, I'll work super hard to get enough experience to level up and heal up. I've found the red tasks motivating as well, as I hate seeing them sit there and feel like I need to get rid of them. It's been nice having friends that are actively using it as well, which helps keep me motivated. Overall I really recommend if you need a little something to keep you on track with your goals, whatever those may be!

Saturday, July 12, 2014

The State of Bounder Games

Wow, it's been a while since I've posted! Life has been busy. In the last four months I've been on trips to Spain and then to the United States to visit family; I've gone through hell and back to get my work visa sorted so I can stay living in Scotland; I've been working full time at Ninja Kiwi during the day; I've graduated from university (finally) with a Master's of Science (with distinction) in Computer Games Technology. Most importantly, though, I've continued to work with Bounder Games, my indie team, on what has now become two game projects: Armoured Engines and Combo Carts.


Anyone who follows this blog knows about Armoured Engines. However, that game has been set aside at the moment while the team works on a smaller game I came up with while looking at abstract diagrams of train tracks: Combo Carts. It plays somewhat like 2048 or Threes, except for one important fact: rather than tiles, you are pushing around carts on tracks. That means they can't always move in a particular direction, because the tracks prevent them.



The goal of the game is to combine carts as much as possible, making as many precious minerals as possible, before the board fills up. Only carts carrying the same type of cargo can combine. In free play mode, the map is randomly generated for each game, making each play through a new experience. We will also have pre-designed maps with particular goal cargo.

We chose to switch gears to work on this project instead of Armoured Engines for a very good reason - Armoured Engines was too big. We specifically chose it because it was a smaller game idea than most of our others, but it was still a full game with a story and lots of different mechanics. Combo Carts is much more bite-size in nature, concentrating on repeated play of one simple mechanic. It is a game I was able to code in a few hours, though polish and added features are taking significantly longer than that. It is a game we can use to get a feel for how releasing a game on the various mobile marketplaces actually works, since this will be our first. Essentially, it is practice. Serious practice and a real effort at making a high quality game, but practice none-the-less.

Combo Carts will be released later this month. After that, we plan to go back to work on Armoured Engines, but there is no way we will make our original September release date. Instead, we are aiming to release Armoured Engines in late November / early December, in time for Christmas.

In other news, we've gotten word that the Abertay Game Development Society, of which we are members, has secured a booth at Dare To Be Digital Protoplay here in Dundee. That means Bounder Games will be showing both Combo Carts and Armoured Engines there in August. If you live in the area, do yourself a favour and come play our games (and many others) for free!


Saturday, March 29, 2014

Armoured Engines: A Game Takes Shape

Armoured Engines is now out of pre-production and in to full force development. The team has been cracking away for the last week and it's time for a development update!

Movement


Basic train movement was set up right away, followed by a scrolling background and foreground to give a feeling of constant speed. The train can be moved back and forth via dragging, with a nice acceleration/deceleration action that allows the player to "fling" the train back and forth along the track. Bounds were set up so the train couldn't be thrown off screen. While more fine tuning is needed, this mechanic is already feeling really nice and fun to control.

Cargo Flinging



The most basic method for dealing with enemies in the game is to fling the cargo you are carrying at them. This week we implemented cargo flinging, and our first cargo type: coal. We've got plans for lots of zany cargos in the future, some which weaponize better than others, but for now we'll be moving on to other features before adding more types.

Enemies



We wanted to get an enemy into the game right away to test against. We chose the Mortar as our first enemy as it's movements and AI are very simple - it simply scrolls across the screen in the background and fires mortars into the air, which must then be dodged or shot down as they fall onto the train. We also created a health system for the train, which sets each carriage up with a small pool of health. This means that each carriage can be lost individually - but if your engine is destroyed, the level is lost and your train limps back into town empty-handed.

Playtesting

We've been forcing the game on our friends and colleagues every chance we get, and have already gained many valuable insights about our control schemes. It's always surprising to see how someone else will attempt to control a game. One of our testers used much longer swipes when flinging coal, which we hadn't expected at all and had to re-program to account for. Others attempted to swipe higher or lower on the train than we were expecting. We learned a ton and will continue to test regularly with as many people as possible.

Overall the reaction to our game has been really positive, with many people asking when we'll be showing more of it. If you are one of those folks anxious for more Armoured Engines, you can follow us on Twitter, Facebook, Google+, or Tumblr.

Next Week

Next week, we'll be adding weapons to the train and improving the way we represent the train in data, so it can be loaded into different scenes and customized. We'll also be doing design work for many of the game's enemies.

Saturday, March 15, 2014

Armoured Engines: A New Project Begins


I am very happy to announce that my small indie team, Bounder Games, are working on a new project. I have come to think of it as a "steam punk western epic", on mobile devices, called Armoured Engines. In the game, you take on the role of a train engine owner who travels between towns in the wild west, protecting the train and making important deliveries. Bandits, evil robots, hostile monsters, and more will attempt to cripple your steam-powered locomotive. Luckily you have at your disposal an arsenal of weaponry with which to fight back. The game will make use of intuitive touch control methods, different for each type of weapon. Some will be mostly autonomous while others will be more manually controlled. A big part of the game will be customising your engine, choosing what and how much cargo to take and where to travel. You can also hire helpers, which provide more functionality for your train (repairing damaged cars, boosting weapon performance, etc). Finally, there will be an overarching story linking all this together, of a grandiose style suitable for something dubbed a "steam punk western epic".

Meet The Team


Sarah Herzog
"Mama Bounder"
Speciality: Leadership, Programming
Other Talents: Art
Background: Sarah has been, at various points in her life, a writer, singer, artist, drama teacher, martial artist, chemical engineer, nanotechnology researcher, engineering education researcher, science teacher, tech support grunt, quality assurance monkey, and finally, most recently, a game programmer. So many hats leads to only one thing: indie game development.




Roy Stevens
"Bounder Bug"
Speciality: Writing
Other Talents: Art, Design
Background: Roy is a student at prestigious game development university Abertay. He has loved games for as long as he can remember, and has always wanted to have a hand in making them. Like the rest of the team, he has a wide range of talents and excels when allowed to have a hand in everything.




Kyle Drysdale
"Song Bounder"
Speciality: Audio
Other Talents: Art, Design, Writing
Background: Kyle is a recent graduate from a creative audio production degree at Abertay University. He shares a deep love of games with his team-mates, and specialises in making awesome music and SFX for games. However, he also is a talented graphic designer, artist, writer, and game designer.





The Plan

The Bounder Games team has big plans. Someday, we want to make amazing, long-term games that will take a year or two to develop and will have a crazy amount of depth and longevity to them. However, to get started, we focused on choosing a game idea that could be developed in only a few months - our target release date is September 1st. To that end, the team met and each of us pitched three ideas, all with the goal of promoting our style while meeting this time constraint. Armoured Engines was the unanimous choice.

Concept mock up of part of the world map

Now, we work. For the last week, and continuing into the next week, we have been in pre-production. This means, for us, creating concept pieces and mocks of how the various stages of the game make look, planning what features will be in the game, and working on story and characters. After that, we dive head first into production. It will be difficult, as I have a day job and Roy has university. We also have a couple planned trips out of the country later in the year that will disrupt our work flow. But despite all this, I am confident that we will be able to deliver a high quality game by September.

I will be posting regular development updates here and on the team's many pages. If you've got any social media accounts, it would be a big help to us to give us a follow/like, or, if you are feeling generous, a share. Our accounts are:
Drop by and say "Hi!", and look forward to our future updates!

Tuesday, March 4, 2014

Unity Tutorial: Scrolling Ticker Text

As I work more and more with Unity, I've begun to learn tricks and tools that I'm guessing would probably be useful to others as well. In my most recent game, Bubble Market, I created a scrolling ticker text box at the bottom of the screen to display active events which were effecting the game at any given point in time. This kind of scrolling text is useful as a general UI element, so I made sure to keep the script generic enough to be re-used. It also occurred to me that these sort of tools may be useful to others as well, so I thought I'd write a quick post explaining what I did, how I did it, and providing the script as an example.


Step 1: Scissoring

The first thing you need to create a scrolling ticker text object is a graphical effect known as scissoring.
Scissoring: In computer graphics, the deleting of any parts of an image which fall outside of a window that has been sized and laid over the original image. Also called "clipping."
There are some more advanced ways to create this effect in Unity, but I went with the easiest route: using a separate camera to render the scissored object. If your scene has a lot of scissoring with different areas going on, I'd suggest looking into other methods, but for simple and limited applications, the camera method works just fine.

To apply this technique, first set up your object without scissoring enabled. Make sure it's large enough that it is easily evident whether your scissoring is working or not. For my example, I used a long test string in my ticker text mesh:


Before we set up the camera, you'll need to change the layer this object is set to. In the upper right of the object's inspector window, click the Layers drop-down and choose to create a new layer. Call it something like "ClippedObjects". Set your ticker object to the new layer.

Now, in your scene hierarchy, duplicate your main camera. Call the new camera something like "Clipping Camera". Make sure these two cameras are in exactly the same place in the game world. You'll need to make several important modifications to the cameras:

  • Clear Flags: On the Clipping Camera, change clear flags to "Don't Clear".
  • Culling Mask: On the Clipping Camera, change the Culling Mask to only have ClippedObjects (our new layer) selected. You'll also need to modify the Main Camera's Culling Mask, so that ClippedObjects is NOT selected. This will make our new camera only render this layer, and our old camera ignore it.
  • Viewport Rect: This is the actual rectangle where the clipping will take place. On the Clipping Camera, define it to whatever you like. You should be able to see the camera's bounds in the scene, and the effect in the camera preview and Game panel.
  • Depth: Make sure the depth of the Clipping Camera is higher (more positive) than the depth of the Main Camera. This will ensure the Clipping Camera is drawn AFTER the Main Camera, which is what we want.
If you run the game, your object should now be clipped based on the Viewport Rect you set on your new camera.


Step 2: Scrolling

This was the first part of the effect I was after, a ticker text where the text disappears as it scrolls to the side. Now for the scrolling itself.

The actual scrolling is just a simple change to the object's transform each frame, I won't bore you with that. The interesting bit was figuring out when the object was no longer visible, and figuring out exactly how far to the right to place it so it can start scrolling again.

While I could have simply used the renderer's isVisible property to tell if it was off screen, this wouldn't have been enough for the second part of the scrolling: moving it back to the other side of the screen. Instead, I decided to use the renderer's bound property, which measures the bounds of the object in world coordinates. I set up minimum and maximum x limits for the visible range of the object, which correspond to the viewport I set up in Step 1. I saved these limits as data members in the script.

With this set up, I can easily tell when the object has moved off screen to the left by comparing the renderer bounds of the object to my saved x limit:


ResetScroller() is a method which moves the scrolling text to the right, just off screen and ready to start scrolling again. We determine where to place this text in the same way that we determined when it was off screen: using our scissor limits and the object's renderer bounds:

This first calculates the width of the object in world space, then edits the object's x coordinate to be the maximum plus half it's width. This is because my text object is centre aligned - however, if your text is aligned left, you won't need this step.

If you create a simple script and apply the method described above, you should see something like this:



Further Modifications

What I described above will get a basic scrolling text functionality in place. However, what if you want to change the text? What if something tries to change the text mid-scroll? Currently, the text will change right there, somewhat ruining the effect. For my scroller, I designed a queue system which accepts new messages and switches to the next message while the text is off screen, or repeats the last message a specified number of times (or infinitely). I'm sure there's a lot more functionality you could add to the system even beyond that.

If you'd like to see the finished product, I've made the script available as a gist. Feel free to use it directly or as a model for your own creations.

What interest text systems have you added to your Unity programs? Please share if you implement the ticker text system in your game - I'd love to see this tutorial being put to good use.

Thanks for reading!