gamesdesign_seminar7..

advertisement
Introduction to Half Life 2 Modding
●
Seminar Seven
–
The story so far:
●
●
●
●
–
This week:
●
–
Creating a mod via Source SDK
Introduction to Hammer
Hammer techniques
Importing custom art content
Mod organisation and starting to code
Homework:
●
See how much you can break the code
Mod Layout
●
Folder structure
–
Bin – contains all DLL files
–
Cfg – contains all configuration files
–
Maps – all files relating to maps (BSP, sound caches, nav graphs)
–
Materials – all texture / material files (VMT / VTF)
–
Media – video to play at game startup
–
Models – all model files (MDL, PHY, VVD and VTX)
–
Resource – files that dictate visual appearance (HUD, menus).
–
Scripts – files that control everything else (weapons, audio effects etc)
–
Shaders – compiled shader files (VCS) – both pixel and vertex
–
Sound – all sound files (MP3 / WAV)
Altering the visual style
●
ClientScheme.res
–
Controls menu styles
●
●
Setting background image
–
Insert VTF/VMT into materials/console
●
–
The VMT shader is “UnlitGeneric”
Create / modify scripts/ChapterBackgrounds.txt
●
●
Font type, size and colour
Enter name of VMT file, minus extension and location.
Altering the HUD
–
Core file is scripts/HudLayout.res
Overview of code
●
The code base is divided into two sections
–
Client and Server
●
●
–
●
Client controls rendering and visual effects
Server controls game logic (it does the 'thinking')
There is communication between the two sections
and some bits of code appear in both!
The code base is not a simple beast!
–
–
Over a million lines of code, only 15% of which are
comments!
The Hidden has added 20,000 lines of new
code and it's still not done!
Working with the code
●
The current code base can be opened in either
Visual Studio 2003 or 2005.
–
●
It contains two projects, client_sdk and hl
–
–
●
It's currently easier to work in 2005!
client_sdk is all client code
hl is all server code
Some code is found in both projects
–
Open weapon_rpg.cpp – find it in HL2MP /
weapons on the sidebar.
●
Note the series of statements such as
#ifdef CLIENT_DLL.
Modifying the code
●
With weapon_rpg.cpp still open
–
–
Find the line that reads: #define RPG_SPEED 1500
Modify the value to something significantly different
●
–
Compile (Ctrl-Shift-B or Build | Build Solution)
●
●
500 or 2500 would be good!
This will take some time the first time you do it!
You have now successfully created a
modification for HL2 – simple as it may be!
Adding code
●
Now we'll look at adding an item to the code
–
We'll copy an existing weapon
●
–
Open weapon_smg1.cpp
●
●
–
This requires new code and new items in the mod folder
Note there is no matching header file (this makes our life
a bit easier)
Select all the code and copy it (Ctrl-A then Ctrl-C)
Add a new folder to the client project
–
●
Right Click 'client' – Add | New Folder
Add a new item to that folder
–
–
Right Click folder – Add | Add New Item
Select C++ file, enter a file name (weapon_*.cpp), create
a new folder under game_shared – use that as the
save location
Adding code (cont.)
●
●
In the empty window, paste the code we just
copied
Now we need to rename the class – find a bit of
code that says the class name
(CweaponSMG1)
–
–
Copy the WeaponSMG1 part (not the C!)
Use Find and Replace (Ctrl-H)
●
●
Enter WeaponSMG1 as the Find and WeaponSMGMine
as the Replace – press Replace All.
Final stage in code – add the new file to
the server project!
Adding code (cont.)
●
●
Add a new folder to the 'hl' project
Rather than adding a new item, add an existing
one and find the weapon_smg2.cpp file we just
created.
–
●
See now why we put the file in game_shared?
One last change in code – line 85
(LINK_ENTITY_TO_CLASS) and 86, change
weapon_smg1 to weapon_smg2
–
This tells the game where to look for the script
information and stops it getting confused
Finishing off the weapon
●
Find weapon_smg1.txt in the mod scripts folder
–
–
●
Open weapon_smg2.txt
–
–
●
Copy and paste it
Rename it to weapon_smg2.txt
Change bucket_position to 2
Play with the values (alter the clip_size, change the
view model etc)
Boot up the game and see your changes
–
Use ‘give weapon_smg2’ to play with your new
weapon.
Download