The three virtues of a programmer: Laziness, Impatience, and Hubris. – Larry Wall
Legacy:Devastation Wiki Content
This page contains links to many of the pages (well, it would do if there were lots of Devastation related content on the Wiki) relating to the Unreal Engine based game Devastation. If you are adding new Devastation content then feel free to link to it from here (creating a new section if you need to).
Possible Mod Types
Out of the box Devastation doesn't support any mod types via the game interface. It is possible to change the game type and add mutators via the "command line". The structure of the Devastation code is such that not all of the standard mutator functions work, or behave in the manner expected from experience with UT and UT2003.
So far I've tried the following via a mutator:
- Altering the player movement characteristics via the ModifyPlayer() function.
- The function is called but the player movement is reset later in the code (as far as I can tell).
- Changing the amount of damage taken when falling via MutatorTakeDamage.
- The MutateTakeDamage() function is never called. It would appear that "damage mutators" need to extend the Damager control class. This means that it would be nigh on impossible to run more than one "damage mutator" at a time. I feel a set of custom classes coming on that call the original mutator chain after the default handling is done. I'll be the first to admit that it's a bit pants but hey - what is this life if full of care, we have no time to fix broken code.
- This mutator function works fine and behaves as expected. Be aware that Dev. spawns many many effects during gameplay that are passed through this function (at least in a listen server). A long mutator chain may impact performance. I must get around to testing this in dedicated server mode.
- This function behaves as expected. The standard Score is updated prior to the function being called. The actual score used is held in separate variables and updated after this function is called.
Mapping for Devastation
- Does Devastation support the terrain features of the Unreal Engine?
Some Useful Units
- Normal jumping height
- 64 units.
- Crouch-jumping height
- ? units.
- Maximum distance that can be jumped
- ? units.
- How big are door frames
- Door frames seem to conform to the following dimensions - width=60, breadth=8, height=120. Very weird dimensions. I've also seen doors that were 56x8x128 which is slightly more sensible. Personally I think I may work to 64x8x128 - but that my not fit with the static meshes available.
- Any thoughts on texture sizes?
- Textures are generally no larger than 256x 256. Although some sky textures can be up to 1024x1024.
- How fast does the player move?
- The player has a ground speed of 230 units. I've not been able to acertain whether this is walking speed or running speed.
Coding for Devastation
The model used within Devastation to support it's game types is different to that of UT and UT2003. The code adopts a very service based approach to it's functionality (which to my mind is quite tidy). Whether it's actually easy to use or not is another matter. I won't know until I get the game.
Essentially, all game types are subclassed from DGameInfo. The game info class has a set of references to Game Assistants. These assistants are responsible for implementing the rules of the game and take on many of the functions handled by the GameInfo class and Controller (as far as I can tell).
The game assistants are held in a linked list in a similar way to Mutators. In both cases there is no link to the previous assistant in the chain.
Each DGameAssistant has a set of references to all of the other "standard" game assistants used by each of the game types. These are listed below:
- Access center
- Spawn center - Controls players entering and leaving the game as well as respawning.
- Inventory manager - Controls the players default inventory and also handles collecting other items of inventory as well.
- Bot manager - Controls the spawning of the "bots" within the game. How closely involved this class is in managing the "players" in the single player game is currently under investigation. The ADDBOTS console command appears to be broken with Devastation - support for adding bots appears to be in this class but with no way of adding them via the console.
- Team manager
- Damage control - Controls the amount of damage taken. Using a custom DDamageControl class you should be able to hook into accessing "damage mutators".
- Game log
Quite how game assistants and mutators work together is something of a mystery at the moment. I hope to explore this more fully in the future.
Tarquin: I downloaded the demo and it crashes on startup :(
GameVersion: 368 Can't find 'ini:Engine.Engine.GameEngine' in configuration file History: UObject::SafeLoadError <- UObject::StaticLoadClass <- InitEngine
EntropicLqd: Devastation places the MP Demo INI files in "My Documents/DevastationMPDemo". Try deleting them and letting the game re-create them. And make sure that the directories exist.
Tarquin: Thanks for the tip .... still crashes the same though :( I'm off to rant about it in BuF OT ...
EntropicLqd What OS are you running? What files (and files sizes) do you have in "My Documents/DevastationMPDemo"? This is a curious one. There's a few other people in the devastation forums with the same problem but no-one has figured it out yet.
Tarquin: Win98SE. I couldn't find any folder called "DevastationMPDemo", so I made one. Could the problem be related to the fact that I used TweakUI to set "My Documents" in a different location?
EntropicLqd: Wouldn't suprise me. Create a "My Documents" folder and see if that works. Other people have reported problems when they've got their "My Documents" folder pointing to a network or compressed drive. Might be worth just creating a "My Documents" directory in the original location (c:\ if I remember right) to see if that solves the problem.
Tarquin: Yup, someone on the devas forum has the exact same problem but with XP. C\my Doc is still physically there – it's just a registry setting that's different