09/24/14

What I learned from “Don’t Touch My Planet!”

Every new project is a good learning experience, especially if you are a game designer buffing up your programming skills. I will share with you what I have learned from building “Don’t Touch My Planet!” on Unity 3D. My Planet is an experimental twist on tower defense games, you can grab it from here.

Don't Touch My Planet!

Technical Stuff

 

Upgrades

 

Upgrades are a great way to make games more engaging, tactical and long lasting. They emphasize the sense of progression and give you a nice way to layer and filter your game experience. But for small games upgrades can be costly. They require save system that will track players progress in every item that can be upgraded. This increases task difficulty quite a bit. For game developers who have not invested in saving system before, this might seem scary.

The problem with saving many items is that you either have to directly save too many variables, or you have to write a system that can save custom classes and load them. You might also have to write code that will synch these saves between different cloud solutions on different platforms. The way I navigated around these issues is by basing all item progression on only one variable: items level! So this way you only have to save one variable per item.

Every stat of the item can be recreated from just the items level and there are many ways to do that. For example for players shield we needed simple liner progression so we have two variables.

 

Shield variables

One is starting health, another is how much health should be added each level. So with simple function shown bellow we can learn shields health for any level.

1
2
3
4
5
public int GetHealthForLevel(int _level)
{
    return statsBase.health+statsIncreasePerLevel.health*_level;'
    //base health + increase * item level 
}
public int GetHealthForLevel(int _level)
{
	return statsBase.health+statsIncreasePerLevel.health*_level;'
	//base health + increase * item level 
}

Any time you need to learn base health for an item, you can call the function “GetHealthForLevel()” with current level passed as an argument. For example at the start of the game we could set items currentHealth variable to baseHealth. So we start with full HP. We can do it like this:

1
currentHealth = GetHealthForLevel(SaveManager.shieldLevel);
currentHealth = GetHealthForLevel(SaveManager.shieldLevel);

You could also use arrays to store what value an item should have on each level

1
2
3
4
5
6
int[] healthPerLevel;
 
public int GetHealthForLevel(int _level)
{
    return healthPerLevel[_level];
}
int[] healthPerLevel;

public int GetHealthForLevel(int _level)
{
	return healthPerLevel[_level];
}

or even better use curves to define balance  (more on this below). Basically as long as you don’t have randomized stat increase on levels this should work for you. The scenario where this would not work is for example: in DnD your character rolls a dice each level up to see how much health it should give you, with min/max health increases. But this is kind of a dick move so :D

Time based upgrades

 

Another cool feature popular on mobile games is time based upgrades. Basically when you upgrade something you have to wait X minutes before upgrade is ready. Trick is you need to save time, so that when player shuts down your game and returns later he should receive all the upgrades that should have been ready by that time. So tracking only time during playtime is not enough, as that data will be lost when the game is closed.

To implement this feature, you need to make an important decision first. Do you rely on device clock to check against time or do you use your server clock for this.

Device clock is easy to access and works offline, but player can cheat by changing the actual time on his device. Server clock is impossible to cheat but requires active internet connection and you also need to have a server. Some games allow you to play offline, but only give you access to time based mechanics if you are online.

For “Don’t Touch My Planet!” I went with offline approach. I didn’t want to force internet connection on purely offline game. Though for online or highly competitive games you will need to use server time.

You can implement timed upgrades using DateTime and TimeSpan constructs. You will need to add “using System;” at the top of your script to use this functions.

DateTime  - Represents an instant in time, typically expressed as a date and time of day.

TimeSpan - Represents a time interval.

During upgrade we must get current time from the device system clock and save it as a string. We can get it by using “DateTime.UtcNow.ToString()”. UtcNow will give you time that is independent of the time zone, so you don’t have to worry about players going back in time when they fly to different countries.  Your save code could look like this:

1
PlayerPrefs.SetString("shieldUpgradeTimer", DateTime.UtcNow.ToString());
PlayerPrefs.SetString("shieldUpgradeTimer", DateTime.UtcNow.ToString());

PlayerPrefs” is the easiest saving option in Unity.

Next time when you need to check if an item has been upgraded, you need to load saved time string and process it:

1
2
3
4
5
6
7
8
9
//load saved time string
string time = PlayerPrefs.GetString("shieldUpgradeTimer");
//variable to store saved time
DateTime savedTime;
//try parse method will check if string is correct and load it into datetime Variable, it will return false if parsing failed
if (DateTime.TryParse(time, out savedTime) == false)
{
    //saved time is corrupted, implement failsafe
}
//load saved time string
string time = PlayerPrefs.GetString("shieldUpgradeTimer");
//variable to store saved time
DateTime savedTime;
//try parse method will check if string is correct and load it into datetime Variable, it will return false if parsing failed
if (DateTime.TryParse(time, out savedTime) == false)
{
	//saved time is corrupted, implement failsafe
}

