Tai rekisteröidy jo tänään!
Sivuja: [1]

Laskettelu peli

0 jäsentä ja 1 Vieras katselee tätä aihetta.
Aloitusviesti: 18. Elokuu 2018, 17:31 (muokannut Woffelson 24. Syyskuu 2018, 22:46)Peukku ylös +3Peukku alas -0
Vaikka Moduksen aiheessa lievästi jo manailinkin, ettei devailuille jäisi edelleenkään aikaa, niin ainakin nyt vielä ennen opiskelujen alkua innostuin vaihteen vuoksi suunnittelemaan vähän kevyempää laskettelupeliä. Siitä tulisi varmaan vähän samantyyppinen kuin se klassinen Dosin SkiFree, mutta tietenkin astetta nykyaikaisempi ja vaikka epärealistisestikin paljon nopeatempoisempi. (Viime aikoina on tullut taas pelailtua F-Zero GX:ää, mikä selittänee vauhtipuremani.)

Pähkäilin alkuun erään keskeisen pulman parissa, missä päädyin jo tosin ratkaisuun. Johtopäätös on vaan vielä käytännössä toteuttamatta. Käyty pohdinta alla:
Spoiler
Vaikka olenkin saanut aikaan tarkan ja realistisesti toteutettavissa olevan suunnitelman kasaan, yksi keskeinen kysymys on vielä ratkaisematta. Pohjautuisiko pelimoottori normaaliin vai old school arcade -mekaniikkaan? Moni varmaan saa kiinni, mitä jälkimmäisellä tarkoitan. Eli käytännössä pelaaja pysyy fiksatusti paikoillaan, samalla kun moottori kelaa ympäristöä eteenpäin. Normaalissa olisi tietenkin tähän nähden kopernikaanisempi käänne, eli pelaaja liikkuu objektina muiden joukossa eikä ole mitenkään maailman keskipisteenä.

Kuten voi arvata, näillä molemmilla malleilla on hyvät ja huonot puolensa, minkä takia en ole vielä päättänyt, millä menen. Molempiakin olisi toki mahdollista toteuttaa, mutta sitten joutuisin koodaamaan käytännössä kaksi eri moottoria. Niistä olisi vaikea saada yhdenmukaisia, jolloin niistä tulisi väistämättä kaksi eri peliä. Tällaiselta turhalta työltä haluaisin välttyä ja saada kaiken sujuvasti yhteen pakettiin.

Normaali:
+ Tarvittaessa tekoälylaskettelijat ja moninpeli olisi helppoja toteuttaa
+ Mäkiä pystyisi suunnittelemaan yksityiskohtaisesti aika helposti esim. GM:n room editorissa (joka tosin on kämäinen, kun edelleen "käytän" Studio 1:tä)

- Varsinkin nopeista mäistä tulisi helposti niin pitkiä, että niistä tulisi raskaita sekä suunnitella että laskennassa suorittaa
- Loputon random -generointi olisi tarvittaessa vaikea ellei mahdoton toteuttaa

Old school arcade:
+ Pitemmän päälle mäet olisivat koodissa helpompi käsitellä ja generoida vaikka loputtomiksikin
+ Peliin saisi rutkasti vauhdin tuntua, kun varsinaisia huone- yms. rajoituksia ei juuri olisi

- Mäkidesign ei ole mahdotonta, mutta saattaisi jäädä koodin varassa tönkön näköiseksi, ellen sitten loisi oman mäkieditorin...
- Tekoälyn ja moninpelin toteuttaminen olisi haastavampaa
Tulin siis pohdinnasta johtopäätökseen, että voin tehdä hybridimallin. Normaalin huoneen mekaniikkaa peli noudattaisi siinä määrin kuin kilpailijoiden välille tarvitaan välimatkaa, muttei yhtään sen enempää. Minua askarrutti, että miten saisin pelin kulkemaan niillä, ketkä jäisivät huoneen ulkopuolelle, mutta tajusin heistä huolehtimisen turhaksi: jos eivät pysy nopeimman vauhdissa, peli on heidän osalta sillä selvä! Tällä tavoin pelin ydinmekaniikka voisi jopa kehittyä tämän suhteellisen matkan voittamiseen eikä obsessoitua liikaa joistain tietyistä radoista. Niitäkin voisi toki tehdä ja silleen, mutta välimatka voisi olla niin sanotusti pelin koukku. (Moninpelin lisäksi pitäisi varmaan laskijatekoälykin koodata...)

