GTA Közösség - A magyar GTA fórum
Általános beszélgetés => Beszélgetés => Kérdések, Segítség => A témát indította: anorennia - 2017. március 23. - 23:45:13
-
Sziasztok!
Amire én most kíváncsi vagyok, mennyire bonyolult/nehéz egy saját többjátékosmód kiépítése?
Alapjairól indulva tudom, nem napok munkája.
Van itt valaki aki ért esetleg ezekhez?
Nem most kezdtem a programozást, félreértés ne essen, böngésgettem különböző fórumokat már, de erről nem találtam infót.
Feltételezzük, ha fel szeretném használni mondjuk az IVMP forrás fájljait, mik azok a dolgok amiket módosítanom kell?
Natives
Memória írás
Struktúrák
Jelen esetben arra gondolok, hogy megnyitom feltételezzük az átírt IVMP klienst és odáig el tudjak jutni, hogy megvan az IVMP csapata által megírt
CEGUI menü, vagy akár csatlakozni is tudjak ( itt nem arra gondolok, hogy azonnal működjenek a szkript funkciók )
Negatív kommenteket nem kérek köszöm, csak komoly válaszokat.
-
Nagy valószínűséggel kód injection történik. Az alapjáték elindul, a kliens pedig belenyom egy C vagy Assembly kódrészletet, ami legalább arra elég, hogy a kliens és az alapjáték tudjon kommunikálni. Gondolok itt eventrendszerre, Lua, Squirrel, Python, vagy akármelyik másik scriptnyelv interpreterére. Aztán a szerverre kapcsolódás megtörténik, az adatokat leküldi a socket, feldolgozza. Valószínűleg az adat hasonlóképpen érkezik:
Szerver -> Kliens -> Játék
Ebben nem vagyok biztos, de viszonylag ésszerű, hogy a játék és a kliens egy IPC socketen kommunikálnak, tehát ebből következendő hogy az alapjátékba belekerül egy olyan kódrészlet ami kapcsolódik az IPC sockethez és vár arra hogy kapjon valamit. Ezek a kliens eventjei. Kapcsolódás szerverre, beállítások változtatása, szerverről jövő adatok, stb.
Nagyjából ennyi. Nem vagyok játékprogramozás szakértő, mivel egyáltalán nem érdekelnek a játékok, de nagyon sok low level programozási tudás kell hozzá, kezdve Cnél és az Assemblynél. Illetve nem árt ha van fogalma az embernek a networkingről. Packetek, TCP, UDP, socketek, stb stb.
-
Koszonom a valaszod!
maga a szerver kliens kommunikacio lenyeget ugy ahogy ismerem, azutan mar bongeszgettem, csinaltam kisebb wfa \"jatekokat\", meg bongeszem nap mint nap az ivmp forrasat, amit tudtam kijavitgattam benne, a napokban kezdtem el tanulni, hogyan mukodik a memoria iras, kezdek/probalok rajonni a mukodesere.
csak gondolok itt arra, hogy a d3d device az mit is takarhat, hogyan tudnek fuggvenyeket meghivni a jatekbol, pl mint amikor mta meg ivmp, fivemp megnyilik, nem indul meg a jatek bar a fiveml eloszor betolti a jatekot a live menu miatt, mig az mta meg ivmp, ivn az nem csak a kesobbiek folyaman. De lehet jobb ha nem pazarlom az idomet erre, erdekelnek ezek a dolgok, de hogy a vilagot megvaltaam arra egy szemelykent keves vagyok ?
-
Nagy valószínűséggel kód injection történik. Az alapjáték elindul, a kliens pedig belenyom egy C vagy Assembly kódrészletet, ami legalább arra elég, hogy a kliens és az alapjáték tudjon kommunikálni. Gondolok itt eventrendszerre, Lua, Squirrel, Python, vagy akármelyik másik scriptnyelv interpreterére. Aztán a szerverre kapcsolódás megtörténik, az adatokat leküldi a socket, feldolgozza. Valószínűleg az adat hasonlóképpen érkezik:
Szerver -> Kliens -> Játék
Ebben nem vagyok biztos, de viszonylag ésszerű, hogy a játék és a kliens egy IPC socketen kommunikálnak, tehát ebből következendő hogy az alapjátékba belekerül egy olyan kódrészlet ami kapcsolódik az IPC sockethez és vár arra hogy kapjon valamit. Ezek a kliens eventjei. Kapcsolódás szerverre, beállítások változtatása, szerverről jövő adatok, stb.
Nagyjából ennyi. Nem vagyok játékprogramozás szakértő, mivel egyáltalán nem érdekelnek a játékok, de nagyon sok low level programozási tudás kell hozzá, kezdve Cnél és az Assemblynél. Illetve nem árt ha van fogalma az embernek a networkingről. Packetek, TCP, UDP, socketek, stb stb.
Közel jársz a megoldáshoz, de mégsem. Maga a kliens már a játékba ágyazza magát majd onnan irányítja a szerverről érkező kommunikációt.
Szóval lényegében így néz ki:
Szerver <-> Kliens + Játék
Illetve infót nem nagyon fogsz ezekről találni. A legjobb megoldás az ha forráskódokat nézegetsz és próbáld értelmezni mit hogyan oldottak meg.
-
Hát igen. Nem foglalkoztam sose ilyen dolgokkal, nem az én világom semmi olyan ami játékokkal kapcsolatos.
-
hmm, köszönöm azért, hogy próbáltok rajtam segíteni :D :)