Then we need to check how many seconds have passed since we ordered an upgrade:

1
2
3
4
5
6
7
8
9
10
//lets get current time
DateTime timeNow = DateTime.UtcNow;
//time span can help us to calculate how much time has passed after an upgrade has started
TimeSpan timePassed;
//substract saved time from current time to get interval inbetween
timePassed = timeNow.Subtract (savedTime);
if (timePassed.TotalSeconds < 0)
{
    //player changed his clock to previous date, he is now BACK IN THE PAST!!! implement the failsafe
}
//lets get current time
DateTime timeNow = DateTime.UtcNow;
//time span can help us to calculate how much time has passed after an upgrade has started
TimeSpan timePassed;
//substract saved time from current time to get interval inbetween
timePassed = timeNow.Subtract (savedTime);
if (timePassed.TotalSeconds < 0)
{
	//player changed his clock to previous date, he is now BACK IN THE PAST!!! implement the failsafe
}

After that lets check if enough time has passed to warrant an upgrade

1
2
3
4
5
6
//we need variable to know how many seconds are required to upgrade an item
double secondsNeededToUpgradeItem = 300;
if (timePassed.TotalSeconds >= secondsNeededToUpgradeItem)
{
    //Enough time has passed, upgrade an item 
}
//we need variable to know how many seconds are required to upgrade an item
double secondsNeededToUpgradeItem = 300;
if (timePassed.TotalSeconds >= secondsNeededToUpgradeItem)
{
	//Enough time has passed, upgrade an item 
}

BOOM HEADSHOT! You can now laugh from the shadows as players stare at the timer and wait impatiently for upgrades to finish. Speaking of timer, here is a bonus code for you to display the timer.

1
2
3
4
//lets check how many seconds are left until upgrade is ready
TimeSpan timeLeft = TimeSpan.FromSeconds(secondsNeededToUpgradeItem-timePassed.TotalSeconds) ;
//We can use string format to convert timespan into a time string 
string timeToDisplay = string.Format("{0:00}:{1:00}:{2:00}",  timeLeft.Hours, timeLeft.Minutes, timeLeft.Seconds);
//lets check how many seconds are left until upgrade is ready
TimeSpan timeLeft = TimeSpan.FromSeconds(secondsNeededToUpgradeItem-timePassed.TotalSeconds) ;
//We can use string format to convert timespan into a time string 
string timeToDisplay = string.Format("{0:00}:{1:00}:{2:00}",  timeLeft.Hours, timeLeft.Minutes, timeLeft.Seconds);

Don’t forget that you will need to add “using System;” at the top of your script to use DateTime and TimeSpan functions.

Animation curves for balance

 

To get most out of the only one variable based upgrade system, we can use Unity’s animation curves to have more control over how item stats will change over levels. Curves represent value over time, looking at image below should give you an idea of what the AnimationCurves are.

Curve

You can use them to visually see how stat will change over levels. Vertical coordinate would be the stat value, horizontal coordinate would be the level. I used this to control enemy stats. The value of the curve on certain level directly represents stat value.

You can define Animation curve as public variable:

1
public AnimationCurve Rocket_L_Health;
public AnimationCurve Rocket_L_Health;

curveVar
The curve will represent how stat will increase over certain amount of levels. For example this one curve shows how stat will increase every 10 levels. after 10 levels we need to repeat the curve, so that it can show us the stat values for the next ten levels. We do this by looping the curve. but if we let unity do that we get something like this:

curves2

Not very useful. On wave 11, when we repeat the curve stat would be back to the value of 0. What we are looking for is looping like this:

curvesLoopSo the form of the curve is repeated, but new curve starts on the value the previous curve has ended. And that’s exactly how we accomplish this. When we repeat curve, we add last value of the previous curve to it.

We can use this to have controlled progression of the items value over levels, and we can do that by one simple function.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// this function returns item value on provided level, it needs 3 variables
// _curve is AnimationCurve that has Item's balance on it 
//_level is current level of the item 
//_stepping is basically, how many levels should we calculate from one curve, before repeating it
public float GetCurveValueForLevel(AnimationCurve _curve, int _level, int _stepping)
{
    //we calculate how many times has the curve repeated itself
    //for example if one curve represents 10 levels and 
    //current level is 25, stepping multiplier is 2
    int _steppingMP = Mathf.FloorToInt(_level/_stepping);
    //now we need to determine on which step we are in current curve
    //so if curve represents 10 levels and current level is 25
    //we need value of 5, that is where we are on current curve(20 to 30)
    //20 just means, we have looped through our curve twice
    //check image above to understand this 
    int _currentStep = _level - _steppingMP*_stepping;
    //the curves give us value over time. By default time length of the curve is 1 second
    //so we need to determine what percent of 1 second _currentStep represents
    //first we get what percent of stepping the currentStep is
    float percent = _currentStep*100f/_stepping;
    //now we get x Percent of 1 second
    float _time = 1f*percent/100f;
    //now we get what value the curve has on given time
        //then we add stepping multiplier, to create looping like on image above
        //basically the last value of the curve multiplied by the number of times curve was repeated
        float _value = _curve.Evaluate(1f)*_steppingMP + _curve.Evaluate(_time); 
        //because it's easier to edit curve at very small values, lets multiply them so we get normal value numbers 
        int _multiplier = 100; 
        //return value 
        return _value*_multiplier;
}
// this function returns item value on provided level, it needs 3 variables
// _curve is AnimationCurve that has Item's balance on it 
//_level is current level of the item 
//_stepping is basically, how many levels should we calculate from one curve, before repeating it
public float GetCurveValueForLevel(AnimationCurve _curve, int _level, int _stepping)
{
	//we calculate how many times has the curve repeated itself
	//for example if one curve represents 10 levels and 
	//current level is 25, stepping multiplier is 2
	int _steppingMP = Mathf.FloorToInt(_level/_stepping);
	//now we need to determine on which step we are in current curve
	//so if curve represents 10 levels and current level is 25
	//we need value of 5, that is where we are on current curve(20 to 30)
	//20 just means, we have looped through our curve twice
	//check image above to understand this 
	int _currentStep = _level - _steppingMP*_stepping;
	//the curves give us value over time. By default time length of the curve is 1 second
	//so we need to determine what percent of 1 second _currentStep represents
	//first we get what percent of stepping the currentStep is
	float percent = _currentStep*100f/_stepping;
	//now we get x Percent of 1 second
	float _time = 1f*percent/100f;
	//now we get what value the curve has on given time
        //then we add stepping multiplier, to create looping like on image above
        //basically the last value of the curve multiplied by the number of times curve was repeated
        float _value = _curve.Evaluate(1f)*_steppingMP + _curve.Evaluate(_time); 
        //because it's easier to edit curve at very small values, lets multiply them so we get normal value numbers 
        int _multiplier = 100; 
        //return value 
        return _value*_multiplier;
}

This might seem complicated at first, but it’s really simple. We use the curve to represent the value of a stat over certain amount of levels, which I called stepping. If our level is larger than stepping, we repeat the curve but now with higher values. Each time we finish the curve, steppingMP is increased.

But we always evaluate curve withing current stepping. So we determine where we are in current curve loop. Then we translate our position into curves time variable. After which we get what is the value at current time. It is really worthwhile thing to understand. Because if you have your balance with visually representable curves, you can overlay different curves on top of each other and you can pretty much visually create perfect balance.

If you have cooler way to track your balance, please let me know ^^

Non Technical

 

 

Plugins

 

Whether to write all your features yourself or speed up development with 3rd party tools is a topic of great debate. On one hand it is easier to use and build upon your own tools, on other hand reinventing the wheel.. well the expression is self explanatory. But while there are pretty standard and safe external solutions like physics libraries or game engines. Sometimes you have to deal with more questionable products like for example plugins on unity asset store. These are often developed by one person who might see his submissions as a hobby and side income, thus they might not have the dedication to deliver quality that a company fully dependent on their products success would have.

You will have to analyze this situations and weight several factors. Is the feature you have generic or very specific and unique? If you are building a revolutionary physics based puzzle game, reinventing the wheel might just be the best thing you can do as you will most likely need more control than standard solutions can give you.

But if standard thing is fine with you, then you need to think really hard if spending your own time to develop this feature is really worth it when there are perfectly usable solutions out there. Chances are you are not doing anything revolutionary with your hud (please don’t), so it might be a safe bet that your valuable time is better spent making better gameplay than slaving over annoying and tiresome task like making user interface that can work on all platforms and all resolutions. ( I spent less than 10 minutes doing that with Ngui.)

Another good reason to use plugins is that you might not want to face every possible challenge with your first game. Even if you want to fully rely on your own tech, you might want to get to that point step by step. Remove extra noise like hud or  touch controls from your first game. Build solid gameplay mechanics and on your second game you can focus replacing external tools with your own. Having a long term vision about tech of your company really helps.

Now I’ll get to more specific cases on this subject by giving you a small review of the plugins I used.

NGUI - this plugin is so amazing that Unity actually hired the guy behind it and in update 4.6 you will see this replacing Unity’s existing GUI system. If you can’t wait for 4.6, definitely buy this plugin.

Master Audio – I love it. I picked this up for 10$ on sale and I got pretty powerful, simple to use audio system. It has events for default behaviors like disabled/enabled and you can write custom events. You can easily create random sound groups, music track mixing etc.

