A Game Design Tip a Day #9 – [Unity C#] Ditching MonoDevelop for Visual Studio

Unity ships with MonoDevelop, an IDE which does the job fine for the most part. Until it crashes, which is all the time. Or until it runs slowly, which is all the time. Or until it forgets to autocomplete my code, which is all the time. Or until— okay, you get the point, I’m not MonoDevelop’s greatest fan. It’s slow, prone to memory leaks and lacks in features. Plus it’s deleted all of my project’s code on more than one occasion for some inexplicable reason. But it’s fine, because we have a saving grace! Many Unity developers (well, many developers full stop) prefer to use Microsoft Visual Studio. And why wouldn’t they? Microsoft has a solid developer network, very good code documentation and an extremely reliable IDE. Plus they literally invented C#, so there’s that too.

tip_a_day_09
As far as IDEs go, this is the sexiest. Well, maybe after Sublime Text with the Monokai theme.

Visual Studio now has a free Community Edition, so you poor saps out there who don’t have enough dosh for the Professional Edition (or haven’t had it thrown at you by your university) can go grab it for the same price as going outside for some air. Given that you’re looking up game design tips, going outside is probably something you should go do after reading this. We all know that ‘free’ is the best number, so there’s really no excuse to not get it.

The biggest aspect that Visual Studio trumps many MonoDevelop alternatives in is interoperability with Unity’s features. There’s a fantastic plugin called ‘Visual Studio Tools for Unity’ which allows you to debug your Unity project in Visual Studio as easily as you would do using MonoDevelop, plus it has code completion for Unity-specific code that’s better that MonoDevelop (it doesn’t have any more code completion features, it’s just that VS is infinitely faster at it than MD).

One thing that did throw me at the beginning was that Visual Studio very much sits in the “open curly braces on a new line” camp; so much so, that it will try enforcing the practice upon you. To begin with, I was fiercely opposed to this oppressive conduct like a Lincolnshire village opposing a new wind turbine being built within a 10-mile radius, but now I’m kind of glad I went along with it because my code is actually much neater. It’s great if you’re already in the (superior) new-line crew, but it might be strange for you “open curly braces on the same line” slobs.

tip_a_day_09_02
The eternal struggle. Courtesy of Shutterstock and some dodgy GIMP work.

For all you Unity developers, I cannot recommend Visual Studio enough, especially when compared with MonoDevelop. At least Visual Studio has never somehow deleted everything I’ve been working on.

Fuzzy Horde ~ Ludum Dare 33 – You Are the Monster

[Play the game at Ludum Dare]
[Watch a timelapse video of its development]

This weekend was the 33rd iteration of the three-times-yearly Ludum Dare competition. Participants spend a couple of weeks submitting, slaughtering and ultimately picking themes, until one single theme is left. That theme gets announced and then developers have 48 hours to make a game based on that theme, or 72 for the Jam version. For the competition, you must work solo and develop all assets during the 48 hours (it’s pretty brutal), while the Jam lets you use pre-made assets and work in teams. I’m obviously hardcore so for the third time, I entered the competition. In true me-style, my monsters were not towering, huge world-eaters, nor were they creepy undead beings. No, they were cute fuzzballs instead.

ld33_01
These cute little fuzzballs, called Fuzzies, are your minions.

Fuzzy Horde: A reverse tower defence game

The basic idea behind the game is that you’re in a tower defence game, but you play as the waves of monsters. It’s an idea I’d really like to flesh out and refine, because I haven’t seen it very much elsewhere. Your Fuzzies live under the rule of Lord Fuzzbon, and the aim is to make it past the Raiders’ defences in order to steal the treasure. Y’know, because I definitely didn’t forget to put the treasure sprites at the end of the level. In response to some of the criticisms of my previous Ludum Dare entry, I made this one a lot harder (maybe too hard, but everyone loves a challenge, right?) and there’s no confusion about ammo, because there is no ammo (the purple variety of Fuzzy – Ballistic Fuzzy – can shoot, but has infinite ammo). I think this entry falls short of the previous one in terms of art; although I prefer the individual pieces of art in Fuzzy Horde, I feel like I Will Be Happy had a much more full and well-rounded world in terms of its art direction.

ld33_04
Textures are more detailed and larger than I Will Be Happy, but there are fewer of them.

At the start of each wave, you are given a quota of Fuzzies and can freely place them on a 6×6 grid. This allows you some degree of freedom with your tactics – maybe I send in my TNT Fuzzies first to blow the crap out of the turrets, or maybe my Eaty Fuzzies should go first and soak up the some bullets while I shoot with my Ballistic Fuzzies from a distance. Once the wave has started, you control all Fuzzies simultaneously; moving left moves all Fuzzies left, and attacking with one Fuzzy means you’re attacking with all of them. This means you’ll need to watch out when using TNT Fuzzies to make sure you don’t blow holes in your base when you only meant to shoot with a Ballistic Fuzzy. The movement setup opens up some interesting tactics, such as leaving some barriers intact so that some Fuzzies can walk into it and let others go on ahead.

ld33_03
What even is a tutorial?

Once you’ve deployed your Fuzzies, you’ll be tasked with avoiding and destroying various turrets placed along the way between Fuzzy Base and the treasure, which is definitely there at the end of the level. There’s two kinds of turret – one that casts a blue search laser and shoots the instant it sees a Fuzzy with a short cooldown afterwards, and one that locks onto a Fuzzy from far away and shoots if it stays locked on for long enough. There are also landmines that blow up a Fuzzy the moment it walks into its explosion radius. Sometimes it’s a useful strategy to walk into the mines with an Eaty Fuzzy so you can rush ahead with hordes of TNT Fuzzies next wave and not have to worry about more valuable Fuzzies being destroyed. Besides, Eaty Fuzzies are disposable.

ld33_05
You only have a limited number of waves to steal the treasure.

You have 16 waves of Fuzzies at your disposal, with later waves generally gaining more Fuzzies to work with, and the aim is to steal the treasure while ensuring the Raiders have the lowest score possible; Raiders earn points for every Fuzzy they kill and every intact turret they have at the end. I’d really like to build upon this idea in many ways, first of all by improving the level design and adding more varieties of Fuzzy. I’d have Armoured Fuzzies that move slow but have high health, Fast Fuzzies that run quickly, Barrier Fuzzies that act as a blockade to hold some Fuzzies back – the potential variety is endless. I’d also have more enemy types, as the turrets feel pretty generic – maybe if I could find a way to add some kind of personality to the turrets somehow, perhaps by having Raider characters who act functionally like turrets, I could then flesh out the story surrounding the Fuzzy-Raider rivalry and explain why both sides want the treasure so much. I’d also put a lot more effort into the sound design, especially since there is such a lack of audio in this version (I did have a bunch of voice recordings for the Fuzzies, but I ran out of time to properly implement them).

ld33_02
I also need to improve the logo.

While I’m away thinking up ideas for improving the competition version, you can play and rate the mostly-coherent masterpiece (ahaha) on the Ludum Dare site. Check out all the other games entered in the competition too – after all, they’re all free and there’s bound to be a lot of talent! You can also see the timelapse video I made using Chronolapse of almost the whole 48 hours, minus sleep and breaks, condensed into 11 minutes.