Game Design, Programming and running a one-man games business…

Considering combat mechanics

I’m thinking out loud here.

New game (codename: LB, previously G4). Involves military units shooting at each other. One of the mechanics I quite like is heat, where you would have heat based weapons, like flamethrowers, or incendiary bombs. I like the idea of units being vulnerable to, or impervious to, heat as a weapon.

I also still want the idea of armor, and of shields. I like the amount of variety that gives, all before you worry about actual hitpoints and structural damage. What I am unsure about, is exactly how to put all this stuff together.

GSB had a terribly complex system hardly any casual players got their heads around, so I’d like to avoid that. Things I did like was:

  • Shields had to be taken down by different weapons to those that did major internal damage.
  • Concept of different payloads for each weapon, especially missiles.
  • Shields could be taken down, then would not come back.
  • Shields could recharge over time, but armor was finite, without external repair modules.

I had some overcomplex stuff, like individual shield modules being down, rather than the whole thing, of shield-disruptors and the uber-complex shield-reflection and penetration mechanics.

With the new game, I like the idea of overheating a unit until it explodes. You can optionally add heat-sinks, of course, and I could even have environmental factors, so in some scenarios, losing heat is harder than others. However, there are a number of mechanics I’m unsure about.

  • Firstly, Do I have a three tier system like before, where you have to down shields, then armor, then do internal damage?
  • Can heat based weapons just go straight through shields?
  • Do heat based weapons have any effect on armor? and can they go direct through armor? They need to be as good as other weapons…
  • If heat dissipates over time, and shields recharge, aren’t they just 2 flavors of the same mechanic? and if so, does that really matter?
  • Is it worth having dual mechanics? For example, energy-based weapons obviously damage shields, and then armor, but do they also generate some heat?

I want a system that has some depth, but I want it to be understandable to someone who grabs the game for 10 minutes to see what it’s like. Obviously I can ‘drip-feed’ stuff in, so maybe the demo level only has shields,armor  and energy weapons, and I could introduce heat-sinks and flamethrowers later.

Lets watch some numbers change

When you are a game designer, you become more attuend to this phenomena, but it is all around us. In games, we really notice it. In fact, a talented journalist once reviewed kudos by saying “it’s just watching numbers go up, but sometimes, that’s all you need”. (or words to that effect.)

You probably know what I mean in terms of stuff like ‘leveling up’ in games like World Of Warcraft, or earning skill points in an online shooter. It’s nothing new, when I was a kid there was a lot of obsession about winning a place on the high score table at your local arcade. We seem to love nothing better than getting a high score, a better score, better than our friends, better than yesterday, better than 10 minutes ago.

It’s only when you analyse it, you realsie it’s not just in games, but everywhere. We love getting a pay rise, even if the rise is taken up entirely by extra tax. We care about the ‘top 10’ or the billboard ‘top 100’.  And we love seeing numbers change. It’s not enough to know who is #34 in the worlds richest/fattest/sexiest/cleverest person. We need to know they have risen 4 places!

I love playing the stock market, I get a whole page full of numbers to check, and they go up and down in REAL TIME! And deep down, I know that one of my motivations for getting solar panels is that I’ll get to watch more numbers change each day.

What does surprise me is that employers don’t do this stuff more. My brain would melt if I had a job on a checkout at a supermarket, or driving a truck long distance. However, if there was some built in emtrics and measurement meta-game to my job, based on how efficiently, or consistently I did my job, I’d end up focusing on that, and it would probably make my job go much easier.

People love seeing numbers going up, and comparing numbers, why don’t workplaces make use of that?

Half a million space battles

Here’s a chirpy statistic. At the time of writing, the total number of online ‘challenge’ games of Gratuitous Space Battles that have been played is…

501,934

Or in other words…

HALF A MILLION GAMES OF GRATUITOUS SPACE BATTLES.

That’s just online challenges, meaning player A trying to beat player B’s fleet, whether it’s on Mac or PC, direct or through steam. It’s all handled by my server. The number of offline, single player games against the pre-shipping AI fleets is likely to be a lot higher. That’s pretty scary. Also, lets not dismiss over 40,000 uploaded player challenges (actually many more, older unplayed ones get deleted) and over 100,000 campaign battles already.

Ok, so it’s not exactly minecraft, but still, not bad going for a game made by a few geeks, and a few cats.

Going from BASIC to C++, in understanding game source code

I was chatting to someone about a year ago, who was embarking, for research purposes, on how to code a game in C++. They were familiar with the rudimentary concepts of coding, and with games, but had never looked at C++ before, or the source to any modern game. They had enormous problems going from the programming they leanred briefly as a kid which was this:

10 PRINT "I AM L33T!"
20 GOTO 10

And modern game source code. The main difference is that a C++ game is ‘object-oriented’ and the languages people start with are just simple lists of instructions, executed in order. This is a 30 second guide to helping newbie coders cope with the difference. The biggest problem you have, is the question “Yes but where does the code actually START?”. And the answer is, a function called WinMain. Basically, the structure of any game is this:

WinMain()
{
Create A Window();
InitialiseGameStuff()
while(true)
{
CheckGameNotQuit()
GameLoop()
}
}

That’s basically, Kudos, Democracy, Starship Tycoon, GSB… etc. It’s all there. that is the whole game. The real stuff happens inside GameLoop(). That is basically this:

GameLoop()
{
BeginFrame()
DoAIStuff()
DrawStuff()
EndFrame()
}

And that obviously splits out into a billion other functions. Now already, it might look scarily nothing like 10 PRINT SCREEN, but just imagine that GameLoop() is a GOTO that jumps to the start of GameLoop() and imagine a RETURN statement at the end of that section. The weird bit, for new coders, is that the code will jump back and forth all over the place, between different source files, in different orders, up and down and all over like a ping pong ball, but, ultimately, when the chips are down, it’s not really *that* different from old BASIC programs. Until you multithread it, anyway :D.

Zero-G Games and casual portal royalties…

EDIT EDIT EDIT

See the comments section below, plus zero-g games have contacted me to resolve the matter and send back payments of royalties. It looks like the real villains of this piece are the casual ‘portals’ who increasingly screw the developers, and guys like zZro-G out of paying on time. I should point out that steam pay within a month, so anyone who is taking a lot longer than that is just hoarding other peoples cash.

Anyway, anyone looking for something newsworthy here should probably look towards the causal games portals rather than the spat between me and zero-G.

EDIT EDIT EDIT

oooh did I really type that?

I guess I did, and it would be a disaster if a well trafficked blog became a prominent search result for the casual games publisher zero-g games wouldn’t it? But then… That’s what happens if you stop replying to your developers emails, and stop paying them, and 3 other fellow developers I’ve spoken to.

If you work for bigfish games, or any other casual portal that stock these titles:

Kudos

Kudos: Rock Legend.

You will want to check your inbox for my email. Basically you are selling a game you don’t have the rights to any more, so I strongly suggest stopping that. As for anyone who wants to buy those games. DO NOT BUY THEM, unelss you buy them direct from me, or from impulse, gamersgate or direct2drive. Everyone else is depriving me of my share, and I made those games, so that hardly seems fair.

Also if you see a game called ‘oval office’ don’t buy it. It’s a cut down bastardised, casualised, americanised version of Democracy 2, which is much much better. Buy that instead.

And lastly, to any of the many publishers who keep spamming me wanting to sell GSB or my older games, and annoyed I’m not replying. Give up now. I’m never replying, I route all your emails to the bin.

Selling direct FTW!

I love making and playing games, I hate the liars and thieves in this industry though…