IOS Native – This allowed me to do everything I wanted to do on IOS, like leaderboards, InApp, iCloud. But I would not rely on third party plugins when it comes to porting to mobile devices. You should use plugins like this to let you publish your first few games, but eventually you will need to be able to use native SDKs and commands. Mobile platforms are tricky, they update often and in way that might break your functionality and when that happens, your amazing google skills won’t always be enough to effectively resolve the issue. So definitively plan to invest in in-depth knowledge of native SDKs and don’t put off this task for too long.

Official Facebook SDK - It works, kind of. But it really does not fill like solid solution and makes you worry about beta status. In xCode it gave me a lot of minor warnings when I built my project. They didn’t break anything but it just does not feel “clean” and stable.

New Services We Tested

There are tons of services built around games, especially mobile games. Some of them let you use common functionality like displaying ads or tracking your games performance. Some offer bizarre new ways to allow your players to interact with your app in innovative but often questionable forms. In this section I will review the services we tested with current game.

I serve ads in “Don’t Touch My Planet!” and I used Chartboost to do so. I don’t have enough data yet to see how well it performs income-wise but I have good feedback from people who use Chartboost. I used unity plugin to serve ads and it was very easy to implement, worked within few minutes. Make sure to use custom locations to get better feedback from analytics.

To track analytics I used GameAnalytics. It’s a great start and you should definitely consider implementing it if you have not used analytics in your games before. With just few steps you will be able to track all the important KPIs without writing a single line of code. It tracks all the retention, user and session length data you might need.

Tracking custom events requires just one line of code. I would recommend that you at least track every step of the tutorial and whether or not players have interacted with all your features to see if players are understanding your game. For example send event first time player opens a store.

A lot of people drop games on their tutorials, so compare how many hits you have on each tutorial step and you can see where you are loosing your first time users. Fix those places in your next update.

You can also use game analytics to generate heat maps if your game is level based. Send custom events when snipers kills a target for example to determine what map points are being exploited by them. You can then preview heat map directly in unity, it will overlay your scene. This is just super awesome.

Well I guess that’s it :D   I hope you found this useful and reach out if want to ask anything.

Cheers!

 

04/1/14

Jumping and stuff..

Soooo.. blog post time!

We had playtest in Gamefounders office sometime in near past, I edited a cool video. I know I have a crappy camera, but directing and editing genius make up for it :D

Yeah, we don’t make easy games that’s for sure :D It was great diabolical pleasure to watch people suffer with levels we made, but they kept at it until they mastered the game and had happy faces of triumph when well deserved victory came at last, so we must be doing at least something right :D

There should be a new playtesting day this week, I’ll try to make a post about it faster this time.

The Gamefounders program is going awesome. We had time to polish and build up on our games, we have met cool new mentors, even got a free Blackberry (Don ^^). Meo managed to get lost couple more times, so all in all it’s going great.

I’ll be posting more about our new games soon, so be sure to keep checking this blog, It’s going to get awesome, I promise :D

P1080031  P1080268 P1080285
And as mentioned in a video, you can send mail to info@jumporfall.com and we’ll send you free games to test and enjoy.

Cheers!

Sandro.

 

 

03/17/14
Elk Soup

Tallinn and Game Night

In case you missed our facebook update we are now in Tallinn, Estonia! We’ve been here for two weeks already in the amazing Gamefounders program. In this short time Jump or Fall has met many industry gurus and gained useful insights from their training. We have even made a close escape from being renamed to “Jump and Fall” :D

Somewhere over Europe From Riga to Tallinn

Bombardier

Airpot

I didn’t get a chance to see much of Estonia yet, only a small part of Tallinn and it has left an amazing impression on me. There are two kinds of stories cities can tell that are most interesting to me. One is a story of life, the kind of flow and vibe people go through every day of their lives. Their hopes and dreams, the binding mark of culture and society and struggle to stay within it or break free from it. This I’ll admit is still a mystery to me, Estonians seem very reserved and quiet people. So far I have learned more of Brazil (cheers :D ) than Estonia in that regard.

The other kind of story city can tell is ground deep within the stone, concrete, earth and trees that makes up it’s body. It is the mood and the atmosphere of the place and it is best seen at night when the streets are the most quiet. This story I’m getting to know a little better and I don’t think it gets quieter anywhere else compared to Tallinn. Streets are very wide, buildings far apart so there is a sense of vast space everywhere, in contrast to this, the busiest of the streets never have more than a handful of people walking down them at one time. At nights the emptiness can get eerie.

Meo and I often stay very late in the office, sometimes we miss the last public transport and we walk back home. Even though it is very easy to navigate the city, our RPG roots take hold and we often find ourselves exploring the wrong turn or two. Old town in the night feels like a medieval adventure or survival horror. Walls around old town with mix of old buildings and neon bright night clubs puts you into a Deus Ex mood. Some areas with colorful wooden houses feel like you have wandered into a toy town, but there are places where it gets so quiet it becomes disturbing. You feel like you have been dropped into a video game prototype level that only has art and few ambient sounds added to it.

