Forrás belül
Bevezetés programmirovnie a Source SDK
Talán, ha egy kezdő, és fogalmam sincs, mit programozás C ++ és ami mögötte ezek a nevek: „válogatás”, „osztály”, „felület”, és így tovább, ebben az esetben meg kell szerezni az alapvető programozási ismeretek C ++ után amely teljes mértékben feladatát programozó mod.
Source SDK biztosítja a forráskódot a játék motorja módosításokat.
Ez azt jelenti, hogy vannak bizonyos ismeretekkel és eszközökkel lehet, ha van egy forrás, hogy tegyék meg a szükséges funkcionalitást bele.
Mi a motort?
Például van egy olyan játék, amit fut a számítógépen.
A játék során a programkód és adatfájlok.
Az adatfájlok nem nehéz megérteni, mi ez - amelyek közül néhány beépített játék világában, grafikák, térképek, modellek, és így tovább ..
A kód - az, hogy a processzor által végrehajtott, durván szólva, azt találtuk, hogy ezek is megjelenik a képernyőn, mozgás és hang.
Ez a program része, és a továbbiakban „motor”.
A motor áll, több rendszer, minden felelős a saját feladatát (grafikus renderelés, munka fájlok, parancsok feldolgozását, hálózatba szervezése, játék jelenet, játék tárgyak ...)
2. Források a Source SDK. Töltse mindig lehetséges a Steam.
3. Microsoft Visual Studio 7.1. A munka a kódot elő ebben a környezetben dolgozni mind a Visual C ++ 7.1 a vállalat a Microsoft.
Talán vannak más módon állítanak össze Visual C ++ projekt, de ez egy külön kérdés.
Miután létrehozott egy új módot (Play Játékok -> Eszközök / Source SDK -> Új Mod -> módosítása Half-Life 2) nyitott src / Game_sdk.sln fájl
sln fájl - egy megoldás - megoldás ilyen kifejezést a Visual Studio. Miért nem hívja meg a projekt a Visual Studio 6?
Megoldás (.sln) számos projekt (.vcproj), amely képes létrehozni egyszerre vagy külön-külön.
Ez a megoldás a fájl két projektek:
ügyfél - az ügyfél
hl - szerver
Miért ketten, és ha tetszik, nincs multiplayer a játékban?
Mindenesetre, akár Single player multiplayer motor két részből áll. Ez magyarázza, hogy a mechanizmus szimulációs játék világában van osztva két, egymástól független felek.
Mit jelent a szerver és a kliens, mi a különbség?
A szerver végzi a szimuláció virtuális valóság valós időben, amely lehetővé teszi, hogy szinkronizálja a különböző játékelemek;
szerver csatlakozik a vevők, akik szintén azok a tárgyak, egy vagy több, általában a Source motor lehet akár 255 ügyfeleknek.
Abban az esetben, egy hálózati játék segítségével interent vagy helyi hálózaton, futtassa megosztott szerveren, hogy szinkronizálja az összes ügyfél, hanem csak a helyi szerver és a kliens munkát egy játékban.
Az ügyfél felelős? Ő végzi a vezérlő bemenet a lejátszó és a kijelzőn megjelenő információkat, beleértve a szervertől kapott. Azaz azt végrehajtja a felület a játékos.
Általában az összes ez nem lehetséges (nincs szükség) bármilyen módon kijelző nem végzik el a kliens a játékos.
Voobscheto ügyfél szimulálja nagyjából ugyanaz, mint a szerver, de nem haladhatja meg a nagyobb teljesítményű, mint a szerver. Ezért csak az a fontos, hogy az ügyfél számára a szerver képes továbbítani az állapota a játékos, és lehet, hogy a különböző szerver beállításokat megadva a fejlesztők.
Így arra a következtetésre jutott, hogy a motor két különböző oldalról, amelyek végre párhuzamosan, egymástól független.
Most úgy néz ki, mint a forráskód.
Van egy darab kódot, amely felelős a kliens oldalon, a szerver része a kód része a kódot, amely a kommunikációra.
Összeállításakor a kód van két DLL modul (kliens és szerver).
A szerver kód src / dll-ek könyvtárba.
Ez egy hierarchikus kiszolgáló osztályok, ahol az egyik osztály az alapja a generált gyermek osztályok. Tervezésekor egy osztály valamennyi közös tulajdonságait több leányvállalat a szülő osztályban.
Szerver osztályok általában nevek, mint CImya (CBaseEntity. CBasePlayer).
A szerver felelős, mi folyik a játék, nem számít, hogy meg kell jelennie a lejátszó képernyőjén, a logikája, hogy mi történik, nagyon fontos neki.
Ennek eredményeként, a szerelvény src / dll-ek / hl_sdk.vcproj projekt válik server.dll fájlt.
A kliens kód src / cl_dll könyvtárba.
Ez tartalmaz egy hierarchia kliens osztályok. vevőosztályok általában nevek, mint C_Imya (C_BaseEntity. C_BasePlayer). Minden osztály a játék tárgyak, amelyek részt vesznek a szimuláció a világ a megfelelő osztályt a szerver oldalon.
Itt a kód upravlyuschy rendering modellek, szinkron, GUI-interfész feldolgozó, a kimenet a szöveges üzenetek, a billentyűzet és az egér beviteli feldolgozás, és így tovább. D.
Ennek eredményeként, a szerelvény a projekt src / cl_dll / client_sdk.vcproj fordul client.dll fájlt.
Ha helyezze a DLL fájlokat a kliens és a szerver a bin könyvtárba a mod, a motor képes lesz csatlakozni őket elején.
A közös kód a src / állami és src / game_shared.
A linux_sdk könyvtár tartalmazza a fájlokat, hogy hozzon létre egy speciális fájl Ez az összeállítás platform - Makefile, ha zankomy Unix, akkor már sejtette, hogy szükség van, hogy összeállít egy Linux szerver port.
Mi ásni a részleteket
Építsd fájlok kommandós Építőanyag -> Építsd megoldás.
A kimeneti ablak (Output), kiderül, a termelés a fordítási folyamat:
------ Építsd kezdett: Project: ügyfél Configuration: Megjelenés HL2 Win32 ------
Az első fordítás eltarthat sokáig.
Amennyiben a szerelvény sikeresen teljesítette, a végén a kimenet számolt be:
Építőanyag: 2 sikerült, 0 nem, 0 kimarad
Eredményeként keletkezett a fájlok automatikusan másolja a bin könyvtárba a mod (a beállítások alatt szokás építeni lépés).
Most, ha a játék futtatásához mi változik használatakor semmilyen tárgyat (emelje tele alá USE gomb), meg kell látni az üzenetet «Helló MOD!».
Fuss mód, akkor run_mod.bat fájlt a mod könyvtárba.
Tekintsük a több parancssori futtatni a saját mod.
Itt egy példa: hl2.exe -steam -dev -condebug -developer -ent_messages_draw 1 2 game NAME_OF_MOD hl2.exe -steam - az, hogy a játék futtatásához (nem kell változtatni)
-dev (vagy -console) - közé tartozik a Shell
-condebug - rögzíti a napló üzeneteket a konzolon console.log fájl
-1 vagy 2 fejlesztő - hibakereső
-ent_messages_draw 1 - otobrzhat jelentések folyamatos kommunikáció munka
-játék NAME_OF_MOD - néhány esemény fut (adja meg a könyvtár nevét a divat Half-life2 könyvtárban) mélyebbre ásni ...
Emlékszem az egyik nagyon értékes elérhető funkciók a Visual Studio - egy-egy keresési kódot fájlokat.
Keresés fájlokban - keresni a fájlokat vagy a Ctrl + Shift + F billentyűzetet.
A kereső, akkor követ akármi válasz, hogy megvizsgálja a forráskódot, és megtalálja a legfontosabb hely az Ön számára, hogy módosítsa.
Az első lépés az, hogy fontolja meg az alapvető dolog, amit meg kell kezdeni megismertetése a motor egységet.
A szerver és a kliens nyújt a különböző szoftver interfészek, amelyek egy hatalmas listát a különböző lehetőségeket.
Például,
IPhysics - kezelési fizika
IMaterial - ogranizatsii anyag rendszer;
ICommandLine - dolgozni kommandós konzolon
IBaseFileSystem - Read / Write fájlokat;
IEngineSound - audio kimenet;
IInput - input billentyűzet vagy egér;
és így tovább ...
Ez a lista elég hosszú és részletes vizsgálat többet igényel ez a bemutató.
Ahhoz, hogy egy adott helyen a kódot, hogy az ellenőrző adatok kimenetét a képernyőre, mint például monitor lefuttatjuk - használja a kiegészítő funkciók:
UTIL_ClientPrintAll. ClientPrint vagy MSG
További tanulmányozása alapján, hogy a motor megfelel egy csomó részletek, amelyek fontosak, hogy megértsék:
szerver és kliens egység és a kölcsönhatás a rendszer, asztal vonalak, üzenet rendszere, rendezvények, eseménykezeléshez, gyorsítótár rendszert, és így tovább.
Mindez kiterjed a következő bemutató.