Enterprise Forever

:HUN => Játékok => Topic started by: Tomato77 on 2019.February.28. 20:03:20

Title: Banana 2
Post by: Tomato77 on 2019.February.28. 20:03:20
Elkészült a Banana 2, az első rész folytatása. Itt már tudnak mozogni a minyonok, ők maguk szedegetik össze a banánokat a különböző szobákban a kukacok helyett. A kukacok is maradtak, van szerepük a játékban, de, hogy mi, az titok. :) A szobák között szabadon mozoghatunk, kivéve a kulcsos ajtókat: azokhoz meg kell találni a megfelelő színű kulcsot. A falakon nem lehet átmenni és a növényekre is vigyáznak a minyonok. Vannak szörnyek (kutya, halálfej, bűzfegyver), ezek energiát vesznek el. Lehet ellenük védekezni tűzgombbal eldobott banánhéjjal, de csak akkor, ha van nálunk banán. Két személyes módban egymást is akadályozzák a banánhéjak, viszont minden eldobott banánhéj után fogy a pontszámunk. Akkor nyerünk, ha az összes banánt felszedjük, illetve két személyes módban az győz, aki nem hal meg és több banánja van. Könnyítésként kikapcsolhatók a szörnyek, és a főmenüben "e"-t nyomva örök energiánk lesz, bár amúgy sem túl nehéz a játék.

Felvehető bigyók:
- Banánok: ezeket kell összegyűjteni.
- Szív: energiát ad.
- Törött szív: energiát vesz el.
- Kulcsok: ezekkel lehet kinyitni az ajtókat.
- Csillagok: ez vicces, mert megcseréli a minyonokat. Inkább két személyes módban érdekes, akkor ki lehet nyírni a másik minyont, de a banánokat is a másik játékosnak vesszük fel ilyenkor. :)
- Zsákbamacska: véletlenszerűen ad valamit, akár kulcs is lehet. Macska nem.

Gépigény: alap 4 MHz-es Enterprise 128K memóriával. 64K-val nem megy, mert három videoszegmenst és két adatszegmenst használ, és maga a program is két szegmensnyi hosszúságú.

Lehetnek még benne hibák, biztos, hogy lesz javítás, de muszáj volt feltölteni fórumtali előtt. :) Lacika talált múltkor egy hibát a Banana+ menüjében: a hiba valós, akkor jön elő, ha kilépésre "n"-t nyomunk, utána az info képernyő valóban egyből visszavált a menüre. A hibát a billentyűismétlés hibás értéke okozza. Abban már úgy marad, itt viszont kijavítottam. A program Z88DK SDCC fordítással készült, a C forrás elérhető, ha érdekel valakit. Kb. a fejlesztés harmadánál a szívbajt hozta rám, mert "no more memory" hibával megállt a fordítás. Azt hittem, kidobom a gépet az ablakon. Valószínűleg az volt a baj, hogy az egyik függvény nagy lett (a Game() és a Check_Objects() egyben volt), de kettészedve meggyógyult. Az objektumok, pl. létrák frissítése kissé egyedire sikerült. Próbáltam mentegetni a minyonok által letakart hátteret, de úgy nagyon darabos és lassú lett a mozgás, ezért inkább csak letörlöm nullás színnel, aztán ciklikusan újrarajzolom az objektumokat.

Nagy köszönet illeti az itteni csapatot, nélkületek nem tudtuk volna lánykámmal megcsinálni a programot. Sok segítséget kaptam a C fordításban, az LPT működésében, zene és digi hangok megvalósításában, assembly rutinokban, memóriakezelésben. Kislányom pedig a pályakészítésben, dallamokban és tesztelésben segédkezett, valamint rengeteg ötletet adott, pl. az eldobható banánhéjt is ő találta ki.
Title: Re:Banana 2
Post by: endi on 2019.February.28. 20:39:55
hú ez nagyon jó lett és szép! szerintem nem zavaró hogy úgy törli le a hátteret és rajzolja vissza.
tök jó hogy minden tök nagy és látványos!

a digi hangot javítsd ki hogy ne kattanjon!

amúgy van valami cél? van vége?
Title: Re:Banana 2
Post by: Tomato77 on 2019.February.28. 20:44:24
amúgy van valami cél? van vége?