Elk Soup

Streets Grey OldTown

The city was designed by open world exploration mastermind, most of the houses are three or four story high, but there always is an interesting tall structure in the view. You will never run out of fascinating focal points to grab your attention and lead you to it. Every bus stop has the city map so you can always get back on track if you got yourself lost.

The Gamefounders program is INTENSE, but in a good way. We meet a lot of interesting people, who have worked on epic titles (Final Fantasy, Legacy of Kain, Heavy Rain) and they have amazing amount of experience to share. From the day one you get the motivation to really focus and define your goals, then find clear ways to reach them.

Seminar

On friday night we had a little booth(?) at the event called “Game Night”, to be honest I never properly understood what the event was all about. But it was held in a big ass movie theater, where people played “Injustice” on big screen (yeah, the giant one you watch movies on). There were PlayStation 4 stands with very boring game selection and some very cool old school games you could play on custom controllers. There was even one arcade like controller mounted on female mannequin that projected Chip ‘n Dale Rescue Rangers (video game) on a t-shirt.

JumporfallPS4 Mario Controller

Somewhere among all this madness, Jump or Fall and other teams from Gamefounders program had a chance to show people our (their) indie games! It was awesome, even with huge competition from Nes, Gamecube, PS4, and Big Screen Injustice game a lot of people dropped by our stand and played our games. The feedback was amazing, people would stop and check out each of our games and give us feedback. It was great feeling to see them having fun playing games we have worked on.

Oh and we found good places to buy beer, our faces should show you how we feel about that.

^___^ ^___^ ^___^

 

 

 

02/24/14

First Game Jam in Tbilisi, Georgia

Yesterday and the day before that, or more specifically on February 22-23, 2014, from 10am to 9pm for someone who likes specificity, there was a first ever Game Jam held in Georgia. The attendance, team participation and enthusiasm went so high beyond the expectations that they could kiss the moons! (if you don’t know where this expression is from, you’ve missed one hell of a game). There were three speakers from Jump or Fall on this event and one of us was also a part of jury, which judged the games with a tear in its eye and pride in its heart.

 

First Game Jam in Georgia

First Game Jam in Georgia

 

Since this was the first Jam, we thought that if up to 10 teams would show up, that’d be a good start. To our great surprise, we had 24 teams in the end! Not only that, the ages ranged from 14 to 50+. I’ll be honest, I had no idea that so many people in Georgia are actually into game dev and it did take me by surprise despite my high resistance to the element of it (surprise).

 

1939612_261798527319279_1690145858_o

 

The event was very smooth and went just as planned. The only unforeseen thing was the amount of people present, which only boosted everybody’s spirits and made the entire thing more fun. The event consisted of various speakers about different topics, such as how to optimize assets, game industry and how to approach it, current game standards, tips to game dev teams, etc. There were breaks in between with coffee, tea and some cookies (who doesn’t love free cookies?) and at some point there was a full food menu available. Yeah, the post is about Game Jam and I’m elaborating on food, what of it? I love food, I often think about food and therefore I write about it when it’s relevant. Now aside from just food, the organizers promised us a cake at the end. Of course that did seem dodgy as hell after Portal but we went through with the Jam anyway and what do you know, the cake was not a lie!

 

 1618243_261848493980949_372860735_o

 

Ok I’m done about food. Besides speaker presentations, there was also a fun quiz-like game where we asked the audience gaming related questions and the participation was pretty fierce to say the least. I also secretly enjoyed the feeling when no one knew the answer because the questions were created by me and Sandro and in that moment we felt smarter than everybody else… people need that kind of moments, even if they’re illusory ones.

 

I know it! pick me! I know!!

this is the very end of Day 1, that’s why the attendance is not in its fullest

 

Needless to say, the event had a lot of press coverage and the media did an awesome job documenting these two days. Later, I’ll post a presentation with English subtitles so you guys can understand it (and also be bewildered by how Georgian sounds). All in all, the Game Jam was a blast, engaged tons of people and spewed fun in all directions. I’ll try to provide the top three winner game footage when I have all the materials. As of now, everybody’s asleep after the hard Jam and the pictures and videos are yet to be uploaded (and I didn’t wanna wait till then so I write this blog post anyway). Another Jam is being planned in May although it’ll be awesome if it’s moved to June since Jump or Fall will still be in Estonia in that time. ეს ერთი და სხვა მრავალი! (google translate can hint on this one)

 

Yours truly,

~ Sanders

12/18/13
That's All Folks

The Ouya Journey and Plans

Well it’s been one month since we released Washington Vs Zombies on OUYA and as promised let me share with you how it fared so far. In the previous post we discussed how OUYA will place new games in sandbox list and it’s home-brew O-ranking System. Basically new games go at the end of this long list and they have to slowly crawl into the main store categories. The position of games is judged by “O-Rank”, here is official description for it:

