Fill out your e-mail address and click submit to join the positech games newsletter!

Better AI on the way

Filed under: gratuitous tank battles,programming cliffski 10:18 am April 11, 2012

There are a bunch of things that could be added to Gratuitous Tank Battles, all of which takes time, and lots of tweaking and balancing, and may or may not add to the gameplay. My pet idea is a ‘safe zone’ extending some distance behind heavy tanks, which gave infantry in that area a cover bonus against fire. Theoretically easy, but might it look a little weird? if there is obviously clear line-of-sight from enemy turret to infantry, how can I justify the bonus?

One thing that I have started on, because it was bugging me, is improving the defensive AI. A lot of people have been complimentary about the AI in GTB, which is very nice, as I am, in my heart a bit of an AI coder, but I see so many battles when the AI does dumb things. The two dumb things that really bugged me (but NOBODY has mentioned it) were as follows:

The Ai building turrets next to attacking units, rather than ahead of them, so they don’t stride past during construction

The AI not effectively demolishing and rebuilding units in the last minute or so of battle

The first problem is hopefully now fixed (The second has always been coded, but obviously needs more work), but it’s actually one of those coding problems that annoys AI people, because management will never understand the complexity (and think you are crap/slacking). In theory, the solution is simple – Don’t analyze the path next to each potential unit-build location, analyze the paths that are 5-10 path tiles ahead of them, so you can know what will be in range when a unit is built, rather than right now. Easy, job done, 10 minutes!

But in practice much harder. There are maps with branching paths, and worse, some with paths that flip back between two tiles (making for some interesting recursive gotchas), so that means that identifying which path squares to keep an eye on and calculate ‘urgency’ for becomes a bit of a pain. It’s also horrendously slow, but thankfully way way faster in release build, and only happens on map load anyway. (Theoretically it could be saved out and rebuilt only on edits, but it turned out to be fast enough not to bother). To code all that, test it, optimise it and debug it (with a debug overlay to check it worked) , took the best part of a day, but I think it’s worth doing.

So today, one thing on the list is the demolishing/endgame stuff for the defensive AI. No reviewer has yet criticised the AI for the game, but I guess I should be aiming at them praising it, and hopefully I’m nudging in that direction.

Gratuitous Tank Battles 1.005 released

Filed under: gratuitous tank battles,programming cliffski 4:45 pm April 8, 2012

So I’ve finally released patch 1.005 for Gratuitous Tank Battles, and I’ve been trying to get a patch a week released between beta and eventual final release. This patch might seem to have less stuff than the last, mostly due to one of the items taking a lot of re-working.

Here is a forum thread showing the full changelist:

http://positech.co.uk/forums/phpBB3/viewtopic.php?f=32&t=7210

And here are the highlights:

There is now a direct association between the flames and damage textures on a unit, and it’s current state of health, rather than the semi-random system there seemed to be before! That means that a unit that looks undamaged probably is (although shields and armor may be reduced), and a unit with several plumes of smoke streaming from it is probably in trouble. Of course, for player-units toggling ‘H’ or the health button will let you see the details (or select that unit). This took a lot of fairly tedious re-jigging.

On a similar note, shields now flicker in a strobey-way if they are below 33%. You probably won’t notice on units without big chunky shields, because once down to 33%, they are probably under attack and close to failure, but hopefully this makes things a bit clearer.

There is a gratuitous new visual effect for laser guidance. Previously, those red laser beams were on a lot of units, mostly mechs, semi-randomly. Now, they only appear if that unit is equipped with the top (VI) targeting system. They also swish across and illuminate some smoke, and pulse a bit and generally look pretty cool at night. Expect to see less of them, but for them to look better :D

There is a new campaign map (Tanks for the memories!) added at the end of the campaign. It’s another evening map, this time very trench-heavy, hopefully you will all enjoy it :D

There are some changes and improvements to the explosions, after a LOT of work on the explosion editor. I expect them to be better still in the next patch, now I have seriously tided up my particle & explosion editing code!

Enjoy the new version, and as usual, anyone pre-ordering the game right now gets the very latest version automagically (you won’t need a patch). Don’t forget to tell friends, family members and total strangers if you have played the game and enjoy it, it’s all much appreciated. There is an official patch 1.005 comments thread here:

http://positech.co.uk/forums/phpBB3/viewtopic.php?f=32&t=7225

The atypical indie?

Filed under: business cliffski 10:29 am April 7, 2012