Teknisesti laskijoiden nopeutta voisi laskea yhtäältä suhteellisena nopeutena nopeimmasta, joka asettaa pelin absoluuttisen nopeuden. Toisaalta nopeuden toinen osatekijä muodostuisi old school arcade -kelauksesta, jolla mäkeä generoidaan matkalla alaspäin. Sen nopeus määrittyy jälleen nopeimmasta laskijasta. Yksityiskohtiin en osaa vielä mennä, mutta trial and errorilla idea varmaan toteuttaessa hioutuisi näköisekseen. Riskejä tähän ratkaisuun varmasti sisältyy ja nopeuden muutoksista voisi odottaa pahimpien bugien listimisurakkaa...

Pelin pohja toimii jo nyt yksinkertaisilla liukureilla ja enköhän talveksi saa jonkinlaisen pelattavan version kasaan. Voisin tällä avauksella ehkä haastaa forkkaakin jouluskabaan, jos sellaisen järjestymiseen vielä löytyisi jengiltä puhtia. ;)

* Laskeee.png (57.05 kilotavua, 1026x751 - tarkasteltu 51 kertaa.)
2x
Tykkään
#1: 19. Elokuu 2018, 14:24Peukku ylös +1Peukku alas -0
Hohoo! Tuota mainitsemaasi SkiFree-laskettelupeliä olen itsekin joskus pienenä päässyt pelailemaan ja ainakin silloin se oli todella hauskaa. Tuo pelaajakeskinen ratkaisu on varmaan tosiaan paras, jos ideana on toteuttaa loputtomia ratoja, joskin "normaalillakin" voisi varmasti toteuttaa saman. Esimerkiksi niin, että kun hahmot lähestyvät huoneen alareunaa, tuhotaan kaikki niiden yläpuolella olevat objektit, siirretään kaikkia olemassa olevia objekteja ylös, niin että ne ovat taas huoneen yläreunassa, ja lopulta generoidaan loppu osa huoneesta taas täyteen tavaraa. Ainoa ongelma on se, jos joku pelaaja jää liian ylös kun muut ovat jo alhaalla, mutta kyseinen pelaaja voidaankin sitten hyvillä mielin eliminoida pelistä pois.

Ajattelitko että peli on täysin kiinni pelaajan laskettelutaidosta, vai voiko muita pelaajia häiritä esim. taklailemalla tai voiko radalta löytyä jotain power upeja tai vastaavaa?

Jaksamista projektin kanssa! Olen myös mukana jos täällä jotain kisoja järjestetään, niitä kun on jo ehtinyt tulla ikävä!
2x
Tykkään
Spoiler
#2: 21. Elokuu 2018, 12:57 (muokannut Woffelson 21. Elokuu 2018, 12:59)Peukku ylös +1Peukku alas -0
Itse kilttinä lapsena jouduin päiväkodissa lähinnä sivusta seuraamaan kun aktiivisemmat peliä pelaili, mutta kykenin meininkiin silti eläytyä. :roll: Mutta joo, ajattelin alkuun tehdä skill-based mekaniikat kuntoon ja sitten myöhemmin ehkä lisäilemään häirintämekaniikkoja, joita voisi sitten ehkä asetuksista vaihtaa halutessaan. Törmäyksistä kaatuminen voisi toki olla myös yksi häiriötekijä. Se voi toki haitata kaikkia, ellei kaada vain takimmaisen. Voi olla, että nämä häirintäratkaisut riippuu myös siitä millaisen AIn saan väännettyä. Tuosta objektien siirrosta lähinnä mietityttää, että se saattaisi luoda häiritseviä pätkähdyksiä aina kun sen suorittaa (tausta saattaisi hypätä eri kohtaan, hitaat saattaisivat eliminoitua liian arvaamattoman yhtäkkisesti jne.). Rajattomassa versiossa luonnostelin ratkaisuksi sellaista, että johtavan laskijan vertikaalinen nopeus jalostuu saman tien huoneen kelausnopeudeksi sen muuten mennessä nollaan. Ratkaisuun voi sisältyä riskejä, mutta vaikuttaisi yksinkertaisimmalta toteuttaa.