“The O-Rank is our homegrown game/app ranking algorithm driven
by key player engagement metrics. Ranking = Fun Factor!”

I wrote to OUYA support asking for more detailed info about the inner workings of the O-rank but haven’t heard from them yet.

Now, considering we have not spent any money on advertisement and relied solely on contacting the gaming press sites instead, WvsZ has done decently so far. The game is  ‘hovering’ around 250th place in ranking out of 500+ games, with best result of 190 and on bad days near 270. The game received 32 “OUYA Likes” which can only be given via actual console menu. WvsZ has also moved forward from the abyss of the sandbox list and is now the 21th place there. Unique downloads hit 234.

The game had two reviews by Ollie Atkins from Indiegraph and Billy White from GameIndustry.com

Looking at the games that fared better than WvsZ in sandbox list, a lot of them are ports of titles from other platforms like iOS and Android with already existent player following and this gave them a huge boost. Considering most of top OUYA apps are ports as well, it’s probably a good idea to try OUYA as a second or third platform.

We have also looked at what could be a major barrier for Washington Vs Zombies on OUYA store. The most problematic part was the app size. WvsZ is was around 100mb and with OUYA’s 8gb internal HDD that can be a problem, so we worked on optimizing the game size and it appeared we could use better formats for sound files and in combination with other optimizations WvsZ is now around 35mb. We have further tweaked and improved the game and released an update around 10 days ago with a new game poster. WvsZ had one of the darkest posters among OUYA games :D

The battle for the escape from sandbox is continuing and we hope that with game improvements and possibly some help from Washington Vs Zombie PC port (Coming Soon) we will succeed.

“In other news” we started working on a new game, Coffin Rush (the name is not finalized), with details coming very soon. Washington Vs Zombies PC port is also in the making and Meo (our artist) released a modular modern city pack on unity store, you can check it out here. Stay tuned for more.

Facebook | Twitter | IndieDB

 

That's All Folks

12/3/13
Star-Wars-Kotor-2-Wallpaper

What are we playing?

You may have thought that all this time spent on developing games would turn one away from desire to actually play them, but NOP! We love playing games as much as ever. So here’s our thoughts on what we have played recently.

 

Sandro:
Kotor 2 with restored content and robot planet mods. This was just what I NEEDED to play now. The game that does not feel like it’s “connected” to anything, the game that does not reflect on petty modern world dramas and internet problems, something that is not on any trend wagon and does not remind you at every step you are playing in a set pieces and talking to artificial puppets. For a few days I was completely immersed in this beautiful world of grey colors and self reflection. Why grey ? Because this game is extension of planescape, it beats with the heart of journey that showed us what it takes to change the nature of a man. This extension may be just a broken echo, but it is dear one for me nonetheless.

This is not a my first playthrough. Returning to old stories is a habit of mine, when you are shown something truly great it creates a hunger, longing for more that is hard to fill with anything that is less. You may postpone it with everyday stuff but sooner or later that won’t be enough. The restored content mod was excuse for me to replay Kotor 2, to revisit it like you would an old friend.

Star-Wars-Kotor-2-Wallpaper“It is such a quiet thing, to fall. But far more terrible is to admit it.” — Kreia

Kotor 2 was rushed in development, it is 40+ hour game that was done in little over a year. Some one at Lucas Arts may have thought they were making a movie and so Obsidian had to take rusty axe in hand and hack away at the games ending. So what could have been a masterpiece turned into a mutilated corpse. Developers gathered hacked pieces, what was left still intact after butchery, hid this away in game files and shipped it with heavy hearts.

And this is where modding happened, players found the unused files, gathered them lovingly and worked for years to restore what they could to the game. This is why I love the concept of modding and open platforms that allow for such things to happen. Their great work healed many wounds in the game, many small, subtle and crucial things were restored that gave meaning to the story, that explained the choices made by characters and their motives. They restored what was hacked away but you can’t restore what was never made flesh. There is still a gaping wound at the end, conversations with characters that are left unresolved, hints that there was much more to the story and more meaning to the ending, to your choices.

I’m still glad to replay the game with mods. It was nice to hear kreas teachings once more, to feel the pain and loss that weighed on Visas and help her heal, to discuss the slaughter and torture of worthless meatbags with HK-47.

11/27/13
super_mario_bros_end1

Hold Strong! A little motivational discourse for game devs (and beyond)

Feeling down? Giving in to naysayers? Think the stuff’s just not worth it and pondering on giving up?

Well HAVE NO FEAR, SANDERS’S HERE! (so what if my name is not Vlad, that doesn’t make it sound any less powerful..)

Vladimir_'Vlad'_Lem

I’ve read way too many dev rants, post-game release diaries, and personal industry analysis to see that there are a lot of folks out there who may feel really demotivated and down about staying in the industry and making games. Well this blog post is here to share my two cents on this issue and, despite it being game development oriented, most of the stuff written in here can be applied to pretty much any other area.