Igen, össze kell szedni mind a 112 darab banánt.
Title: Re:Banana 2
Post by: gflorez on 2019.February.28. 20:52:16
Szép színes játék gyerekeknek és felnőtteknek.
Title: Re:Banana 2
Post by: nyuzga on 2019.February.28. 21:14:48
Tényleg jó. Kellően csavaros. Szörnyek nélkül végigjátszottam. :)
Title: Re:Banana 2
Post by: endi on 2019.February.28. 21:58:33
de hogy lehet felvenni a levegőben, illetve két növény között lévő kulcsokat???
Title: Re:Banana 2
Post by: Tomato77 on 2019.February.28. 22:32:16
Nem akarom megmondani, jöjjél rá. :) Fel lehet venni.
Title: Re:Banana 2
Post by: endi on 2019.February.28. 23:15:09
áhááá :)
95 banánnál járok, majd folytatom :)
Title: Re:Banana 2
Post by: szipucsu on 2019.February.28. 23:16:48
Ez nagyon jó! A zene is, a grafika is, a játékmenet is érdekesnek tűnik. Az direkt van, hogy ha egy ajtón bemegyünk, majd vissza, nem feltétlen ugyanoda jutunk, ahonnan jöttünk? Nagyon cseles.

Már csak 20 banán van hátra, snapshotba mentettem későbbre.
Title: Re:Banana 2
Post by: Tomato77 on 2019.March.01. 08:21:28
Az direkt van, hogy ha egy ajtón bemegyünk, majd vissza, nem feltétlen ugyanoda jutunk, ahonnan jöttünk?

Van ilyen is, meg olyan is,  hogy egészen az első szobákba visz vissza. De nem véletlenszerűen, hanem minden ajtó állandó szobába vezet. Ez egy kis nehezítés. A forrásban ki lehet bogozni, melyik ajtó hová vezet. A RoomOrig tömb tartalmazza az objektumokat szobákra bontva, a 8-as objektum az ajtó. A negyedik bájtot tízzel osztva kapjuk meg a szoba számát, illetve eggyel kevesebbet, mert a nullás szoba az első.
Title: Re:Banana 2
Post by: endi on 2019.March.01. 11:19:25
ötlet: lehetne úgy visszarajzolni a háttér objekteket, hogy csinálsz két sprite kirakó rutint, egyik a páros, másik a páratlan sorokat rajzolja ki a spriteból.
így 2x-es gyakorisággal rajzolhatod ki a hátteret, ugyanolyan sebességgel, a háttér objektek így persze "csíkosan" jelennek meg egyik frame-ben, de a következőben már teljesen.
Title: Re:Banana 2
Post by: Tomato77 on 2019.March.01. 11:32:51
Szerintem az bonyolultabb és lassabb rutin lenne. Most is két pixelenként mozog minden, hogy csak páros oszlopokra kerüljenek az objektumok, mert ha le voltak kezelve a páratlan pixelek is, úgy nagyon lassú volt: fél bájtokkal kellett bíbelődni a 16 színű módban.
Title: Re:Banana 2
Post by: endi on 2019.March.01. 11:42:04
Szerintem az bonyolultabb és lassabb rutin lenne. Most is két pixelenként mozog minden, hogy csak páros oszlopokra kerüljenek az objektumok, mert ha le voltak kezelve a páratlan pixelek is, úgy nagyon lassú volt: fél bájtokkal kellett bíbelődni a 16 színű módban.