Tämä toki tarkoittaa, että kaikenlaisten valmismuuttujien ja fysiikkamoottorien käyttö on käytännössä poissuljettua. Kitkan kanssa minulla onkin ollut vielä pulmia ja haluaisin saada sen tosi hyvälle mallille. Varsinkin omien laskettelukokemusten ja lapsuuden jäämäkien perusteella intuitiossani on melkko tarkka idea siitä, miten mäkifysiikkojen tulisi ihanteellisesti toimia.

Eräs fysiikoihin ja skilleihin liittyvä tekijä on myös se, että olen suunnitellut peliin neljä tieriä, joista edistyneemmät vaativat enemmän kontrolleja jne. 1. Liukuri 2. pulkka/kelkka 3. sukset 4. lumilauta. Nämä tierit tulisivat peliin myös sitä mukaa, kun devauksessa edistyn. Pitää toivoa, että pääsen lumilautaan asti.
2x
Tykkään
#3: 04. Syyskuu 2018, 21:50Peukku ylös +0Peukku alas -0
Parin viikon kitka- ja motion_add-vektorihifistelyjen jälkeen päädyin viimeinkin koodaamaan tekoälyä. Sovelsin sille tällä forkallakin joskus postattua mainiota find_nearest-skriptiä muutamalla lisäehdolla. Kirjoitin sitten noin 14 riviä bottikoodia laskijaobjektille siinä odotuksessa, että tuskin se tällä vielä lähtee ollenkaan toimimaan. Vielä mitä, se lähti laskemaan jo minuakin paremmin! O_O Muutama juttu pitää siitä vielä säätää, mutta harvemmin käy näin hyvää säkää tekoälyjen kanssa. Vaikeusaste voi toki olla liian korkea nyt, mutta sitä onkin aina helpompi laskea kuin nostaa. Ainakaan tekoälyn perusjuttujen kasaamisessa ei tule nyt yhtä paljon viivästyksiä kuin noiden perusfysiikkojen kanssa tuli.

Seuraavaksi lähden koodaamaan noita moninpelialustoja (joko muita pelaajia tai tietokoneita vastaan). Siitä tulee varmaan haastavin osuus, kuten näistä aiemmista generointisuunnitelmaspekulaatioistakin voinee ennakoida.
2x
Tykkään
#4: 24. Syyskuu 2018, 22:45Peukku ylös +1Peukku alas -0
Discord-aivoriihen päätteeksi päätin siirtyä perustapaan tehdä huoneet, kun hoksasin että huoneresoluutio ei rajoitu, kun viewiä ohjaa koodilla. Huoneen koollakaan ei liene olevan väliä, joten yritän nyt luottaa, että optimointini toimii aktivointikoodien varassa. Niihin liittyen tein seuraavan isomman korjauksen tuossa toissa päivänä, joka ratkaisee abouttiarallaa 75% nykyisistä/tulevista optimointi-ongelmista. Piti vähän mäen reunoja hienosäätää, mutta pahimmat lagipiikit ainakin lähtivät. Voi toki olla, että noita aktivointikoodeja pitää vielä hienosäätää useampaan otteeseen, kun tällä hetkellä ne käytännössä pystyvät luomaan vain kahden laskijan ympärillä aktivoitavat alueet ja laskijoita ajattelin lisätä ehkä tuntuvastikin tulevaisuudessa.

