Il existe de nombreux moteurs de jeu dans le monde, mais il n'y a pas un seul moteur similaire à Source dans son histoire et ses fonctionnalités.
Dans cette leçon (pilote), nous allons passer en revue les étapes les plus simples avec les codes sources du SDK, ainsi que faire notre première modification au code Half-Life 2.
introduction
Quelques termes
Le SDK Source lui - même est un ensemble d'utilitaires et de programmes qui vous aident à développer vos propres niveaux et modifications pour le jeu, ainsi que le code source de Half-Life 2 et des épisodes.
/ ( , :p) — SDK.
Source?!
- . , , .
- . Source .
- SDK , SDK ( , ( ͡° ͜ʖ ͡°) ) ! , Source SDK ( ...) .
- . . C++ !
.
?
- C++ ( ).
- Microsoft Visual Studio Multibyte MFC Library Microsoft Build Tools 2013 (v120/v120_xp). , VS2013.
- Git for Windows .
- Steam Source SDK Base 2013 [Single|Multi]player ( "" - upstream, )
- HLSL, :)
SDK GitHub. :
git clone https://github.com/ValveSoftware/source-sdk-2013.git
Half-Life 2/Episode 1/2, sp/
Source SDK Base 2013 Singleplayer.
Half-Life 2: Deathmatch, mp/
Source SDK Base 2013 Multiplayer.
: SP, , hl2
MP hl2mp
hl2
!!!
(client.dll) C_
, (server.dll) — C
:
// client.dll
class C_BaseWeapon { ... };
// server.dll
class CBaseWeapon { ... };
m_, ( , ):
class C_SomeClientClass {
private:
float m_flTime = 0.0;
};
extern float g_flSomeFloat;
static float s_flSomeStaticFloat;
void SomeFunction(float flValue);
SDK, , .
client.dll
.
, .
:src/game/client/
server.dll
.
, ..
:src/game/server/
tier1.lib
, , UTL ("" STL), interface convention ..
:src/tier1/
raytrace.lib
, , . , , .
vrad , , Valve Hammer Editor.
:src/raytrace/
mathlib.lib
, , "" Source.
:src/mathlib/
vgui_controls.lib
, (, ) VGUI2.
.
:src/vgui2/vgui_controls/
VPC
Source SDK (sln, Makefile, etc.) … …
Valve Project Creator src/devtools/bin
.
.VPC . — -.
:
src/game/client/client_episodic.vpc
src/tier1/tier1.vpc
src/utils/vrad/vrad_dll.vpc
: VPC !
, src/
.
— src/creategameprojects.bat
.
src/
games.sln.
HL2
SDK HL2 Episodic. , .
, , HL2 :
-
src/creategameprojects.bat
. -
/hl2
- .
creategameprojects.bat
bash — createallprojects.bat
bash.
VPC , , vrad (Radiosity!) height2normal.
, .
, , . , ( IDE?):
- Release.
: Debug !!! - (F6)
- , 2.
- , (creategameprojects) 1.
game/mod_hl2/bin/
game/mod_episodic/bin/
!
— 1 — Steam
-
mod_xxx
//Steam/steamapps/sourcemods/
- Steam ( , ...)
- "My First Episodic Mod" "My First HL2 Mod"
- :
-dev -console
- ,
sdk_vehicles
(SP)dm_lockdown
(MP)
— 2 — Visual Studio
— !
- ( !!!) Debugging
- Command :
//steam/steamapps/common/Source SDK Base 2013 XXXX/hl2.exe
- Working Directory :
//steam/steamapps/common/Source SDK Base 2013 XXXX/
- Command Arguments :
-game "///xx/game/mod_xxx/" -debug -dev -console
- , (F5)!
- ,
sdk_vehicles
(SP)dm_lockdown
(MP)
— !
Msg()
Msg()
, DevMsg()
, Warning()
, DevWarning()
ConColorMsg()
- printf()
, Source SDK. - debug output.
// somewhere in tier0/dbg.h
void Msg( const tchar* pMsg, ... );
// somewhere in code
Msg( "This is a message! %d\n", 42 );
!
:
-
src/game/server/hl2/weapon_pistol.cpp
(Server (Episodic/HL2)/HL2 DLL/weapon_pistol.cpp
) -
void CWeaponPistol::PrimaryAttack( void )
(- 255) -
BaseClass::PrimaryAttack();
- , :
BaseClass::PrimaryAttack(); // - 251 Msg( "weapon_pistol: m_iClip1 = %d\n", m_iClip1 );
- ,
- Depuis que nous avons écrit dans les arguments
-dev
, les commandes de triche sont activées par défaut, alors écrivez le proverbial dans la consoleimpulse 101
et essayez de tirer avec un pistolet!
Conclusion
Qu'avons-nous appris?
[J'espère que] grâce à ce tutoriel, nous avons compris:
- Qu'est-ce que le SDK Source en général et avec quoi il est mangé
- Comment générer des projets à l'aide de VPC
- Comment imprimer quelque chose sur la console développeur
Et après?
Dans la deuxième partie, nous décomposerons le système d'entités Source SDK.