Co-Operative Base (Mod)
OrangeBox Co-Operative Base
Formerly known as Shadow Source
Current Version: 1.75 - Released 8th March 2010 - Labelled as ShadowSource
Description.
OrangeBox Co-Operative Base is a patch file containing useful code fixes for the Source SDK Base 2007 (OrangeBox) for use in multiplayer modifications/total conversions requiring such things as working online AI.
There are some minimum system specifications required for using OBCO (or OB_Coop) and these are as follows:
- Half-Life 2 or Episode 1.
- Source SDK Base 2007 (free download).
- Half-Life 2: Deathmatch, which can be found at one of the three following locations:
http://www.steampowered.com/ati_offer1a/ (ATI users).
http://www.steampowered.com/nvidia/ (NVidia users).
http://store.steampowered.com/app/320/ (Everyone else).
Additionally you can use content from any of the following games (as long as you own them):
- Half-Life Episode 2
- Portal
Untested:
- Counter Strike Source
- Team Fortress 2
- Content from Valve supported Modifications.
Features.
Developers can easily enable and disable individual features to suit their needs.
Here is a list of the features available to mod developers:
- AI Patch Modifications:
- Enable/Disable an enhanced version of Winstons' AI Multiplayer patch.
- Valve Game Mounting:
- Dynamically mount various official Valve games to get the most for your mod.
- or use Static Mounts when you're sure you don't need Dynamic mounting.
- Episode 2 Support:
- Including support for Alyx Darkness Mode
- Player Abilities:
- Non-HEV wearers can still be allowed to sprint, have the geiger counter etc. This is on a per-item basis, so players could have the geiger, but no sprint if you wanted.
- Players can pickup objects with their hands.
- Player Class System With:
- Four (or more, or less) Player Classes.
- Per Player Class Object Pickup Strengths.
- Customise Class Health/Maximum Health Values.
- Customise Class Armour/Maximum Armour Values.
- Customise Class Walk/Sprint/Normal movement speeds.
- Customise Class Jump Heights.
- Each Class Can Have Its Own HUD Layout/Colour scheme.
- Define how many players can be in each Player Class.
- Teamplay Support:
- v1.75 includes fixes for enemy NPCs and teamplay games.
- Weapon Enhancments:
- Development teams can now enable Iron Sight.
- A known hl2dm Shotgun fast-switch bug - fixed.
- NPC Abilities:
- Striders can be set to always impale players who get too close.
- Barnacles can now be set to swallow the player.
- Vehicles:
- The multiplayer camera judder is no more!
- Thirdperson model in-vehicle animations can now be used.
- Old-Style passenger seats can now be used to provide extra seats in vehicles.
- Jeeps and Jalopys' can now have their headlights switched on.
- Cool Stuff:
- Firstperson Ragdoll Views on player deaths.
- Camera bob on player movement (incl. strafe).
- Use CounterStrike: Sources' ladders code instead of the Half-Life 2 ladders.
- Game Settings:
- Friendly Fire (Replaces players can collide from v1.5).
- Dynamic Respawn Code. Don't spawn back at the start of the map anymore, respawn back where you left off in your killing spree.
- Multiplayer Level Transitions. Not properly done, however with v1.75 on ALL players entering the transition area the server is forced to changelevel to the next map.
- Save/Restore. In 2.0 (now called OrangeBox Co-Operative) we have a basic working transition system which saves/restores your loadouts.
- Valve approved cheating. Now even if sv_cheats 1 is enabled, players can't cheat unless you define it as acceptable in the code.
- Map briefings. Provide storylines on a per-map basis.
- Map specific model overrides. Changes all players to a specified player model on a particular map (set by the mapper). Check out our defector map for an in-game example!
Credits.
- The Development Team:
- Ariae -- Composer.
- Chief -- Modeller/Reluctant Coder.
- MontyPython -- Foley Artist.
- Sneaky[ToB] -- Coder.
- SpamSlayer -- Voice Artist/Coder.
- Occasional Team Members:
- Apocrypha Roxy -- Voice Actress
- MasterThief3 -- Voice Artist
- And thanks to the following non-team members:
- Winston - All Too Many Things To List, And The Old AI Patch.
- Tony Sergi - Multiplayer Vehicle Camera Fix Code.
- Biohazard_90 - Third Person Vehicle Player Models & MOTD Menu fixes.
- Sub-Zero - Shotgun Code Fix, Some Mounted Gun Code Help.
- DutchMega - Mostly Working Mounted Gun Code.
- The Last 7 Hours Spanish Mod - The Custom Player Model.
- Makkon - DM-DarkTown (modified for background level).
- Skidz - Obsidian Conflict Mounting Code & Other Advice.
- Alters - Player Class Zero-ing code.
- .Kave - CSS Style ladder code.
- KuRouZu - Crash fix code for npc_playercompanion.
- Jorg - IronSight code.
- Vosk - Multiplayer Level Transition Advice.
- z33ky - Forum Advice and Release Methods Advice.
- SlyFoxx - Background map Voice Acting.
- Kurgan - Background map Voice Acting.
- JordanN - Some Vehicle Advice.
- TheRJMan - Additional fixes posted, coming in OBCO's first release.
- HalfWit2 - All those who submitted tutorials.
Getting the Current v1.75 Release.
You can download the Shadow Source from the following location(s):
Alternative Mirrors:
You will need 7zip 7zip or an archive program capable of extracting .7z files.
Compiled Version.
As stated already, Shadow Source comes in two flavours, that of a patch file and a compiled version. Here we provide information related to the compiled version. This information is important for understanding how the modification operates, even if all you will be using is the patch file. You may find it more useful to use the Compiled mod folder as your mods folder and edit it as required, then you're assured that all the files are there and everything is setup correctly (unless you mess something up).
The compiled version has two compiled versions of the modification, one without Portal content enabled, and one with. If you WANT to have Portal enabled, you must overwrite the mod folder>bin DLLs with those in the mod folders>bin>Portal_Enabled_DLLs folders' DLL files.
GameInfo.txt
This file is extremely important, it can't be stressed enough because without it being properly setup most of the Shadow Source content will fail to work (if not crash hl2.exe) if using Static Mounting, and not load important sounds, animations etc if Dynamic Mounting.
GameInfo.txt is also where you define such things as your developers team name, website and the icon to display in the steam menu.
The most important section, and the section that we're going to describe here are the 'Search Paths'.
Search paths are the modifications way of mounting the GCFs which come with each Half-Life 2 game. In the current compiled version the search paths in our gameinfo.txt look like this:
SearchPaths { Game |all_source_engine_paths|ep2 Game |all_source_engine_paths|episodic Game |all_source_engine_paths|hl2mp Game |all_source_engine_paths|hl2 }
Notice how we do not have Portal in the search paths. This is because Portal should never be defined here (Unless you use Static Mounting, in which case it should be put BELOW hl2).
If you create a map and notice animations or scripted sequences failing to load, this is usually a sign of Static Mounting being used, or of some specific game content being used in an incorrect Dynamic Content map type. An example is the Alyx "Dr Freeman I Presume" scene in d1_trainstation_04, this sort of concussion scene will *NOT* work if your map type were ss_ep1_ or ss_ep2_ and would not work in Static Mounting if half-life 2 wasn't mounted last in the list.
This leads us nicely on to the:
InstalledSourceGames.txt
Additional code in cdll_client_init.cpp and gameinterface.cpp has added the ability to mount additional GCF files. This is always enabled whether you are using Static or Dynamic content mounting.
The InstalledSourceGames file (previously AddMount.txt in older mod versions) helps the game find models, textures and maps that it wouldn't otherwise do through the gameinfo.txt's searchpaths. The gameinfo.txt searchpaths allow mounting sounds and particles which the AddMount.txt fails to do.
Only games listed within the text file will be displayed, and as such in most cases you will either wish to delete the code from the .cpp files, or blank out the contents of the file.
Notice how the order partially mimics the GameInfo.txt search paths, except that we put half-life 2: Deathmatch at the top and we ALWAYS! if being used put Portal as the LAST thing (bottom of) the file.
Skill.cfg
The skill file is important as it allows you to define such things as NPC health, NPC damage (to others such as the player), number of rockets a Strider may have and even how much charge a Vortigaunt can give to the players suit. It is worth reading through the file and editing it to suit your needs as it does define alot of features of modifications. It can be found in the cfg folder.
obcoop_english.txt
This is the modifications language definition file. Here you can find such settings as the titles for Chapters, the messages displayed on a vital ally being killed (for example) and other things such as server connection messages etc. It's found in the resource folder.
ChapterBackgrounds.txt
This file defines which of your modifications maps are background maps to display on the main menu. If you choose to use background maps with your modification, be sure to define the 'ss_bg_motd_fix' in the c++ code so as not to display the motd on the main menu.
Valve.rc
This file defines whether background maps are displayed on the main menu. It's found in the cfg folder.
This is the file which tells the game where to place the Join buttons etc for the Player Class System. I'm mentioning this in passing as in your own modification if you use the default Classmenu.res which comes with the SDK all you'll see is a window with a cancel button.
ClientScheme.res
This is the HUD colour file. Seperate versions can be used per player class as needed. Currently all classes are set to use the one same file.
Map Briefings
This is a folder in the maps folder. Each map that requires a briefing has a text file for that specific map. This loads in a similar fashion to the MOTD panel. It allows a quick map storyline for people loading the map. See our example maps in-game to see this concept in action.
StartupVids.txt
Create this for custom Startup Videos, or if you create a blank version of this file then there will be no startup movies at all in your mod.
Obcoop_Information
This folder contains information for mappers (including such things as an FGD file and useful prefabs) and also information for Dedicated Server hosts.
Patch File.
Now we move onto describing the patch file.
To allow flexibility for mod makers, every change that was made to the SDK can be enabled or disabled by the mod team.
Code Addendums
Change Log:
V2.0
This will be released as OrangeBox Co-Operative Base v1.0.
It contains working multiplayer transitions with save/restore facility.
It may or may not contain a working multiplayer version of the Super Gravity Gun.
V1.75 (Current Released Version)
- Overhauled playerclass code due to problems where it prevented level startup scripts from actually starting.
- Fixed proto_sniper so it no longer crashes the game.
- Added Dynamic Mounting of GCF files.
- Added IronSight code.
- Added Portal Support.
- Allowed for the AI patch to be removed from the game base.
- Added a vehicle passenger seat that can be used to provide extra seats in vehicles, with the added ability of passengers using their inventory weapons in-car.
- Fixed bug which caused enemy AI to do no player damage in teamplay games.
- Implemented In-Vehicle camera judder fix code.
- Implemented third person models being allowed in vehicles.
- Fixed Jalopy to use jalopy vehicle script instead of SDK jeep script.
- Enabled mod makers to use CounterStrike:Source ladders instead of the default HL2 version.
- Added changelevel on all players entering transition points to create basic level transition.
- Fixed bugs with cheat defines.
- Added in map briefings.
- Added map specific player model over-ride code.
- Fixed various NULL pointer exceptions and crashes. Still no guarantees there won't be crashes though.
- Modification of files in compiled release and other misc. fixes.
- Fixed bug with gravity gun being unable to pickup Zombine held grenades and jalopy held magnusson-devices.
V1.5
- Overhauled code so that all modifications to the default hl2mp 15th june 2009 sdk are defined for disabling/enabling individually (bar NPCs (AI).
- Re-introduced episodic checks since this can now be defined by the ss_shareddefs.h file.
- Added the ability for developers to fix the Shotgun fast switch bug using Sub-Zero's code.
- Fixed the crashes that plagued V1.0. constantly (you can now expect the modification to crash infrequently instead of frequently).
- Fixed player animations so that AI and players are now animated.
- Fixed the mounted guns to shoot better in hl2mp.
- Added new playerclass system based on the tutorial on the wiki, the Battle Grounds 2 modification and our own edits.
- Changed settings so that background maps work.
- Removed many unneccessary Shadow Source comment lines. Note that because the AI patch is so intertwined into the code that some AI patch fixes are not commented.
- Various other things all leading to a much more stable modification.
V1.0.
- Removed all IfDefs and episodic boolean checks related to Episode 2. This makes the code always use the Episode2 options available to it.
- Edited c_prop_sclable.cpp's scae options to avoid conflicts with c_prop_corebal.cpp
- Changed players to be killed in First Person Ragdoll mode, with a red screen fade.
- Removed Alyx's Darkness Mode ability due to crashes in the code (alyx would no longer work).
- Enabled various console commands that had been disabled in HL2MP (god mode, notarget etc).
- Enabled Jalopy spawning.
- Modified the HEV suit so that even if a player already has a suit they can pick another one up. This was enabled for anyone wanting to play the original missions and can easily be removed again.
- Modified the Strider to always stomp human players.
- Added Sub-Zeros HL2MP gravity gun fix (does have issues when carrying turrets though).
- Edited monstermaker.cpp's GetLocalPlayer to GetNearestPlayer to fix hl2.exe crashes when the game spawns AI from monstermakers.
- Also removed an AI patch addition line which seemed to cause the crash in monstermaker.cpp
- Removed player models invisibility when entering a vehicle so other players can still see you. Due to the lack of a sitting_down_in_vehicle animation, it looks a little silly.
- Removed the hopwire from impulse 101 command since it isn't in the Shadow Source project.
- Removed the TakeDamage=Old_Damage line from triggers.cpp due to it crashing some official maps.
- Enabled bDoServerEffects to try and fix the lack of tracers from some weapons. Noticed that weapon files I was sent actually fixed the problem, but not added to -THIS- release.
- Added very slight camera bob to players walking/running. Hardly noticable so as not to give players motion sickness.
- Edited the HL2MP teams so that human players are all one on team. Note that AI are controlled by the AI relationships as to whether they're your allies, neutrals or enemies.
- Fixed various animation codes to fix glitches reccomended on the source sdk coding forums.
- Attempted (but no guarantees) to have footsteps etc enabled all the time. This didn't work for the flashlight (sadly).