akkor nem írtam le érthetően, teljesen másra gondolok :)
Title: Re:Banana 2
Post by: szipucsu on 2019.March.01. 11:53:54
Van ilyen is, meg olyan is,  hogy egészen az első szobákba visz vissza.
Vettem észre, kétszer is ügethettem vissza az első szobából. :D Nagyon rafinált az a szoba, ami tele van ajtókkal.
Nekem a Sorcery és az RX-220 keverékére emlékeztet leginkább a játék. Az ajtónyikorgás jó ötlet. Esetleg a másik szobába belépve a becsukódó ajtó is nyikoroghatna, mint a Sorcery-ben.
Tegnap éjjel még sikerült végigjátszani, szörnyek nélkül.
Kb. a 3. pályán be lehet esni az ajtó mellé, és ha nincs kulcs, beragad az ember.
A zenét is ti írtátok?
Mennyi ideig tartott a grafikai elemek megrajzolása, az egész kiszínezése? Nekem az Entersnake-kel ehhez kell a legtöbb idő. Pl. az ajtók is szépen meg vannak rajzolva.
Title: Re:Banana 2
Post by: Tomato77 on 2019.March.01. 12:24:12
Az ajtónyikorgás jó ötlet.
Eredetileg az ajtót animálni se akartam, csak jött az ötlet, hogy némelyik nyíljon kulccsal. Ha már kulcsos, akkor legyen látványos, amikor a kulccsal kinyílik, de annyira megtetszett az anim, hogy minden ajtóra rákerült, és akkor kapott hangot is.

A zenét is mi csináltuk. A lányom egy játék szintetizátoron találta ki azt, ami a játék alatt és a játék végén hallható, a menü zenéje pedig tőlem van: mosogatás és zuhanyozás közben mindig dünnyögök, és ez a dallam megtetszett. 

Kb. 4 hónap volt a teljes fejlesztés, tulajdonképp a Banana+ után egyből nekiálltunk. Maga a grafika kb. egy hónap lehetett. Egy-egy objektum hamar elkészült, a minyonok fázisaiból is sokat lehetett másolni, de mindig volt valami, amin módosítani kellett. A zene is eltartott egy ideig, mire megszólalt, ezt próbálgattam basic-ben, amikor a zene topikban kérdezősködtem múltkor, aztán Endi ötletével átirányítottam fájlba a SOUND: csatornát megnézni, hogy milyen szekvenciákat csinál. Volt még az elején nagyjából egy hónap szívás, mire elindult egyáltalán, mert hiába indultunk ki az előző részből, a memória használata teljesen át lett alakítva, és mindig felülírt valamit, amitől lefagyott. Nagyon össze kellett válogatni, hogy melyik szegmensen mi legyen, hogy elférjen, ez benne is maradt a forráskód végén kommentben. Bevált debug-olási módszer lett a keretszín váltogatása, abból láttam, hogy meddig jutott el. :) A harmadik rész sokkal egyszerűbb lesz, mert ez a szerkezet megmarad, "csak" a grafikát, zenét és a Game() rutint kell átírni. :) 

Feltöltöm ide, hogy a grafika hogyan készült Paintben, talán érdekes lehet. Bár ez lebuktat, hogy van egy rejtett képernyő is a programban. :) Aki először jelzi, hogy megtalálta és jön is a fórumtalira, kap egy doboz minyonos Tic-Tac-ot. :)
Title: Re:Banana 2
Post by: endi on 2019.March.01. 12:49:21
Nekem a Sorcery és az RX-220 keverékére emlékeztet leginkább a játék.

tök jó, nekem pont ez a két játék jutott eszembe :)
Title: Re:Banana 2
Post by: szipucsu on 2019.March.01. 13:59:58
Feltöltöm ide, hogy a grafika hogyan készült Paintben
Hát ez óriási! Persze, amúgy lehetett sejteni, hogy digi képek vannak ott, de akkor is.
Valamelyik zene, talán a játék közbeni, nagyon emlékeztet egy gyerekdalra, legalábbis néhány taktus belőle.
Poén, hogy a menüben odarakja a fényképet a belső botkormányról, ha kiválasztjuk.
Title: Re:Banana 2
Post by: endi on 2019.March.01. 14:31:49
jó ez a kép, így könnyen gyárthatunk új skineket, azaz új játékokat vele :)
Title: Re:Banana 2
Post by: IstvanV on 2019.March.01. 17:18:07
Kevésbé kattogó hangminta:

