You have games like the original Quake 3, old school, very fast-paced, arcade-ish, often with a simple yet perfected gameplay.
Then you have games that attempt at realism, slower paced, based on strategy rather than reflexes.
But, what if you want something in between? And you want it open-source? And you want it to run on an old machine?
The main goal of this engine&game mod is to achieve that balance.
This is basically what has changed so far:
-Four Classes (soon to be five): Combatant, Engineer, Sniper and Heavy (Medic will be next)
-- 2 assault rifles
-- 2 submachineguns
-- 2 types of pistol and a mini SMG to serve as sidearms (dual or single)
-- 2 light machineguns
-- 3 "full-power" rifles
-- A flamethrower
-- Hand grenades
-- Sticky explosive charge
-- Welding gun
-New player animations.
-Sprinting, weapon magazines, iron-sights zooming, alt-fire, weapon attachments.
-MD5 (doom 3's) Models
-Hitboxes (localized damage, headshots and all), relative to MD3 and MD5
-Pieces of armor protecting different bodyparts
-some destructable environment
-New melee combat (combos, power-strikes, blocking)
What's in the pipeline:
-Damage from slamming into a wall
-Medic class with portable medikits
-Coop zombie mode
-Whatever is of inspiration!
Some elements of the mod itself may change over time. Balance will likely change, especially since the dev team has been composed only by myself so far.
A more detailed description of gameplay follows.
==Classes and weapons==
There are, currently, four classes. Each class has its own stats and six weapon slots: melee, sidearm, primary, secondary, and two special slots.
As of now, weapons have a further restriction in team-based games, as you can spawn only with your team's weapons (Once you are in game however, you can pick up enemy weapons). To add on that, you can currently use a weapon ONLY if your class supports it, e.g. no snipers with rocket launchers. This will likely change over time, and if you use an unsuitable weapon you'll only have a penalty in spread and/or recoil.
You can wield assault rifles, SMGs and shotguns as your primary weapons, and another shotgun or SMG or an old, WW2-style bolt-action rifle in your secondary slot.
As for speed and hit points, they're average.
You can use a flamethrower or a grenade launcher as your primary, and a SMG or a shotgun as your secondary. You also can carry a satchel charge instead of your hand grenades, and get to spawn with a free gas welding gun - used for repairing equipment and stuff like that.
Average hit points, slow speed (80%) -- to balance out the fact that your flamethrower is really deadly (yet heavy).
You have either a very accurate bolt-action sniper rifle, and a slightly less accurate semiautomatic one (depending on team as of now).
Your secondary is a SMG.
Less hit points (75), but fast speed (120%).
You can have in your primary slot either a rocket launcher or a machinegun, and a shotgun in your secondary.
Also you can bring with you satchel charges instead of hand grenades, just like the engineer.
More hit points (125), but slow speed (80%).
(Medic, coming soon)
The primary slot is restricted to a syringe-style medikit, which heals over a period of some seconds but is plentiful in "ammo". You can keep a SMG, shotgun or bolt-action in your secondary.
You also spawn with a box-style medikit, scarce in ammo that however heals quickly and by a large extent.
Less hit points (75), average speed -- to balance out the fact that you can heal yourself.
All classes can also have a sidearm and hand grenades, and get a default melee weapon (currently an ax - because knives are for sissies!).
You can cook said grenades, with all the risks involved.
Shooting is now less accurate the faster you move, as a tiny step towards realism. This is more or less dramatic depending on the weapon: as a general rule, close range weapons have very little penalty - you can run and hop all over the place and still blast your shotgun around - while long range weapons have heftier penalties -you have to be pretty much still to use a sniper rifle.
Now weapons of the same caliber do the same damage, regardless if it's a rifle or a machinegun.
The type of bullet also affects how much easily armor is penetrated. Slower bullets will mostly damage the armor, while faster bullets will rather damage whoever is in it.
==Hitboxes and armor==
Hitboxes use, as of now, a somewhat simplified version of the player model to determine hits. The damage output is different according to which area is hit:
Head - 6x damage
Neck - 2x damage
Upper torso - 1.35x damage
Lower torso - 1x damage
Limbs - 0.3x damage
There are three pieces of armor:
Helmet - 1.5x protection to the head (if you have one, headshots from most weapons won't one-hit-kill you). Can take 30 points of damage.
Hard armor - protects lower and upper torso, full protection. Can take 100 points of damage.
Jacket - Gives half the protection of helmet or hard armor, and is worn under said hard armor. Protects all bodyparts except the head, and can relieve you from 100 points of damage.
The percentage of damage that is stopped by an armor piece (which means, doesn't penetrate) damages the armor itself, that will be destroyed once it reaches its point of "critical existence failure".
Currently you can't scavenge armor off dead players - that will change, given enough time.
Sprinting takes your stamina (along with jumping) and multiplies your forward speed by 50%.
Some things in the map can be destroyed if they take enough damage.
In addition, some of these can explode. Who doesn't love exploding barrels?
Currently, said things do not respawn.
Only fixed turrets (heavy machineguns) can have a comeback if wrecked, since an engineer can pull out his "Weld-O-Master 2400" and make it as new once again.
In instaGib mode, the railgun has been replaced to the (otherwise identical) laser gun. In said mode you can choose whether to use hitboxes or not via a cVar.
==Bugs not to be surprised by==
Yeah, a side effect of development. The worst:
-Headshot hit detection is somewhat iffy in the older MD3 models; the bug appears to be solved with the addition of MD5 models.
-A few player animations jump awkwardly from one to another - especially the death animation.
Why embark in this messy bunch of work? I've asked myself the same thing a few times. But *drum rolls* The time has come, and the benefits of coding NPCs in have piled up with each day of development, and so did inspiration.
The goal is to make AI-controlled entities different from the bots that we already have, that can be interfaced with script files and/or the map editor.
Sounds far-fetched? Maybe, but as always I'll start with small steps. A simple mission or two, on the same wavelength of the tomb tutorial map. Think Sauerbraten, they have some fun singleplayer missions to play alongside multiplayer.
-Cooperation / Zombie mode
This is an even more important reason. Using dumbed-down bots as zombies is both limiting and wasteful.
-The reasons why bots aren't suitable
1) The bot AI is built with one purpose in mind: emulating a player as well as they can - the default OA bots manage that well enough. That means considerable thinking depth and independence, working in teams, following the goal of every game mode -- which can imply many things other than blowing someone to smithereens. The bot AI is very complex.
All while the singleplayer/Coop AI would need (for the moment) pretty much two things: Following a script (such as patrolling waypoints) and fighting the player(s) and/or other NPCs. That is true for anything from the final boss to the lowliest cannon fodder.
Merging these two things would probably do more harm than good.
2) Even outside of their AI, bots are coded in every respect like players. Again, the core server code that handles clients (players and bots) is pretty arcane and better just left alone. What to send to whom, etc.
Also, even the game mechanics (not the core, the .vm) would need extensive modifications to accomodate that. Just scratching on the surface, the respawn mechanics.
I did experiment a bit on the bots before moving on to understand this.
3) NPCs should be spawned in relatively large numbers, at the beginning, via map layout, or via scripts, and just be removed at the end of a level or when they die. The clients need, again, some complicated pathways for that to happen.
=== Progress ===
Surprisingly, getting them to spawn without crashing was relatively painless.
Models are still behind however:
Using the armor shard as a placeholder. You see a NPC relentlessly firing an invisible gun, complete with invisible infinite, magic-reloaded ammo.
Yeah. That used to be me. Now they can target you and hit you with surprising (read: too much) accuracy. However, as of now (7 nov) they can't move, except for falling. They're much like turrets.
Movement, AI, and graphics are the next steps.
(9 nov) Adding movement proved disastrous. Despite having "Fatal errors" in the AI, the Angry Armor Shard o' Doom was teleporting around the map mowing me down with its unlimited ammo, impossible to hit and sometimes to see.
(11 nov) Movement somewhat fixed, but still far from done.
(11 nov, 2) Basic movement (A to B) works
(13 nov) Moving on to weapon usage
(14 nov) NPCs now have a target detection algorithm that considers field of view, target distance, target speed and how much in front of them the target is.
(16 nov) NPCs will now pick a weapon taking into account enemy distance, ammo left and preference (similar, but not exactly like bot weights). Strangely head aim is a bit disappointing now. It will stay off for the moment.
(19 nov) Aiming issues fixed, now giving them a model.
(20 nov) Models are working (the headlessness will be addressed soon)
(20 nov, 2) Hitboxes work. Wow, it's been quick.
(26 nov) They can now hear sounds. On to map scripting (already partially done).
(30 jul) huge break in the news, but it's still going (albeit a bit slowly).
Now the game will load an additional file alongside the map .bsp (e.g. q3dm1.npcdef) that will contain info about any NPCs used in the map - e.g. hit points, model, speed, acceleration, how you'll interact if you use your action key on them, etc. so that in different maps you can have drastically different enemies - currently up to 8 types, but it'd be really trivial to raise that limit should the need arise.
The rest is done via map editor - their weapon, what to do when spawned, waypoints to follow, etc.
What needs to be done is deaths of NPCs "firing their targets", that is, activating something like a button activates a door. So when you've defeated that boss, the exit door will conveniently open by force of plot.
Additional mapping features (keys, multiple switches to open one door, skill level-based events such as more enemies spawning, ...) are a bit lacking and are on their way in. Already made keys in the classic doom style (blue yellow and red).
The keys could also be used in MP team mode, since the two teams could be made to carry the respectively color-coded key by default...
Alright, I had to remove and reupload the 26-07 release since it had a bug with the hitboxes. Anyway, this release has the MD5 mostly working, and is...
Here is the MD5 exporter with a small fix to allow you to export some animations without some channels. That is, some bones move, and other don't - this...
New, considerable, update. Includes working (at least, freshly tested...) binaries for Linux and Windows, updated pak files with a new map, source code...
Blender scripts to turn an elevation grid into a terrain in .map format to be used in Radiant.
Temporary source code upload. This is split in: engine (openarena-engine-0.8.1) SDK (openarena-RLC) RLC is the old name. Will be renamed RDX soon enough...