Touhou Winterheart
Re: Touhou Winterheart
Pieni päivitys:
Lisäsin alkuun graafisen valintaruudun resolle...
Se katsoo mitkä näistä neljästä resoista on mahdollista suorittaa kokoruutu-tilassa:
640x480 , 800x600 , 1024x768 , 1280x960
Lisäksi mahdollista valita ohjelman suorittaminen ikkunassa.
Lisäksi onnistuin poistamaan pelin alusta aika ikävän bugin eli sen pitkään
kestävän mustan ruudun, joka ilmeni ennen varsinaista latausruutua...
Lisäsin alkuun graafisen valintaruudun resolle...
Se katsoo mitkä näistä neljästä resoista on mahdollista suorittaa kokoruutu-tilassa:
640x480 , 800x600 , 1024x768 , 1280x960
Lisäksi mahdollista valita ohjelman suorittaminen ikkunassa.
Lisäksi onnistuin poistamaan pelin alusta aika ikävän bugin eli sen pitkään
kestävän mustan ruudun, joka ilmeni ennen varsinaista latausruutua...
Re: Touhou Winterheart
Ei kannata käyttää cb:n tunnistusta. Vistassa väittää että mikään näyttötila ei toimi, vaikka oikeasti toimivatkin. Anna mielummin käyttäjän itse valita näyttötila ensimmäisellä pelikerralla.Tsalop88 wrote:Pieni päivitys:
Lisäsin alkuun graafisen valintaruudun resolle...
Se katsoo mitkä näistä neljästä resoista on mahdollista suorittaa kokoruutu-tilassa:
640x480 , 800x600 , 1024x768 , 1280x960
Lisäksi mahdollista valita ohjelman suorittaminen ikkunassa.
Lisäksi onnistuin poistamaan pelin alusta aika ikävän bugin eli sen pitkään
kestävän mustan ruudun, joka ilmeni ennen varsinaista latausruutua...
CoolBasic henkilökuntaa
Graafikko
Graafikko
Re: Touhou Winterheart
Tuota, tuota... Ei kyllä pidä paikkaansa ainakaan niissä kahdessa koneessa joihin olen Vistan asentanut (kyseessä on Vista Home Premium)Pate5 wrote: Ei kannata käyttää cb:n tunnistusta. Vistassa väittää että mikään näyttötila ei toimi, vaikka oikeasti toimivatkin. Anna mielummin käyttäjän itse valita näyttötila ensimmäisellä pelikerralla.
Se jopa tunnisti resoluution jota näytönohjain ei näennäisesti tue (640x480 - pienin "tuettu" oli 800x600)
Sitä paitsi käyttäjä itse valitsee reson... Alkuruudussa vain näytetään mitkä niistä peli tunnistaa.
Screeni:
Re: Touhou Winterheart
Uusia lisäyksiä pelimoottoriin...
Music room toimii viimeinkin...
Koodi tarkastaa kuinka pitkälle pelaaja on päässyt ja sen perusteella
näytetään kappaleet, joita voidaan soittaa.
Lisäksi korjasin funktiot, jotka lataavat/tallentavat hiscoren sekä
lisäsin funktion pelaajan omien asetusten (äänen voimakkuus/näppäimet)
lataamiseen ja tallentamiseen...
Tältä osin pelimoottori on demoa varten kasassa... Enää puuttuu vain
tasojen tekeminen vihollisineen päivineen.
Music room toimii viimeinkin...
Koodi tarkastaa kuinka pitkälle pelaaja on päässyt ja sen perusteella
näytetään kappaleet, joita voidaan soittaa.
Lisäksi korjasin funktiot, jotka lataavat/tallentavat hiscoren sekä
lisäsin funktion pelaajan omien asetusten (äänen voimakkuus/näppäimet)
lataamiseen ja tallentamiseen...
Tältä osin pelimoottori on demoa varten kasassa... Enää puuttuu vain
tasojen tekeminen vihollisineen päivineen.
Re: Touhou Winterheart
Tein itselleni Blogin... Lisäksi päivitin ensimmäisen viestini vastaamaan projektin nykyhetkeä.
Re: Touhou Winterheart
Pienoinen päivitys:
Viimeiset pari päivää on mennyt koodin siistimiseen...
Vanha koodi latasi jokaisen pelaajan/vastuksen/yms. framen erillisenä
objektina... Nyt framet ovat liitetty yhteen animoituun objektiin ja
koodi vain näyttää tarvittavan framen...
Varsinkin bonus-esineiden ja luotien käsittely helpottui huomattavasti
kun koodin ei tarvitse käsitellä jokaista asiaa itsenäisesti vaan se voi
vain muuttelee objektin parametrejä tapauskohtaisesti (Hehe, aika monimutkaisesti
sanottu - mutta tärkeintähän on, että homma toimii ja koodi pysyy kompaktina).
-
Tästä tulikin mieleeni... Framethan sijaitsevat kuvassa yleensä näin:
[1f , 2f, 3f, 4f, ...nf]
Onko CoolBasicissa mahdollista lataa frameja kuvasta, jossa ne on aseteltu
näin (eli eräänlaisena taulukkona):
[1f, 2f, 3f,]
[4f, 5f,...nf]
No... Eihän tuolla sinänsä mitään väliä ole mutta tulee vain erittäin leveitä
spritejä kun yksi object sisältää vähintää seuraavat framet:
3-5xLeft, 3-5xStill, 3-5xRight, 3-5xShoot, 6xFade, yms...
Jos framen koko on 30px*36px niin objektin koko olisi: n.780x36
Hehe... Pitäneepä yrittää koodata funktio, joka lukee frameja kuvasta taulukkoon...
Viimeiset pari päivää on mennyt koodin siistimiseen...
Vanha koodi latasi jokaisen pelaajan/vastuksen/yms. framen erillisenä
objektina... Nyt framet ovat liitetty yhteen animoituun objektiin ja
koodi vain näyttää tarvittavan framen...
Varsinkin bonus-esineiden ja luotien käsittely helpottui huomattavasti
kun koodin ei tarvitse käsitellä jokaista asiaa itsenäisesti vaan se voi
vain muuttelee objektin parametrejä tapauskohtaisesti (Hehe, aika monimutkaisesti
sanottu - mutta tärkeintähän on, että homma toimii ja koodi pysyy kompaktina).
-
Tästä tulikin mieleeni... Framethan sijaitsevat kuvassa yleensä näin:
[1f , 2f, 3f, 4f, ...nf]
Onko CoolBasicissa mahdollista lataa frameja kuvasta, jossa ne on aseteltu
näin (eli eräänlaisena taulukkona):
[1f, 2f, 3f,]
[4f, 5f,...nf]
No... Eihän tuolla sinänsä mitään väliä ole mutta tulee vain erittäin leveitä
spritejä kun yksi object sisältää vähintää seuraavat framet:
3-5xLeft, 3-5xStill, 3-5xRight, 3-5xShoot, 6xFade, yms...
Jos framen koko on 30px*36px niin objektin koko olisi: n.780x36
Hehe... Pitäneepä yrittää koodata funktio, joka lukee frameja kuvasta taulukkoon...
-
- Advanced Member
- Posts: 349
- Joined: Mon Aug 27, 2007 9:00 pm
- Location: Lapinjärvi, Finland
- Contact:
Re: Touhou Winterheart
Kannattaa muuten muistaa että CoolBasicissa framejen numerointi alkaa nollasta, jolloin viimeinen on framemäärä-1.
Onko tuossa ongelmana se että on vaikea piirtää vai vaikea hallita koodillisesti noin pitkiä kuvasarjoja?
Tein nimittäin tuohon framejen kanssa säätämiseen tein joskus kauan sitten tälläisen systeemin, jolla voi nimetä animaation osat ja tällöin niitä voi kutsua nimellä eikä numerolla. Tämä luonnollisesti vaikuttaa paljon animaatiota tarvitsevassa pelissä nopeuteen (merkkijonojen käsittely hitaampaa kuin kokonaislukujen), mutta käyttömukavuus on aivan omaa luokkaansa.
Tässä esimerkki tuosta systeemistä:
EDIT: Tuota funktiota ei ehkä kuitenkaan kannata käyttää sellaisenaan missään projektissa, kun sitä ei ole loppuun asti mietitty. Sillä ei onnistu animointi "väärään" suuntaan pienemmästä framenumerosta suurempaan, eikä monta framea sisältäviä jaksoja voi soittaa kerran, vaan ainoastaan loopata. Myös soitettavien animaatio luuppien määrä olisi jossain tapauksessa hyvä päästä määrittämään ja muistipalojen käyttöä kannattaisi harkita animaatiodatan tallennukseen.
Onko tuossa ongelmana se että on vaikea piirtää vai vaikea hallita koodillisesti noin pitkiä kuvasarjoja?
Tein nimittäin tuohon framejen kanssa säätämiseen tein joskus kauan sitten tälläisen systeemin, jolla voi nimetä animaation osat ja tällöin niitä voi kutsua nimellä eikä numerolla. Tämä luonnollisesti vaikuttaa paljon animaatiota tarvitsevassa pelissä nopeuteen (merkkijonojen käsittely hitaampaa kuin kokonaislukujen), mutta käyttömukavuus on aivan omaa luokkaansa.
Tässä esimerkki tuosta systeemistä:
Code: Select all
hahmo=LoadAnimObject2("Media\zerorun1.bmp","leveys=47|korkeus=51|alku=0|pituus=13","seiso=0|juokse=2-11|hyppää=12",0)
Repeat
If KeyDown(cbkeyup) Then
PlayObject2(hahmo,"hyppää")
ElseIf KeyDown(cbkeyright) Then
PlayObject2(hahmo,"juokse",0.15)
Else
PlayObject2(hahmo,"seiso")
EndIf
DrawScreen
Forever
Function LoadAnimObject2(polku$,animation$,_steps$,_rot=0)
If FileExists(polku$) Then
width=int(readsetup(animation$,"leveys","|"))
height=int(readsetup(animation$,"korkeus","|"))
alku=int(readsetup(animation$,"alku","|"))
loppu=int(readsetup(animation$,"pituus","|"))
If width And height And loppu Then
Objekti=LoadAnimObject(polku$,width,height,alku,loppu,_rot)
ObjectString Objekti,"alku="+alku+"|"+"loppu="+(loppu-1)+"|"+_steps$
Else
Objekti=LoadObject(polku$,_rot)
EndIf
Return Objekti
EndIf
End Function
Function PlayObject2(_obj,_animaatio$,_speed#=0.1,_con=0)
anim$=readsetup(ObjectString (_Obj),_animaatio$,"|")
If CountWords(anim$,"-")>1 Then
LoopObject _obj,Int(GetWord(anim$,1,"-")),Int(GetWord(anim$,2,"-")),_speed#,_con
ElseIf CountWords(anim$,"-")=1 Then
PlayObject _obj,Int(anim$),Int(anim$),_speed#,_con
ElseIf CountWords(anim$,"-")=0 Then
PlayObject _obj,Int(anim$),Int(anim$),_speed#,_con
EndIf
End Function
Function ReadSetup(_setup$,_entry$,_erotin$=" ")
lenght=CountWords(_setup$,_erotin$)
For i=1 To lenght
word$=GetWord(_setup$,i,_erotin$)
If Lower(GetWord(word$,1,"="))=Lower(_entry$) Then Return Lower(Str(GetWord(word$,2,"=")))
Next i
Return ""
End Function
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
Runoblogi, vuodatusta ja sekoiluja.
Re: Touhou Winterheart
Jos pidät jokaisen framen neliönä, voidaan tehdä funktio, joka tekee kuvasta n määrän frameja imageheight() -komennon avulla. Kyllähän ne voi suorakulmioinakin tehdä, mutta sillion pitää manuaalisesti säätää enemmän.Tsalop88 wrote:tekstiä
[color=#40BF00][u]koodaaja[/u][/color] wrote:Täyden turvan takaamiseksi avain olisi myös kuljetettava offlinenä suoraan tulevien viestien lähettäjältä niiden vastaanottajalle laitakaupungin hämärissä yöneljältä ja varmistettava, ettei kumpaakaan osapuolta seurata. Popliinitakkia suositellaan.
Re: Touhou Winterheart
Hallinta ei tuota sinänsä ongelmia... Sen kuin vain pistää muistiinotto90x wrote: Onko tuossa ongelmana se että on vaikea piirtää vai vaikea hallita koodillisesti noin pitkiä kuvasarjoja?
framejen numerot (esim. 0-4=left, 5-9=right yms...)
Ongelma on lähinnä käytettävyydessä... Kun sinulla on esim. 30 erilaista
framea sarjassa ja niiden koko on vaikka 64x64 (eli normaali FPS-sprite tyyliin
Wolfenstein, Ken's labyrinth etc..) niin se on vain jotenkin puuduttavampaa
käsitellä 1920x64 kokoista kuvaa kuin 384x320 kuvaa (Varsinkin jos käyttää
MS-Paintia työkaluna kuten minä)...
Re: Touhou Winterheart
Kyllä onnistuu! Esimerkki neljällä framella:Tsalop88 wrote: Tästä tulikin mieleeni... Framethan sijaitsevat kuvassa yleensä näin:
[1f , 2f, 3f, 4f, ...nf]
Onko CoolBasicissa mahdollista lataa frameja kuvasta, jossa ne on aseteltu
näin (eli eräänlaisena taulukkona):
[1f, 2f, 3f,]
[4f, 5f,...nf]
Code: Select all
testi = LoadAnimObject("media\map.bmp", 200, 150, 0, 4)
LoopObject testi, 0, 3, 0.01
Repeat
DrawScreen
Forever
Hienoa jälkeä BTW, kerrankin kunnolla suunnitelmallisuutta. Harmi että tälläiset projektit keräävät yleensä vähemmän kommentteja, kuin sellaiset mistä löytyy roppakaupalla nipotettavaa.
Re: Touhou Winterheart
@m1c: Kìitos avusta. Kokeilin juuri ladata ja se tosiaankin toimii...
Hehe, aina oppii uutta kun vain kehtaa kysyä.
Hehe, aina oppii uutta kun vain kehtaa kysyä.
Re: Touhou Winterheart
Jälleen pieni päivitys:
Kirjoitin jokaiselle hahmolle erillisen ampumarutiinin...
Miksi? Siksi, että se helpottaa pelaajasta riippuvien erilaisten
"ampumistyylien" käsittelyä...
Touhoussahan jokaisella pelattavalla hahmolla on 2-3 erilaista
ampumistyyliä (esim. laajalle leviävät heikot panokset/ keskitetyt vahvat panokset).
Pelissä on neljä hahmoa ja jos oletetaan, että jokaisella on kaksi erilaista
tyyliä - se tekee 8 erilaista tapaa käsitellä luoteja.
Tästä syystä on helpompaa jos on neljä erillistä subia, joista jokainen käsittelee
kahta eri tyyliä kuin yksi subi, joka joutuu tarkastamaan hahmon ja valitun tyylin
ja sen perusteella arpomaan kuinka se vaikuttaa luotejen käyttäytymiseen...
Kirjoitin jokaiselle hahmolle erillisen ampumarutiinin...
Miksi? Siksi, että se helpottaa pelaajasta riippuvien erilaisten
"ampumistyylien" käsittelyä...
Touhoussahan jokaisella pelattavalla hahmolla on 2-3 erilaista
ampumistyyliä (esim. laajalle leviävät heikot panokset/ keskitetyt vahvat panokset).
Pelissä on neljä hahmoa ja jos oletetaan, että jokaisella on kaksi erilaista
tyyliä - se tekee 8 erilaista tapaa käsitellä luoteja.
Tästä syystä on helpompaa jos on neljä erillistä subia, joista jokainen käsittelee
kahta eri tyyliä kuin yksi subi, joka joutuu tarkastamaan hahmon ja valitun tyylin
ja sen perusteella arpomaan kuinka se vaikuttaa luotejen käyttäytymiseen...
Re: Touhou Winterheart
Jos teet 4 hahmolle nuo niin suosittelisin käyttämään funktioita. esim:Tsalop88 wrote:Jälleen pieni päivitys:
Kirjoitin jokaiselle hahmolle erillisen ampumarutiinin...
Miksi? Siksi, että se helpottaa pelaajasta riippuvien erilaisten
"ampumistyylien" käsittelyä...
Touhoussahan jokaisella pelattavalla hahmolla on 2-3 erilaista
ampumistyyliä (esim. laajalle leviävät heikot panokset/ keskitetyt vahvat panokset).
Pelissä on neljä hahmoa ja jos oletetaan, että jokaisella on kaksi erilaista
tyyliä - se tekee 8 erilaista tapaa käsitellä luoteja.
Tästä syystä on helpompaa jos on neljä erillistä subia, joista jokainen käsittelee
kahta eri tyyliä kuin yksi subi, joka joutuu tarkastamaan hahmon ja valitun tyylin
ja sen perusteella arpomaan kuinka se vaikuttaa luotejen käyttäytymiseen...
Code: Select all
Function Ammu(hahmo,tyyli)'Hahmo, jolle ammus luodaan, tyyli on panoksen panoksen tapa (esim leviävä, mutta heikko tai tehokas, muttei leviä..)
Select tyyli
Case 1 'rutiini 1..
..Koodia...
Case 2 'rutiini 2..
..Koodia...
Case 3 'rutiini 3..
..Koodia...
Endselect
Endfunction
Solar Eclipse
We're in a simulation, and God is trying to debug us.
Re: Touhou Winterheart
Re: Touhou Winterheart
Eikös tuossa pitäisi olla että "What dangers waits behind it" En ole varma. Ja hienolta näyttää kyllä peli.
Code: Select all
#aha. @ IRCNet
<Grandi> Voit laittaa jo valmiiks hailaittiin "Amis-Mikko", koska alan kutsua sua sillä nimellä.
Re: Touhou Winterheart
Ei, koska puhutaan vaaroista eivätkä ne ole persoonia ja tuo on vielä monikossa...
Re: Touhou Winterheart
Tämä taas ei liity millään tavalla tähän. Se liittyy siihen, tuleeko omistusmuodossa 's -pääte vai etuliite of. Vaikka siinä olisi "What danger waits behind it?", se olisi ihan oikein, riippumatta siitä, onko vaara persoona vai ei.phons wrote:eivätkä ne ole persoonia
Asiaan: peli näyttää äärimmäisen hienolta ja odotan ensimmäistä versiota innolla. Ainoa muutos, mitä toivoisin on se, että älä käytä Comic Sansia vaan jotain muuta fonttia.
EDIT:
@ Taatero: Niin, monikossa ei tule s-päätettä ja tuossa pelissä se on ihan oikein. Minun pointtini olikin se, että oli kyse persoonasta tai ei, yksikössä tulee s-pääte predikaatin loppuun ja monikossa subjektin.
Last edited by Awaclus on Sun Apr 26, 2009 1:33 pm, edited 1 time in total.
Re: Touhou Winterheart
Dangers on monikon 3. persoonassa, joten s-päätettä verbin lopussa ei käytetä.Chaosworm wrote:Tämä taas ei liity millään tavalla tähän. Se liittyy siihen, tuleeko omistusmuodossa 's -pääte vai etuliite of. Vaikka siinä olisi "What danger waits behind it?", se olisi ihan oikein, riippumatta siitä, onko vaara persoona vai ei.phons wrote:eivätkä ne ole persoonia
Asiaan: peli näyttää äärimmäisen hienolta ja odotan ensimmäistä versiota innolla. Ainoa muutos, mitä toivoisin on se, että älä käytä Comic Sansia vaan jotain muuta fonttia.
[color=#40BF00][u]koodaaja[/u][/color] wrote:Täyden turvan takaamiseksi avain olisi myös kuljetettava offlinenä suoraan tulevien viestien lähettäjältä niiden vastaanottajalle laitakaupungin hämärissä yöneljältä ja varmistettava, ettei kumpaakaan osapuolta seurata. Popliinitakkia suositellaan.
Re: Touhou Winterheart
Hmm... Pitänee katsoa josko siihen paremman fontin löytäisi.
Päädyin käyttämään Comic Sansia koska se oli ainoa natiivifontti,
jossa oli tarpeeksi pyöreyttä.
Tosin Book Antiqua:kin on ihan kiva (Pitänee palata käyttämään
Arialia sillä se on aika perusfontti).
Päädyin käyttämään Comic Sansia koska se oli ainoa natiivifontti,
jossa oli tarpeeksi pyöreyttä.
Tosin Book Antiqua:kin on ihan kiva (Pitänee palata käyttämään
Arialia sillä se on aika perusfontti).