Ez a változat hibás volt, javítva: :oops:
[attachurl=1]
Title: Re:Banana 2
Post by: endi on 2019.March.01. 17:21:36
végigvittem, 110 banán.
de volt még 2 kulcsom!
Title: Re:Banana 2
Post by: szipucsu on 2019.March.01. 17:27:50
de volt még 2 kulcsom!
Mindenki gyűjtsön kulcsokat, és ha meglesz a 32, be tudunk menni az EP klubba.
Title: Re: Banana 2
Post by: Povi on 2019.March.03. 12:19:47
a zene a játék alatt hogy van megoldva? SOUND csatorna, vagy saját lejátszó rutin?
Title: Re: Banana 2
Post by: Tomato77 on 2019.March.03. 13:33:03
SOUND: csatorna, és minden ciklusban próbál escape szekvenciát küldeni rá. Ha nem sikerül, mert tele a puffer, akkor azt a hangot újra próbálja. A Next_Sound() funkció próbálja megszólaltatni a következő hangot.
Title: Re: Banana 2
Post by: endi on 2019.March.03. 13:37:29
SOUND: csatorna, és minden ciklusban próbál escape szekvenciát küldeni rá. Ha nem sikerül, mert tele a puffer, akkor azt a hangot újra próbálja. A Next_Sound() funkció próbálja megszólaltatni a következő hangot.

na ez nagyon érdekes infó! ritka az olyan játék ami az exos sound-ot használja zenéhez vagy akár hangokhoz is (most a basic programoktól eltekintve).
egyébként eléggé lassítja a programfutást sajnos... de itt ez nem érzékelhető, vagy nem zavaró, szóval tök jó!
Title: Re: Banana 2
Post by: Tomato77 on 2019.March.03. 13:46:44
ritka az olyan játék ami az exos sound-ot használja zenéhez vagy akár hangokhoz is
A következő is ilyen lesz, úgyhogy picit talán javítunk az arányon. :)

Amúgy nem vettem észre, hogy olyan nagyon lassítana. Egy hanghoz 12 bájtot kell a SOUND: csatornára küldeni. Itt három szól egyszerre, az 36 bájt hangonként. Egyetlen sprite kirajzolása ennél nagyobb adatmozgatást igényel. Lehet, hogy ha pergősebb lenne a zene és gyakrabban kellene írni a csatornára, akkor érezhető lenne.
Title: Re: Banana 2
Post by: geco on 2019.March.03. 13:58:23
Amúgy nem vettem észre, hogy olyan nagyon lassítana. Egy hanghoz 12 bájtot kell a SOUND: csatornára küldeni. Itt három szól egyszerre, az 36 bájt hangonként. Egyetlen sprite kirajzolása ennél nagyobb adatmozgatást igényel. Lehet, hogy ha pergősebb lenne a zene és gyakrabban kellene írni a csatornára, akkor érezhető lenne.
Nem feltétlenül a hangok bufferbe töltése, inkább az EXOS megszaktás, és hang lejátszás a lassító tényező, a Sorcery+-ban István trükkjével (már nem emlékszem pontosan, lehet az EXOS megszakítás kihagyásával? ) lett megoldva az escape szekvenciás zene, de még az is lassít, jól látható a scroll sebességének ingadozásán.
Title: Re: Banana 2
Post by: endi on 2019.March.03. 15:22:01
igen, sajnos minél pörgősebb a zene, annál jobban terheli a rendszert az exos...
a zene generátorommal lehet olyat generálni, ami teljesen használhatatlanná teszi a rendszert, annyira lassít :)
Title: Re: Banana 2
Post by: Tomato77 on 2019.March.05. 03:03:32
A Banana 2 javított, és talán végleges változata:

