Modding Sumber - Bagian 1 - Dasar-dasar dari Dasar-dasar

Ada banyak mesin permainan di dunia, tetapi tidak ada satu mesin pun yang mirip dengan Sumber dalam sejarah dan fiturnya.



Dalam pelajaran (percontohan) ini, kita akan memandu melalui langkah-langkah paling sederhana dengan kode sumber SDK, serta membuat perubahan pertama kita ke kode Half-Life 2.





pengantar



Beberapa istilah



The Sumber SDK itu sendiri adalah seperangkat utilitas dan program yang membantu Anda mengembangkan tingkat dan modifikasi sendiri untuk permainan, serta kode sumber untuk Half-Life 2 dan episode.



/ ( , :p) โ€” SDK.



Source?!



  1. . , , .
  2. . Source .
  3. SDK , SDK ( , ( อกยฐ อœส– อกยฐ) ) ! , Source SDK ( ...) .
  4. . . C++ !
  5. .


?



  1. C++ ( ).
  2. Microsoft Visual Studio Multibyte MFC Library Microsoft Build Tools 2013 (v120/v120_xp). , VS2013.
  3. Git for Windows .
  4. Steam Source SDK Base 2013 [Single|Multi]player ( "" - upstream, )
  5. 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 :



  1. src/creategameprojects.bat .
  2. /hl2
  3. .




creategameprojects.bat bash โ€” createallprojects.bat bash.



VPC , , vrad (Radiosity!) height2normal.



, .







, , . , ( IDE?):



  1. Release.

    : Debug !!!
  2. (F6)
  3. , 2.
  4. , (creategameprojects) 1.


game/mod_hl2/bin/ game/mod_episodic/bin/ !



โ€” 1 โ€” Steam



  1. mod_xxx //Steam/steamapps/sourcemods/
  2. Steam ( , ...)
  3. "My First Episodic Mod" "My First HL2 Mod"
  4. :

    -dev -console
  5. , sdk_vehicles (SP) dm_lockdown (MP)


โ€” 2 โ€” Visual Studio



โ€” !



  1. ( !!!) Debugging
  2. Command :

    //steam/steamapps/common/Source SDK Base 2013 XXXX/hl2.exe
  3. Working Directory :

    //steam/steamapps/common/Source SDK Base 2013 XXXX/
  4. Command Arguments :

    -game "///xx/game/mod_xxx/" -debug -dev -console
  5. , (F5)!
  6. , 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 );


!



:



  1. src/game/server/hl2/weapon_pistol.cpp (Server (Episodic/HL2)/HL2 DLL/weapon_pistol.cpp)
  2. void CWeaponPistol::PrimaryAttack( void ) (- 255)
  3. BaseClass::PrimaryAttack(); - , :

    BaseClass::PrimaryAttack(); // -   251
    Msg( "weapon_pistol: m_iClip1 = %d\n", m_iClip1 );
  4. ,
  5. Karena kami menulis dalam argumen -dev, perintah cheat diaktifkan secara default, jadi tulis pepatah ke konsol impulse 101dan coba tembak pistol!




Kesimpulan



Apa yang telah kita pelajari?



[Saya harap] dari tutorial ini kami menemukan:



  • Apa itu Source SDK secara umum dan apa yang dimakan dengannya
  • Cara menghasilkan proyek menggunakan VPC
  • Cara mencetak sesuatu ke konsol pengembang


Apa berikutnya?



Di bagian kedua , kami akan memecah sistem entitas SDK Sumber.



link yang berguna






All Articles