___________________ _________________/ v. 3.0.4.0 GE _ __ _ _ \ // || \ //\ //\ \// || | || \/ | // || | || | // \ ||_/ || | _____________________________ _______/ A Half-Life modification OpenSource project About ------------------ XDM is... ...playing Half-Life in y2020 and feeling contemporary. ) The game: Since the beginning of its development in early 2000 XDM became the most advanced single- and multiplayer Half-Life modification with lots of bugfixes, improvements and unique features, but still fully compatible with all original assets and many other mods. Yes, XDM is very influenced by Unreal Tournament(tm) and tries its best to fill the gap of not having a good multiplayer in HL. GoldSource is the limit! ) Remember: it you want something in XDM, there's probably an option for that. :) Inside: Remember how weapon box was used in CS to act as a dropped weapon? Well, there's nothing like that in XDM. Here we have everything as fair as possible, as real as possible. While being much more advanced, XDM code is sometimes more compact and easier to read because there's almost no copypasta. XDM can load all HL maps and meanwhile fixes or avoids some old, typical and rare design mistakes... or exploits. Oh, and we have RenderSystem. Almost all special effects are drawn with it. It's pretty easy to read, code and also scriptable. Everything is well commented. And it's OpenSource. /____ Game rules ____/ *Deathmatch/Team deathmatch* Get best score. *Capture the flag* Go to the opponent's base, take their flag and return it to your base. - Server admin may change flag model *Domination* Take control points and don't let enemy to touch them. Each control point increases your team score over time. - Server admin may change control point model *Co-Operative* There are several sub-modes here: - If there are monsters on the map, your goal is to clear out the map. - If the server has monster respawning turned on, the game turns into a monster DM. - If there are sequences of maps, which are connected with trigger_changelevel, it is possible to play together from the start to the end, being able to change the map only by gathering together. *Last Man Standing* Be the last one to survive. Players join during mp_jointime period. *Additional options* - In any game type time limit may be set. - If mp_revengemode is 1, a player will be awarded twice as much for killing his killer. If mp_revengemode is 2, you cannot hurt anyone until you get revenge on your killer (or he kills himself). - There's an overdrive mode. Don't use it. It's mind-blowing. - Player statistics are a thing to brag about. - Maps may have officially approved accounted secrets. *note* Teamplay is a little tricky (because of HL limitations). - Server may have teams pre-configured (1) or have team names left blank (2). - In case 1 server may offer team selection menu. - In case 2, when a player joins empty server or creates a new LAN game, only one team is created for him. This team will be named after the player's team (user options). When another player joins this server with different 'team', another team will be created, until the maximum number of teams is reached. - Therefore, a player should have one of allowed team names before joining a server if he wants to automatically join a specific team. /____ User Interface ____/ XDM UI is very much like HL plus: - COMMAND MENU! It is vital. - Music player. Less vital. F4 by default. - all HUD/UI colors can be customized, also, HUD can be set to team color. - weapon slots positions and auto-selection priority may be customized. - player chat now detects if somebody mentions your name (highlights). /____ Gameplay: damage ____/ When you take damage, screen may tilt, shake, flash, fade, etc. - Your HEV suit HUD may be damaged by radiation, heat, electricity, etc. - you may temporary lose ability to shoot (striked hand icon) - you may get set on fire or get frozen - Most of negative effects can be neutralized by using medkits and batteries. /____ Gameplay: skill ____/ There are three skill levels, as usual. As skill grows, things change: - weapons become more realistic, - damage affects more aspects of the game - AI becomes more advanced, NPCs aim better and have more abilities at hard level - tactical balance change (apache shoots faster, osprey has more people onboard, etc.) Manual ------------------ Installing XDM (i) XDM is free and designed to be fully offline-capable, so it DOES NOT require internet connections. - Simple: Install full package and all patches (if any) sequentially into your Half-Life directory: Example: "C:\Half-Life\" (will create "C:\Half-Life\XDM") - Detailed: 0. XDM requires Half-Life version 1.1.1.0 (with model transparency support) or newer. Steam versions are now supported (tested on 1.1.2.0, 1.1.2.1). SDL versions (1.1.2.2+) are not tested. 1. It is recommended to install Half-Life High Definition Pack or other improvement mods before installing XDM. 2. Download the lastest release version of XDM and all corresponding patches. a) Full package installation (not an update) - If you have any older version of XDM, remove it (you can save your own configs, playlists, etc. to a safe place). - Run XDMXXXX.exe setup and follow instructions. Install into Half-Life root directory. Example 1 (non-steam): "C:\Half-Life\" (will create "C:\Half-Life\XDM") Example 2 (steam): "Steam/SteamApps//Half-Life" (will create "Steam/SteamApps//Half-Life/XDM") b) Install all additional patches (if available) into the same directory. c) If you are not sure if everything was installed correctly, check if there is only ONE directory named 'XDM'. It means, if you've got "Half-Life/XDM/XDM", something went wrong. 3. Run XDM using provided batch file (_XDM*.bat): Required command line is: "hl.exe -game XDM -console -32bpp -particles 32768 -num_edicts 4096". - Icons for shortcuts: "XDM/*.ico", "XDM/dlls/XDM.dll". 4. Please configure your settings, controls and character beforehand. 5. It is recommended to: a) Start a new single-player or multiplayer game. Don't forget to set proper game type (rules) before starting! /!\ Remember: set a proper team name before connecting (in advanced player options)! The server will create as many teams as there are players with different team names. b) Mod makers: look in 'map' and 'docs' folders. You will find some documentation and examples. * Command menu is now very important part of the game! * Don't remove/replace anything! (unless you are 100% sure of what are you doing) * Take a little time to examine the 'Configure controls' menu - it will save you much time later. * Note! Steamed Half-Life does not WRITE game.cfg anymore, but still executes it! If your server settings reset to wrong values, make sure to examine (or delete) it. 6. Performance, stability, troubleshooting, FAQ. * If game crashes before main menu shows up, check command line hl.exe parameters (your shortcut or .BAT file), wrong -heapsize, -surfcachesize, -num_edicts or others may be the cause. * If something bad happens to your inventory or you cannot select weapons, check your cl_lw cvar (should be 1). * If you wish to disable botmatch, edit "liblist.gam" with notepad. Change "gamedll" from "XBM.dll" to "XDM.dll" (names may differ). It is highly recommended to disable botmatch during online play on all network machines (unless you want to play with bots). Also note that bot waypoint code is unstable! * FMOD music player is known to cause crashes from time to time and may prevent game from starting in WINE. You can disable it completely: just rename or move "cl_dlls/fmod.dll". * Game supports on-the-fly effect switching on the server ('sv_effects' for single and 'mp_effects' for multiplayer). This will decrease network traffic usage. Clients can disable particle effects by changing 'cl_effects' and 'cl_particles' to 0. * NVIDIA(r)(tm)(wtf) graphic accelerator users may experience major slowdown (down to 10FPS) when triple buffering is enabled in display driver (HL). * If game settings are strangely resetting during map rotation, check contents of game.cfg (HL1110-) and listenserver.cfg. also, in HL1110 (WON) "maxplayers" in game.cfg causes hangs or crashes in singleplayer game. Please remove that line. * Running Half-Life with Direct3D renderer decreases stability, so please use OpenGL. * If you're experiencing troubles with overview/minimap window in spectator mode (FPS < 16), tune your gl_max_size cvar (64, 128, 256, 512, 1024, 2048 allowed) (hardware mode only). WARNING: this affects maximum size of ALL textures in game, so value of 1024 is recommended! * Some entities (usually monsters) may impact online game stability (or totally ruin it), to avoid this, add those entities to mp_bannedentities list (semicolon-separated). * Important notice for Xash3D users!! - Xash3D generates gameinfo.txt, config.cfg and some other files that are INCOMPATIBLE WITH Half-Life and will make it CRASH if XDM is moved back to HL directory! - Some Xash3D console commands may conflict with XDM commands. - sv_generategamecfg is a workaround for those versions Xash3D which don't read settings.scr * If you cannot start a server with the following error, check your mapcycle files for errors like spaces after names or file size over 8192 bytes: Remote host: Half-Life Spooling demo header. Host_Error: UserMsg: Not Present on Client 101 XDM: ServerDeactivate() Dropped Player from server WARNING: to save precious space, mapcycle files are saved in Unix (LF) format, which cannot be edited with notepad/wordpad in Windows OS! * Warning: if your map name contains upper-case letters, you MUST use it everywhere EXACTLY as it is (e.g. map or changelevel commands) and DO NOT put them in PAK files! This is a Half-Life bug which fails changelevel. 7. Developers There are many handy commands that can help mappers to test their maps 'on-the-fly'. > Look in command menu (scripts/commandmenu.txt) > toggleselmode 1 - left:select,right:move; 2 - ...? > searchents, searchradius, searchtarget, searchforward - very handy commands > See DeveloperCommand() definition in server DLL source code. > XBM DLL has new command line flag -modsvdll to specify the name of game DLL to load. > How to obtain the source code? No need to, you already have it! HINT: you don't need anything more than the game itself and this manual. For list of changes and additions see changelog.txt Compatibility ------------------ + WON and Steam versions of Half-Life since 1.1.1.0. Features and limits may vary. + XDM is technically compatible with Xash3D engine. + All player models from Half-Life will work. + XBM waypoints are HPB bot-compatible, BUT THEY ARE CASE-SENSITIVE INSIDE (if wpt file has "mymap" inside, but the server is running "MyMap", waypoints will fail to load)! + Maps supported: Half-Life single/multiplayer, Opposing Force multiplayer, Opposing Force CTF, probably some other mods. + Some large sprites and textures are generated with modified tools (bmp2spr/sprgen/qlumpy) with large images support. All original sprites and textures are supported. + XDM supports extended map overview format with comments and layers. - Saved games are incompatible between Half-Life and different versions of XDM! Requirements ------------------ OS Windows 9x/NT5x+ with DirectX 7.0+, GNU/Linux + WINE 1500MHz x86 CPU 512 MB RAM 128 MB VRAM 800 MB HDD space Half-Life v1.1.1.0 + hw.dll + sw.dll from DOD v1.0 or Half-Life v1.1.1.1+ (Steam) DirectSound-compatible sound card Console variables (incomplete outdated list!) ------------------ CLIENT (custom for every player): hud_grn '159 159 255' main HUD color hud_red '255 0 0' damage direction display hud_blu '0 0 255' train control/death notice hud_cyn '0 255 255' hud_yel '255 255 0' hud_drawnumbers 1 display health and power numbers hud_eventicontime 3 event icons display time (0 = disable) hud_useteamcolor 0/1 (0) use team color as main HUD color (if teamplay) hud_useplayercolor 0/1 (1) show custom colors of other players on the score board hud_minimap 0/1 show mini-map (if available) cl_particles 0-2 enable client-side particle effects cl_effects 0-2 extra visual effects cl_scheme '' VGUI color scheme name (directory name) cl_tournamentfx 1 'double kill', etc. cl_death_view 0 3rd person death view if > 0 cl_pickup_voice 1 your HEV describes newly acquired weapons cl_announcer_voice 1 announcer voice (awards, time left, etc.) cl_announcer_events 1 special for events cl_announcer_losecombo 1 special for FFFFFUUUUUU- cl_highlight_players 1 teamplay only cl_viewdist 2048 distance beyond which no special effects are drawn cl_flashlightmode 1 use old/new flashlight cl_log_stats 0 log player statistics to text files at the end of each match mp3player 0-2 (2) bgm_playmaplist 1/0 (1) bgm_driver 0-6 (2) bgm_quality 1/0 (1) bgm_dir 'music' bgm_volume 0-255 bgm_pausable 1/0 (0) hud_weapon_slots SERVER: sv_jumpaccuracy 1 don't shake screen when jumping sv_nodegraphdisable 0 test: completely disable node graph, NOT recommended unless you know what you are doing sv_nodegraphreport 0 enable generation of maps/graphs/.nrp files (slows down the process) mp_scorelimit 0 team extra points limit (DOM/CTF) mp_gamerules 0-6 game rules (see gamerules.txt) mp_maprules 0-6 custom game rules for this map only (this cvar should ONLY be used in maps/mapname_pre.cfg!) (works only when mp_gamerules is set to auto) mp_teamplay 1 teamplay by default on DM maps mp_effects 0-2 allow effects in multiplayer games sv_effects 0-2 server-side effects sv_clientgibs 1 client-side gibs (otherwise old-style laggy gibs will be created) NOT recommended to turn this off! mp_texsnd 1 play crowbar hit texture sounds mp_allowmusicevents 1 allow trigger/target_cdaudio to interrupt map playlist and play in-game soundtrack mp_allowspectators 1 allow clients to connect as spectators sv_lognotice 0 extra logging on server mp_scorelimit 100 team score limit in teamplay games mp_capturelimit 1 team score limit in CTF games mp_fraglimit 0 gmae frag limit (for DM games) mp_timelimit 0 (minutes) game time limit mp_friendlyfire 0 amount of friendly fire (0 - none, 1 - full) mp_falldamage 1 0 - small, 1 - realistic mp_weaponstay 0 weapons stay after being picked up (don't respawn) mp_itm_resp_time 30 (sec.) items respawn time mp_wpn_resp_time 20 (sec.) weapons respawn time mp_forcerespawn 1/0 force respawn players mp_forcerespawntime 5 (sec.) force respawn timeout mp_respawntime 1 (sec.) minimum respawn delay mp_jointime 30 (sec.) certain game rules (like LMS) require players to join before the game is started mp_flashlight 1 allow flashlight mp_specteammates 1 spectate teammates only mp_spectoggle 1 allow players to toggle spectator mode mp_teamlist "name1;name2;name3;name4" valid teams (separate with ; ), also controls maximum number of teams mp_teamcolor1,2,3,4 "R G B" team colors in RGB byte format mp_teambalance 1/0 players are assigned to teams with fewest players mp_teamchange 1 allow players to change teams mp_teamchangekill 1 kill players when they change team (2 is a secret value :) ) mp_maxteams 0 normally it should be 0, but may be used by some map_pre.cfg to forcibly limit the number of temas (cannot be < 2). mp_defaultteam "name" default team to join mp_allowmonsters 1 allow monsters in multiplayer game mp_monsterfrags 0 team score for killing monsters in TDM mp_monstersrespawn 0 should monsters respawn? mp_monsrespawntime 10 monsters respawn delay mp_chattime 15 intermission/chat time before the next map starts loading mp_wpndrop 0-2 drop no/active/all weapons when dying mp_ammodrop 0-2 drop ammo of no/active/all weapons when dying mp_dropdefault 1 overload/crash preventer: drop weapons that were added by default or map equip mp_defaultweapon "" weapon(s) to start game with (separate with ; ) mp_pwrweapons 1 allow powerful weapons (egon,rpg,displacer,beamrifle,etc.) mp_nofriction 1 disables buggy func_friction in multiplayer mp_bannedentities "classname1;classname2" prevents listed entities from being created in multiplayer games mp_flagstay 20 dropped flag stay time mp_domscoreperiod 3 one controlled point gives 1 score per N seconds mp_teammines 1 mines don't detonate on teammates mp_wpnboxlife 60 weapon box stay time mp_wpnboxbrk 1 weapon box can take damage (200pts) mp_allowgaussjump 1 allow gauss jump mp_allowcamera 1 allow players to use 3rd person mode mp_laddershooting 1 allow players to shoot while climbing ladders mp_teammenu 1 players will have to choose their team manually mp_instagib 0 InstaGib mode in multiplayer game mp_telegib 1 Unreal-style teleporters (will destroy players standing in destination point) mp_playerexplode 1 players carrying fuel may explode when killed mp_playerstartarmor 0 mp_playerstarthealth 0 mp_spawnkill 1 mp_spawnpointforce 1 don't skip occupied spots, just disintegrate everything in the way mp_spawnprotectiontime 0 players cannot be hurt N seconds after spawning mp_noshooting 0/1/2 allow shooting/disallow damage/don't allow anyone to shoot mp_revengemode 0/1/2 none/extra score/no frags until revenge mp_showgametitle 0 force display game title on map start mp_coop_allowneutralspots 1 do we allow players to spawn at spots without landmark name specified? (map transition mode only) mp_coop_commonspawnspot 0 use the same spawn spot for all players (first player defines it for everyone, usually at checkpoints) mp_coop_eol_firstwin 0 first player to reach next trigger_changelevel wins mp_coop_eol_spectate 0 players who reach end of level become spectators and wait for everyone else mp_coop_transferdroppeditems 1 pick all dropped boxes/weapons during intermission mp_coop_usemaptransition 0 use map transition (trigger_changelevel) instead of map cycle mp_mapcompat_setteamcolors 0 when loading teamplay/ctf maps from another mods, change server team colors as if they were in those mods (untested). sv_overdrive 0 (0,1+...) DON'T TOUCH IT sv_serverstaticents 0 server-side static architecture (env_static) - consume lots of bandwidth sv_playermaxhealth 100 maximum player health sv_weaponsscale 1.0-2.0 in-world weapon models size will be multiplied by this value sv_generategamecfg 0 HL1111+: use XDM internal method to generate game.cfg from settings.scr (cfg gets overwritten on every level change!) sv_loadentfile 1 load additional entities from maps/mapname_patch.ent files (on-the-fly) sv_usemapequip 1 use game_player_equip entities sv_replaceentities "old_classname:new_classname;..." Dangerous! replace entities with other entities (only classname, other values remain the same) and others... Console commands ------------------ invup/invdown Move weapon selection bucket up or down say_forward Send private message to a player standing in front of you spectate Togle spectator mode (if allowed) allammo All ammo to maximum giveall Give everything givesuit Instantly add HEV suit (use this instead of creating the actual suit item) make Create an entity at your position throw Create an entity with forward velocity chooseteam Brings up 'choose your team' menu showmapbriefing Show map briefing window showmapinfo Show map information window togglemplayer Show music player window voicetweak vguimenu Show menu #xxx jointeam +team index weapon_ lastinv Select last used weapon bgm_* Music player commands and cvars ls/dir Works like DOS/UNIX command toggleselmode Mouse manipulation mode: 0) disable, 1) L use ON R use OFF, 2) L pick R move, 3) L create entity, 4) L measure R remember coords. getcoord [1(remember?)] Show (and remember) player coordinates entsetcoord Apply remembered coordinates to an entity in front of you hideitems <0/1> showammoslots showpathtoent searchents [action [options]] ... - search for entities with a specific string searchradius [action [options]] ... - search for entities in a radius around the player searchtarget [action [options]] ... - search for entities with a specific traget (even multi_managers!) searchindex [action [options]] ... - search for entity by index (ENTINDEX) searchforward [action [options]] ... - search for entity in front of the player Actions: del,show,box,hl,hide,info,damage,use,set,pick,dist,rotate,move,moveto,modflags,touch,debug (in debug builds) many actions can be specified one after another in the same command. HINT: instead of "give/make item_suit" you can type "searchindex 1 set weapons -2147483648" (- is because HL uses signed integer for flags), but if you're lazy, just "givesuit" will do. :) Oh, and there's a secret command to access XDM source code. impulse 99 logo 100 flashlight 102 Spawn random gibs 103, 106 report entity state (same as "searchforward info" command) 104 Dump all of the global state variables (and global entity names) 105 player makes no sound for monsters to hear. 107 Show texture name 120 flare 121 Place atomic device 195 Show shortest paths for entire level to nearest node 196 197 199 Show nearest node and all connections 201 decal 202 Random blood splatter 203 remove entity Special commands for map config files: map_globalfog Enable global fog on map. setkvbytn <"value"> Set KeyValue by targetname spawn_ent <\"x y z\" origin> [\"x y z\" angles] [targetname] Only in botmatch bot_create (see botmatch.cfg) bot_use <1=follow/2=hold position> New entities ------------------ Oh please, there are too many... Use the FGD file. Secrets/easter eggs ------------------ of course :3 About the author ------------------ Subject: ~X~ Contact: x.netheaven.ru | moddb.com/mods/xdm | mods.moddb.com/5440/ Special thanks ------------------ Valve software. Epic MegaGames & Digital Extremes (Unreal series), Ion Storm (Deus Ex), Croteam (Serious Sam), Id Software (Doom), Counter-Strike: Condition Zero developers (some sounds and models), Gearbox software (Opposing Force), Rewolf (Gunman Chronicles), Bethesda Softworks (TES3: Morrowind), Firelight Multimedia (FMOD API), Total Kill inc. (Professional Half-Life Crosshair Pack), Spirit of Half-Life (don't remember for what, for troubles maybe) The Wavelength, Half-Life Coding index (tutorials) adamix, FreeSlave, mittorn for help with Linux port, Cheesegrater, Botman, XaeroX, BUzer, Georg Destroy for beam rifle texturing and Nisstagm for animations, EoD (M4M203), NovaRain (MP5SD5+M203+ACOG), Shrike, LoneWolf for sniper rifle base model (heavily modified), %s, %s for the Interceptor model idea and textures (Black Hole Gun) (redone), Skaarj, Nicord, Rimrook, XF-Alien, hlife_hotdog, Andrew C. Weldon, DEAD [Dmitry K], author of DM_Deck16 map, kogemyaka, thedönerking (probably made some textures), Nexon for sniper rifle sounds, Ivory Case for his song "Neurofire", Dragon Force (probably), CodeBreaker and Ghoul[BB] for some ideas, anonymous from various image boards, forums and chats and other people who's resources we have possibly used! Beta-testers: a1batross, ku2zoff, d10sfan, FaL_DissecTor, Filantus, Ghoul[BB], Grenfish, LLAPb, Piranya, qif_qgame, Trempler and all others! Without all these people this mod couldn't be possible as it is today! Also, big thanks to the following communities: half-life.ru, hlfx.ru, xentax, twhl, ModDB, FreeMusicArchive. Gintama. And thank YOU for playing! Please support open source and share knowledge! Copyright notice ------------------ XDM is a non-profit (non-commercial) open-source software. XDM source code is distributed under the terms of Mozilla Public License (MPL) 2.0. Warranty BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Redistribution XDM is free software, and you are welcome to redistribute it without any modifications and with full author copyright and contact information provided alongside on whatever type of media it is being supplied. Included content XDM may contain resources (textures, sprites, etc.) that are taken from third party products. Some of those resources were used without authorship information being determined. In case you're the author, don't be upset - XDM authors do NOT claim the authorship of those resources or gets any money out of them anyway. Derived work XDM may be used to make derived projects, however, its title (in all variants), logo and other distinct attributes are subjects of copyright and can NOT be used. XDM resources (everything except executable binaries or libraries and the source code) can NOT be used without explicit written permission given by the author of XDM unless that resource has its own superceding agreement that grants certain rights to a third party. Author of XDM should be contacted before the making of derived work for the use permission to be granted. Copyright © 2000-2019. All rights reserved. ------------------