Monday, March 27, 2006

Air Ace, scale, size and speed.

I've just updated the Air Ace website with a few new screenshots Here and it occurred to me I should perhaps blog about a couple of issues that are playing on my mind.

The game is similar to the old online games Air Attack Download it here which used to run on the UK network provider "wireplay" and of course Kesmai's Air Warrior, which was bought out and eventually closed down by EA games.

So there are two things that are causing me some concern:

1) Its damn difficult to actually track and hit a target
2) The game is going to be VERY big

The first of those, the issue of hitting another player is quite common in online dogfighting games. In fact, Air Attack itself seems pretty hard to hit anyone in, even though its thought of as one of the more user-friendly and less "realistic" of these games.

The problem is that of relative speeds. Typically in a flight combat sim, where the combatants are not seasoned players, the tendancy is to get into a turning battle. Basically they start in a head on fly-by, then immediately start a tight turn in either direction (for some reason, usually right), thereon they proceed to continue the same tactic ad infinitum.

Now of course your better players know how to avoid this with better tactics. But what of the new player experience? We dont want them to get constantly killed.

When I started on this project, one of my key aims was to give every player "a kill within 30 seconds", which is a goal which I stick to. This is bourne out of playing Red Baron and remembering how cool it was to be able to jump in the game and get a kill really quickly. Of course, the issue here, is that in Red Baron, the planes were relatively dumb AI's, in Air Ace, they are other real players.

So how do we make the promise of a quick kill come to life?

Well, here are some ideas, although I think it won't be a single thing that forms the final solution.

* Setup the game so that new players are spawned into the game pointing directly at the opposition and within range to make a visual identification
* Add some dumb AI planes into the mix and make them fly slowly and on a level so that new players get the kill quickly
* Make the new players have a lesser bounty so they dont get targetted by other players
* Make the new players hitpoints higher, so they can take more damage and not get destroyed
* Allow for some auto-aiming of the new players weapons
* Make an offline training mode which allows players some tutorials to gain better skills before going online for real
* Make the plane handling relatively quicker for newer players, allowing them more maneverabilty (essentially steering aids)
* Have some visual aids for directing new players towards a valid target
* Slow the relative speeds of the planes to a point where combat is less difficult

These things are all kind of indirect helpers, the only really viable way we are going to be able to guarantee a kill, is to incorporate a dumb AI aircraft specifically for that player to shoot down.

Hopefully we can incorporate some community features which will mean that other players take newer players "under thier wing" (pun intended) and teach them the ropes.

So thats something we'll have to experiment with. Perhaps a screenshot to come next time to show what the problem is. Even our attemps at visual aids to increase situational awareness (knowing where your enemy is).

The second thing thats playing on my mind is the problem of download size. Might not be a problem for traditional publisher based delivery (DVD disks), but given that a good terrain might consist of 100mb per level and we have at least 2 or 3 levels and perhaps 200 mb of ground items and planes/tanks/ships etc. Well you can see the problem.

According to Phil Stienmeyers blog, we're looking at around 20 cents per gig, for example from hosting on Amazon's S3 service. So lets say we can pack the game down to 300mb (unlikely but we can try) thats roughly 3 copies per 20 cents. so 15 copies for every dollar. Assuming a 1% conversion rate, thats going to cost us roughly 7 dollars to deliver enough copies to attract each sale!!!

Eeek! :)

Ok, so you might say "well dumbass, why not just shave your downloads and get more conversions", that is a possibility, but not with the current tech. Sure, we can go for a smaller demo download. Imagine we can get that down to perhaps 50 meg or so. But its still a fair chunk of change just for speculative downloads.

The other option we might have to employ, is to build in a bittorrent style download interace (using some bittorrent library) which allows us to deliver the game using shared peering systems. Of course there is another option and that is to try and get CD covermounts. But it still leaves us with a relatively large download issue.

I suspect that once we are more aware of the final scale of the end-product, we'll be able to make adequate provision for distribution. The fact that this thing is huuuge is mainly down to the high quality of the artwork and the requirements of the terrain system. Assuming we can prune back the terrain using some procedural methods, then our only issue is the other art assets. Which I expect we can live with as the terrain footprint is relatively large in comparison.

Hopefully what we can also do, is get a box deal which might allow us to deliver to more people, using a physical media, which lets face it, is probably optimal for games of this scale.

Its not like we deliberately set out to make this huge style game though, honestly, it was meant to be a really simple little game! its just become this beast which has a life of its own and must be sated or fear the worst!

