Egy ideje visszatértem az Android RPG-m tervezgetéséhez. Mivel a gépem kilehellte a lelkét, Niki gépe pedig határozatlan időközönként (de legalább nagyjából óránként) egyszerűen túlmelegszik és leáll, ezért a figyelmem javát a kódolás helyett a játék designjára fordíthattam. Ez már önmagában is hátráltató helyzet, minél kevesebb a látványos előrehaladás, annál kevesebb a motiváció is. A nagyobb baj, - és ezzel egyből meg is válaszolom a címben feltett kérdést - hogy - mint kiderült - nem tudom, hogy milyen játékot szeretnék írni.
Voltak azonban hasznos észrevételeim is: a világ mérete túl nagy egy első projekthez. Mivel a történetet alig dolgoztam még ki, ennek újraírása nem okozott gondot, ezzel kezdtem a tervezgetést, és le is zsugorítottam a játékot. Aztán végül már oda lyukadtam ki, hogy egy csöppnyi világ egy szint labirintussal is elég lesz.
A problémák akkor jelentkeztek, amikor az implementációt kezdtem tervezgetni. Az alapvető irányvonalak már a játék megkezdése előtt a korábbiak voltak:
- "first person" megjelenítés, "Eye of the Beholder"-szerűen
- interakció nem csak tárgyakkal (sütni-főzni, "crafting"), de a térkép elemeivel is (pl. fák kivághatók, falak lebonthatók)
- permadeath, ha meghal a karakter, akkor annyi, lehet újat kezdeni
- kidolgozott történet félig szkriptelve, félig interakciókra alapozva
Az első ponthoz sokáig ragaszkodtam, amíg el nem jutottam a tervezés "tereppel való interakció" pontjához. Az "Eye of the Beholder" a terepelemeket (falakat/ajtókat) egy négyzetháló celláiként tárolja. Bevált és egyszerű megoldás, ezért is választottam. A hátulütője, hogy a legvékonyabb fal is több méter szélességű. A kézenfekvő megoldás, hogy az olyan építményeket, ahol ez problémát okoz "portálokkal" oldom meg. Egy ház a térképen például egy 3x2 cellából álló tömör doboz, egyik oldalán egy ajtóval. Ha ezen belép a játékos, akkor egy másik, kis térképre jut, ami csak a ház belsejét tartalmazza. Így is implementáltam az első változatban.
No de mi történik, ha a ház egyik fala ledől? Vagy a játékos szeretne bekukkantani egy abalkon. Vagy felgyullad a ház? És a sok portál valószínűleg megnehezíti az AI útkeresést is. Neeem, ez így nem fog menni - gondoltam -, és máris váltottam a "gold box" játékokból ismert "a háló élei a falak" elképzelésre. Ez egy picit talán több rajzolási munkát igényel, de sokkal szebbé is teszi a játékot. Az egybefüggő, átmenet nélküli játékvilág pedig szerintem jó dolog.
OK, egy kis változtatás az első ponton. Egy kicsit azonban elkapott a lendület, és jött az első buktató ötlet: szintek. Ha már egybefüggő a világ, akkor legyen minden irányba az! No ez már keményebb falat. Az objektumstruktúra csak kicsit változik (bonyolódik), de a grafikai munka sokkal durvább. És a többszintes objektumok (pl. fák) kezelése is tovább nehezíti az implementációt. Kivételek = exponenciális komlexitásnövekedés.
Ez azonban legfeljebb csak megnehezíti (lassítja) a program elkészültét. A hármas és négyes pont azonban így együtt elméleti oldalról is hibás design-nak tűnik (amellett, hogy a négyes önmagában is első ránézésre rettentő feladat). A permadeath ugyanis a Rogue-félékben azért működött olyan jól, mert a tartalom játékonként újragenerálódott. Ha meghalt a karakter, akkor az új egy új világba került, - javarészt - új kihívásokkal. Ugyanazt a történetet többedszerre végigjátszani viszont unalmas lehet. Nem is beszélve arról, hogy ha a járékost újrakezdésre kényszerítem, akkor valahogy az előző játékok során szerzett tudásának felhasználhatóságát is korlátoznom kellene. Ez pedig a négyes pontot még tovább bonyolítja.
Emellett szenvedtem az egyes objektumok alulról való felépítésével is. Próbálom elkerülni a HP ("health point") elvet, és testrészenkénti konkrét sebződésekben gondolkodom, de az algoritmusok kezdenek elméletben is átláthatatlanná válni a "skill"-ek, sebződések és egyéb külső tényezők miatt. Fizikai modellezésbe a képességeim korlátossága miatt nem akarok belemenni, így pár dolog mindenképpen absztrahálva lesz, ami pedig a bonyolult algoritmusok mellett azt jelenti, hogy kínszenvedés lesz a rendszert kiegyensúlyozni.
Azt hiszem mégis inkább kódolnom kellene, akkor az ilyen "apróságokon" átlépek...
Utolsó kommentek