I just read a blog post that I won’t link to, because it will only give the accused exactly what he wants, but the upshot of it is that anyone who isn’t loving their games being pirated and anyone who actually charges money for games is making shitty games and doesn’t live in the real world.

Hmmmm. Just because someone works full time at games, and makes a living from it hardly automatically makes their games rubbish, or makes them a money grabbing satan. Is John Carmack a money-grubbing son of a bitch who hates games because his games made him a millionaire and bought him a string of ferraris? I doubt it, and I doubt his games are shitty either. In fact, the reverse is often the case. It often follows that people who are really good at what they do, tend to sell a lot of games, and thus end up well paid. That’s how capitalism works. Other government systems are available, of course. They are not reknown for outpourings of high quality digital entertainment though.

My point for this post isn’t about that though, it’s a more general call out to both indie game developers and the media that covers the indie gaming ‘scene’ (god I hate that word, do people think we all hang out in indie bars with our own indie slang?)

Please treat indie games like games, not like some desperate call for attention, or some trendy underdog story or political manifesto, and don’t think that knowing the game is ‘indie’ means you can assume anything at all. (GSB is more like Sins of a solar empire than it is like world of goo, for example).

To look at recent press and hype about indies in the gaming press (both online and in print), I wonder if I am a ‘proper’ indie at all. Lets look at the evidence:

  • I am 42.
  • I am not a radical EFF cheerleading cyberactivist with ‘I hate SOPA’ tattooed anywhere on my body.
  • I live in the UK
  • I charge more than $9.99 for my games, sometimes much more.
  • I don’t make platform games, and haven’t actually played one since sonic the hedgehog.
  • I am not a radical left wing campaigner that hates money, and is equally happy to just know people are enjoying my games if they pirated them. (I actually rely on income from games as…. well… my income)
  • I don’t begrudge big successful games developers that have made serious money from gaming or think they must be evil. Brad Wardell (stardock) gets a lot of aggro on this front, which is ironic because he seems such a nice guy. Good luck to him.

I am sure I’m not the only one, in fact I know I’m not, due to many drunken chats in various places with other indies in the UK. I wish the media would realise that indie != notch and indie != starving student and indie != any specific political or activist viewpoint. It’s a lazy stereotype that is long past it’s sell-by date.

Ironically, as someone who has a pet interest in marketing and psychology, I am well aware how easy it would be to embrace the stereotype for my own gain. I’m pretty sure a big ‘STOP SOPA’ banner on my website, and some long angry tirades in favour of linux, ranting at ubisoft for being evil etc, would probably get some press attention, and some PR, and some excitable headlines. It’s very easy to know what the more vocal section of online gamers want to hear developers say. If I was really savvy, I’d hire someone with a cooler name than mine, who looked more like an indie, and get him to do a lot of controversial and activist stunts.

It’s much harder to actually be honest, and say what you really think, something that gets me a ton of grief, to put it mildly.

But regardless of that, I would like people to stop writing about indie developers (as opposed to indie games), and for indie developers to stop acting like they are running for president, and to do something really radical which is this:

Talk about your games.

If I wanted to court controversy obviously add…

Finish the fucking game first, ok?

For what it’s worth here are some of my games, I hope they speak for themselves.

Gratuitous Tank Battles

Gratuitous Space Battles

Democracy 2

To clarify: I’m not saying indies aren’t allowed to have political view, everyone does, or to have strong opinions on controversial subjects, It’s when any discussion about your game is automatically steered to some sort of activist rant to get page-hits that it bugs me. I don’t care if you are Che Guevara or Hitler, I just want to know if that game you are working on would appeal to me.

 

Explosive fun

Filed under: gratuitous tank battles,programming cliffski 2:33 pm April 6, 2012

There is a todo list for the Gratuitous tank Battles beta, and something not officially on it (because nobody mentioned it) was to make the explosions and flames and so-on look better. People keep telling me they look great, but I want them to look tons better. That means a lot of tweaking, optimising and theorizing.

It’s amazing how many variables you need to get particles looking right, and then how much more code. I have special code for flames, for flamethrowers, for ground bursts, for smoke plumes, for debris, for emitters attached to moving units… and so on. It’s quite a spaghetti mess of complicated and differently designed systems, but it seems to work.

Hopefully by the time the game ships to final release, the effects will look a lot better. It’s one of those things I really enjoy coding (even on Good Friday when i should be eating chocolate!), so I can often justify silly amounts of time on it.

