Tai rekisteröidy jo tänään!
GameDev Suomi Pelinkehitys Esimerkit, moottorit & tutoriaalit
Fakerooms (aka Sovellettu kuvakulma) Päivitetty 15.10.2014
Sivuja: [1]

Fakerooms (aka Sovellettu kuvakulma) Päivitetty 15.10.2014

0 jäsentä ja 1 Vieras katselee tätä aihetta.
Aloitusviesti: 17. Elokuu 2012, 23:08 (muokannut Woffelson 20. Joulukuu 2015, 17:48)Peukku ylös +1Peukku alas -0
Yleistä
Tämä pelimoottori on eräästä vuosia sitten löytämästäni Zelda_Metroid_Examplesta pitemmälle jalostettu versio. Kuten nimistä voi päätellä, kyseessä on huoneiden vaihtomekanismi, joka on kyseisille peleille ominainen: Toiseen huoneeseen siirryttäessä kuvakulma harppaa askeleen toisen huoneen sisältä toiselle. Game Makerissä tämä kaikki kuitenkin tapahtuu yhdesamankokoisian Roomin sisällä. Tämä mekanismi on siten erittäin oivallinen epälineaarisille peleille, koska ei tarvitse murehtia pelaajan sijoittamisesta huonesiirtymissä.

Ominaisuuksia
Alkuperäisessä Zelda_Metroid_Examplessa oli joitakin rajoitteita: Huoneiden täytyi olla kuvakulman kokoisia ja siksi kaikkien piti olla samankokoisia. Kuvakulma liikkui siis ainoastaan huonesiirtymissä. Omassa versiossani huoneet voivat olla erikokoisia ja kuvakulma voi seurata pelaajaa vapaammin. Sittemmin olen yhdistänyt taannoisen BMUP-moottorinkin tähän, jolla pelistä saa 2,5 ulotteisen.

Vanhentunutta tietoa:
Spoiler
Tärkeä kehityskohde
Pahin rajoite, josta toivoisin vielä pääseväni on se, että moottori toimii vain, jos pelaajalla on neljä suuntaa kuljettavana. Ydinongelma on tiivistetysti se, että jos kuvakulma esim. seuraa pelaajaa ylös törmäten yläseinään, se ei pysty liikkua samalla sivulle vaikka tilaa olisi, koska kamera jumittaa yläseinään. Ratkaisuni oli siksi nelisuuntarajoitus, että jos pelaaja liikkuu horisontaalisesti, poissulkee se kameralta vertikaalisen liikkumisen jne. Varsinaista brainstormia aiheesta on käyty tässä töpössä.

Parannusehdotukset ja palautteet ovat toki suotavia.

PS. Kuvassa näkyvä sininen neliö on kamera. Siitä voi pistää visiblen pois päältä, mutta moottorin testaamisessa sen näkyvyys valaisee sen toimintaperiaatetta paljon paremmin.
Spoiler


Köykäinen esittelyvideo:  :D

Moottorin viimeisin versio on tässä!
Jatkojalostettu "Boomerang-versio"
4x
Tykkään
#1: 18. Elokuu 2012, 11:54Peukku ylös +0Peukku alas -0
Itselläni tämä oli joskus ennen muinoin yksi suurimmista ongelmista, ja yritin löytää sille ratkaisua pitkään. Tästä on varmaan monelle hyötyä ja halukkaat voivat kehittää sitä myös kahdeksansuuntaiseksi.
(Tai peräti 360-asteiseksi)
1x
Tykkään
Spoiler



#2: 14. Lokakuu 2012, 20:37Peukku ylös +0Peukku alas -0
Ai niin, isoja huoneita tehdessä kannattaa esim. soveltaa seuraavaa koodia vaikka pelaajan step-evetissä:
instance_deactivate_region(view_xview[view]-64,view_yview[view]-64,
view_wview[view]+120,view_hview[view]+120,false,true)
//deactivates everything outside of the view, prevents lag.
instance_activate_region(view_xview[view]-64,view_yview[view]-64,
view_wview[view]+120,view_hview[view]+120,true)
//makes sure everything inside of the view gets reactivated
Tykkään
#3: 06. Toukokuu 2013, 22:44Peukku ylös +0Peukku alas -0
En nyt tiedä, minnekä tämän postaisi, mutta kehittelin juuri simppelin koodin jolla ratkaisin ongelman, joka minua on vaivannut gemssiin rekisteröitymisestä lähtien jo vuoden! Se koskee käytännössä kaikkia pelimoottoreita (mukaan lukien tätä fakeroomsia), joita olen tänne postaillut. Lyhyesti siis: koodi tunnistaa viewin reunalla olevat seinät eikä siten hyppää niiden ulkopuolelle. Lisäksi fakeroomsissa ja piperooms moottorissani käyttämiäni suuria kameraobjekteja ei enää tarvita. Marsun papana riittää. Nyt pelaaja voi liikkua 360-astetta eikä huoneiden muotoakaan tarvitse liiemmin rajoittaa.

