Touhou Winterheart

Jaa meneillään olevat projektisi tai valmiit pelit muun yhteisön kanssa täällä.
Tsalop88
Member
Posts: 55
Joined: Fri Mar 20, 2009 2:35 pm
Location: Loppi

Re: Touhou Winterheart

Post by Tsalop88 »

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...
Pate5
Artist
Artist
Posts: 551
Joined: Tue Aug 28, 2007 4:53 pm
Location: Vantaa

Re: Touhou Winterheart

Post by Pate5 »

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...
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.
CoolBasic henkilökuntaa
Graafikko
Tsalop88
Member
Posts: 55
Joined: Fri Mar 20, 2009 2:35 pm
Location: Loppi

Re: Touhou Winterheart

Post by Tsalop88 »

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.
Tuota, tuota... Ei kyllä pidä paikkaansa ainakaan niissä kahdessa koneessa joihin olen Vistan asentanut (kyseessä on Vista Home Premium)
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:
Image
Tsalop88
Member
Posts: 55
Joined: Fri Mar 20, 2009 2:35 pm
Location: Loppi

Re: Touhou Winterheart

Post by Tsalop88 »

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.
Tsalop88
Member
Posts: 55
Joined: Fri Mar 20, 2009 2:35 pm
Location: Loppi

Re: Touhou Winterheart

Post by Tsalop88 »

Image

Pieni otos "Music roomista" seuraavat screenit käsittelevätkin sitten itse peliä.
Tsalop88
Member
Posts: 55
Joined: Fri Mar 20, 2009 2:35 pm
Location: Loppi

Re: Touhou Winterheart

Post by Tsalop88 »

Tein itselleni Blogin... Lisäksi päivitin ensimmäisen viestini vastaamaan projektin nykyhetkeä.
Tsalop88
Member
Posts: 55
Joined: Fri Mar 20, 2009 2:35 pm
Location: Loppi

Re: Touhou Winterheart

Post by Tsalop88 »

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...
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Touhou Winterheart

Post by otto90x »

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ä:

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 
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.
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
Taatero
Advanced Member
Posts: 384
Joined: Tue May 27, 2008 6:06 pm

Re: Touhou Winterheart

Post by Taatero »

Tsalop88 wrote:tekstiä
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.
[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.
Tsalop88
Member
Posts: 55
Joined: Fri Mar 20, 2009 2:35 pm
Location: Loppi

Re: Touhou Winterheart

Post by Tsalop88 »

otto90x wrote: Onko tuossa ongelmana se että on vaikea piirtää vai vaikea hallita koodillisesti noin pitkiä kuvasarjoja?
Hallinta ei tuota sinänsä ongelmia... Sen kuin vain pistää muistiin
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ä)...
m1c
Member
Posts: 65
Joined: Tue Aug 28, 2007 5:10 pm
Location: \o

Re: Touhou Winterheart

Post by m1c »

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]
Kyllä onnistuu! :) Esimerkki neljällä framella:

Code: Select all

testi = LoadAnimObject("media\map.bmp", 200, 150, 0, 4)
LoopObject testi, 0, 3, 0.01
Repeat
    DrawScreen
Forever
Pienoisena haittapuolena voidaan pitää että mikäli yksittäiset kuvarivit ovat paljonkin eripituisia tulee kuitenkin lyhyemmissä ladattua ne tyhjätkin ruudut joka toisaalta pidentää latausaikoja.

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.
Tsalop88
Member
Posts: 55
Joined: Fri Mar 20, 2009 2:35 pm
Location: Loppi

Re: Touhou Winterheart

Post by Tsalop88 »

@m1c: Kìitos avusta. Kokeilin juuri ladata ja se tosiaankin toimii...
Hehe, aina oppii uutta kun vain kehtaa kysyä.
Tsalop88
Member
Posts: 55
Joined: Fri Mar 20, 2009 2:35 pm
Location: Loppi

Re: Touhou Winterheart

Post by Tsalop88 »

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...
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Touhou Winterheart

Post by MaGetzUb »

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...
Jos teet 4 hahmolle nuo niin suosittelisin käyttämään funktioita. esim:

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 
Tuollaista koodinpätkää sitten kutsut kun luot ammusta.. En toki tiedä käytätkö ammuksissasi tyyppejä.. (Tottakai niitä pitää käyttää ;) )
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Tsalop88
Member
Posts: 55
Joined: Fri Mar 20, 2009 2:35 pm
Location: Loppi

Re: Touhou Winterheart

Post by Tsalop88 »

Hehe. Tottakai käytän tyyppejää - ja itse asiassa tuo voisi olla helpompi tapa toteuttaa se.
Muuten päivitin taas blogia ja yksi uusi screeni:

Image
Testaamassa tason alkuruutuja..
MikkoK
Devoted Member
Posts: 813
Joined: Thu Jun 05, 2008 2:13 pm
Location: City 17

Re: Touhou Winterheart

Post by MikkoK »

Eikös tuossa pitäisi olla että "What dangers waits behind it" En ole varma. :P 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ä.
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Touhou Winterheart

Post by phons »

Ei, koska puhutaan vaaroista eivätkä ne ole persoonia ja tuo on vielä monikossa...
Image
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Touhou Winterheart

Post by Awaclus »

phons wrote:eivätkä ne ole persoonia
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.

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.
Taatero
Advanced Member
Posts: 384
Joined: Tue May 27, 2008 6:06 pm

Re: Touhou Winterheart

Post by Taatero »

Chaosworm wrote:
phons wrote:eivätkä ne ole persoonia
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.

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.
Dangers on monikon 3. persoonassa, joten s-päätettä verbin lopussa ei käytetä.
[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.
Tsalop88
Member
Posts: 55
Joined: Fri Mar 20, 2009 2:35 pm
Location: Loppi

Re: Touhou Winterheart

Post by Tsalop88 »

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).
Post Reply