KEZDŐK NAGYKÖNYVE
Írta: Monika, The Blob From Hell
Fordította és kiegészítette: Uriás
Lektorálta: Diskhead
Tartalom
1. fejezet - Uriás előszava
2. fejezet - A lecseszés elkerülése, avagy tanulj meg gondolkodni!
3. fejezet - Az első lépések
Hogy kezdhetek el Makerezni?
Mi a franc az az RTP, és hogy szerezhetem meg?
Hogy hozhatom rendbe a betűket?
A karakterem folyamatosan egy irányba mozog, még a Sample Game-ben is
Általános hibák és bugok
Hogy hozhatom helyre a projectemet? (Ha Lucifer feltűnik)
4. fejezet - Oldalszámok és kapcsolók
Hogy tudom megcsinálni, hogy valaki eltűnjön?
Hogy tudom megcsinálni, hogy a láda ne adjon folyamatosan cuccokat?
Hogy tudom megcsinálni, hogy <egy bizonyos dolog> megálljon vagy megváltozzon <valaminek> a hatására?
5. fejezet - Intro és bejátszás
Hogy csinálhatok intrót és bejátszásokat?
Move All kontra Wait
6. fejezet - Képek
Hogy rakhatom a játékba a képeket?
Mekkora méretűek lehetnek a képek?
Hogy csinálhatom meg, hogy a kívánt szín legyen átlátszó (transparent)?
7. fejezet - Egy kis matek
Mi az a kapcsoló (switch)?
Mi az a változó (variable)?
Hogyan csinálhatok egy véletlenszerű eseményt?
Mi az a „mod”?
Mi az az „elágazás” (fork)?
8. fejezet - CMS/CBS
Mi az a CBS?
Mi az a CMS?
Hogy kezdjek CBS-t csinálni?
CBS-ekhez hasznos tömbök, amik rengeteg máshoz is felhasználhatóak
9. fejezet - Debuggolás
Néhány tipp a debuggoláshoz, hibakereséshez
10. fejezet - Furcsaságok
11. fejezet - Vegyes
Nos, kezdjük azzal, hogy ez nem az én művem, egy fórumon akadtam rá, Monika az elkövető, akinek The Blob From Hell segített. Én csak lefordítottam, és kiegészítettem kicsit. Ez a kézikönyv segíthet a teljesen kezdőknek, de haladók, vagy önmagukat haladónak képzelő emberek is okulhatnak belőle! Rengeteg hasznos információt, tanácsot és példát találunk, melyek segíthetnek elsajátítani az alapokat.
Természetesen a leírások megértéséhez kell egy kis ész, no meg némi tudásanyag az élet különböző területeiről. Ha esetleg nem érted, miről van szó, olvasd el még egyszer, de ha sokadszorra, és a példák kipróbálása, illetve próbajátékok legyártása után sem tudod, miről van szó, vagy hogy lehet ezt hasznosítani, akkor inkább hagyj fel a Makerezéssel…
Még valami: az útmutató Rpg Maker 2000-hez íródott, de tanulhat belőle az is, aki elsőként
más Makerrel kezd ismerkedni.
2. fejezet - A lecseszés elkerülése, avagy tanulj meg gondolkodni!
Oké, kezdő vagy. Pár órája letöltötted az RPG Makert, és csak az állít meg elkészíteni minden idők legjobb (és nyilvánvalóan legvilágmegváltóbb) Narútó meg Blícs fanjátékát, hogy képtelen vagy bármit megtenni. Üdv a klubban, haver. Özönlenek az ilyenek, és minden nap válaszolni ugyan arra az ostoba kérdésre, lásd csak be, igen fárasztó.
Szóval, pár tipp:
- Ne kezdj kérdezősködni egy problémádról, ha nem töltöttél legalább fél órát azzal, hogy magad próbáltad megoldani. Akkor sem, ha egy napot nem töltöttél a kijavításával, ha nem nézted meg a help fájlt, ha nem kerestél rá a kérdésedre a neten, mert különben hamar rájövünk, hogy türelmetlen és buta vagy.
- Klikkelj a gombokra, mielőtt megkérdezed, mire jók. Meg fogsz lepodni, hogy mennyit tanulhatsz, ha magad gondolkozol és szerzel tapasztalatokat.
- Ne nyiss topicot/írj üzenetet olyan címmel, hogy „lolsegítséget”, „Hiba a játékomban”, vagy hasonló hülyeség. Inkább olyasmi legyen, hogy „Hogyan tudom megoldani <a probléma pontos körülírása>-t?”
- Ne inzultáld azokat, akik segítenek neked. Az inzultálás alá tartozik a mérges smiley, a lefelé mutató ujj, más lehülyézése, ha nem érti a kérdésed, vagy csak szimplán idiótának lenni.
- Próbálj érthetően beszélgetni. Érthetően mondd el a bajodat. Írj helyesen! Vedd figyelembe a nyelvtani szabályokat! Így az emberek kedvesebben viszonyulnak majd hozzád.
- NE KÉRDEZD MEG AZT, AMIT ITT MÁR LEÍRTAM!
3. fejezet - Az első lépések...
Telepítsd fel a szükséges dolgokat megfelelő sorrendben! Szükséged lesz az Rpg Maker 2000-re, és az RTP-re. EBBEN A SORRENDBEN telepítsd oket, különben hibát fog jelezni! Mindkettőt ugyan oda telepítsd, de külön könyvtárba! Ajánlott meg sem változtatni a telepítési utat, simán a Továbbra kattintani! Van egy másik RTP is, ami nagy. Nem ajánlom a telepítését RTP-ként, mert mások nem szeretik, ha nagyméretű, sok fájllal megspékelt játékod kell töltögetniük. (Erről lesz szó később is!)
Mi a franc az az RTP, és hogy szerezhetem meg?
A szükséges fájlok gyűjteménye, általában onnan töltheted le, ahonnan a Makert is letöltötted. Ha nincs ott, akkor használd a Googlet.
Hogy hozhatom rendbe a betűket?
Keress rá a Googleban az „rpg maker font patch”-re!
A karakterem folyamatosan egy irányba mozog, még a Sample Game-ben is
Szedd ki a Joystickod, vagy Game Padod.
Itt a leggyakoribb hibák jegyzéke, hibaelhárítással együtt:
- "Project making failure”
Ez a hiba azt jelenti, hogy a projected mappája nem felülírható. Ezt a mappa beállításinál meg tudod változtatni. Ha ez sem hozza rendbe, akkor a Makerrel van a baj, installáld újra. - "X is missing"
Hiányzik valamelyik szükséges fájl. A játékod RTP mappáiba rakd bele a felhasználd fájlokat (Chip-Setek, Char-Setek, stb…), majd írd az RPG_RT.ini fájlod végére, új sorba: FullPackageFlag=1. Így a játék a saját RTP-jét fogja használni, nem pedig a Maker mappájában lévo RTP-t. Ha kiadsz egy játékot, feltétlenül csináld meg ezt! - "blablabla\Lucifer\blablabla"
Ha ez jön elő, akkor munka közben a Maker felmondta a szolgálatot, ugrott a project. Hogy kikerüld a hatását, sokszor mentsd a projected, és készíts másolatokat. Ha ez a hiba tönkretette a munkád, akkor csinálj egy új projected, csinálj neki ugyan annyi mapot, mint ami a régi projectben volt, és másolj át mindent a mappájába. - "Invalid event name"
Egyszerű, ám gyakori hiba: egy event (esemény) nincs a mapon (Az, amit mozgatni akartál, vagy elő akartad hívni). Valószínűleg már törölted, csak megfeledkeztél róla. A hibát okozó sort csak simán töröld ki. - "Map tree data missing"
Ezt valószínűleg te okoztad, mert belepiszkáltál valami fájlba. A „Hogyan építsük újra projectünket?” fejezetben lesz erről szó!
Hogyan építsük újra projectünket? (Elég bonyolult egy kezdőknek, és valószínűleg nem
lesz rá szükséged, szóval inkább ugord át! később azonban érdemes visszatérni rá.)
Szóval belebotlottál Luciferbe, vagy valami más okozott galibát, ami tönkrevágta a projected. Semmi baj, tálcán kínálom a megoldást!
Hogy elsajátítsd a projected megmentését akár a pokol bugyraiból is, meg kell ismerkedned a
legfontosabb felhasznált fájlokkal:
- RPG_RT.exe
Ez az egész játék motorja, ezzel tudod futtatni a játékot. Tartalmazza a jelek listáját, illetve a kezdőképernyő képeit, amiket meg is tudsz változtatni, ha értesz hozzá. - RPG_RT.ini
Ez tartalmazza a beállításokat, amikre a motornak (RPG_RT.exe) szüksége van a játékod futtatásához, például a cím, vagy a FullPackageFlag. - Harmony.dll
Ez az RM2K által használt hangkönyvtár. A Maker mappájában is megtalálod, onnan be tudod másolni mindenhova, sot, akár honnan átmásolhatod, mert minden esetben ugyan azt tartalmazza. - RPG_RT.ldb
Ez a fájl tartalmazza az adatbázist (database). Az alap adatbázis megtalálható a Maker könyvtárában "RPG_RT.ldb.dat" néven. Átmásolhatod a játékaid könyvtárába, csak töröld ki a végéről utána a .dat-ot. Akár saját alapértelmezett adatbázist is csinálhatsz fordított módszerrel (a játékból másolod át, és raksz a végére .dat-ot). - MAPXXXX.lmu (X jelenti a map ID-jét)
Ez a térkép. Az adott térkép minden adatát tartalmazza ez a fájl, kivéve a beállításait. (properties) - RPG_RT.lmt
Ez a térképek összessége, ami listát tartalmaz róluk, és a beállításaikat.
Most már ismered a fájlokat, tanulj meg projectet másolni.
- Csinálj egy új projectet.
- Nézd meg a régi projected mappájában, hogy hány térkép volt összesen, majd hozz létre ennyi térképet az új projectedben a Maker segítségével.
- Másold át a régi projected össze térképfájlját az új projected mappájába.
- Másold át az RPG_RT.ldb-t a régi projectbol az újba.
- Ha végeztél módosításokat az RPG_RT.exe-n, akkor azt is másold át.
- Másolj át minden felhasznált, hozzávaló RTP fájlt.
Azonban még így is bekavarhat valami: ha az új, frissen másolt projecttel is baj van, akkor valószínűleg az adatbázissal van probléma, másold át a Maker mappájából az alap adatbázist a játékod mappájába a már ismertetett módon.
Utolsó tanács: sokszor készíts biztonsági másolatot a játékodról!
4. fejezet - Oldalszámok és kapcsolók
Hogy tudom megcsinálni, hogy valaki eltűnjön?
Hogy tudom megcsinálni, hogy a láda ne adjon folyamatosan cuccokat?
Hogy tudom megcsinálni, hogy <egy bizonyos dolog> megálljon vagy megváltozzon <valaminek> a hatására?
Köszönöm, hogy ezt elolvasod, ahelyett, hogy megkérdeznéd. Szinte minden nap megteszik, és elegünk van belőle!
A pontos válasz:
Példaként elmondom az első kérdésre a megoldást, a többit ez alapján ki tudod találni, de még szó is esik majd róla.
- Oké, megvan egy csomó sor arról, amit az adott szereplő csinál. A SZEREPLŐ KÓDJÁNAK A VÉGÉRE rakj be egy "Change switch" utasítást, kattints a […] jelre, válassz ki egy üres kapcsolót, adj neki nevet, majd kapcsold be. (ON)
- Az esemény (Event) tetején kattints az új oldalra (New Page). Ez ad egy másik oldalt az eseménynek.
- A második oldal tetején jelöld ki a kapcsoló (Switch) melletti dobozt, kattints a […] jelre, majd az első részben megalkotott kapcsolót válaszd ki.
- Töröld ki a második oldalon a karakter grafikáját, és állítsd át az egyik görgetősávon, hogy a hős alatt legyen („Under Hero”).
Az általános válasz:
Ehhez a kapcsolós-oldalas mókához öt-hat általános kérdés is kapcsolódik, ami felmerülhet egy kezdőben. A megoldást MOST kell megtanulnod, egyszerre próbálok mindenre választ adni.
Azt akarod, hogy <Valami#2> történjen az <Esemény#2>-n, miután <Valami#1> végbement az <Esemény#1>-en. A legtöbb esetben <Esemény#1> és <Esemény#2> ugyanaz az esemény.
Konkrét példa az előbbi magyarázatra: Azt akarod, hogy <A láda ne adjon semmilyen tárgyat> történjen a <Láda> eseményen, miután <A láda adott valamilyen tárgyat> végbement a <Láda> eseményen.
Ehhez meg kell tanulnod a lapok és a kapcsolók működését.
Kapcsolók:
Láttál már villanykapcsolót, amit a lámpa fel és leoltására használnak? Ez is kapcsoló. Két állapota van: BE és KI (ON és OFF). A következőket tudod tenni vele: bekapcsolni, kikapcsolni, és változtatni az állásán (Toggle). Ez azt jelenti, hogy ha be volt kapcsolva, kikapcsolod; ha ki volt kapcsolva, bekapcsolod. A játék sok kapcsolót használ fel. Alaphelyzetben ki vannak kapcsolva, és nincs nevük.
Ha projected készítése közben ezt látod: Switch[_________][...], akkor a […] jelre kattintva ki tudsz választani egy kapcsolót, és nevet tudsz neki adni. Ezt jegyezd meg.
Lapok:
Egy eventnek lehetnek oldalai. Amikor az event parancsai lefutnak, akkor megnézi az oldalakat, és azok végéről kezdi, azaz az első oldalról (kivéve, ha már be van kapcsolva egy olyan kapcsoló, aminek hatására egy későbbi oldalon kezd). Ezt jegyezd meg.
Új oldalért kattints a „New page” gombra.
HOGY HASZNÁLJUK MINDEZT?
Oké, az <Esemény#1>-ben megvan a <Valami#1> történés/cselekvés/stb kódja. A kód után tegyél be egy „Change switch” parancsot. Ezen a parancson válassz ki egy üres kapcsolót, nevezd el, és állítsd be (ON).
Az <Esemény#2>-n (ami sok esetben azonos az <Esemény#1>-el) hozz létre egy második oldalt. Ennek a második oldalnak a bal szélén látsz egy „Event Conditions” feliratot, alatta listával. Jelöld ki az első „Switch” feliratú dobozt, és válaszd ki az előbb létrehozott kapcsolót. Aztán (még mindig a második oldalra) rakd be a <Valami#2> történés/cselekvés/stb kódját.
5. fejezet - Intro és bejátszás
Hogy csinálhatok intrót és bejátszásokat?
Ezt egy Auto start eventtel kell megoldani. Ezek az események automatikusan történnek, mindig azonnal végbemennek az adott mapon. Szóval a bejátszás mozgásait, a beszédet, a speckó effektusokat… egy ilyenbe kell beraknod.
Szóval amint belépsz egy térképre, az automata esemény azonnal elindul (ez intróknál jó, de bejátszásoknál bonyodalmat okozhat), s végtelenszer lejátssza önmagát. Persze ha eddig eljutottál, és mindent elolvastál, akkor szerintem tudod erre a megoldást: emlékezz az előző fejezetre!
Tehát a következő a probléma: „Mi van, ha nem akarom, hogy az automata esemény azonnal elinduljon, amikor belépek a térképre?” Gyerekjáték megoldani! Az első oldalra rakj be az „Event Conditions”-hoz a már ismertetett módon egy kapcsolót. Már csak be kell raknod a kapcsoló bekapcsolását oda, ahol úgy érzed, elkezdődhet a bejátszás! Tadamm!
Pár tipp:
- A szövegek nem csak annyiból állhatnak, hogy előjönnek, majd eltűnnek, ha entert nyomsz. Lehetnek színei, gyorsasága, enter nélkül is eltűnhet, satöbbi, de ezt most itt nem magyarázom el.
- A „Move event” parancs nem hajtódik végre rögtön, egyedül: elkezdődik, és a kód folytatása közben megy végbe. Megoldás: használj „Wait” vagy „Move all” parancsot!
- A „Battle animation”-ökkel, azaz a harci animációkkal remek effektusokat lehet csinálni.
A „Move All” egy speciális parancs, aminek a „Move Event” után kell következnie, de nem feltétlenül rögtön utána. A legegyszerűbb használata valami ilyesmi:
<>Move Event: hero; up, down, left, right
<>Move All
Ha csak ennyi áll egy auto esemény kódjában, akkor a hős folyamatosan fölfelé fog menni. A Move All hatására azonban végigmegy a megtervezett útvonalon.
A Move All követhet több eseménymozgató utasítást is, például:
<>Move Event: hero; up, up, up
<>Move Event: dog; down, down, down
<>Move Event: man1; wait, right, down, down, down, down
<>Move All
Ebben az esetben mind a három mozgatás egyszerre történik, tehát a kutya felfelé, a hős lefelé megy, míg az ember vár egy kicsit, jobbra lép, aztán lefelé indul.
Egyébként más parancsok is lehetnek a Move Event és a Move All között. Példa:
<>Move Event: hero; start jump, end jump, change graphic blink1, change graphic
Chara01
<>Show Face Graphic: Hero1
<>Show Message: Jaj! Megijesztettél!
<>Move All
Most a mozgatás végbemenetele közben jelenik meg az üzenet, de minden más parancs (ami a Move All után jön) vár a mozgás befejezéséig. Ha az üzenetet a hős felugrása után akarjuk látni, akkor a Move All-t a Show Message elé kell raknunk.
Összefoglalva a Move Event parancsot sokszor követi a Move All parancs. Minden utasítás a Move Event és a Move All között a mozgás alatt megy végbe, minden parancs a Move All után pedig a mozgás letelte után.
A most ismertetett Move All-tól eltéroen a Wait parancsnál meg kell határoznod a mozgás időtartamát. Ha nem csal meg a memóriám, akkor 0,6 másodperc körül van egy normális sebességen és frekvencián történő lépés.
Az előbbi példák így néznek ki Wait paranccsal:
<>Move Event: hero; up, down, left, right
<>wait 2.4 secs
<>Move Event: hero; up, up, up
<>Move Event: dog; down, down, down
<>Move Event: man1; wait, right, down, down, down, down
<>wait 3.6 secs
<>Move Event: hero; start jump, end jump, change graphic blink1, change graphic
Chara01
<>Show Face Graphic: Hero1
<>Show Message: Jajj! Megijesztettél!
<>wait 0.0 secs
A számok nem egy az egyben fedik le a pontos időtartamot, de lényeget jól szemléltetik. Egy kis tapasztalattal nagyjából be lehet lőni a jó számot, ezért érdemes gyakorolgatni ezt a parancsot.
A Move All így elsőre sokkal egyszerűbbnek tűnik, s ez így is van, ha egyszerűbb átvezetőket akarunk készíteni. Ha azonban valami bonyolultabbat szeretnénk látni, például ha azt akarod, hogy a két sétáló karakter egy bizonyos ponton kezdjenek csevegni, akkor érdemes a Waitet használni, mert a Mozgás – Move All – Duma – Mozgás – Move All – Duma kombó sokszori ismétlése elég fárasztó.
Látatjuk, hogy igazából egyik parancs sem jobb vagy rosszabb a másiknál, ki kell tapasztalni oket, s helyzettől függ, hogy melyik használata a kényelmesebb és célszerűbb.
6. fejezet - Képek
Hogy rakhatom a játékba a képeket?
Mekkora méretűek lehetnek a képek?
Hogy csinálhatom meg, hogy a kívánt szín legyen átlátszó (transparent)?
A fejezetben nem a játék közben megjelenített képekhez kapcsolódó parancsokat fogjuk tárgyalni, hanem a nyersanyagokat és a helyes kezelésüket.
Hogy működjenek a képek, 8bitesnek, 256 színűnek kell lenniük. Két módon rakhatod nyersanyagaid a játékba: vagy a Maker beépített importálójával, vagy manuális módon.
Maker segítségével:
A Makerben kattints az Import/Export gombra, amit az Adatbázis gombja körül kell megtalálnod. Válaszd ki a helyes mappát, keresd ki a képfájlt, amit importálni akarsz, majd kattints a megnyitásra. Felugrik egy ablak, ahol kiválaszthatod azt a színt a képről, amit átlátszónak akarsz hagyni. Ha megvan, kattints az okéra.
Manuálisan:
Ha van Idrawod, vagy más segédprogramod (természetesen a nagyágyúk is megfelelnek), akkor abban megszabhatod, hogy melyik színt akarod átlátszóként használni. Ha megvan, akkor másold be a játék által használt RTP mappába a képfájlt, a megfelelő helyre.
Ha gondod akadna a grafikák importálásával, akkor lehet, hogy a fájllal van a baj. Csak a 256 színű képfájlok működnek, és csak bizonyos méretek felelnek meg. Az adatokat pixelekben, azaz képpontokban közlöm:
- Backdrop (Harc háttér) – 320x240
- Battle Animation (Harci animáció) – 480x480, az animáció képkockái 96x96
- Charset (Karakterek) – 288x256, a mozdulatok pedig 24x32
- Chipset (A „padló”) – 480x256, minden kis mező 16x16
- Faceset (Arcok) – 192x192, minden arckép 48x48
- Game Over kép – 320x240
- Title (Címképernyő) – 320x240
- Picture és Panorama (Képek és panorámák) – 640x480, de lehet kisebb is
- Monsters (Szörnyek) – 320x160, de lehet kisebb is
- System – 160x80
A képek lehetnek png formátumban vagy a maker saját xyz formátumában.
7. fejezet - Egy kis matek
A kapcsolók működését nem nehéz megérteni: két állapotuk lehet, BE és KI (ON és OFF). Használatukkal bonyolult eseményeket készíthetsz, a kapcsolókról a negyedik fejezetben olvashatsz bővebben.
A változók kicsit bonyolultabbak, de ha már volt dolgod algebrával, akkor már változókkal is dolgoztál, ha nem is vetted észre.
Gondolj betűként a változóra. Van mondjuk egy „A” változód. Azt csinálsz „A”-val, amit akarsz. Ha azt akarod, hogy „A” legyen 500, akkor az „A” set 500 parancsot kell használnod. Ha el akarod osztani kettővel, akkor „A”/2 parancsot kell használnod, így „A” 250-et fog kitenni.
Mondjuk van egy „B” változód is, amivel mondjuk 5 és 10 közötti véletlenszerű számot akarsz jelölni, ez a rand „B” 5 to 10 paranccsal fog sikerülni.
Ha most össze akarod adni „A”-t és a „B”-t, akkor „A” + „B”-vel teheted meg.
Hogyan csinálhatok egy véletlenszerű eseményt?
Egy változót randomizálj egy és a lehetőségek maximális száma között, és használj elágazásokat vagy eseményoldalakat az egyes variációkra.
„A” változó „B” változóval történő elosztása utáni maradék.
A MODulus művelet az osztás maradékát határozza meg. Ha például 143-at elosztasz 6-tal, az 28,3. Van viszont a maradék, ami 5. Miért is? 23*6=138; 143-5=138, szóval ha „A”=143 és „B”=6,a akkor „A”mod”B”=5. Kapisgálod a lényeget?
Az elágazás az alapvető programozás alapja. Több irányba terelhetnek, mint mondjuk egy út elágazásai.
Mondjuk azt akarod, hogy egy NPC azt mondja, hogy „Takarodj, vesztes!”, ha a „pontszám” változód kisebb mint 3, egyébként meg azt, hogy „Remek voltál!”.
Lekódolva ez így néz ki:
if pontszam<3
<>message "Takarodj, vesztes!"
else
<>message "Remek voltál!"
Makerben így kell megcsinálni:
- Válaszd ki a „Fork condition” parancsot az eseményparancsok listájának harmadik oldalán.
- Választd ki a”Variable”-t, keresd ki a „Pontszam” változót, jelöld be a „Set”-et, ami legyen három.
- Gyozodj meg róla, hogy az „Add ELSE Case” ki van pipálva. Okézd le.
- Írd be a beszéd parancsokat a megfelelő helyekre.
8. fejezet - CMS/CBS
Mi az a CBS?
Mi az a CMS?
Hogy kezdjek CBS-t csinálni?
Nos, ezek a legidegesítobb kérdések, ráadásul válaszolni sem lehet rájuk, mert:
C: custom – házi készítésu
B: battle – harc
S: system - rendszer
C: custom – házi készítésu
M: menu - menü
S: system – rendszer
Láthatod, hogy custom, azaz házi készítésu, egyéni rendszerekről van szó, ami így minden játékban különböznek. Érdemes a következő dolgokat elsajátítani, hogy megtanulhass saját rendszert alkotni:
- Ismerd meg a Maker összes funkcióját (valószínűleg mindegyiket használni fogod).
- Készíts kisebb saját készítésu rendszereket tapasztalatszerzésként (minijátékok, ilyesmik).
- Gondolkodj! Ez a tanulás legjobb módja, ráadásul a dolgod is megkönnyíti.
Ne bánkódj, ha elsőre nem sikerül összehozni semmit! Nekem is csak a harmadik alkalommal készült használható rendszerem, és jelenleg a negyediken dolgozom. Szóval a próbálkozás, a hibák akár segíthetnek is. És az előre tervezés sem árt soha.
Semmiképp se ess kétségbe, segítségül íme egy nagyon rövid tutorial, ami tényleg csak az alapokat magyarázza meg, de segít a megfelelő irányba fejlodni. Ha nem érted meg, akkor még nem állsz készen egy saját rendszerre.
CBS alapok
Ha lecsupaszítunk bármilyen CBS-t, akkor megállapíthatjuk, hogy menük és elágazások fája alkotja a vázat. Szóval a CBS készítése nem olyan sokkal bonyolultabb mint saját menürendszert alkotni. (Az ABS-ek, azaz az Action Battle Systemek nem tartoznak ide. A klasszikus Zelda-jellegu harcrendszerekről beszélek, természetesen.)
Példaként, a BoF (Uriás megjegyzése: Breath of Fire nevű SNES és GameBoy konzolszerepjáték széria) harcrendszere egy menüvel nyit, amiben különféle lehetőségek közül válogathatunk. Opciókat kiválasztva almenükbe jutunk, ahol a harcoló feleknek oszthatunk ki parancsokat. Mindegyik szereplő cselekvése egy változóban, vagy tömbben lesz eltárolva, amiket aztán a rendszer ezeket sorban végrehajtja. Ez pedig főként az elágazásokon és az eseménylehívások használatán alapul.
Hogy elkészíts egy saját menüt, tisztában kell lenned az „Enter Password” paranccsal. „Show Choice” paranccsal is meg lehet oldani, de az nem olyan használható, mint elsőre tűnik. Íme egy nagyon egyszerű példa:
(Uriás megjegyzése: visszatérve a „Show Choice”-re egy pillanatra: aki az ilyen előre megírt szarokkal próbálkozik harcrendszer címén, mint a Redvulcano nevű csökevény, azt megb#&!#&@!@#&.)
Az Auto eseményen, ami 001 kapcsolóra indul:
<> Enter password ( var 001) all keys enabled, wait until input
<> Fork ( var 001 == 1)
<> var 002 - 1
<> end case
<> Fork ( var 001 == 4)
<> var 002 + 1
<> end case
<> Fork ( var 001 == 5)
<> Fork ( var 002 == 1 )
<> comment : első almenü
<> goto label 1
<> end case
<> Fork ( var 002 == 2 )
<> comment: második almenü
<> goto label 1
<> end case
<> Fork ( var 002 == 3 )
<> comment: harmadik almenü
<> goto label 1
<> end case
<> end case
<> label 1
Egy kis magyarázat. A kód egy „körforgásba” kerülhet, szóval addig ismétlodik, amíg ki nem lépnek belőle. A kód egy „Enter Password”-del indul, azaz billentyűlenyomásra vár. Az ezt követő elágazások azt vizsgálják, hogy melyik billentyűt ütötted le:
- Az első kettő elágazás a kurzor helyét változtatja meg. Gyakorlatilag a le/fel billentyűre reagál, és ennek megfelelően mozgatja a kurzor képét. A példakódban persze ez a mozgatás nem szerepel. Más elágazásokra is valószínűleg szükséged lesz, hogy a kurzor ne menjen túl a „határon”.
- A következő elágazás az Enter lenyomására reagál, azaz amikor kiválasztottuk a kívánt opciót. A benne lévo elágazások azt vizsgálják, hogy az Enter leütése előtt melyik lehetőséget választottuk, ezt a kettes számú változó segítségével.
Szóval a menüket, az opciókat, a kurzort képekbol kell összeraknod. Ez egyéni dolog, a stílusodtól függ, de maga a CBS főleg a kódolásról szól.
Érdemes kommenteket elhelyezned kódban, amiket a program nem vesz figyelembe, azonban te feljegyezheted bennük, hogy az adott szakasz mire jó, így ha vissza kell térned javítgatni egy régebbi kódot, könnyebb dolgod lesz.
Tömbök, megint bonyolult cucc (Nem kezdőknek való, de nem árt tudni)
Vegyük, hogy van öt hősöd, mindegyiknek van HP-ja, MP-je, maximum HP-ja, maximum MP-je. Ezt majd az ellenségekre is kiterjeszthető.
Négy tömbre lesz szükséged, egyenként ötös hosszúsággal.
Állapítsuk meg ezeket a tömböket a 101-105, 106-110, 111-115 és 116-110 tartó változókkal.
Gyakorlatilag:
101 – 1. hős HP
102 – 2. hős HP
...
105 – 5. hős HP
106 – 1. hős MP
...
111 – 1. hős max HP
...
116 – 1. hős max MP
Eddig elég könnyu.
Most jelölj ki két változót pointerként. Az első a hős indexét, sorszámát fogja jelölni. Ha a hármas hőssel dolgozol, akkor az értéke három lesz, hívjuk a változót AIndexnek.
A második a használni kívánt tömb elérését biztosítja, hívjuk Indexnek.
Mondjuk el akarod érni a jelenleg AIndexben tárolt hős HP-ját. AIndex a példánkban három, de itt egytől ötig bármi lehet.
Indexet állítsd százra, majd add hozzá AIndexet. 100+3=103, amelyik sorszámú változó pont a harmadik hős HP-ját tárolja.
A többi tömböt is így érheted el:
100 + AIndex = AIndex hős HP
105 + AIndex = AIndex hős MP
110 + AIndex = AIndex hős max HP
115 + AIndex = AIndex hős max MP
Ha esetleg nem tudtad: a "Change Variable” parancsnál a harmadik opció a „Variable no. Index", amivel a kiválasztott változó értékével egyenlo sorszámú változóval fog dolgozni. Érthetőbben: a fenti esetben 103 az Index, így a 103. változóval fog művelet végrehajtani.
Most pihenj egy kicsit, elég információ zúdult a nyakadba, hogy jobban megértsd, próbálgasd ki ezeket a funkciókat, szerezz tapasztalatot.
9. fejezet - Debuggolás
Mutatok pár hasznos fogást, ami talán az első lépés lesz ahhoz, hogy segítségkérés nélkül készíts játékot.
Bár a FAQ a 2000-es verzióhoz készült, de használható más Makerekben – vagy akár programnyelvekben – is, persze nyílván más formában.
először is, a következő segédbillentyűk használhatóak a teszt módban.
F4 - Teljes képernyő és ablak között vált (nem csak teszt módban).
F5 - Ablakos módban kis és nagy ablak közt vált (nem csak teszt módban).
F9 - Kapcsoló/Változó menü lehívása.
F12 - Kilép a főmenübe (nem csak teszt módban).
Ctrl - Nyomva tartásával átsétálhatsz mindenen, még az eveneteken is, azok figyelembe vétele nélkül, illetve a Random Encountereket is átlépi.
Shift - Azonnal szövegmegjelenítés.
Ezekkel könnyen és gyorsan tudsz tesztelni, ha például nem működik valami, akkor megnyomod az F9-et, és megnézheted, hogy be van-e egyáltalán kapcsolva a hozzá tartozó kapcsoló. Ebben a menüben kezelni is tudod a kapcsolókat és változókat.
Reméljük, hogy nem lesz ennél nehezebb dolgod. Persze erre igen kevés esély van, de elég eszed van ahhoz, hogy ez ne keserítsen el, először is próbáld ki az alábbi ötleteket:
- Bizonyosodj meg róla, hogy helyesen használod a parancsokat. A help fájl – no meg ez az útmutató – segíthet.
- Más módja annak, hogy megbizonyosodj arról, hogy egy esemény elindult-e, hogy kezdőparancsnak betolsz egy egyszerű, üres „Show Message”-t. Ha az üzenet előbukkan az esemény kezdete előtt, akkor elvileg rendben van. Ha nem tűnik fel, akkor máshol kell keresned a hibát. Ezt elágazásoknál is alkalmazhatod, hogy megbizonyosodj, a kód részei lefutnak-e. Ezt a trükköt akár más nyelvekben is kihasználhatod.
- Az F9-cel könnyen ellenőrizheted, hogy mi történik a kapcsolókkal és a változókkal. Ha valami baj van, lehet, hogy itt megtalálod a hibát. Ez a funkció segíthet a CBS-ek működésének vizsgálatában is.
Az előbb említett üres üzenetes trükkben is segíthet, hogy leellenőrizd, melyik változó vagy kapcsoló nem stimmel. - A kód egyes részeinek kitörlése sokat segíthet, hogy kivizsgáld, a kód melyik részével van a probléma. Ha nem akarsz kitörölni semmit, akkor ideiglenesen kivághatod oket egy semleges eseménybe, ami nem kerül végrehajtásra, vagy az üres szövegdobozos ötlettel jelölheted a kód egyes részeit, hogy tudd, mikor kell ellenőrizni az F9 menüt.
- Ha tényleg mindent ezerszer kipróbáltál, és semmi sem működik, akkor a probléma valószínűleg a legegyszerűbb és legprimitívebb részletben rejlik. Ez sokszor van így, még ha nem is hiszed el. Ráadásul ez minden egyes grafikus Makerre és rendes programnyelvre vonatkozik.
Remélem, a tesztelés során minél kevesebb hibát találsz, és azokat is ki tudod javítani ezekkel az egyszerű módszerekkel. Sok szerencsét, és remélem, még nem martad ki az összes hajhagymád.
Itt van azoknak a dolgoknak a listája, amikre mindenképpen oda kell figyelned a projected készítése közben. Idegesíto, apró dolgokról van szó, de akár napokig is tépheted miattuk a hajad, ha figyelmetlen vagy:
- Ha az események ID azonosítójával babrálsz, ne felejtsd el, hogy a Maker mindig a nagyobb ID-ju eseményt részesíti előnyben.
- Ha régebbi verziót használsz, akkor a HP változtatására vonatkozó parancs beállításinál ilyesmit olvashatsz: „Impossible death”, azaz a karakter nem halhat bele a HP csökkentésébe. Nos, ez valójában „Possible death” akar lenni, ami pont az ellenkezője. Szóval ha valakinek 1 HP-t akarsz beállítani, akkor ne jelöld be ezt az opciót és csökkentsd az életet 999-nel.
- Ha egy esemény mozog, akkor még a lépése kezdetén megváltozik a koordinátája, ezért az „On hero touch”-ra beállított események akkor is beindulhatnak, ha látszólag még nem érintkezett a hőssel.
- „Clear Timer” („Delete Event” egyes verziókban) törli az ot tartalmazó eseményt, amíg a hős el nem hagyja a térképet, ha az esemény egy „Parallel Process”. Ha „Auto Event”-ről van szó, akkor a kitörlés előtt lefuttatja a kódot végig. Ugyan ez igaz ha az esemény „Push Key”, „On Hero Touch” vagy „On Touch (Event, Hero)”. Kivételt képez az az eset, ha ciklus vagy hurok van a kódban, ami folytatódik a törlés után is.
- Az „Enter Hero Name” funkció hibája. Igen, van rá patch, mielőtt megkérdeznéd. Két verziót ismerek, az elsőben a karakterek furcsán, kettesével szerepelnek. Ez azért van, mert az eredeti japán jelek több helyet foglalnak a latin betűknél. A második verzióban elvileg ez is javítva van.
- Ha egy esemény különböző lapjai is elindulhatnak a beállított kapcsolók/változók hatására, akkor mindig a legmagasabb oldalszámú fog elindulni.
11. fejezet - Vegyes
Na, hát ez a fejezet sem valami hosszú.
- Filmbejátszások
- Képek, a magasabb sorszámú van feljebb
- Harci animáció
- A hős feletti események*
- A hőssel egy szinten lévo események*
- A hős alatt lévo események*
- A Chipset második rétege (csillag jelzésétől X-ig)
- A Chipset első rétege (csillag jelzésűtől X-ig)
- Panorámák
* Ha két esemény azonos rétegen találkozik, akkor az ID alapján dol el, hogy melyik lesz feljebb.