- István által kijavított, kattanás mentes "banana" hang szól benne. (Köszi, István!)
- Volt egy bug: felcserélt minyonoknál ha újra csillagokat vettünk fel, és már épp villogott a keret, akkor úgy maradt, ez javítva.
- A legfontosabb: utánanéztem, hogyan lehet a billentyűzetkezelést javítani, és a B5h porton keresztül a billentyűzet mátrix lekérdezésével sikerült megoldani, hogy a gombok nem akadnak össze a belső joy-jal. Így külső joystick nélkül is tud rendesen játszani két játékos. Ez a hiba a Banana+-ban is benne van, lehet, hogy azt is kijavítom.
Title: Re: Banana 2
Post by: szipucsu on 2019.March.05. 11:01:16
Két apróság:
Az I ate a plant felirat helyesen úgy lenne, hogy I have eaten a plant. (I've eaten a plant.) Mert a növény eltűnt, nincs ott, kihatással van a jelenre, hogy megette.
A menü zenéjének a végén esetleg, amikor csak a torzított hangon szól a dallam, magasabbra lehetne venni a hangmagasságot, elsőre mondjuk egy oktávval vagy egy kvinttel próbálkoznék. A torzított hangok alapból mélyebbek.
Title: Re: Banana 2
Post by: szipucsu on 2019.March.11. 23:49:56
Screenshotokból térkép nem lehetne a játékhoz?
Title: Re: Banana 2
Post by: Tomato77 on 2019.March.12. 09:22:05
Az Orlandós képernyőn egy térkép lett volna a minyonok kezében, de nagyon kicsi volt a hely, felismerhetetlen lett. Majd csinálok egy screenshot-ost, amin be lesznek jelölve a kulcsok, kukacok, és a hozzájuk tartozó ajtók, növények.
Title: Re: Banana 2
Post by: endi on 2019.March.12. 12:38:25
ezt a játékot nem lehetne cpc-re átírni?
Title: Re: Banana 2
Post by: szipucsu on 2019.March.12. 12:51:37
Majd csinálok egy screenshot-ost
Az jó lesz, kíváncsi leszek!

ezt a játékot nem lehetne cpc-re átírni?
Vagy akár Spectrumra (48k és/vagy 128k), vagy még Videotonra is lehetne próbálkozni. :D Nyilván az adott gép határai között. Úgy tudom, Tomato77 valami speciális környezetben írta a játékot, C nyelven, onnan talán nem olyan bonyolult más géphez optimalizálni és fordítani.
Title: Re: Banana 2
Post by: endi on 2019.March.12. 13:35:29
Vagy akár Spectrumra (48k és/vagy 128k), vagy még Videotonra is lehetne próbálkozni. :D Nyilván az adott gép határai között. Úgy tudom, Tomato77 valami speciális környezetben írta a játékot, C nyelven, onnan talán nem olyan bonyolult más géphez optimalizálni és fordítani.

hát, specyre azért sok munka lenne, mivel más a graf mód... cpc viszont hasonló, bár asszem a raszter színezés ott nem fog menni.
Title: Re: Banana 2
Post by: Tomato77 on 2019.March.12. 15:46:42
Ha kevés a hely képek tárolására, akkor használható lehetne az epcompress
Bevallom, nekem nem világos, hogyan működik: a memóriában folyamatosan tömörítve tárolja az adatokat, és csak azt csomagolja ki, amire épp szüksége van, vagy csak a diszken van tömörítve, és betöltéskor az egészet kicsomagolja, ekkor viszont ugyanúgy kell neki 7 szegmens. Igazából 128K-ban elfér, úgyhogy nem tervezem a tömörítést.
Title: Re: Banana 2
Post by: Tomato77 on 2019.March.12. 15:52:26
bár asszem a raszter színezés ott nem fog menni.
Meg úgy tudom, a CPC nem tud attribútum felbontást, a játékban pedig a teljes menü attribútum módban van.
Title: Re: Banana 2
Post by: Tomato77 on 2019.March.14. 09:49:29
Végigjátszottam a játékot. :) Közben mentegettem képeket. Igyekeztem úgy, hogy minden banán látható legyen. A fehér csíkok azt jelölik, melyik ajtó hová vezet (nem feltétlen oda-vissza, nyilazni nem volt kedvem), a sárga pedig azt mutatja, hogy melyik kukac melyik növényt eszi meg. A kulcsokat nem jelöltem be, a színük alapján látszik, melyik ajtót nyitják.
Title: Re: Banana 2
Post by: szipucsu on 2019.March.14. 10:20:55
mentegettem képeket
Eléggé összetett ez, sokféle útvonal van. Bonyolult lehet megcsinálni, hogy ha átlépsz egy szobába, ne csak a szoba koordinátáit változtassa meg eggyel, hanem teljesen más koordinátát adjon meg a szomszédos szobának. Gondolom, minden ajtóhoz meg van adva egy szám, ami a szoba számát jelzi, ahova az ajtó vezet. (Én egyszerűen csak X és Y koordinátákat adnék meg a szobáknak, és eggyel növelném/csökkenteném, amikor másik képernyőre lépünk.)
Minden képernyőn más a háttér és színátmenetes. Ezeknek a színátmeneteknek a kódjai megvannak neked külön leírva?
Title: Re: Banana 2
Post by: endi on 2019.March.14. 10:43:13
jó ez a térkép :)
nagyon hangulatos ez a játék, teljesen adja annak a kornak a hangulatát, amikor elkezdtünk számítógépezni
Title: Re: Banana 2
Post by: Tomato77 on 2019.March.14. 12:27:30
Ezeknek a színátmeneteknek a kódjai megvannak neked külön leírva?
Tessen nézni forráskódot! :) A Draw_Room() függvény elején vannak a színkódok, meg is van kommentezve, hogy melyik csoport melyik színű hátteret jelenti.
Title: Re: Banana 2
Post by: ergoGnomik on 2019.March.14. 13:12:43
Tessen nézni forráskódot! :) A Draw_Room() függvény elején vannak a színkódok, meg is van kommentezve, hogy melyik csoport melyik színű hátteret jelenti.
Ami, lássuk be, szipucsun, aki legjobb tudomásom szerint IS-BASIC only, nemigen fog segíteni. Esetleg adhatnál neki egy kicsi több iránymutatást, hogy könnyebben eligazodjon hol keresse és hogyan értse a vonatkozó részeket! Szerintem.
Title: Re: Banana 2
Post by: szipucsu on 2019.March.14. 13:15:55
Majd azért megnézem. Bár van egy módszer, amivel tudok színátmeneteket gyártani, de érdemes minél jobban betárazni.
Title: Re: Banana 2
Post by: Tomato77 on 2019.March.14. 23:19:04
Majd azért megnézem. Bár van egy módszer, amivel tudok színátmeneteket gyártani, de érdemes minél jobban betárazni.
Mindjárt a Draw_Room() függvény elején található a Col[] tömbben. Egy sor egy-egy színátmenet, mindegyik két pályán látható (2*12=24 pálya van):

