x
hdan
God help me, I want to write another tank game

Ok, I realize that writing games is a lot of work - I did it for over 8 years, so I have some idea what I'm talking about.  And I know this is just a trick my mind is playing on me because I'm a little bored and anxious at work, but I really, really, really want to write a tank game.

Mostly, I want to apply modern OO language features and my latest thinking about AI and game organization to my first and most favorite game - M1A1 Abrams.

The game would be written in C#, use "managed directx" and piggyback very heavily off of the "Standard" microsoft library stuff.  This is mostly to save me time in developing the low-level engine stuff.  I've done enough of that that I know it can eat your life up.  I'm only one guy, and I probably won't get beyond the makefile (or SLN for you .NET heads), but at the moment, it's on my mind, so you all have to suffer for it.

It would be a realistic tank game that (once again) essentially clones the old Microprose M1 Tank Platoon game, but with a few "hdan approved" changes.  Yes, I already got to write this game forever ago, but I know a lot more now, and technology (both hardware and game design) has come a long way since then.  It would naturally have a multi-player component (co-op and h2h), but would HAVE to have a decent random mission mode.  These games are like RTS games that you watch from the ground level.  Once you set up your orders, then you have to get into the fight yourself.

There would be no "get out of one tank and jump into another" nonsense.  Battlefield already does that extremely well.  And I'm not interested in cloning Halo's tank stuff either.  (Well, maybe a little interested - there could be an "Arcade" version that gives you 3rd person control.) I'm talking about an old-school sim, because there are so few of them around these days.

One thing I'd change over M1TP is that you would only be able to play the tank commander.  In a modern tank, the TC has a wide range of abilities, including taking over the firing of the main gun.  Since laying and shooting the big gun is so much fun, I'd make sure the TC had access to this function.

During play, you will switch between four screens - Unbuttoned/Binoculars, CITV, IVIS(map), and Gunnery.  You drive by using a 3d cursor to lay out waypoints (think "Kingdom Under Fire", and you can also drive the tank directly with the arrow keys.  The AI driver will (hopefully) be smart enough to seek hull-down positions and align himself with any ridge lines.  If I had a budget, I might model the insides of the turret and let you at all of these things in 3d, but for simplicity's sake, I'll implement the UI as jumping to different screens.

"Unbuttoned" will be a freely rotating FPS view from the top of the turret.  You'll have your .50 cal machine gun and some binoculars (but not at the same time).  You can use the binoculars to call out targets for your gunner.  Unbuttoned, you'll be vulnerable to enemy fire, but you'll also get a big plus on your "spotting" range for targets.  To keep things simple, every TC in your platoon will unbutton when you do.  (There is a "half buttoned" position that gives you some cover and lets you use the .50 cal but not the binocs, but I'm not sure if it's worth implementing.)

CITV is your thermal viewer, which rotates independently of the turret.  You can use it to spot targets in all lighting levels, and to designate targets for the gunner.  This has two magnification settings.  It can do anything the binocs can do, but even in the dark.  The downside is that it's slower to traverse

IVIS is basically the Map view.  You'll have targets only or terrain+targets views.  I may put IVIS and CITV on one screen, but from experience that gets a little crowded.  IVIS lets you order your whole force around, see what enemies are known (or expected), and generally run the battle.  It's the RTS game built into the sim.

Gunnery mode is exactly what it sounds like - you are looking down the gunsights with realistic mil markers and range info, and can fire at will.  Naturally, the view and gun will do all the fancy stabilization and windage correction stuff, and have IR and normal modes of view.  This is probably the most "fun" view of the game IMHO, but won't let you control the battle at all.

My first attempt at this game (which shipped, btw) had me using a lot of inheritance for the AI system and vehicle descriptions.  This time, I'd separate each battlefield AI task out into a separate module, and build an AI by dynamically collecting up the modules I need at runtime.  That way (for example) I could put a Forward Observer into a Hummer quite easily, even though its AI wasn't originally slated for such things.

I'd do the same with vehicles.  Each would be a collection of components.   You could request a named component (like "Turret" of any vehicle, but only vehicles with turrets would answer non-null.  Before, I had "TurretedVehicle" as a subclass of "Vehicle", and while that worked out ok, it's unnecessarily restrictive and goes against my current philosophies.

I think a C# version of this game would be laughably straighforward to code compared to the old C++ version I did.  Maybe someday I'll find out.


Whew, glad I got all that off my chest.  Maybe now I can get back to doing what I'm supposed to be doing.

 
Calendar

October 2008
1234
567891011
12131415161718
19202122232425
262728293031

May 2008
123
45678910
11121314151617
18192021222324
25262728293031

April 2008
12345
6789101112
13141516171819
20212223242526
27282930


Older

Recent Visitors

October 12th
google

October 11th
google

October 10th
google

October 9th
google

October 8th
google

October 7th
google

October 6th
google

October 5th
google

October 4th
google

October 3rd
google

October 2nd
google

October 1st
google

September 30th
google