Optimointia?

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
VesaP
Newcomer
Posts: 9
Joined: Wed Oct 24, 2007 1:26 pm

Optimointia?

Post by VesaP »

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.
Zrazy_Coder
Member
Posts: 60
Joined: Sun Sep 09, 2007 8:46 pm

Re: Optimointia?

Post by Zrazy_Coder »

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.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Optimointia?

Post by koodaaja »

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.
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?
Guest

Re: Optimointia?

Post by Guest »

Hidastavatko monet fieldit typessä ohjelmaa pahasti? Pelini vihollisilla on nyt 17 fieldiä...
VesaP
Newcomer
Posts: 9
Joined: Wed Oct 24, 2007 1:26 pm

Re: Optimointia?

Post by VesaP »

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...
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Optimointia?

Post by Harakka »

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)
VesaP
Newcomer
Posts: 9
Joined: Wed Oct 24, 2007 1:26 pm

Re: Optimointia?

Post by VesaP »

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.
Astigma
Moderator
Moderator
Posts: 195
Joined: Sun Aug 26, 2007 5:56 pm
Location: Kuopio, Finland
Contact:

Re: Optimointia?

Post by Astigma »

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.
VesaP
Newcomer
Posts: 9
Joined: Wed Oct 24, 2007 1:26 pm

Re: Optimointia?

Post by VesaP »

Taustalla on tilekartta, ja ruudun koko on määritelty 1024 x 768. Sen pienentäminen 800 x 600 -kokoiseksi ei muuttanut tilannetta miksikään.
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Optimointia?

Post by Harakka »

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)
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Optimointia?

Post by Jonez »

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?
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Optimointia?

Post by Harakka »

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.

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
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?
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
VesaP
Newcomer
Posts: 9
Joined: Wed Oct 24, 2007 1:26 pm

Re: Optimointia?

Post by VesaP »

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ä.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Optimointia?

Post by koodaaja »

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

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.
User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: Optimointia?

Post by Dibalo »

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?
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... :P
The darkest spells can be found from
http://tunkkaus.blogspot.fi
VesaP
Newcomer
Posts: 9
Joined: Wed Oct 24, 2007 1:26 pm

Re: Optimointia?

Post by VesaP »

Noniin. Koko ruudun tilaan siirtyminen ratkaisi fps-ongelman. Nyt vain katosi hieno latauskuva...
User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: Optimointia?

Post by Jare »

VesaP wrote:Noniin. Koko ruudun tilaan siirtyminen ratkaisi fps-ongelman. Nyt vain katosi hieno latauskuva...
SCREEN-komento poistaa kaikki ladatut kuvat muistista. Pistä SCREEN ihan pelin alkuun ja lataa sen jälkeen kaikki grafiikka. ;)
VesaP
Newcomer
Posts: 9
Joined: Wed Oct 24, 2007 1:26 pm

Re: Optimointia?

Post by VesaP »

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.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Optimointia?

Post by koodaaja »

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.
Kokeiles laittaa SCREEN 1024, 768, 0, 0. Silloin valitaan automaattisesti paras värisyvyys, mikä voi vaikuttaa asiaan. Tiedä häntä.
Post Reply