by date
OnagerEngine is now WarEngine and I have a feature list!
OnagerEngine is now WarEngine and I have a feature list!
| Name: | Daniel Buckmaster | |
|---|---|---|
| Date Posted: | Aug 01, 2008 | |
| Rating: | Not Rated | |
| Public: | YES | |
| Comments: | YES | |
| RSS Feed: | or Subscribe with . | |
| Profile Page: | View profile page for Daniel Buckmaster |
Blog post
I decided against OnagerEngine, in the end. I came up with WarEngine before, and it's better, so I don't know why I didn't like it.
Meh
The critical thing is, I've actualy taken the time to sit down and write up a list of features to implement. Of course, this is in no way a final list; doubtless, I'll add things that I see along the way, remove things that prove too difficult or unecessary, and generally prune and refine the engine. However, I've got to start somewhere.
After making the big list, I grouped all the modifications into little parcels based on what I thought was most difficult, what updates went together well, and what needed to be done most quickly. I then bunched up those parcels into versions - so now when I finish a chunk of coding, I can label the engine with a nice decimal version number. You can see the result of all this below, as the road map.
The WarEngine is primarily being designed for use with my project, an FPS set in the Warhammer 40k universe. Yes, I know about the IP issues; I'm dealing with them. However, once I've got as far as version 1.0, I'd like to release the code to the community - it's going to be mostly resources anyway! I'm sure it would provide a nice starting point for someone looking to make a war game like mine. I'm even wondering about a little example game to show it off - all these engine code changes are going to have to be supported by a massive amount of scripting...
Well... on with the show, I guess!
Oh, wait! Important question!
I'm not allowed to share source code changes with my team who haven't licenced Torque. I'm cool with that; they're not programmers. However, am I allowed to share this list? It contains some internal details of Torque, though no actual code.
I'm pretty sure I'm fine, but I thought I'd ask here first, just to be on the safe side.
WarEngine feature list
Characters
Stance system
-Stand, crouch, prone (on belly and back), and swim stances
-Each stance has its own set of maximum speeds and movement forces, as well as its own bounding box
-Bounding box checks are made before state transitions
Detailed damage model
-Players can be knocked back by damage, possibly causing them to stumble or fall. Animations are chosen depending on the direction of the damage
-Damage locations can be defined, as well as effects when a location is damaged a certain amount such as limping
-Locations can bleed, depending on the type of damage inflicted. Bleeding will be faster or slower depending on the amount of damage done
-'Creeping damage' represents effects such as poison or fire spreading across the body, and is managed per location, with definable effects such as particles, damage per second, camera effects, and more
-Advanced damage flashes display a number of different bitmaps depending on where the damage was caused and the amount and type of damage
-Death animations can be script-controlled
-Damage may be tracked depending on the player who inflicted it
Advanced movement controls
-Characters can conform to the terrain, optionally only when prone
-Torso-twists and head-turning
-Animations are played in first-person viewpoint for an immersive experience
-Jump strength is based on the amount of time the jump trigger is held for, and an animation can be played while the jump is readied
-Characters can be allowed to climb ladders, or any arbitrary surface, including vehicles
-A stress meter affects character movement, and can use one of several equations with definable parameters
-A dynamic member affects the overall movement speed of the character, set in script
In-depth weapon handling
-Aiming state
-Characters use 'pose' animations that define all arm animations for a given type of weapon
-Characters use fake IK to adapt their pose to the exact dimensions of a weapon
-When moving, a swinging arm animation can be played depending on the speed of the movement
-Swing animation is also affected by a dynamic accuracy member and the stress level of the character
Jetpack love
-Characters can use a simple jetpack activated either when the character makes a maximum-strength jump, or when the character double-jumps
-Alternatively, an advanced jetpack allows characters to hover and control their movement through the air
-Finally, a jump pack is available, which controls the character's flight in a script-defined arc
-All jetpacks can define particles and sounds when drifting and jetting, and animations when jetting
Character sounds
-Characters can have movement and ambient sounds as well as footstep sounds, and optionally 'wet' movement sounds
Inventory system
-Each character operates an inventory that stores a list of objects and quantities
Voice sets
-Each character has a reference to a voice set datablock that defines the audio files used for their speech
-Voice sets can be asked to formulate a character's speech based on simple inputs. Each voice set implements a variety of methods to resolve requests for speech
-Each character has his own voice pitch modifier to make characters with the same voice set sound slightly more unique
Projectiles
Advanced flight modelling
-Ballistic projectiles bounce when under a certain angle from the surface
-Bouncing projectiles can leave bounce decals and onCollision is called
-Projectiles have definable behaviour when entering water, depending on speed and other factors
-In-flight acceleration of projectiles
-Coded collision impulse
New projectile behaviours
-Seeking projectiles, with definable behaviour such as gradual steering, distance-relative steering, and terrain reasoning
-'Fluid' projectiles, which can pass through objects while still doing damage, and will stick to static objects and vehicles. They can optionally spawn creeping damage on characters
-Munitions can be placed (and will stick to vehicles), and can be set off via timer, proximity trigger and/or remote detonator
Sound variety
-Bounce sounds and hit sounds are definable per material type
-In-flight sounds with Doppler effect
Visual effects
-Bounce and hit decals defined per material type
-Tracers with definable colour, length, etc.
-Explosions may adjust the colour of some of their particles based on the material they take place on
Laser beams
-Beam can be interpolated to provide curving effects with either gravity or a specified direction vector, strength decay and atmospheric interference
-Continuous
-Damage can be done at the effect start, end, or per second of contact. Damage can also be applied within a radius of the beam, or just at the beam's hit point (where a radius may also be used)
-Callbacks when an object is hit by the beam. Callbacks are managed through the MountedImage that owns the beam
-Maximum length can determine strength decay through either a linear, inverse or square-root equation
-Beam warm-up and cool-down
Vehicles
Improved vehicle collisions
Titan class
-Titans are constructed of multiple vehicle hulls, moved by a manager object to walk and aim weapons
-Detailing is provided by static shapes attached to the hulls
-Ragdoll physics is used when a Titan is destroyed
Walker class?
-Move animation
-Advanced bounding box resolves legs in more detail
Vehicle seating system
-Individual seats can be mounted by players close enough
-Each seat is in a specified seating location of the vehicle
-Players can swap between seats in their location
-Each seat may have a control object assigned to it, and a set of controls able to be used
Damage model
-Vehicles use damage locations, each with consequences of being damaged
-When damage is applied to a location, damage can be passed on to players seated there, or to turrets or other control objects
-Vehicle behaviour can be modified by damage level
Mountable, controllable turrets
-Turrets may be AI controlled or character controlled (via a seat in the vehicle or mounting the turret itself
-Turrets are either mounted to vehicles or created as stand-alone units
Vehicle special effects
-Engine sound is pitched based on engine speed
-Damage to a certain location may play additional sounds, optionally dependent on vehicle speed or gear
-Wheel sounds are defined per material type
-Advanced destruction effects, including secondary explosions, long-lasting smoke and fire particles, etc.
HoverVehicle improvements
-Air-braking enabled, along with an optional brake animation
-Speed limiter
-Multiple artist-defined stabs that can have arbitrary position and rotation
Two-wheeled vehicles
-A balancing force is used to stabilise two-wheeled vehicles, and a leaning force aids turning
Gears
-WheeledVehicles use a gear system
Wheel friction per material type
Images
Watched fields
-Up to four fields per mounted image
-Script callbacks in situations such as OnMin or OnIncTo
-Can be tied to global (non-state-dependent) particles, lights, sounds or animations
Manual state changes
-Image state, as well as global animations, lights, sounds and particles, can be managed through script
Images collide
-Characters' bounding boxes may be extended to take into account the extents of mounted images
Increased image limit
-Characters can mount up to 16 images
-Network modifications make image networking more efficient
Mount image images
-Images can be mounted to already-mounted images while retaining all of their own functionality
Melee weapons
-Images can process raycasts every tick to deal close-combat damage
-Raycasts can be interpolated for greater accuracy
Simple images?
-Simple images remove functionality such as the state machine and particles, and are used for equipment and inert close combat weapons
Alternate trigger state
Scope
-Characters can view the world through an image, with an optional GUI overlay and zoom factor
ShapeBase
Advanced skin swapping
Mesh hiding
-Individual mesh objects may be shown or hidden
Hitboxes
-Hitboxes are artist-defined
-Can be activated and deactivated dynamically
-Included in RayInfo struct and projectile collision callbacks
Sound modifier track
-Whenever a sound is played by the object, the modifier sound will also be played
-Optionally, the modifier sound will adjust its volume to match that of the played sound
Contact surface velocity
-ShapeBase objects adjust their position by the velocity of an object beneath them, after definable friction is taken into account
-It is left to derived objects to collect the velocities of objects they are resting on
Terrain
Deformation
-Terrains can be deformed by one of four patterns (rectangle, point, circle, hemi) with definable dimensions and timescales
-Terrain vertices are 'compressed' to lessen the effect of multiple deformations and to allow non-deformable zones
-Terrains are locally relit when a deformation is performed
-The terrain material of the deformed vertices may be changed
IceBlocks
-WaterBlocks with collision and no waves
-Can be broken in places, with a defined pattern given a size index
Server-side waves
-Waves are synchronised on the server and clients, so they can be used to alter the simulation of other objects
Rendering
Torque Modernisation Kit
-Allows use of shaders on interior and water objects, DRL and screen bloom
Koushik's shaders
-Enables the use of shaders on DTS objects, as well as screen-space shaders
Dynamic weather
-Limited dusk/dawn cycles
-Cloud layers can be changed in real-time
-Dynamic-brightness sun
Environment pack
-Implements numerous changes
Artificial Intelligence
Squad manager
-Provides an easy interface for its membrs to access critical information about the squad's condition
-Keeps track of incoming fire and enemies in range
-When squads converge, their managers work together
-Orchestrates chatter and other interactions between squad members
-Dictates low-level movement, finds cover locations, manages movement through interiors based on navigation nodes
Individual AI
-Simple routines to decide whether to focus on shooting, moving, or cover
-Independent characters
-Improved aiming routine allows for random error and gradual improvement in aim
Strategic AI
-Long-range pathfinding across large maps via nodes
-Two levels of management above squad-level direct battles using terrain reasoning and goal-based objectives
New Stuff
Soft objects
-Rope and cloths are possible. They are calculated client-side with simulation LoD available; raycasted collision is taken into account, but does not affect other objects
Dynamic buildings
-Buildings are generated procedurally based on datablock values
-Created from separate 'tiles' of wall, floor and roof segments
-Each tile is destructible, using mesh hiding and skin swapping for greater detail. Damage is passed between tiles for continuity
-Tiles are associated with damage and destruction sounds and explosions
-The building manager is responsible for rendering the tiles of its building and checking collision
-Datablocks also have options to add set pieces, ladders, stairs, etc.
WarEngine road map
v0.0 TGE 1.5.2
v0.05
-TMK, Koushik shaders, environment pack
v0.1
-Character poses, stances, movement controls, sounds, jetting
-Projectile flight modelling, behaviours
-Image watched fields, manual state changes, alt trigger, image images
-ShapeBase skin swapping, mesh hiding, hitboxes
v0.15
-Character weapon handling, damage model
-ShapeBase contact surface velocity
v0.2
-Vehicle collisions, damage, turrets, two-wheeled vehicles, gears
-Terrain deformation
v0.3
-Character advanced jetting and jumping
-Image scope, melee raycasts, collision, increased limit
-Vehicle friction per material type
-Projectile visual effects, sounds
v0.35
-Laser projectiles
v0.4
-Character inventory
v0.5
-Tactical AI
v0.53
-Character voice pitch modulation
-Voice sets
-ShapeBase sound modifier track
v0.55
-Vehicle seating system
v0.58
-Strategic AI, independent AI
v0.6
-Simple images
v0.65
-Buildings
v0.7
-HoverVehicles
-Walker vehicle?
-Titan vehicle
v0.71
-AI interactions
v0.73
-Server waves
v0.75
-Dynamic sky
-Dynamic sun
v0.8
-Local terrain relight
-Terrain texture painting
v0.81
-IceBlocks
-Soft objects
v0.85
-Character damage tracking
Bug fixing, testing
v1.0 WarEngine
Meh
The critical thing is, I've actualy taken the time to sit down and write up a list of features to implement. Of course, this is in no way a final list; doubtless, I'll add things that I see along the way, remove things that prove too difficult or unecessary, and generally prune and refine the engine. However, I've got to start somewhere.
After making the big list, I grouped all the modifications into little parcels based on what I thought was most difficult, what updates went together well, and what needed to be done most quickly. I then bunched up those parcels into versions - so now when I finish a chunk of coding, I can label the engine with a nice decimal version number. You can see the result of all this below, as the road map.
The WarEngine is primarily being designed for use with my project, an FPS set in the Warhammer 40k universe. Yes, I know about the IP issues; I'm dealing with them. However, once I've got as far as version 1.0, I'd like to release the code to the community - it's going to be mostly resources anyway! I'm sure it would provide a nice starting point for someone looking to make a war game like mine. I'm even wondering about a little example game to show it off - all these engine code changes are going to have to be supported by a massive amount of scripting...
Well... on with the show, I guess!
Oh, wait! Important question!
I'm not allowed to share source code changes with my team who haven't licenced Torque. I'm cool with that; they're not programmers. However, am I allowed to share this list? It contains some internal details of Torque, though no actual code.
I'm pretty sure I'm fine, but I thought I'd ask here first, just to be on the safe side.
WarEngine feature list
Characters
Stance system
-Stand, crouch, prone (on belly and back), and swim stances
-Each stance has its own set of maximum speeds and movement forces, as well as its own bounding box
-Bounding box checks are made before state transitions
Detailed damage model
-Players can be knocked back by damage, possibly causing them to stumble or fall. Animations are chosen depending on the direction of the damage
-Damage locations can be defined, as well as effects when a location is damaged a certain amount such as limping
-Locations can bleed, depending on the type of damage inflicted. Bleeding will be faster or slower depending on the amount of damage done
-'Creeping damage' represents effects such as poison or fire spreading across the body, and is managed per location, with definable effects such as particles, damage per second, camera effects, and more
-Advanced damage flashes display a number of different bitmaps depending on where the damage was caused and the amount and type of damage
-Death animations can be script-controlled
-Damage may be tracked depending on the player who inflicted it
Advanced movement controls
-Characters can conform to the terrain, optionally only when prone
-Torso-twists and head-turning
-Animations are played in first-person viewpoint for an immersive experience
-Jump strength is based on the amount of time the jump trigger is held for, and an animation can be played while the jump is readied
-Characters can be allowed to climb ladders, or any arbitrary surface, including vehicles
-A stress meter affects character movement, and can use one of several equations with definable parameters
-A dynamic member affects the overall movement speed of the character, set in script
In-depth weapon handling
-Aiming state
-Characters use 'pose' animations that define all arm animations for a given type of weapon
-Characters use fake IK to adapt their pose to the exact dimensions of a weapon
-When moving, a swinging arm animation can be played depending on the speed of the movement
-Swing animation is also affected by a dynamic accuracy member and the stress level of the character
Jetpack love
-Characters can use a simple jetpack activated either when the character makes a maximum-strength jump, or when the character double-jumps
-Alternatively, an advanced jetpack allows characters to hover and control their movement through the air
-Finally, a jump pack is available, which controls the character's flight in a script-defined arc
-All jetpacks can define particles and sounds when drifting and jetting, and animations when jetting
Character sounds
-Characters can have movement and ambient sounds as well as footstep sounds, and optionally 'wet' movement sounds
Inventory system
-Each character operates an inventory that stores a list of objects and quantities
Voice sets
-Each character has a reference to a voice set datablock that defines the audio files used for their speech
-Voice sets can be asked to formulate a character's speech based on simple inputs. Each voice set implements a variety of methods to resolve requests for speech
-Each character has his own voice pitch modifier to make characters with the same voice set sound slightly more unique
Projectiles
Advanced flight modelling
-Ballistic projectiles bounce when under a certain angle from the surface
-Bouncing projectiles can leave bounce decals and onCollision is called
-Projectiles have definable behaviour when entering water, depending on speed and other factors
-In-flight acceleration of projectiles
-Coded collision impulse
New projectile behaviours
-Seeking projectiles, with definable behaviour such as gradual steering, distance-relative steering, and terrain reasoning
-'Fluid' projectiles, which can pass through objects while still doing damage, and will stick to static objects and vehicles. They can optionally spawn creeping damage on characters
-Munitions can be placed (and will stick to vehicles), and can be set off via timer, proximity trigger and/or remote detonator
Sound variety
-Bounce sounds and hit sounds are definable per material type
-In-flight sounds with Doppler effect
Visual effects
-Bounce and hit decals defined per material type
-Tracers with definable colour, length, etc.
-Explosions may adjust the colour of some of their particles based on the material they take place on
Laser beams
-Beam can be interpolated to provide curving effects with either gravity or a specified direction vector, strength decay and atmospheric interference
-Continuous
-Damage can be done at the effect start, end, or per second of contact. Damage can also be applied within a radius of the beam, or just at the beam's hit point (where a radius may also be used)
-Callbacks when an object is hit by the beam. Callbacks are managed through the MountedImage that owns the beam
-Maximum length can determine strength decay through either a linear, inverse or square-root equation
-Beam warm-up and cool-down
Vehicles
Improved vehicle collisions
Titan class
-Titans are constructed of multiple vehicle hulls, moved by a manager object to walk and aim weapons
-Detailing is provided by static shapes attached to the hulls
-Ragdoll physics is used when a Titan is destroyed
Walker class?
-Move animation
-Advanced bounding box resolves legs in more detail
Vehicle seating system
-Individual seats can be mounted by players close enough
-Each seat is in a specified seating location of the vehicle
-Players can swap between seats in their location
-Each seat may have a control object assigned to it, and a set of controls able to be used
Damage model
-Vehicles use damage locations, each with consequences of being damaged
-When damage is applied to a location, damage can be passed on to players seated there, or to turrets or other control objects
-Vehicle behaviour can be modified by damage level
Mountable, controllable turrets
-Turrets may be AI controlled or character controlled (via a seat in the vehicle or mounting the turret itself
-Turrets are either mounted to vehicles or created as stand-alone units
Vehicle special effects
-Engine sound is pitched based on engine speed
-Damage to a certain location may play additional sounds, optionally dependent on vehicle speed or gear
-Wheel sounds are defined per material type
-Advanced destruction effects, including secondary explosions, long-lasting smoke and fire particles, etc.
HoverVehicle improvements
-Air-braking enabled, along with an optional brake animation
-Speed limiter
-Multiple artist-defined stabs that can have arbitrary position and rotation
Two-wheeled vehicles
-A balancing force is used to stabilise two-wheeled vehicles, and a leaning force aids turning
Gears
-WheeledVehicles use a gear system
Wheel friction per material type
Images
Watched fields
-Up to four fields per mounted image
-Script callbacks in situations such as OnMin or OnIncTo
-Can be tied to global (non-state-dependent) particles, lights, sounds or animations
Manual state changes
-Image state, as well as global animations, lights, sounds and particles, can be managed through script
Images collide
-Characters' bounding boxes may be extended to take into account the extents of mounted images
Increased image limit
-Characters can mount up to 16 images
-Network modifications make image networking more efficient
Mount image images
-Images can be mounted to already-mounted images while retaining all of their own functionality
Melee weapons
-Images can process raycasts every tick to deal close-combat damage
-Raycasts can be interpolated for greater accuracy
Simple images?
-Simple images remove functionality such as the state machine and particles, and are used for equipment and inert close combat weapons
Alternate trigger state
Scope
-Characters can view the world through an image, with an optional GUI overlay and zoom factor
ShapeBase
Advanced skin swapping
Mesh hiding
-Individual mesh objects may be shown or hidden
Hitboxes
-Hitboxes are artist-defined
-Can be activated and deactivated dynamically
-Included in RayInfo struct and projectile collision callbacks
Sound modifier track
-Whenever a sound is played by the object, the modifier sound will also be played
-Optionally, the modifier sound will adjust its volume to match that of the played sound
Contact surface velocity
-ShapeBase objects adjust their position by the velocity of an object beneath them, after definable friction is taken into account
-It is left to derived objects to collect the velocities of objects they are resting on
Terrain
Deformation
-Terrains can be deformed by one of four patterns (rectangle, point, circle, hemi) with definable dimensions and timescales
-Terrain vertices are 'compressed' to lessen the effect of multiple deformations and to allow non-deformable zones
-Terrains are locally relit when a deformation is performed
-The terrain material of the deformed vertices may be changed
IceBlocks
-WaterBlocks with collision and no waves
-Can be broken in places, with a defined pattern given a size index
Server-side waves
-Waves are synchronised on the server and clients, so they can be used to alter the simulation of other objects
Rendering
Torque Modernisation Kit
-Allows use of shaders on interior and water objects, DRL and screen bloom
Koushik's shaders
-Enables the use of shaders on DTS objects, as well as screen-space shaders
Dynamic weather
-Limited dusk/dawn cycles
-Cloud layers can be changed in real-time
-Dynamic-brightness sun
Environment pack
-Implements numerous changes
Artificial Intelligence
Squad manager
-Provides an easy interface for its membrs to access critical information about the squad's condition
-Keeps track of incoming fire and enemies in range
-When squads converge, their managers work together
-Orchestrates chatter and other interactions between squad members
-Dictates low-level movement, finds cover locations, manages movement through interiors based on navigation nodes
Individual AI
-Simple routines to decide whether to focus on shooting, moving, or cover
-Independent characters
-Improved aiming routine allows for random error and gradual improvement in aim
Strategic AI
-Long-range pathfinding across large maps via nodes
-Two levels of management above squad-level direct battles using terrain reasoning and goal-based objectives
New Stuff
Soft objects
-Rope and cloths are possible. They are calculated client-side with simulation LoD available; raycasted collision is taken into account, but does not affect other objects
Dynamic buildings
-Buildings are generated procedurally based on datablock values
-Created from separate 'tiles' of wall, floor and roof segments
-Each tile is destructible, using mesh hiding and skin swapping for greater detail. Damage is passed between tiles for continuity
-Tiles are associated with damage and destruction sounds and explosions
-The building manager is responsible for rendering the tiles of its building and checking collision
-Datablocks also have options to add set pieces, ladders, stairs, etc.
WarEngine road map
v0.0 TGE 1.5.2
v0.05
-TMK, Koushik shaders, environment pack
v0.1
-Character poses, stances, movement controls, sounds, jetting
-Projectile flight modelling, behaviours
-Image watched fields, manual state changes, alt trigger, image images
-ShapeBase skin swapping, mesh hiding, hitboxes
v0.15
-Character weapon handling, damage model
-ShapeBase contact surface velocity
v0.2
-Vehicle collisions, damage, turrets, two-wheeled vehicles, gears
-Terrain deformation
v0.3
-Character advanced jetting and jumping
-Image scope, melee raycasts, collision, increased limit
-Vehicle friction per material type
-Projectile visual effects, sounds
v0.35
-Laser projectiles
v0.4
-Character inventory
v0.5
-Tactical AI
v0.53
-Character voice pitch modulation
-Voice sets
-ShapeBase sound modifier track
v0.55
-Vehicle seating system
v0.58
-Strategic AI, independent AI
v0.6
-Simple images
v0.65
-Buildings
v0.7
-HoverVehicles
-Walker vehicle?
-Titan vehicle
v0.71
-AI interactions
v0.73
-Server waves
v0.75
-Dynamic sky
-Dynamic sun
v0.8
-Local terrain relight
-Terrain texture painting
v0.81
-IceBlocks
-Soft objects
v0.85
-Character damage tracking
Bug fixing, testing
v1.0 WarEngine
Recent Blog Posts
| List: | 11/22/08 - Upgrading arm animations 08/08/08 - For newbs like me... 08/01/08 - OnagerEngine is now WarEngine and I have a feature list! 05/07/08 - The War Engine 11/03/07 - No, still no crosshair... 09/01/07 - Second blog post! 08/07/07 - First blog entry...? |
|---|
Submit your own resources!| Konrad Kiss (Aug 01, 2008 at 19:32 GMT) |
| Daniel Buckmaster (Aug 01, 2008 at 20:11 GMT) |
Thanks :)
| Daniel Buckmaster (Aug 02, 2008 at 06:53 GMT) |
Edit: And AI!
Edited on Aug 02, 2008 12:51 GMT
| Devon Winter (Aug 04, 2008 at 15:27 GMT) |
Good luck!
(oh, and you forgot screenshots. :P )
| Daniel Buckmaster (Aug 04, 2008 at 19:59 GMT) |

It's stock TGE and TMK - but then again, I'm only up to version 0.05 as of yesterday :P.
Projectiles are in progress...
Anyway, thanks! I'd better start looking for a team, then... ;P
Edited on Aug 04, 2008 20:03 GMT
You must be a member and be logged in to either append comments or rate this resource.


Not Rated