0, 96, 68, 12, 44, 12, 68, 96,      // dark purple
0, 128, 16, 144, 2, 130, 18, 130,   // green
0, 64, 8, 72, 1, 65, 9, 65,         // red
0, 64, 192, 136, 24, 88, 17, 145,   // brown
13, 97, 232, 56, 112, 148, 70, 102, // pink - blue
0, 32, 224, 4, 196, 36, 228, 172,   // blue
0, 192, 24, 216, 3, 195, 27, 195,   // yellow
0, 96, 40, 12, 76, 108, 37, 101,    // purple
0, 132, 20, 148, 6, 176, 48, 128,   // cyan
7, 56, 192, 0, 64, 8, 72, 1,        // gray - dark red
120, 49, 120, 56, 28, 56, 120, 49,  // gray - brown
8, 136, 24, 16, 48, 160, 32, 40 };  // rainbow

A program "dithereli", hogy az egész képernyőt kitöltse és színátmenetnek tűnjön, ne csak 8 színnek egymás alatt.
Title: Re: Banana 2
Post by: szipucsu on 2019.March.15. 13:23:54
A program "dithereli", hogy az egész képernyőt kitöltse és színátmenetnek tűnjön, ne csak 8 színnek egymás alatt.
Köszi! A ditherelés azt jelenti, hogy a sötétebb szín után még visszajön a viágosabb szín újra egy kicsit?
Egyébként, ha csak egymás alatt vannak a színek, akkor is lehet, hogy jól nézne ki. De így is jó.
Title: Re: Banana 2
Post by: ergoGnomik on 2019.March.15. 19:42:34
A ditherelés azt jelenti, hogy a sötétebb szín után még visszajön a viágosabb szín újra egy kicsit?
Szigorúan véve nem pontosan ezt jelenti, a sötétebb után visszatérő világosabb szín csak az eljárás eredménye. Majd akik pontosabban értik kijavítanak, de a dithering lényege az, hogy a jelek digitális átalakítása során előálló zajokat mérsékelje az eredmény olyan módosításával, ami szándékoltan olyan zajt visz be, ami a lehetőségekhez mérten kioltja az átalakítás során keletkezett zajt. Zaj alatt az átalakítás korlátozott pontosságából eredő hibát kell érteni, amit a hallgató vagy néző valamilyen torzulásként érzékel.