I'll have to think on it a bit more.



  1. I've not thought this through in too much detail but how about adjusting the damage the attacker does against any given target based on an exponential function.

    If you kept an ordered list of the players kill/death ratio sampled say every 30 seconds keeping a list of say the last 10 minutes of play (this could be much higher if you persist stats? and bother 30sec/10min figures can be adjusted based on how often you'd expect kills to crop up)

    If you keep track of the kills/deaths that occur to each player, then after each minute of game time passes calculate the players kill/death ratio.

    If you assume an average player should have a ratio of 1.0 then you can adjust the damage taken from other players based on this ratio. Damage could then be calculated by reducing it based on the attackers ratio and increasing based on the targets ratio.

    So for example if I've killed 2 players and died once giving me a ratio of 2.0 in the last minute then any damage I do to an average player is halved. Any damage I do to another player with a 2/1 kill ration however would be normal (since my damage dealt is halved yet their damage taken is doubled)

    By keeping the last 10 mintues or so of samples you could give the last sample a greater weight but still have a good set of historical data to help smooth out lucky/unlucky minutes of play.

    For example

    Ratio = (newratio / 2) + sum(oldratios) / 2

    Or rather than applying this to damage you could apply it to the score instead. Thus good players will get normal points for killing other good players and less points for killing new/below average players.

    Personally I'd rather do more/less damage since getting fragged by a good player X times regardless of the fact he only gets a few points doesn't make you feel much better. But been able to get a few more frags in would.

    If you're doing ranked servers then I imagine you'll be tracking ratios persistantly so if a new player joins they'd have a ratio of 1.0 yet when a player joins thats been playing several months, they'll join with an existing ratio which could be either side of 1 :)

    I think an offline training mode is definatly a good idea for getting new players a place to practice without getting frustrated trying to kill anything.

    With the ratio thing outlined about you'll be able to detect poorer players and perhaps add extra aids as you suggest, maybe a wider kill zone on their gun fire.

    I don't think the dumb AI player approach would work in general, you'd probably just be making easy targets for experienced players.

    If you're hosting your own servers how about setting up a few newbie servers? Where you can only join if you are below a certain ratio. Then you can have normal servers where any ratio can join and perhaps hardcore servers that require a minimum ratio.(The latter may be a bad idea :P but the newbie ratio servers might work.)

  2. I think a Damage multiplier system like you describe is absolutely essential, but its still non-obvious that its happening.

    I want the players to feel that thrill of achievement when they make a kill pretty quickly, so I figure the only way of making that a sure thing, is to dangle an AI plane in front of them.

    Perhaps a tutorial that does that offline might be the thing.

  3. Hey Phil, long time no see! :)

    Now, I love simple concepts at the heart of a good game, and "a kill every 30 seconds" is exactly that: action, accomplishment, reward! However, kills in multiplayer games are not one-sided affairs, there's someone on the receiving end, and you have to worry about his experience as well. I suppose there's another concept in there that also says "player skill counts." You don't want to forget about it.

    AI planes sound great for the task: newbie players can have targets that won't complain about the unfairness of being shot down by an unskilled player. But the point of playing online is to fight against other players, so there's a limit to what you can achieve there.

    Balanced arenas which pit players of similar skill against each other are also very good for this. In a seamless world without separate arenas, the next best thing is spawn locality - a player may appear anywhere, but you may use kill ratios and other skill measurements to ensure players of similar level show up near each other.

    Then there's the issue of reward, and how to encourage players to learn and improve their skills. Japanese designers have a long tradition here, with ways to congratulate a player for mastering new tricks - style points, "Excellent!" announcements, temporary power-ups, etc. All show with bright and animated letters, and even hopefully voiceover announcements. The correlation between skill and location described in the previous paragraph also provides with the opportunity for rewarding the player with a progressive change in scenery: as the player gets better he gets taken to new zones within the world.

    Finally, giving players even the simplest of goals may go a long way towards promoting intention - yeah I attended Clint Hocking's lecture at GDC. :) For example, a token-based powerup held by one (or a % of players in the vicinity) which gets transferred to the player who kills him, so the current "token-holder" has an extra advantage in the fights but becomes the preferred target for other players. The powerup's level may be tied to the relative ranking of the player you shot down.

    Gary makes an excellent point reminding everyone that getting 2 frags atr 100 points each is much more satisfying than 1 frag at 200 points. Your base concept talks about "kills", not "points".

    Lots of ideas to mix and shuffle until a final picture emerges. :)