Edelleen placeholderia, mutta kuvassa liukuri boi ownaa vaikka lasken paremmalla pulkalla. Näkyvien reunojen välimatkakin on muutettavissa, jos haluaa leveämmässä mäessä laskea. Numerot ilmoittavat kuljetun mäen pituuden ja välimatkan haastajaan. Pitänee muuttaa vielä metreiksi.

* Laskureillatoimivatlaskurit.png (291.78 kilotavua, 1025x768 - tarkasteltu 25 kertaa.)
1x
Tykkään
#5: 05. Lokakuu 2018, 20:55 (muokannut Woffelson 05. Lokakuu 2018, 21:36)Peukku ylös +2Peukku alas -0
Ensimmäisiä laskettelukausia jo avattiin Lapissa, laitetaanpa sitten sen kunniaksi pientä grafiikkapäivitystä. :P Olen siis hieman hahmotellut pelihahmoja kahteen tieriin (liukureihin ja pulkkiin). Kuten näkyy, tiereistä voi löytyä muunlaisiakin laskuvälineitä, kuten roskasäkkejä ja rattikelkkoja. Vaikka olisi yksinkertaisinta lyödä lukkoon noille tietynlaiset laskettelijahahmot (kuten spurgut roskapusseille), niin pidän vielä mahdollisuuden jonkinlaiseen hahmokustomointiin auki. Samasta syystä vaatteet jne. ovat nyt vielä valkoisia, koska niiden värejä pystyisi koodilla muuttamaan. Tällä hetkellä nuo spritet koostuvat siis viidestä tasosta, kaksi laskuvälineille ja kolme hahmolle. Voi olla, että päitä tulee eniten lopulta tehtyä, kun niissä on pienin vaiva. Esimerkiksi torsolle pitää jarrutus- ja kiihdytysframetkin erikseen piirtää (ovat käytössä gifin kolmannessa ja neljännessä hahmossa).

-+


Musiikeiksi olisi ehkä siistiä saada varsinkin nopeimpiin kenttiin jotain nopeatempoista DnB:tä. Saa nähdä mitä lopulta tulee. Muuten olen lähinnä optimoinut peliä ja listinyt bugeja, koodirintamalla ei siis mitään uutta vielä.

EDIT: Jaha, imgur sählää jotain. Saa nähdä saanko kuvan toimimaan...
No, laitoin varmuuden vuoksi liitteeksi siltä varalta, etten saa nyt linkkejä toimimaan. Zoomaaminen ei tosin sitten toimi.

Okei, suoraan linkkiin imgur laittaa oletuksena gifv ja piti vain se v poistaa... Tai valita asetuksista jatkossa original gif link.
3x
Tykkään
#6: 30. Lokakuu 2018, 19:30 (muokannut Woffelson 30. Lokakuu 2018, 19:35)Peukku ylös +0Peukku alas -0
Grafiikkaa on jo snadisti päivitelty. Myös kaverin ja pikkuveljen kanssa on tullut split screen moninpeliä testailtua ja ihan toimivalta konseptilta vaikuttaa, kun vähän vielä kehittää. Ohjaintukikin olisi jossain vaiheessa suunnitelmissa, niin olisi nelinpelikin käytännöllistä toteuttaa. Bugeja ja muuta tarvitsisi kuitenkin korjailla. Varsinkin moninpeliä ajatellen on tällä hetkellä vähän ikävä, kun kovissa vauhdeissa tuppaa laskijat menemään esteiden läpi, mikä mahdollistaa pientä kxiitinkiä. Pitäisi jotenkin kehittää törmäystarkistus kovempia nopeuksia varten... Tässä nyt kuitenkin vähän gifua yms. pelistä. Käännökset ja muut säätämiset vei animaatiosta näköjään vähän nopeutta, mutta ehkä saa jotain kuvaa fysiikoiden toimimisesta.



"GIF":
https://i.imgur.com/HEJhLYH.mp4

...imgur näköjään kääntää vähän isommat gifitkin mp4:ään, niin klikkailkaa auki siinä sitten. (Huoh)
Tykkään

Sivuja: [1]
 

Powered by SMF 2.0.11 | SMF © 2006–2009, Simple Machines LLC