Moddolható játék készítése

Moddolható játék készítése
2004-12-30T12:23:04+01:00
2004-12-31T02:43:00+01:00
2022-10-23T07:25:40+02:00
pocokman
Dolgozok egy játék motoron. Szeretném úgy megírni hogy könnyen lehessen modokat készíteni hozzá. Ezt jobb helyeken úgy csinálják hogy írnak egy játék motort, ami kezeli a perifériákat, grafikát hálózatot hangot meg minden, és van egy dll, ami ezt a motort vezérli? A dll forráskódja meg szabadon hozzáférhető, bárki buherálhatja, így modokat hozhat létre? Ha nem így van akkor hogy?
Mutasd a teljes hozzászólást!
Szia!

Amennyit én erről a témáról tudok, aszerint ez azért nem ennyire egyszerű.

Először is a DLL. Ennek ugye az lenne a célja, hogy a játék logikáját vezérelje. Ezt azonban nem csak DLL-el tudod megcsinálni, hanem belerakhatsz bármilyen VM-et (virtuális gépet), ld. pl. Quake1 vagy a még régebbi DukeNukem 3D vagy a Day of the Tentacle. Ezekhez saját leírónyelvet fejlesztettek kit amit a program valamilyen ormában megevett és végrehajtott (egéz pontosan a Quake-hez volt a Quake C nyelv és fordító, a Duke Nukem induláskor dolgozta fel a forrásszintű scripteket). A VM-nek az az egyik előnye, hogy bármilyen platformra lefordítva az alapprogramot a modok is futtathatóvá válnak, a másik meg, hogy jól kitalált leíróstruktúrákkal a mod fejlesztését egyszerűbbé lehet vele tenni.

A másik ami szerintem fontos, az a modban hozott adatok kezelése. Tehát pl. az új grafikát, hangot, stb. gond nélkül kell belovasni a régiek mellett. Erre is ki kell találni valami jó megoldást.

A Q1-ben, ha jól tudom minden erőforrást (textúra, hang, script, stb.) egyedi név azonosít. Egy teljes ilyen adathalmaz egy vagy több PAK file-ban van letárolva amelyeket a program név szerint növekvő sorrendben olvas fel. A trükk itt az, hogy egy későbbi PAK file-ban megadhatsz egy olyan erőforrást, amely egy korábiban szereplt már azonos néve, a program ekkor az későbbit (újat) fogja használni a régit figyelmen kívül hagyja. Tehát egy új PAK file bemásolásával kényelmesen felül tudsz definiálni egy korábbi erőforráshalmazt. Ez pl. akkor jöhet jól, amikor egy fegyvert mondjuk csak külalakjában vagy paramétereiben akarsz megváltoztatni, viselkedésében nem (pl. egy új gránát máshogy néz ki, és erősebben sebez, de amúgy ugyanúgy viselkedik, mint a régi). Mellesleg a javításokat is egyszerűbb lesz installálni ezzel a módszerrel.

Mindehhez kell még egy megfelelően kidolgozott API, amin keresztül a DLL-ből vagy a VM-ből a játékmotor szolgáltatásait el tudod érni, valamint egy kellő mértékben kidolgozott eszközkészlet, ami a modok fejlesztéséhez kell (pl. a fordító a VM-hez, headerek, kép- és hangkonverterek, stb.).

Hát most ennyi jutott eszembe, remélem hasznát tudod venni.

Balage
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd