Optimointia?
Optimointia?
Oliskohan jollakulla vinkkejä pelin koodin optimointiin? Peli käy turhan helpoksi, kun viholliset liikkuvat "kävelyvauhtia!". Olen yrittänyt muutella peräkkäisiä if-rivejä Select-case -muotoon ja yhdistellä peräkkäisiä for-next -silmukoita, mutta nämä muutokset eivät kuitenkaan muuta ohjelman suorittamiseen kuluvaa aikaa.
-
- Member
- Posts: 60
- Joined: Sun Sep 09, 2007 8:46 pm
Re: Optimointia?
Siis en ihan ymmärtäny mitä ajat takaa ? "Viholliset menee kävely vauhti" mitä tarkoitat ne ovat liian hitaita,ne lagaavat ? siis kuinka ne liikkuvat kävely vauhtia ? nopeuta niitä ?
edit: omG, heh ymmärsin väärin. En lukenut tuota otsikkoa.
edit: omG, heh ymmärsin väärin. En lukenut tuota otsikkoa.
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Optimointia?
Pistähän moveobjectin jälkeen suurempi luku kuin 1. Aika epätodennäköistä, että se noin paljoa hidastelee. Millä fps:llä ohjelma pyörii?VesaP wrote:Oliskohan jollakulla vinkkejä pelin koodin optimointiin? Peli käy turhan helpoksi, kun viholliset liikkuvat "kävelyvauhtia!". Olen yrittänyt muutella peräkkäisiä if-rivejä Select-case -muotoon ja yhdistellä peräkkäisiä for-next -silmukoita, mutta nämä muutokset eivät kuitenkaan muuta ohjelman suorittamiseen kuluvaa aikaa.
Re: Optimointia?
Hidastavatko monet fieldit typessä ohjelmaa pahasti? Pelini vihollisilla on nyt 17 fieldiä...
Re: Optimointia?
Peli pyörii tällä kannettavalla, jolla sitä olen kyhännyt, noin 60 fps, mutta sillä koneella, jolla sitä pitäisi käyttää, nopeus on n. 32 fps. (Framelimit pois päältä).
Ihanne olisi siinä neljänkymmenviiden lähellä. Kokeilen nyt seuraavaksi vaihtaa koneeseen uuden näytönohjaimen, siinä kun on pelkkä integroitu emolla. Harmi vain, että pitää työpaikan konetta päivittää omilla osilla...
Ihanne olisi siinä neljänkymmenviiden lähellä. Kokeilen nyt seuraavaksi vaihtaa koneeseen uuden näytönohjaimen, siinä kun on pelkkä integroitu emolla. Harmi vain, että pitää työpaikan konetta päivittää omilla osilla...
Re: Optimointia?
Coolbasic ei tue laitteistokiihdytettyä grafiikkaa, eli näytönohjaimen teho ei vaikuta pelin nopeuteen. Prosessori hoitaa homman.
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Re: Optimointia?
Hyvä tietää tuo, Harakka. Enpä päivittelekään. Tulipa sitten uusi ongelma. Ihmettelen sitä, että fps-arvo ei muutu, vaikka kentällä seikkailevien örkkien määrä muuttuukin. Jos niitä on vaikkapa 5, on fps sama kuin 80 örkin armeijallakin. Örkkien lukumäärän muuttuessa muuttuu myös niitä ohjailevan silmukan pituus, joten kuvittelin sen vaikuttavan myös pelin pääluupin nopeuteen.
Sama mielenkiintoinen juttu on siinä, kun päivittelen pelin tilastoja. Yhden pääluupin kierrokseen menee yhtä pitkä aika, päivitti siinä tilastoja tai ei, vaikka tämä päivitys kirjoittaa näytölle, arpoo pari satunnaislukua ja muuta.
Tein myös testin, jossa ammuin koko lippaan tyhjäksi 80 örkin sekaan, jolloinka kentällä oli 40 kutia + 80 örkkiä + pelaaja, kaikki samalla kertaa liikkumassa. Sekään ei sanottavasti vaikuttanut fps-arvoon. Hyvä juttu sinänsä, vihollisia voi panna liikkeelle paljon.
Sama mielenkiintoinen juttu on siinä, kun päivittelen pelin tilastoja. Yhden pääluupin kierrokseen menee yhtä pitkä aika, päivitti siinä tilastoja tai ei, vaikka tämä päivitys kirjoittaa näytölle, arpoo pari satunnaislukua ja muuta.
Tein myös testin, jossa ammuin koko lippaan tyhjäksi 80 örkin sekaan, jolloinka kentällä oli 40 kutia + 80 örkkiä + pelaaja, kaikki samalla kertaa liikkumassa. Sekään ei sanottavasti vaikuttanut fps-arvoon. Hyvä juttu sinänsä, vihollisia voi panna liikkeelle paljon.
Re: Optimointia?
Ihan mielenkiinnosta kysyn, että kuinka iso resoluutio on käytössä? Ilmeisesti taustalla on tilekartta?
Tilastojen päivitys ei kuulosta kovin raskaalta operaatiolta, jos siinä tehdään vain nuo mainitsemasi asiat, joten tuskin se vaikuttaa framen aikaan.
Tilastojen päivitys ei kuulosta kovin raskaalta operaatiolta, jos siinä tehdään vain nuo mainitsemasi asiat, joten tuskin se vaikuttaa framen aikaan.
Re: Optimointia?
Taustalla on tilekartta, ja ruudun koko on määritelty 1024 x 768. Sen pienentäminen 800 x 600 -kokoiseksi ei muuttanut tilannetta miksikään.
Re: Optimointia?
Kokeileppa ihan huviksesi tyhjää looppia.
Code: Select all
Repeat
Text 5,5,"FPS: " + FPS()
DrawScreen
Until EscapeKey()
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Re: Optimointia?
Itselläni fps on n. 75 tyhjällä loopilla, eli parannusta on tapahtunut tässä kun ostin uuden koneen: Ennen se oli vain 70 fps.
Luulisin että cb itse rajoittaa tota ihan tarkoituksella, koska kun ekan kerran tällä uudella koneella käynnistin cb:n, ja kokeilin mielenkiinnosta että paljonko se fps on parantunut, sain arvoksi n. 5000 fps (turha sanoa että innostuin koneen tehoista ). Toisella yrittämällä tuli kuitenkin enää jotain 1700, ja sen jälkeen se on jäänyt tohon 75. Osaisko kukaan sanoa että miksi näin kävi?
Luulisin että cb itse rajoittaa tota ihan tarkoituksella, koska kun ekan kerran tällä uudella koneella käynnistin cb:n, ja kokeilin mielenkiinnosta että paljonko se fps on parantunut, sain arvoksi n. 5000 fps (turha sanoa että innostuin koneen tehoista ). Toisella yrittämällä tuli kuitenkin enää jotain 1700, ja sen jälkeen se on jäänyt tohon 75. Osaisko kukaan sanoa että miksi näin kävi?
Re: Optimointia?
Tuota nopeuttahan hidastaa nimenomaan coolbasicin DrawScreen. Teinpä huvikseni simppelin testin - kuinka monta looppia cb suorittaa sekunnissa? Muutaman kerranhan täällä on väitelty siitä kuinka monta miljoonaa looppia C++ tekee sekunnissa kun CB tekee 60.
Itse sain tämän perusteella noin 3,2 milj. FPS vaikka taustalla oli musasoitinta ja nettiselainta. Jos joka loopissa piirrettäisiin näyttö, nopeus olisi se 60 FPS. Silti tuo 3,2 miljoonaa tuntuu aika hurjalta - voiko se pitää paikkaansa?
Code: Select all
Print "Paina jotain näppäintä niin looppitesti alkaa"
WaitKey
alku = Timer()
Repeat
f + 1
Until Timer()-alku > 1000
Print f + " looppia sekunnissa (FPS)"
WaitKey
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Re: Optimointia?
3,2 miljoonaa, ja drawscreenin kanssa 61. Nyt päästään taas itse ongelman ytimeen: miksi työpaikan kone saa vain n. 32? Pitää huomenna ajaa vielä tämä testi ilman drawscreeniä.
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Optimointia?
Joillain koneilla on ikkunassa ajettaessa esiintynyt tuollaista, ettei kohoa FPS yli 32:den.. Omalla wanhallani esimerkiksi taisi olla tällaista. Kun nyt kokeilet, tee sekä kokonäyttö että akkunaversio, niin saadaan vähän lisätietoa asiasta.VesaP wrote:3,2 miljoonaa, ja drawscreenin kanssa 61. Nyt päästään taas itse ongelman ytimeen: miksi työpaikan kone saa vain n. 32? Pitää huomenna ajaa vielä tämä testi ilman drawscreeniä.
PS. tunnut vähättelevän koneen suoritustehoja ;D eihän sinulla ole näytöllä kuin alle 200 tekstuuria, joita ei perspektiiviskaalata ja pyörittely laskettu valmiiksi. nykyaikainen first person shootterihan piirtää parhaillaan suunnilleen saman verran vihuja ja ammuksia, ja jokaisessa vihussa on ainakin puolisensataa polygonia.. en tiedä tarkemmin, todennäköisesti menee rajusti alakanttiin tuokin ;D ja samalla hoidetaan antialiasointi, bumpmäppäys, valaistus jne. eikä FPS välttämättä siltikään tipu 120:n alle, ainakaan paremmalla koneella. Eli ei se lukujen tallentelu tai looppien läpikäynti paljoa hidasta : D piirtäminen eniten.
- Dibalo
- Advanced Member
- Posts: 298
- Joined: Mon Aug 27, 2007 8:12 pm
- Location: Espoo, Finland
- Contact:
Re: Optimointia?
Tuo on itse asiassa melko realistinen luku. CB:n pullonkaula ei todellakaan ole logiikka (loopit, operaattorit yms..) vaan nimenomaan grafiikka. Jos grafiikan saisi hoidettua laitteistokiihdytetysti, voisi CB:n noteerata hyvin korkealle peliohjelmointikieleksi. Itselläni tuotti suuria ongelmia tehdä ChaosBasicistä nopeampi logiikansuorituksiltaan kuin CB...Harakka wrote:Itse sain tämän perusteella noin 3,2 milj. FPS vaikka taustalla oli musasoitinta ja nettiselainta. Jos joka loopissa piirrettäisiin näyttö, nopeus olisi se 60 FPS. Silti tuo 3,2 miljoonaa tuntuu aika hurjalta - voiko se pitää paikkaansa?
Re: Optimointia?
Noniin. Koko ruudun tilaan siirtyminen ratkaisi fps-ongelman. Nyt vain katosi hieno latauskuva...
Re: Optimointia?
SCREEN-komento poistaa kaikki ladatut kuvat muistista. Pistä SCREEN ihan pelin alkuun ja lataa sen jälkeen kaikki grafiikka.VesaP wrote:Noniin. Koko ruudun tilaan siirtyminen ratkaisi fps-ongelman. Nyt vain katosi hieno latauskuva...
Re: Optimointia?
Tässäpä pätkä:
SCREEN 1024,768,16,0
Color 255,0,1
SetWindow "Sloar2! - Grandmother of all games",0,"Do you really want to quit?"
tausta=LoadImage("latauskuva.bmp")
DrawImage tausta,0,0
Jos SCREEN -komennolla ei määritellä koko ruudun tilaa, niin silloin latauskuva tulee näkyviin, mutta silloin peli pyörii ikkunassa, eli hemmetin hitaasti.
SCREEN 1024,768,16,0
Color 255,0,1
SetWindow "Sloar2! - Grandmother of all games",0,"Do you really want to quit?"
tausta=LoadImage("latauskuva.bmp")
DrawImage tausta,0,0
Jos SCREEN -komennolla ei määritellä koko ruudun tilaa, niin silloin latauskuva tulee näkyviin, mutta silloin peli pyörii ikkunassa, eli hemmetin hitaasti.
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Optimointia?
Kokeiles laittaa SCREEN 1024, 768, 0, 0. Silloin valitaan automaattisesti paras värisyvyys, mikä voi vaikuttaa asiaan. Tiedä häntä.VesaP wrote:Tässäpä pätkä:
SCREEN 1024,768,16,0
Color 255,0,1
SetWindow "Sloar2! - Grandmother of all games",0,"Do you really want to quit?"
tausta=LoadImage("latauskuva.bmp")
DrawImage tausta,0,0
Jos SCREEN -komennolla ei määritellä koko ruudun tilaa, niin silloin latauskuva tulee näkyviin, mutta silloin peli pyörii ikkunassa, eli hemmetin hitaasti.