Koodi testaajia!
Minulla on valmistumassa omaan käyttöön pelikirjasto, en mitään sen kummempaa nimeä aio kirjastolle asettaa, mutta toivoisin kuitenkin että se vaatimattomuudestaan huolimatta olisi laadukas ja helppo omassa käytössäni ja toimiva ja varma sitten asiakas puolella.
Jälleen kerran on aika mainita, että, en ole koodaaja, olen harrastanut sotalautapelejä jostain -87 asti. Aloittelin kaveri piirissä pelaamalla moninpeleinä Kampfgruppe ja Mech Brigade pelejä, myös amerikan sisällissotaa ja kolonialismia käytiin paljon lävitse.
Minulla jo tuolloin iskeytyi ajatus omista sotalautapeleistä ja nyt olen sitten lähtenyt rakentamaan sellaisilleni sivustoa, itse asiassa minulla on jostain -93 lähtein ollut jotain sääntöjä paperille laitettuina, mutta mitään isompaa tuotetta en vielä ole kasannut koneella.
Nyt minulla on tämä minun sotalautapeleilleni valmistuva pelikirjasto työn alla, se on ollut omassa käytössä varsin varma ja vakaa, jos jokin huomaamatta jäänyt koodi kohta on ollutkin, niin, heti on aina ratkaisu löytynä, minulla on koodini toiminnassa omassa koneessani WinXP ja Linux Mint ja ajoittain Linux Ubuntu käyttöjärjestelmissä, ja mitään ongelmia ei siis ajon aikana ole.
Nyt kun ole kaveri ja sukulais piirissä pyytänyt testaamaan koodiani, niin, olen havainnut että pelin aikaista jämähtelyä ei ole, mutta joillakin testaajilla ei tämä AsiakasOhjelma appletti käynnisty, eli kone jää rullaamaan jonkinlaiseen tilaan jota eivät osaa määritellä, mutta, konsoliin ei myöskään kuulemma tulostu mitään.
Minä tässä nyt sitten etsin Alpha 1 testaajia, pelikirjastolleni, eteenkin sellaisia joilla tämä kirjasto ei toimi.
Tässä tämä pelikirjasto appletti taas kerran -> http://temp4322.dy.fi/PeliAppletti.html
Toivoisin että lähettäisitte minulle Java konsolin tulosteen jos Appletti ei käynnisty taikka jos Appletti jämähtää, niin tähän ketjuun, olisi mukava jos pelikirjastoni olisi täysin toimiva kun sitten alan viimein näitä pelejä työstämään, hieman epäilen että Windows on epävakain, mutta, tämän tulisi toimia Win Lin Mac ihan ok, ja etsin siis sellaisia koneita joissa ei toimi.
-----
Rupee meneen jännän puolelle kyllä jo :D Ihmettelehän hetken aikaa tätä screenshottia.
Joo, sun pelis piirtää appletti-ikkunan sijasta ikkunaan, jossa pitäis olla Java-konsoli (ja itseasiassa onkin, tuo ikkuna vilkuttaa välillä sitä konsolia). WTF? :P
Muutamia havaintoja:
* Jotta kuva näkyy konsoli-ikkunassa, pitää ikkunan olla oikeanpuolimmaisella näytöllä.
* Kuva ei näy selainikkunassa, vaikka se ois oikeanpuolimmaisella näytöllä
* Jos molemmat ikkunat on oikealla näytöllä, kuva näkyy konsoli-ikkunassa.
* Paras tapa saada homma toimimaan oikein on disabloida konsoli ja muuttaa muutaman kerran selainikkunan kokoa. Sillon ei tunnu olevan väliä, kummalla näytöllä selain on.
- Gentoo Linux, kernel 2.6.34-gentoo-r12 x86_64
- xorg-server-1.9.4
- nvidia-drivers-260.19.36
- chromium-10.0.648.133 (tapahtuu muillaki selaimilla)
- sun-jdk-1.6.0.24
Mun tekis mieli epäillä jotain yhteensopivuutta Javan ja Nvidian ajureitten välillä, mutta en oikeesti tiiä.
Ja testasinpas telkkarikoneella,
- Gentoo Linux, kernel 2.6.34-gentoo-r12 x86_64
- xorg-server-1.9.4
- nvidia-drivers-260.19.29
- firefox-3.6.13
- sun-jre-1.6.0.24
Sillä saan paitsi toistettua äskeisen (joten vika ei oo kahessa näytössä), myös tehtyä homman niinpäin, että Java-konsoli näkyy appletin päällä :P
Hankala testata, kun koko hökötys ei edes aukene säällisessä ajassa. Muistin käyttö nousi about 500 Mt:a 1,2 Gt, joka oli läppärille liikaa. Pitää kokeilla vielä tuolla vanhalla pöytäkoneella jossakin vaiheessa.
EDIT: Pöytäkoneella testattuna tuo alkuvalikko aukeaa, mutta mitään pelejä ei aukene.
Itselläni aiheutti tälläista:
http://img713.imageshack.us/i/toimimaton.jpg/
Jokotai, tuo näyttäisi kovasti Blazen kuvakaappaukselta, joten taisit nyt itse niin sanotusti ryssiä jotain.
Minulla appletti toimii (Arch Linux, Chromium, Sun Java 1.6.0_24, Intel GM965), testasin shakkia. Ikkunan koon muuttaminen kuitenkin sulki koko appletin (ehkä Java kaatui). Lisäksi FPS oli parhaimmillaankin 38, eli eipä tuo appletti näytä sen nopeampi olevan kuin toisessa keskustelussa käsitelty HTML5:n Canvas.
Zoomaus (ilmeisesti hiiren rullasta) aiheutti pahoja ongelmia: en meinannut saada sitä millään pysähtymään, ja pelilauta päätyi lopulta ihan väärään kohtaan ruutua osittain näkymättömiin.
En kyllä noin huonolla suomella kirjoitettua peliä pelaisi uudestaan.
Alpha testausta!
Minulla itselläni on kaikilla Appleteilla ollut ongelmia kun Compiz on ollut päällä, juuri tuon kaltaista että kuva on väärässä sijainnissa, taikka että kuva on väri sotkua, minulla ei ilman compizia ole linuxissa ongelmia ollut.
Muistin kulutus on asetettuna maximiin 256 megaa, -Xmx256m avulla, jotenka sitäkään en kykene itse säätämään, myönnän että bilineaariset kuvat ovat todellisia muisti syöppöjä, mutta tuo -Xmx256m lippu on asennettuna.
FPS on säädeltynä maximi 40 fps ja sekin on alku logon aikana, muistaakseni pelien aikana on demo säädeltynä 22.5 fps, minulla on ihan hieno maximi fps säätö ohjelmassani.
----
Ratkaisuja -
koetan joska saisin grafiikan muistin kulutuksen myös isojen bufferedimagejen kohdalla säälliseksi vaikkapa ilman bilinear filtteriä, kenties render qualityn avulla jossa olisi lisättynä hieman blur efektiä, mutta kuva ei sitten enää ole terävintä.
Ikkunan koon muuttaminen aiheuttaa Canvakseen canvas.setbounds ( applet.getbounds() ). Tämän luulisi olevan ihan toimiva ratkaisu.
Peli alueen zoomaminen on toimiva hyvällä hiirellä, mutta sitä ei ole vielä ohjelmoituna, tällä hetkellä silmä liikkuu 3d avaruudessa, kun sitten lopullisessa versiossa laitan kuvaruudun korkeuden muuttumaan ja myös niin että hiiri kursorin kohta pysyy paikoillaansa.
Appletin nopeudesta huomauttaisin että puhuin omasta koneestani, tässä koneessa yksinkertaisempi 20 imagen html5 pyörii 10 fps, ja tämä yli 200 imagen applet pyörii vajaa 40 fps.
Kaikki nuo ongelmat vaikuttavat ennemminkin Linux ongelmilta vajaitten ajuri toimintojen takia, koska kukaan ei tainnut vastaan ottaa exceptionia.
Olen valmis ottamaan suosituksia vastaan jotta nämä mainitut korjautuisivat ?
Suomenkieleni on parhaimmillaankin vain tälläistä mitä täällä kirjoittelen, täytyy vaikka mummon antaa kirjoittaa nuo julkaisu version textit, hän oli nuorempana kirjan kääntäjä.
-----
Oletko muuten keksiny ihan oikeasti itse tuon nerokkaan luokkien pakettihin jaon? Vai kenties yrittänyt käyttää jotain obsufaattoria?
_Pete_ kirjoitti:
Oletko muuten keksiny ihan oikeasti itse tuon nerokkaan luokkien pakettihin jaon? Vai kenties yrittänyt käyttää jotain obsufaattoria?
Luokat !
Luokkani ovat jokainen peli ja vielä pelikirjastokin kaikki omassa extends ketjussaan, olen tämän ratkaisun valinna itse.
Lisäksi käytän proguard ohjelmaa, korvaamaan omien luokkien ja muuttujien ja metodien nimet lyhyillä kirjaimilla.
-----
metabolix: tiedän että se on blazen kuvakaappaus, mutta en tiedä missä mättää kun ei aukene, näyttää vain edellistä avattua välilehteä leikaten siitä sivut
Alpha 2 !
Korjasin tuon appletin renderinghints kohdan, eli tämä että suuri bufferedimage veisi valtavasti muistia, niin asensin melkein kaikki, mutta kaikki joita käytän, renderinghint arvot minimiinsä, kuvat ovat nyt pixelimäisempiä, kun niissä ei ole bilinear suodinta, mutta, tämä Java muistin kulutus on nyt sitten minimissäänsä, jos ohjelma toimii oikein laitteessa jossa ajetaan.
Vaihdoin myös kaikki bufferedimaget pois RGBA formaatista ja asetin RGB formaatin.
Vaihdoin myös kaikki bufferedimaget pois TRANSCULENT formaatista ja asetin BITMASK formaatin.
Vaihdoin muistin maximi arvon -Xmx256m arvosta, arvoon -Xmx128m.
Alpha 2 - http://temp4322.dy.fi/PeliAppletti.html
---
Mietin myös seuraavaa, että luopuisin Graphics2D:n käytöstä ja ottaisin käyttööni Graphics luokan, eli tämän ekan javalla julkaistun grafiikka kirjaston, tällöin joutuisin itse laskemaan mm scale arvot ja rotate kuvat, mutta toisaalta monitorien näytön tarkkuus on nykyään jo niin korkea että heikennys saattaisi olla jopa parannus, sillä pixelimäinen grafiikka voi olla pelimäisempää mitä bilinear pehmennetty, tämä graphics luokka on huomattavan yksinkertainen ja ymmärtääkseni huomattavan yhteensopivampi mitä graphics2d.
----
Alpha 2 !
Testaan vielä pelikirjastoani ilman pelejä, tässä on seuraavat ->
http://temp4322.dy.fi/main1.html ( Graafinen "Hello world" testi )
http://temp4322.dy.fi/main2.html ( Graafinen "Hello world" testi ja yksi kuva )
http://temp4322.dy.fi/main3.html ( Graafinen "Hello world" testi ja yksi kuva ja yksi vektori grafiikka kuva )
Jos nuo eivät toimi niin lähden purkamaan pelikirjastoani, minulla oli silloin kun minä tämän kirjaston rakentelun aloitin, niin hieman mietinnässä että käyttäisin vain graphics kirjastoa, sekun on huomattavan yksin kertaisempi mitä graphics2d ja mietin tuolloin josko olisi varmempi toimisempi.
tuossa peli kirjastossa, noissa linkeissä on nyt perus AWT Applet jossa Canvas jossa Bufferstrategy ( 2 ).
Imaget ovat bufferedimageja.
vektori grafiikka on .txt muodossa ja se piirretään generalpath avulla bufferedimageen.
Mahdolliset ongelma kohdat koodissani ovat Convole operations, BufferedImaget, Stringbufferit, Bufferstrategy tietyillä näytönohjaimilla, ja perus virheet jokin luokka monistuu liikaa, mutta ei kuitenkaan kaikilla koneilla ?
Josko sitten vaihdan ->
Graphics2D -> Graphics luokkaan.
BufferedImaget -> Imaget muotoon.
Convol operations ja vektori grafiikka rutiinit -> kokonaan pois ja tilalla käyttäisin valmiiksi piirtoohjelmissa rakennettuja imageja.
---
Alpha 3 !
http://temp4322.dy.fi/main4.html ( Graafinen "Hello world" testi )
http://temp4322.dy.fi/main5.html ( Graafinen "Hello world" testi ja kuva lataus ja ruudulle piirto )
Alpha 3 sisältää nuo yllä olevat muutokset !
Tästä Alpha 3:sta en itse enää kykene löytämään ongelma kohtia, vain jokin yksittäinen rivi joka on jäänyt huomaamatta voi vielä aiheuttaa ongelmaa.
Tai, no lisäksi vielä eri näytönohjaimilla tämä perus AWT Applet - Canvas - BufferStrategy (2) rullakin, mutta nyt on jo niin perus Java koodia että ei voi olla toimimatta ?
---
Alpha 3 !
Jos nuo kaksi main4 ja main5 ei toimi, niin puran ihan koko pelikirjaston extends ketjun, laitan pelikirjasto extends ketjun kaikki metodit yhteen pitkään luokkaan.
(Mod. poisti tähän liittyvän vastauksen, jottei tarvitsisi taas turhaan riidellä luokista. Jätetään se toiseen keskusteluun, jookos?)
Alpha 3 !
Tässä on vielä pari testiä jotka ei käytä mitään muuta kuin Applet Canvas BStrategy(2).
Testeissä ei ole mukana minun pelikirjastoani lainkaan, vaan, koodi testaa vain käynnistyykö tuo kolmikko oikein, ruudulle piirtyy hello world sekä pari keltaista viivaa ja light-gray laatikko.
http://temp4322.dy.fi/main6.html ( Hello World testi, harmaalla neliöllä ja kahdella keltaisella viivalla ) Tämä oli vanhan Graphics luokan kanssa.
http://temp4322.dy.fi/main7.html ( Hello World testi, harmaalla neliöllä ja kahdella keltaisella viivalla ) Tämä on sitten taas Graphics2D:n kera, keltaiset viivat ovat hieman vahvemmalla, g2d:n setstroke käskyllä.
Näitten testien jälkeen sitten rakennan tuon lopullisen pelikirjaston, ellen sitten siirry HTML5 käyttöön jo nyt..
----
Lopetus !
Joo tää meni liian vaikeaksi, lopetan ketjun omalta osaltani tähän, otan uuden mielenkiintoisemman ketjun.
----
(HUOM: Ylläpitäjä yhdisti keskustelut ja huomauttaa: älä aloita turhaan uutta keskustelua, kun aihe ei ole muuttunut.)
Hei!
Jos kirjoittelen liian aktiivisesti aiheestani, niin huomauttakaa, en täysin tunne foorumi käytös tapoja, mikä sitten on sopivaa huomion viemistä.
Olen siis rakentamassa yhä pelikirjastoa itselleni Javalla.
Tässä olisi pelikirjastoni toiminnassa, laitoin sinne ylimääräistä try {} cachea { System.out.println ( "Error : xxxx " ); }, jotta sitten exceptionit löytyisivät.
http://temp4322.dy.fi/PeliAppletti_Windows.html
http://temp4322.dy.fi/PeliAppletti_Linux_Mac.
Olisin kiitollinen jos voisin rakentaa itselleni hieman varmuutta siihen, että, kuinka vakaana tämä Alpha 4 sitten toimiikaan, kiitos jos lähetätte Java konsoliin tulevat exceptionit tähän ketjuun.
Minulla itselläni ei ole mitään ongelmia ajaa ohjelmaa winxp ja linux mint ja linux ubuntu käyttöjärjestelmissä, jotenka en voi debugata kovinkaan tehokkaasti, kun myös koen että koodi on tarpeeksi hyvin kirjoitettu, mutta, olen kuitenkin vastaanottanut palautetta että koodini ei toimi vakaana, jotenka käynnistin tämän ketjun.
----
Alpha 5!
Minulla on nyt täysin uudelleen kirjoitettuna pelikirjastoni, eli, se on nyt sitten viides uudelleen kirjoitus.
Muutin koodin järjestystä, ja lisäksi jätin applet, canvas ja bufferstrategy luokat vain main luokan sisään, luokkia ei enää siirretä kolmansiin luokkiin, kuten aikaisemmin tein, luin jostain että appletin siirtäminen parametrinä aihauttaa joissakin windows koneissa ongelmia, lisäksi tutkiessani koodiani löysin muutaman stringbufferin jonka capasiteettia ei oltu varmistettu, nyt on kaikki isot stringbufferit säädetty 1024 kiloon, minulla tällä hetkellä on suurin teksti tiedosto joka peleissäni on, niin vain hieman yli 400 kiloa, jotenka capasiteetti riittää jo hyvin varmasti.
Eli, taas sitten pyytelisin ystävällisesti ja nöyrästi testaamaan ->
AWT_AsiakasOhjelma v3.0 ja AWT_PeliKirjasto v5.0..
http://temp4322.dy.fi/PeliAppletti_Windows.html
http://temp4322.dy.fi/PeliAppletti_Linux_Mac.
ja sivustoni -> http://temp4322.dy.fi
hurjasti kiitos jos palautatte viestiä jos ei toimikkaan, ja muutama voisi kertoa myös jos sitten toimii, niin ei tarvitse täällä ihmetellä, pääsen sitten viimeinkin linja rutiinein pariin.
----
Minulla tilanne on entisellään (eli molemmat versiot toimivat), paitsi että FPS on laskenut OpenGL-versiossa 21:een. Kiihdyttämätön versio toimii pelitilanteessa surkealla FPS:llä 4.
PeliKirjasto!
No niin, nyt on kaikki web kontaktini ja ystäväni palauttaneet positiivisen tuloksen pelikirjastoni toiminnasta, kirjastoni ja kaikki appletin pelit toimivat ilman virheitä.
Kirjoitin siis pelikirjastoni ( 102 luokkaa ) täysin alusta, ja löysin ainoastaan seuraavat epäkohdat, jotka saattoivat aiheuttaa toimimattomuutta joissain windows koneissa.
1) minulla oli windows koneissakin kytkettynä parametri "-Dsun.java2d.opengl=True", tämä kytki OpenGL kiihdytyksen vaikka windowssin tulee käyttää Direct3D kiihdytystä.
2) minulla oli appletti siirrettynä kolmansiin luokkiin, ja tämäkin saattaa aiheuttaa epävakautta, lopetin käyttämästä applettia parametrina luokkiin ja metodeihin, applet ja canvas ja bufferstrategy ovat nyt ainoastaan main luokassa.
3) minulla löytyi yksi stringbuffer ilman ensurecapasityä, eli en ollut varmistanut että stringbuffer kestää aivan niin paljoa tekstiä mitä sinne olin syöttämässä.
Muita epäkohtia en löytänyt ja nyt siis Applet ja kaikki demot toimivat ilman havaittuja ongelmia.
Kiitos kaikille testaajille, lopetan ketjun tähän.
---
kpzpt kirjoitti:
PeliKirjasto!
2) minulla oli appletti siirrettynä kolmansiin luokkiin, ja tämäkin saattaa aiheuttaa epävakautta, lopetin käyttämästä applettia parametrina luokkiin ja metodeihin, applet ja canvas ja bufferstrategy ovat nyt ainoastaan main luokassa.
Millä tapaa tämä "siirtäminen" aiheuttaa epävaukautta muutakuin sillä että on koodattu päin persettä? Lähteitä tälle?
kpzpt kirjoitti:
PeliKirjasto!
3) minulla löytyi yksi stringbuffer ilman ensurecapasityä, eli en ollut varmistanut että stringbuffer kestää aivan niin paljoa tekstiä mitä sinne olin syöttämässä.
Tuolla ei kyllä ole mitään merkitystä siihen paljonko tekstiä voi syöttää StringBuffer olioon. Sitä paitsi tuon ensurecapasityn voi suoraan määritellä konstruktorissa, ei tarvitse erikseen kutsua metodia heti konstruktorin jälkeen kuten teet.
Aihe on jo aika vanha, joten et voi enää vastata siihen.