No, this is not gonna be “you can do it because I said so! now go use this sentence as a motivation without any background or you’re a weakling” kinda post… at least i’m gonna do my best to not make it that kinda post. But I’ll throw my personal perspective on such grim moments and try to show the bright side, the EXISTING bright side, which is THERE, you just don’t see it cause you’re a weakl.. I mean sad at that moment, or cause you’re surrounded by way too many naysayers and they’re slowly but surely dragging you into the bog of negativity where they’ve been sitting all their life. You do not want to be in that bog, there is nothing there which will benefit you in any way, literally (this is one of the rare cases where the word “literally” is used correctly in modern English).

There’s this pattern I’ve noticed around me and also read in many different books. At first it sounded really cheesy and without any concrete background but then, as I grew older, I started noticing more and more that it actually holds true. The pattern is, when someone does something for long enough, diligently enough – it pays off. One way or another, it will bare fruit for sure. I personally know several people that did something in such manner and at that time it seemed pretty stupid/hopeless/not cool; then at some point in their life, an opportunity turned up and the only reason they were ready to seize it was because they’ve worked at that particular something for all those years and didn’t give in to the negativity around them.

super_mario_bros_end1

Speaking of negativity and downers, these things may not seem to be on the foreground of your struggle but actually they’re one of the most important variables in YOU being DOWN today. Don’t take them lightly, they do matter… oh boy do they matter.. they matter so much that if they mattered any more than that you would probably be able to divide by zero. You may be a really rigid and goal oriented person, and in this case the evil naysayers will have a harder time to bring you over to the dark side, but eventually it will happen unless you’re aware of their presence and influence on you. The constant “this won’t work”, “you won’t make a carrier out of this”, “it takes too long”, etc. does stay in your subconsciousness and whether you like it or not, affects your overall mindset towards things.

You’re part of those downers too. The game didn’t sell well, you’ve released 4 titles already and they don’t seem to pay off, certain tech is too hard and you suddenly think you’re on the wrong track… you’re telling yourself it’s not gonna work out. Ok, let’s everybody calm down and accept that these things happen (to EVERYONE.. SURPRISE!). Just let’s be pragmatic here for a moment and take a look at our options:

  1. We may drown in our sorrow and self-pity and compare ourselves to every single successful person out there to brighten the contrast. Then open Facebook and see what other people are doing in their life since there’s nothing to do in ours because it sucks so hard. Maybe go out and share our tragedy with some naysayers so they can relate and tell us how life really IS hard. Then maybe lie in the bathroom, take a raz… ok you get the point. OOOOOOOOOOR we could
    _
  2. Learn from our mistakes; you’ll be surprised how fun that activity might be if approached correctly. And you learn tons! really! I mean it! Surrounding ourselves with people who can actually sympathize with our diligence and work is also helpful (why? just because). There is a community for everything in this world (even this) and game development is far from being in the “small” category. Also, stop worrying. It is completely, totally, utterly and most definitely pointless AND time consuming. It brings zero benefit and causes a lot of unnecessary harm. To hell with the cheesy quotes, it’s just not practical to worry, so stop it. Easier said than done, yes, but that doesn’t justify worrying. And most importantly we can just make a simple choice – stop or keep at it.

andrew ryan

There’s a story I was told as a kid, about two mice that fall in milk and are drowning. They both struggle and eventually one stops and tells the other “what’s the point, we’re gonna die anyway”. While the pessimistic mouse dies the other one keeps struggling, eventually churns butter and gets out. The beauty of this story is not that the mouse worked hard and stayed alive, but the fact that it didn’t know how to make butter (or what butter is… mice don’t know that kinda stuff). It didn’t have any promise or guarantee that if it worked hard and didn’t give up, it would get out alive; but it kept working nonetheless, it made a simple choice and it was to keep at it.

Now don’t get me wrong, I’m not saying put everything aside and blindly develop games until you starve to death. Yes, for basic existence we all need to eat and sleep (and have all the gaming gear in the world) and this in turn needs money which may not instantly come with games. Fine, you’re not alone in this, go find a job; part time, full time, whatever suits your fancy, is available and you kinda know how to do. The beauty of doing what you love is that you do it no matter what. Dedicate time to game development whenever you can: after work, weekends, holidays. The bottom line is if you wanna do something, you’ll do it one way or another; and I don’t need to know YOU in person to say this, I’ve just witnessed this happening by itself so many times that i’m sure it applies to you too.

Now for some actual insight into the game making business, more specifically what can it potentially bring in the long run?…  Well this industry is relatively young and growing at a cosmic rate. For one thing, games are starting to be used in other fields, like: education, military programs, science, and there are even business improvement suites which are essentially games (STEM Challenge, America’s Army, Foldit“It’s your business” gaming suite”). Now I’m not telling you to go and make some educational game with balloons and talking giraffes in order to teach 1st grade children how to read (there’s nothing wrong with that though, who doesn’t like talking giraffes), but what I’m trying to say is that there are a lot of new fields for games to be used in and when they’ll require someone who has years of experience of game making, who are they going to turn to?