I also have grand plans for target designation laser effects, flickering shields and pulsing damage textures, but not enough hours in the day. How annoying…

Help me decide about Health bars for enemies in my game…

Filed under: Uncategorized cliffski 3:41 pm April 2, 2012

I’m just not sure…

The majority of tower defence games (and on this issue, GTB can be considered one, even if it’s vastly different to it in many other ways). Take a very simple approach to showing you the health of enemy units. A simple green/red bar over the top of the unit is displayed all the time, simple as that. I have always found that to be horrendously ugly and clunky, and was very very pleased with the solution I had in GTB, which was chunked-circles of health/shields/armor that gave you much more information in a much nicer way (if you ask me :D ).

However… deciding HOW to display health is only half the issue, the other half is of course, whose health to display.

The first beta release of gratuitous tank battles only showed health circles for your units, and only when a unit was selected. they defaulted to all off, but you could (temporarily) toggle them all on with a fairly hidden shortcut key.

Due to public demand, I’ve improved that so there  is a button for health circles, they default to ‘on’ and they will stay on all the time if you prefer. There is no way to see the health circles for enemies.

My reasoning is thus. You get an extra bit of unknown-information tension in the game when the exact health of an enemy unit is unknown. As a potential game-winning enemy unit trundles towards the exit square, you have to bite your nails and hope those gatling guns you have trained on it are going to finish him off before he gets off the screen. It’s tense, it’s worrying, it’s exciting, and it builds suspense.

This is my view, but I know some people are shocked to find that the approaching enemies do not have health bars. I guess the tradition with tower defense is to show them but I’m pretty certain there is no set rule for an RTS game, and certainly none in an FPS game. Why the convention for TD games? Does it make the game too easy, too predictable, too much a simple matter of number crunching?

I’m willing to be argued round, but I’d rather balance GTB to be one way or the other, than take the easy route and just give the player the option. What do you think? health bars on or health bars off?

Let’s look at Gratuitous Tank Battles patch 1.004! (yes let’s!)

Filed under: gratuitous tank battles cliffski 3:34 pm April 1, 2012

Ok, so I’ve put version 1.004 of GTB live, and it has a bunch of stuff in it which is listed in full on the positech forums here:

http://positech.co.uk/forums/phpBB3/viewtopic.php?f=32&t=7085&p=55380#p55380

But I thought I’d mention the highlights of the new version here.

  • The battle screen now lets you scroll to the top and the bottom outside the actual map-bounds. This was a bit of a pain because it had to ‘fake’ a bunch of extra tiles that don’t exist which causes issues you can’t imagine, but the upshot of it is that you can now easily see the bottom and top row tiles which makes maps that have them in-use much easier to play
  • The dog tags now flash for a duration independent of game speed, preventing you getting an advantage by playing slower.
  • Recordings of your deployments now actually WORK in uploaded challenges, which was a BIG bit of broken functionality that people should now be able to enjoy properly.
  • There are two completely NEW campaign missions added to the end. There will be more missions coming in future patches. This took the game from 8-10 missions, and I want the release build to have more than that.
  • Health-indicators now default to on, and are implemented much more sensibly with a button to toggle (Which is remembered) and also reliable use of a hotkey to view them. damage indicators also default to on now.
  • The unlocks window after a battle now displays comprehensive information on the choices that are on offer so you can make a better decision.

There is a bunch of other stuff too, and loads of improvements I want to make visually in the short term, plus all kinds of ideas for extra stuff medium term,, if the game actually proves to be popular. Anyway, this is one more step towards release, so that’s good :D

Here is a tank picture wot I took:D

Better unlock information for gratuitous tank battles

Filed under: game design,gratuitous tank battles cliffski 12:42 pm March 31, 2012

One of the criticisms of more than one reviewer and beta player is that the post-battle unlock choices were not clear, because all you got to base your decision on was an icon and a name.

This was a fair point, and after a surprising amount of faffing around, it finally looks like this:

There should be a patch today or tomorrow with that (and may many other changes) in.

Why I ‘Like’ Developing Redshirt

Filed under: game design,redshirt cliffski 10:36 am March 30, 2012

(Guest post by redshirt developer Mitu Khandaker)

So, Cliff asked me to blog my thoughts on developing Redshirt so far. My response as I sat down to try write this was “Gosh, where do I start in talking about this massive project that has been my life since last summer?

