Kezdőoldal » Számítástechnika » Programozás » El tudná nekem valaki magyaráz...

A legrosszabb kérdése:

El tudná nekem valaki magyarázni, hogy amikor játékokhoz modokat készítenek, miért készítik el külön a "magot", azaz a core-t?

Figyelt kérdés

Sziasztok!


Totálisan sík hülye vagyok a témában, ezért is szeretném a segítségeteket kérni, hogy emberi nyelven valaki megértesse velem a lényegét. Szóval manapság már elég sok játékhoz készítenek modokat (zombi, túlélő, realisztikus, fegyver, eszközök, ételek, alap ruházat cseréje, kijelző HUD cseréje, meg amit csak el tudsz képzelni), viszont azt látom, hogy néhányhoz elkészül külön egy "mag", vagy éppen egy library, és tulajdonképpen arra épül az elkészítendő/elkészített mod. Például Minecraftben a NotEnoughItems-hez mindenképp kell a CodeChickenCore nevű mag. Miért? Vagy például RimWorldben a StackXXL-hez mindenképpen szükséges a HugsLib nevű mag. Miért? Érthető lenne akkor külön elkészíteni egy core-t vagy egy libet, ha azt máshoz is fel lehetne használni, de ezekre kizárólag egyetlen mod épül, ezeket kizárólag egyetlen mod használja, azaz a fent említettek.


Tehát a noob kérdésem annyi lenne, hogy miért készítenek külön core forrást a különféle kiegészítőkhöz?



2017. szept. 27. 20:17
 1/2 anonim ***** válasza:
100%
lehet úgy gondolták a tervezéskor hogy majd lesz több mod is ami rá épül, aztán végül nem sikerült összehozni pénz/idő/akármi hiánya miatt
2017. szept. 27. 20:36
Hasznos számodra ez a válasz?
 2/2 2*Sü ***** válasza:

A minecraftot ismerem közelebbről, bár a kliens oldali modokat csak módjával. A probléma az, hogy a Minecraftot nem úgy tervezték, hogy modokat lehessen beletenni. Vannak különböző programrészek, amelyeket kvázi felül kell írnod. Például ha történik egy kattintás esemény, akkor az eredeti kattintás eseményt végrehajtó kódot lecseréled a sajátodra. Ha most két mod is van, ami le akarja cserélni ezt az eseményt, óhatatlanul az egyik mindenképpen felülírja a másikat.


Erre készültek mod kezelő rendszerek, pl. ott a Forge. Ez cseréli le a kattintás eseményt. De úgy, hogy egy mod a Forge rendszerébe be tudja magát regisztrálni. A Forge meg annyit csinál, hogy végigfuttatja a beregisztrált modok kattintás eseményeit, egyiket a másik után, majd ha azok nem kapták el az eseményt, vagy továbbengedték, akkor lefuttatja az eredeti kattintás kódját. Így több modoknak nem kell feltétlenül tudniuk egymásról, nem kell feltétlenül alkalmazkodniuk egymáshoz, nem ütköznek össze, ha ugyanazt a funkcionalitást akarják felülírni az eredeti játékban.


Ez az egyik ok. A másik ok, hogy az eredeti kódban csúnya gányolások vannak belül. Mondjuk egy NPC állapotának megváltoztatásához van egy függvény, amit meg kell hívni, aminek olyan paraméterei vannak, hogy (p1, p2, p3, p4, p5, a1, a2, a3), ahol kvázi fogalmad sincs, melyik paraméter mit jelent. (Most ez hasraütésre mondom, pontosan nem emlékszem, hogy hogyan volt, de hasonló szörnyűség.) De ezt el lehet fedni egy új függvénnyel, aminek jól dokumentált paraméterei vannak, pl. nyak vízszintes forgatása, nyak függőleges forgatása, bal kéz forgatása, stb… Ez már kezelhetőbb. Esetleg olyan függvények is vannak, ahol nem kell egy NPC állapotát teljes egészében beállítani az összes paraméterrel, hanem van egy olyan függvény, ami elforgatja a bal kezét a paraméterként megadott fokkal.


Igen, a CodeChickenCore-t nem túl sok mod használja. De azért nem csak a NEI használja, használja például az EnderStorage mod is, a ChickenChunks mod, a Translocator mod is.

2017. szept. 28. 00:43
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!