Video-Games-Posters1

Besides penetrating other industries games business spawns new areas itself; Mobile gaming was not around, then BAM! – social events filled with people staring at their phones, not talking to each other. Now virtual reality is taking off (Oculus rift, CastAR) and we never know where it’ll land; maybe create an entire new movement or give you an opportunity to do something you’ve been thinking about for years and lacked resources to realize? Also microconsoles are coming in and they’re very indie friendly (actually they’re indie oriented) – more exposure to you my friends, more ways for you to still make this one special game happen.

What does such exponential growth result in? It results in damn rainbow cookies!… AND more and more tools being made for easy and high quality game making. The game development tools market (engines, editors, generators, etc.) is a live example of games industry giving rise to new area. Why do you think indie games picked up the pace and started to become popular? Yes, we’re all fed up with the commercial crap big studios are pushing but that’s not the only reason. Better tech, more availability, and easier development tools resulted in small studios being able to make good games without tons of time and money investment. As games mature and become FINALLY accepted as a separate form of art instead of kid’s toys (how could the world be so dumb for so long is beyond me), people are beginning to take them more seriously – again, good for us who deliver. If you want to hear more about where the industry’s heading, give a listen to this free GDC Vault talk by former Ultima Online director Starr Long, it’s worth your 50 minutes of time.

Now, don’t think that’s all I’ve got, I can bring tons of more examples to show that there’s actually a LOGICAL reason why you should hold strong and don’t give up and that it’s not only about the cheesy inspirational sea shore pictures with a badly Photoshoped text on them; but I think I touched the main points and I don’t wanna flood the post or tire you dear readers. Unless you’ve thought about all that is written here before, you’ve already got enough to process for some time, so would you kindly go and do just that?

 

Yours truly,

Sanders

 

P.S. Oh, and here’s a song for some background music

11/18/13
Wallpaper

Washington Vs Zombies now available on OUYA!

So finally our game is live and on OUYA store. Strange feeling you know… picture Frodo waking up in Rivendell after the Nazgul attack and you’ll get the idea. We have overworked ourselves for many nights and bathed in blood of countless bugs; all this while setting up our studio too and now to have Washington Vs Zombies ready feels almost eerie. Creating a game the Indie way is no easy task but certainly a very rewarding experience.

The epic speech aside though, the game is out now! ^_^ So what are you waiting for? Fire up OUYA, install WvsZ and grab these awesome wallpapers! (Don’t forget to like the game on OUYA store)

Wallpaper

Wallpaper

 

As promised we’ll be open about our studio and games, so we will cover the “OUYA Journey” of WvsZ. Many developers and players may find it interesting and hopefully, can benefit from this information. First part of the job: getting game on OUYA is surprisingly easy compared to other platforms. Any OUYA can serve as a devkit, there is no “developer fee”, support is friendly and responsive, submission process is straightforward and review takes up to two work days. OUYA team has done an excellent job of making their console accessible and easy to work with for developers.

Second part: getting the game to players looks way more daunting. OUYA website has a cool newest releases page that will show new games both on main page and this new games list. The actual OUYA console store doesn’t have any such thing; store is comprised of “Lists” (ex: ‘Watch and listen’, ‘Only on OUYA’ etc.) and there is no list dedicated to new games. All new games go into the “Sandbox” category instead and your game gets placed at the end of it. And that sandbox games list is looong, took one full minute to scroll to the end. Sadly, not a lot of players are going to bother doing that. You get out of the sandbox with OUYA’s special O Ranking system, that measures things like how much time players spent playing the game, how many likes they gave, and so on to find the “fun factor” of the game. While in sandbox, the game cannot be found in any other lists, including the ones for different genres.

O ranking sound like a cool and fair system (depending on how fine tuned its algorithm is) but discoverability seems to be a serious issue at this point. So if you enjoyed our game or any other game in sandbox please don’t forget to like it on OUYA store since as you read, your support matters like never before.
Cheers and happy gaming!
More updates to come ^^

11/14/13
Wallpaper

RPS Defense HD is free now

To celebrate the release of Washington Vs Zombies we made our first game “RPS Defense HD” free! ^_^ You can grab it from Itunes store. Make sure to check out WvsZ on OUYA on November 18th too (if you have OUYA that is, if you don’t – go get one! +_+ ). Washington Vs Zombies is also free.. we have a free-frenzy goin on : D

RPS defense is an incarnation of an ancient classic “Rock, Paper, Scissors” with an awesome twist. Its fast-paced gameplay intertwined with occasional timed puzzles will keep players engaged and asking for more.