Legacy:Land Of The Dead - Unreal Wiki

# Legacy:Land Of The Dead

### From Unreal Wiki, The Unreal Engine Documentation Site

Developer(s) | Brainbox Games
Publisher | Groove Games
Release Date | October 2005
Supported Platform(s) | Windows Xbox
Official Web Site | http://www.landofthedeadgame.com/
Demo | FilePlanet Mirror
Latest Patch | Version 1.1 – November 2005 Windows
Unreal Engine Version | [[Unreal Engine Versions/2 | Unreal Engine 2.0]] Build 2226
UnrealEd Version | [[UnrealEd Versions | UnrealEd 3]]

## Description

Land of the Dead is a first-person shooter, developed by Brainbox Games and published by Groove Games, in October 2005.

It is loosely based on a license for the Land of the Dead movie.

## System Requirements

Operating System
  Windows XP

CPU
  700MHz

Memory
  64MB

Hard Disk Space
  1GB

Audio System
  Windows® compatible sound card

Video System
  3-D Video, 32MB+, 64mb+ to run editor

Multiplayer
  Internet (TCP/IP) and LAN (TCP/IP) play supported. Internet play requires a 33.6 Kbps or faster modem

## Downloads

### Patches/Updates

- Windows

## Useful Information

LOTD:RTFG is extended by the Bink video player extensions, and also seems to support some sort of Unreal version of Java Interface classes.

New native functions:

Actor CopyMaterialsToSkins
  Copies all default materials for a Static or Skeletal Mesh to the Skins[] override array of the Actor
Actor FilterStateDirty
  Unknown
PlayerController LeaveVoiceChat
  Unknown - possibly XBox voice related
PlayerController ChanveVoiceChatter(int IPAddr, int Handle, bool Add)
  Unknown - possibly XBox voice related
BinkVideoPlayer Bink_Play(string filename)
  Play specified video
BinkVideoPlayer Bink_Scale(float scale)
  Scale video (1.0 = normal)
BinkVideoPlayer Bink_Stop
  Stop all bink player instances
BinkVideoPlayer Bink_Is_Playing
  returns true if bink is playing, false if not
Profiler Load(int v)
  Load profile? from slot? v
Profiler Save
  Save profile
Profiler SetValue(string vk, string vv)
  Set key/value pair for profile
Profiler GetValue(string v)
  Return string value given key 'v'
Profiler NewProfile(string v)
  Create new profile with name 'v'
Profiler DeleteProfile(int v)
  Delete profile from slot? 'v'
Profiler GetProfileCount
  Loads all profiles, refreshes list, returns count of total profiles
Profiler GetProfileByName(string v)
  Returns profile slot? named by 'v'
Profiler GetProfileName(int v)
  Returns string containing profile name, given slot 'v' (note: call GetProfileCount first)
Profiler GetCurrentProfileName
  returns currently loaded profile, or "" if not loaded
Profiler IsValidProfile
  Not documented? Not sure if this is called in Uscript to return wether we have a valid profile, or what
Profiler GetTotalCheckpoints
  "Returns total number of checkpoints in profile", whatever that means.
Profiler GetChecpoint(int v)
  "Returns name of checkpoint at index v", whatever that means

Land of the Dead/Actor reference

Land of the Dead/NavigationPoint reference

## Known Issues

- A patch to V1.1 was released in November, 2005, and includes a fair amount of updates, as well as support for custom content, and Brain Box's version of UnrealEd. The Editor seems mostly unchanged, except it reads *.dz files for maps, instead of *.uz files.
- The IPDRV.HttpDownload module is utterly broken, on the client end. HTTPDownload is apparently not available for this game, unless someone can come up with a unique way of fixing it.
- When a player stands on a static mesh, that is higher than a few UU above the zombies, and is lower than another level of accessible geometry, the AI gets extremely confused, and causes a fair amount of lag. This is normally not an issue with developer shipped levels, which rarely have more than 4 or 5 enemies at a time, but is an issue for a lot of custom created content. Some of the modifications for the game have attempted to alleviate this by changing the AI, and some have lessened it, but none have been exceptionally successful at eliminating the lag.
- Mover classes, and all their subs, suffer from the fact that the KeyRot and KeyPos variables are not replicated, which will create all sorts of weird issues online. A few people at http://www.undeadgames.com/ have offered fixes in their forum.
- DestructableMover classes suffer from an issue where they are not removed from the world after they suffer enough damage to destruct them. This causes splash damage, such as something doing damage using the RadiusActors iterator to call TakeDamage() in all nearby actors, to cause the mover to replay it's destruction animation, even though it has already been destructed. There are two easy ways to fix this in a subclass: From TakeDamage() either call Destroy() when the mover has taken fatal damage, or have TakeDamage() not call the super if the DamageCapacity <= 0.
- Sometimes on a multiplayer game, the zombies will go to negative health, and their bodies will explode when you hit them again. This is apparently due to a rumored engine bug that causes function calls to mysteriously stop executing when they call something that inherits but doesn't define a particular function. In this case, it's "PreventDamage()" in the gametypes. So, I recommend if you do any gametyping, you add a PreventDamage() function, and just point it to the super. It may just help.

## Interfaces in LotD

As mentioned above, LotD seems to have support for Interface classes. These appear to act somewhat like their similarly named Java counterparts, and are especially useful for implementing several different behaviours, such as an add-on class that is Smashable, Burnable, and Movable.

The following interfaces are defined in LotD:

HudDrawable
  HudDrawable gives any program that implements a drawToHud(Canvas, float, float) function, the ability to register with a player's HUD (player.myHUD.register(self) according to the comments)and get called for drawing.
SaveHandler
  SaveHandler is only in a few objects, and gives them the ability to have a PreSave() and PostSave() function for when it's time to save.
VideoNotification
  VideoNotification is apparently used in PlayerController to handle when to pause the game when video begins and unpause when video ends
EventDispatcher
MessageDispatcher
  EventDispatcher and MessageDispatcher are supposedly implemented in the ObjectiveManager code, but there don't seem to be matching interface classes
Smashable
  Smashable is implemented by DOTZDestructableMesh, DOTZDoor, and all subs of WoodenDoor.

## Related Topics

- Unreal Engine Versions/2

## Discussion

Category: Legacy Game

##### Views

- Legacy
- Discussion
- Current revision

##### Search