Co-Operative Base (Mod): Difference between revisions
Chiefwhosm (talk | contribs) No edit summary |
Chiefwhosm (talk | contribs) No edit summary |
||
Line 198: | Line 198: | ||
Also, if you get any crashes related to missing 'Error.mdl' then the mounting lines in gameinterface.cpp and cdll_client_int.cpp will need to be checked through, as this means the mounting code was unable to find your modifications content. | Also, if you get any crashes related to missing 'Error.mdl' then the mounting lines in gameinterface.cpp and cdll_client_int.cpp will need to be checked through, as this means the mounting code was unable to find your modifications content. | ||
== Adding and Removing Game Features == | |||
Seco7 was designed so that you can easily disable and enable its features, so that you can customise it in whatever which way you want it. | |||
As such all features are stored with a file in the Src>Game>Shared>Seco folder, called seco7_shareddefs.h | |||
On opening this file you will find every feature clearly defined, and information concerning what each feature does. | |||
To enable a feature, remove the // from the beginning of the word define, to disable a feature add the // in front of its define. | |||
Besides the important role of this file, it also has an information section containing valuable search words, which to get a better grasp of the seco7 code, and how features work - I do reccomend you searching for (eg. //4WH - Information:) in all .cpp and .h files to gain a full understanding of work arounds, bug fixes and - how things work in general. | |||
The file has one last important role, and that is that by defining all changes, this makes searching for all references to a specific feature in the entire codebase very easy. An example would be if you wished to find in which files all the NightVision code was, all you would need to do would be to search all .cpp and .h files for 'Seco7_ENABLE_NIGHTVISION_FOR_HEAVY_CLASS'. | |||
This has one other benefit, should you wish to start afresh on the hl2mp code, and decide not to use Seco7, you can still search the code and remove the bits that you'd still like to use fairly easily for implementing into your new non-seco7 modification. | |||
Revision as of 08:42, 31 July 2011
Description
Seco7 Co-Operative Base is a patch file containing useful code fixes for the Source Engine 2007 Half-Life 2 Multiplayer code base.
To be able to use Seco7 you must own, Half-Life 2 or Half-Life 2: Episode 1, Half-Life 2: Deathmatch (which is free for ATI and nVidia users) and the Source SDK Base 2007.
In addition to this, to actually modify the code itself, you will need the Source SDK installed, and Visual Studio 2008 or 2010 (including express editions).
Additionally, Seco7 allows you to use game content from Half-Life 2: Episode 2, and Portal. Counter-Strike Source and Half-Life 2: Lost Coast and any modifications with their own unique Valve AppID should also work but this is not guaranteed.
To keep this wiki page easily viewed, many items are now implemented into scroll boxes, so that the more important aspects of the page can be kept whole.
Installation.
Firstly make sure that you have the both the Source SDK and the minimum required games installed.
Now launch the Source SDK, and making sure the Engine Version drop-down menu is set to Source 2007, create a new Half-Life 2 Multiplayer modification.
Once that is done, it's time to get the Seco7 release, which requires 7zip to extract.
Download Seco7 from our ModDB's download section: - Not yet uploaded -
Open up the archive, you will find that it should contain the following:
- A folder called seco-7
- A file called Seco7Patch.exe
- A file called Seco7.diff
- A file called Game_HL2MP-2010.sln
- A file called client_hl2mp-2005.vcxproj
- A file called server_hl2mp-2005.vcxproj
- A ReadMe.txt file
As long as the Source Engine 2007 remains unmodified in sdk updates, the easiest method of converting your code is by using the Seco7Patch.exe.
If ever the code changes, this patch will fail to run - as such if you find that this is the case, you will be required to follow the .diff patching section below.
To install Seco7 using the patch, extract the patch.exe file from the .7z file to somewhere handy (such as your Desktop).
Run the patch tool, at the point of folder selection make sure to select the 'Src' folder of your exported modifications source code.
Once it's done - you've patched your source code.
Patching with the .diff file.
To actually patch the code into the HL2MP source code, you'll need Tortoise SVN. You can download it here: http://tortoisesvn.tigris.org/
Once installed, Create a folder called:
repository
on your desktop.
Right click this, and go to TortoiseSVN > Create Repository Here.
Now right click on the "Game" folder of the source code.
Choose SVN checkout, set the "URL of repository" to:
file://C:/Users/YOUR-USER-NAME/Desktop/repository
*if you're an XP user, replace "Users" with "Documents and Settings".
And remove the word repository, from the end of the "Checkout Directory". So that (for example) it reads:
C:\Users\YOUR-USER-NAME\Desktop\sourcesdk\game
Then click OK. It will tell you the target folder is not empty! just click Yes.
It will then display a prompt saying "Completed At revision 0".
Click OK.
Now right click your Game folder, and choose "SVN Commit"
After the list is populated, check "select/deselect all" so that all items are checked.
Now click OK.
Eventually it'll progress through the list. If it fails to work, or does some and not all - then you have an anti-spyware, firewall or antivirus blocking the commit, which you'll have to temporarily disable.
Once the commit is done, OK it, then right click the game folder, and choose:
TortoiseSVN>Apply Patch
Choose the patch file and then tell it to patch all by right clicking in the little left hand menu files list.
And that'll be you patched.
If you wish, you may now remove SVNs references from the files, to do this turn on Show Hidden Files, Folders and Drives in your Windows Explorer Folder options.
Within each folder and sub-folder under the source codes game folder, you will now find a directory called .svn, delete it. Remember it includes sub-folders, so it isn't just the .svn folders in client/server you'll need to remove, also the likes of client>episodic>.svn.
You can also delete your desktops "repository" folder after doing this, as unless you want subversion control you're finished with the folder.
If however you do want subversion control in use, I reccomend you check out the following wiki article [[Setting_up_Tortoise_SVN_to_apply_a_Patch|here]]
Setting up the compiled game folder.
Now that you have your source code patched one way or an other, navigate to your Steam folder, and then into steamapps>sourcemods.
Delete your modification folder from this directory.
Now copy accross the 'seco-7' folder from out of the downloaded seco7 archive, and once copied rename it to that of the modification folder which you just deleted.
At this point, you could if you wished to, launch or restart Steam, and then launch seco-7 from the games list.
Setting up the Project files.
Now go to your source code directory, and in the Src folder delete Game_HL2MP-2005.sln
Now go into the Src>Game>Client folder and delete client_hl2mp-2005.vcproj
Now go into the Src>Game>Server folder and delete server_hl2mp-2005.vcproj
From the download seco7 archive, extract Game_HL2MP-2010.sln to the Src folder.
Also extract client_hl2mp-2005.vcxproj to the Src>Game>Client folder.
And finally extract server_hl2mp-2005.vcxproj to the Src>Game>Server folder.
Now, in your favourite text editor, open the two client and server .vcxproj files, and find and replace all references to:
c:\program files (x86)\steam\steamapps\SourceMods\seco-7\bin\
with the location of your own modifications bin folder.
Setting up the Source Code.
Finally, so that the game will launch correctly after compiling, we need to tell the mounting and map code the name of the modification.
While this can be done by now launching the .sln file in Visual Studio 2010, I personally prefer to do it in a text editor, but the choice is up to you.
Which ever method of editing you choose, open up Src>Game>Client> cdll_client_int.cpp and use Find/Replace to change all occurences of:
SourceMods/seco-7
into
SourceMods/the_name_of_your_modification
Save and close the file, and now open up Src>Game>Server> gameinterface.cpp and once again use Find/Replace to change all occurences of:
SourceMods/seco-7
into
SourceMods/the_name_of_your_modification
Lastly, if you do not like using the 'seco7_' prefix for your modifications maps, you will need to change this in the gameinterface.cpp file.
Once again, using Find/Replace, change all occurences of:
ToCStr(), "seco7_
into
ToCStr(), "MapPrefix_
Note however that this will cause the seco7_ maps to run in fail-safe mounting mode, along with any other maps which do not have a recognised map prefix, fail-safe mounting was added to prevent unknown maps from crashing the game.
Now that you have made these changes, you can compile the source code in Visual Studio, while there are errors claiming that the compiler doesn't copy accross the .dll files, I have found it actually does. Though if on launching your game you get a 'Client' error, it means the .dlls are not in the bin folder.
Also, if you get any crashes related to missing 'Error.mdl' then the mounting lines in gameinterface.cpp and cdll_client_int.cpp will need to be checked through, as this means the mounting code was unable to find your modifications content.
Adding and Removing Game Features
Seco7 was designed so that you can easily disable and enable its features, so that you can customise it in whatever which way you want it.
As such all features are stored with a file in the Src>Game>Shared>Seco folder, called seco7_shareddefs.h
On opening this file you will find every feature clearly defined, and information concerning what each feature does.
To enable a feature, remove the // from the beginning of the word define, to disable a feature add the // in front of its define.
Besides the important role of this file, it also has an information section containing valuable search words, which to get a better grasp of the seco7 code, and how features work - I do reccomend you searching for (eg. //4WH - Information:) in all .cpp and .h files to gain a full understanding of work arounds, bug fixes and - how things work in general.
The file has one last important role, and that is that by defining all changes, this makes searching for all references to a specific feature in the entire codebase very easy. An example would be if you wished to find in which files all the NightVision code was, all you would need to do would be to search all .cpp and .h files for 'Seco7_ENABLE_NIGHTVISION_FOR_HEAVY_CLASS'.
This has one other benefit, should you wish to start afresh on the hl2mp code, and decide not to use Seco7, you can still search the code and remove the bits that you'd still like to use fairly easily for implementing into your new non-seco7 modification.
Features
Developers can easily enable and disable individual features to suit their needs.
** Portal Gun, player only.
** Super Gravity Gun (some graphic effects missing - most of the code done by .Kave).
** Restart level on critical ally/object/time limit failing.
** View Cameras now take control of all players on a server (Gordon's KO Wakeup scene, etc).
** Save/Restore transitions now work even if you disable playerclasses from the code.
** Each player class player now has their own unique filter name, meaning only a certain playerclass can trigger an event (for example). Thanks Alters for the fix!
** Called it a day on development. It's all in the hands of the community now.
* AI Patch Modifications:
** Enable/Disable an enhanced version of Winston's 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 pick up 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:
** Fixes for enemy NPCs and teamplay games.
* Weapon Enhancements:
** Development teams can now enable Iron Sight.
** A known HL2DM shotgun fast-switch bug - fixed thanks to Community input!.
* NPC Abilities:
** Striders can be set to always impale players who get too close.
** Barnacles can now be set to swallow players.
* 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 Counter-Strike: 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. On ALL players entering the transition area the server is forced to changelevel to the next map (percentage can be changed).
** Save/Restore. 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
* [http://www.moddb.com/company/4-wheeled-husky-games/ 4-Wheeled Husky Games.]
* And thanks to the following non-OBCO development team members:
** Winston
** Tony Sergi
** Biohazard_90
** Sub-Zero
** DutchMega
** The Last 7 Hours Spanish Mod
** Skidz
** Alters
** .Kave
** KuRouZu
** Jorg
** z33ky
** JordanN
** TheRJMan
** SilverPower
** Vektorx4
** HalfWit2
* Sneaky[ToB]
** Anyone else forgotten
Known Bugs
*Armour not working on non-playerclass save/restore transitions.
*Weapon strip/dissolve zones (as used to make the Super Gravity Gun in HL2/EP1) don't work.
The above is Caused by the game not recognizing the hl2mp gravity gun and just deleting it,
then the test zone (d3_citadel_03) sticks waiting on the script to finish.
*Super Gravity Gun - ::DoMega functions not implemented and ::Do functions missing some single
player additions (these ::Do functions enable the fancy effects you can see are missing).
*Leaving tilted vehicles causes players to appear tilted as well. This affects only their player
model, their actual views are normal.
*Blood splashes being emitted when shooting other players despite no damage actually being dealt
(only applicable ''without'' <code>OBCO_FRIENDLY_FIRE_ENABLED</code> being defined).
*Chat bubbles angle towards the player's view, so they can appear embedded in walls etc.
*AI bend their legs when going up in lifts (elevators), but are fine going down.