My program doesn't have bugs. It just develops random features.

Legacy:Land Of The Dead

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
Developer(s) Brainbox Games
Publisher Groove Games
Release Date October 2005
Supported Platform(s) Windows
Xbox
Official Web Site http://www.landofthedeadgame.com/ (Archive)
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

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


  • If being played on Windows Vista (or 7?), save files are not stored in the default \Land of the Dead\Saves folder. Windows Vista introduced a safety feature that disallows programs run by a standard user (rather than run as administrator) write access to the Program Files folder. That being said, any modifications or new files will be stored in a remote folder for your windows user account. Said folder can be found at C:\Users\[Username]\AppData\Local\VirtualStore\Program Files. Past that, it will mirror your Program Files folder with any directories that contain modified files. So navigating into .\Groove Games\Land Of The Dead\System, you will most likely see a few *.ini files that were created due to you changing settings. Navigating a directory up, then into the Saves folder, you will see all of your save directories, with the information stored within.

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

Discussion