After all, I’d been a videogames PhD researcher, and I’d worked on smaller things before (as well as bigger, non-gamesy things), but Redshirt is my first proper commercial game project. Its origin lies in an idea I’d had – social networks govern the daily lives of so many of us now, and give rise to their own set of micropolitics and behavioural quirks, so why not make a simulation game about that? I briefly talked about the story of pitching the game to Positech in my first dev video, and how it evolved into Redshirt, so I won’t go into that here, but, as of 15th June 2011, I put cursor to code.

Making the Best of Highly Illogical Decisions
I’d opted for Unity as my development tool of choice, because I’d used it comfortably for smaller, throwaway personal projects and was definitely enamored with how it expedites things. As someone who insisted on Notepad for years when I was doing web programming, I certainly understand the impulse to shrug off fancy IDEs and editors and such, but I knew with this project, I’d have my hands full with PLENTY of challenges anyway, so, I wanted to make life easier for myself by using Unity.

Or so I thought, anyway. The thing is, Redshirt relies heavily upon its user interface; it is, by nature, a very UI-centric game – which meant that Unity’s notoriously lacking built-in GUI system wouldn’t cut it. Unfortunately, the available third-party solutions also didn’t do exactly what I needed them to do, or were otherwise incomplete in many ways. I ended up writing so much custom functionality anyway, and doing more work on fixing the UI than I’d anticipated; there was that time, for example, when I spent a whole long weekend fixing scrollbars. Scrollbars, of all things.

Of course, once they were done, I felt a massive sense of achievement – and, that’s something else this project has taught me. The motivational peaks and troughs that come with getting things working which no other sane person will even think about twice.

I’ve Got a Bad Feeling About This
While I expected plenty of challenges (and wow, did I get them!), I did not prepare for stretches of time where progress just felt so slow. This happened around months 3-6, and things felt largely like trying to run through a pool of really thick, viscous liquid.

Around this time, I’d been busy working on implementing the Spacebook (more work than I’d thought it’d be, naturally!), but a lot of the other functionality remained unfinished, and things were taking massively longer than I’d projected.