Kameraobjektin steppiin:
if collision_line(player.x+112,player.y,player.x-112,player.y, //Numero on puolet viewin leveydestä vähennettynä seinän paksuus
    obj_block_parent,false,true) x=xprevious
    else x=player.x
if collision_line(player.x,player.y+72,player.x,player.y-72, //Sama kuin edellinen, mutta korkeuden kanssa
    obj_block_parent,false,true) y=yprevious
    else y=player.y

En nyt muista oliko tuon fakeroomsin kuvakulma resoluutio tuo 256x176, joista nuo numerot määräytyvät (-16x blokit). Kannattaa joka tapauksessa soveltaa omat. Moottoriin en ole siis vielä koodia lisännyt, joten tämän tarkemmin tätä ei ole sovellettu. Olen kyllä testannut, että periaate toimii tässä ja muissa moottoreissa, ja olipa kyse sitten solideista seinistä tai ei. Esimerkiksi johonkin tasohyppelyynkin koodi sopisi kuvakulmaa rajaamaan, jos huoneita rajaa joillain erityisillä blokeilla.
Tykkään
#4: 06. Toukokuu 2013, 23:01Peukku ylös +0Peukku alas -0
Tämä example kiinnostaisi kovasti ja sille olisi käyttöä. Harmi vain, että minulla on GM8 käytössä. Eli olisiko mahdollista saada 8 versioon sopiva example  :???:
Tykkään
#5: 06. Toukokuu 2013, 23:12Peukku ylös +0Peukku alas -0
Joo, sittemmin olenkin jatkanut tämän kehittämistä kasilla, joten voisin koittaa pistää päivityksen lähiaikoina.
Tykkään
#6: 08. Toukokuu 2013, 19:53 (muokannut Woffelson 15. Lokakuu 2014, 23:14)Peukku ylös +1Peukku alas -0
Fakeroomsin uusi GM 8 versio uudistuksineen on täällä!

Tästä voi ladata. Lisäilen vielä aloituspostiinkin videon ym. sälän kera.

Tämä on 365. viestini ja nyt on tasan vuosi eli 365 päivää, kun rekisteröidyin tänne. Ensimmäiset viestini käsittelivät ongelmaa, joka on nyt tässä moottorissa korjattu. Kyllä sitä huomaa kuinka on gemssissä kasvanut koodaajana ja ihmisenä. Tai en tuosta jälkimmäisestä tiedä, mutta kiitoksia kaikille kuitenkin.  :)

EDIT: Linkki päivitetty, ks. aloitusviesti.
4x
Tykkään
#7: 09. Toukokuu 2013, 19:59Peukku ylös +0Peukku alas -0
Kiitoksia. Jos päätän käyttää tätä pelissäni niin annan kyllä crediitit  *->
1x
Tykkään
#8: 08. Tammikuu 2014, 18:09 (muokannut Woffelson 15. Lokakuu 2014, 23:15)Peukku ylös +0Peukku alas -0
Laitanpa tämän tännekin. Eli yhteisöprojektia varten väsätty moottorinriekale jatkaa samaa ideaa kuin tässä aiheessa aloitettu. Erotuksena aikaisempaan versioon:

-koodeja on ulkoasultaan siistitty ja kommentoitu enemmän
-eräs bugikorjaus
-GM-versio edelleen 8 yhteensopiva
-Perusliikkuminen toteutettuna: WASD, space hyppää, hiirestä heittää BUMERANGIN (voi ladata heittovoimaa pohjassa).
-Kyllä, tein ensimmäisen version myös bumerangista (se pyörivän banaanin näköinen kapistus), joka on aika veikeä mutta prototyyppi edelleen (välillä pyörii kuin ikiliikkuja).
-Pinkkien esteiden päälle hyppäämiselle haluaisin vielä löytää paremman ratkaisun, mutta toiminee nykyiselläänkin.

Moottori ist hier! (Päivitetty aloitusviestiin.)
Tykkään

Sivuja: [1]
GameDev Suomi Pelinkehitys Esimerkit, moottorit & tutoriaalit
Fakerooms (aka Sovellettu kuvakulma) Päivitetty 15.10.2014
 

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