I’d drawn out a huge, elaborate, multi-faceted system in the game, a lot of which still needed to be properly implemented. But, after numerous discussions with Cliffski, we decided it simply needed to be pared down for the sake of actually finishing the game on schedule. And, y’know, for my own sanity, too. This actually turned out to be a good lesson in practicing/really thinking about subtractive game design (http://www.sirlin.net/articles/subtractive-design.html). (For the record, the main thing that was taken away was the currency system on board the station, because it wasn’t adding much valuable depth to the game, really. Who needs these things in a post-scarcity society, right?)

Often, things still feel fairly painfully slow to progress, but either I’m used to the feeling it now, or I’m slowly coming out the other side, and seeing things come together. Either way, the thing that gets you through those periods is really loving the concept of the game, and what it’s trying to achieve, and knowing it just needs to get made.

The View from Orbit
Of course, the perversely funny thing is that all the focus I’d been putting on worrying about systems, and how they would interact, sort of came second to the feeling of the game ‘evolving’ when things happened which I thought should be inconsequential, or secondary. Like adding sound, or avatar animations, or seeing the UI mockups from our wonderful artists. It was an odd sort of experience, which made me refocus on the fact that games are these magical things that somehow feel like more than the sum of their parts.

And, oddly, no matter how much work you put into your own project, when someone else does a good job on part of it – like with the game’s logo art, for instance – it somehow makes it feel more real!

All of this means, though, that I’m getting to a stage where I’m beginning to feel that there is an actual game amongst all the mess I’ve been staring at for months. That is a good feeling! Right now, as I write, the majority of the core functionality exists for the game already; I’m working on character creation, and adding a few things to the Spacebook feature. Next, it’ll be a matter of adding a load of content – and, at the same time, beginning to incorporate the flashy new UI designs. Then, it’ll be more art, and a whole lot of testing, no doubt.

On the whole, I’m happy with how Redshirt is shaping up, and I look forward to sharing more about the game soon!

Responding to beta preview opinions…

Filed under: game design,gratuitous tank battles cliffski 5:38 pm March 28, 2012

Soo… GTB has got some nice beta coverage in a lot of different places. The response has been overwhelmingly positive, but paranoid and delicate little chap that I am, I naturally get drawn towards criticisms or suggestions for improvement. One that I had not expected, (but in hindsight agree with) came from the rock paper shotgun preview which stated:

“GTB’s eight episode campaign might be playable from two perspectives, incredibly challenging at the highest difficult level, and supplemented by an arsenal of user-made maps and challenges that grows by the hour, but you may still find yourself feeling short-changed.
Though community-crafted levels are always a convenient click away (assuming you’re online) and are rated and commented upon by downloaders, sorting wheat from chaff can still be hit-and-miss.
Cliffski’s inspired Blackadder-meets-Rogue-Trooper fantasy needed more space and time to grow. “

Because I’m not someone that ever pays attention to numbers or stats regarding game content (36 hours gameplay? for who? at what difficulty? at what speed?), I tend to have a bit of a blind spot to that topic in my own. To my mind, the campaign is just a teaser saying ‘here are some of the things you can do with maps’, assuming that even if 1% of the buyers ever made a map worth sharing, the number of maps would be huge.

However, it is fair to say that people don’t necessarily want to play user-made maps, and that obviously the person most fluent with the editor is me, so it makes sense to provide enough maps for people that user-made ones are entirely optional.

To that end, I’m happily chiseling away at the coalface making more maps. I’m 90% done on two new ones, a daytime snow map, And a nice evening desert battle.

I’m trying to be as inventive as possible. The snow map, for example has two main routes. One is short, but surrounded by concentrated enemies, the other is torourously long but the enemy locations are more scattered. So far, after many test battles, I can’t say that either route is an obvious choice, it all depends on your play style and unit choice.

I’ll almost certainly add more maps before release, especially once I get into the swing of creating them. The shadowmaps and the balancing take most of the time. So if you already bought the game, you have 8 campaign maps, and 2 more will appear in patch 1.04, hopefully this coming weekend. I’m hoping to add some more after that too, but I always try to be very conservative when it comes to promising stuff until it’s actually done.

If you bought / are considering GTB, how important is the number of singleplayer campaign maps to you?

Gratuitous Tank Battles beta patch 1.003

Filed under: gratuitous tank battles cliffski 9:23 am March 25, 2012

Right… Gratuitous Tank Battles just got patched in it’s beta again. People who have pre-ordered and have a copy will get auto-updated the next time they run the game for the first time in the day (if that makes sense?)

Here are the changes:

1) Fixed bug where sometimes shadowmaps were not being generated at all for custom maps and downloaded maps.
2) Fixed bug where challenges on unedited maps failed to cunningly re-use existing shadowmaps.
3) Changed costs of augmentations to be either 5 or 15 for type II improved ones, infantry now only pay 1/5th of these costs.
4) Fixed bug where editing the appearance of an existing unit and saving it was not reflected correctly in the unit picker.
5) Air raid siren no longer loops
6) Fixed size issue for the unlock window under certain circumstances.
7) Fixed bug where music did not resume on alt+tab during a battles post mortem.
 8) You can now no longer accidentally scroll the map with WSAD or pick any new units once a battle has ended.
9) Nightvision and route-display buttons now correctly toggle if you use hotkeys for those features.
10) Text boxes now correctly supports ,+£$%^=[].
11) Fixed some bugs relating to unit designs saving and also loading in of unit text descriptions.
12) Exiting the map editor now takes you to the battle browser screen, not the main menu.
13) Fixed typo on defend button tooltip.
14) Fixed bug where support units could still give bonuses after deconstruction.
15) Fixed some typos in the manual and tutorial and elsewhere.
16) Fixed bug where overwriting an existing design left a temporary copy of the old one usable until the app quits.
17) Removed empty tooltips on badge editor.
18) Blueprints icons for support modules now show the greyed-out icon as a hint.
19) You now can no longer use duplciate augmentations, or two of the same type on a single unit.
20) Renamed the user profile button to profile/online so it's clearer where social stuff is.
21) Module comparison window now greys out and shows locked icons for modules you are yet to unlock.
22) Minimap and buttons no longer work, or buttons change mouse if the minimap is hidden by the player.
23) Fixed bug with mismatched icons & tooltips after deleting current unit design then changing hull.
24) Added new 'division manager' feature to control what units show up in the deployment bar during a battle.
25) deployment bar now consistently sorts designs by their type.

I had thought there might be just one more patch after this before release, but some testing yesterday discovered a bunch of minor things I need to fix which were not already on the list, so it may be another 2 patches at this rate. Thats without adding any more shiny :D

« Previous Page
Next Page »