Erikoisuuksia ja eroavaisuuksia
Vesa Laakso edited this page Oct 30, 2020
·
17 revisions
Note: Because cbEnchanted is currently only used with Finnish programmers, this page will be only in Finnish. Should you need to have this list in English, please use Google Translate.
- Tuetut ääniformaatit / äänitiedostojen tiedostopäätteet ovat Allegron manuaalin mukaan .wav, .flac, .ogg, .it, .mod ja .xm.
- Tuetut kuvien tiedostomuodot ovat (ainakin) BMP, PCX, TGA, JPEG ja PNG. Lisätietoja Allegron manuaalista.
- cbE käyttää Windows-1252 merkistöä sisäisesti, joten ääkköset (ja mitkä tahansa merkit jotka eivät kuulu ASCII-arvoltaan välille 0-127) saattavat näin ollen toimia tiedostokomentojen kanssa vielä tällä hetkellä epäjohdonmukaisesti. Tekstin piirtoa varten merkkijonot muutetaan UTF-8 merkistöön joten piirtämisen pitäisi onnistua moitteettomasti, kunhan valitsemassasi fontissa on tuki kyseisille merkeille.
- ESC sulkee ohjelman
SafeExit
ollessa päällä vain, kun päästäänDrawScreen
,WaitKey
,WaitMouse
taiGetKey()
kutsuun. Muulloin ohjelman voi pakottaa sulkeutumaan painamalla konsoli-ikkunassa Ctrl + C näppäinyhdistelmää tai tietenkin tehtävienhallinnasta. -
PutPixel
jaPutPixel2
toimivat tismalleen samalla tavalla. Jos puskuria ei ole lukittu, ovat nämä operaatiot tuskallisen hitaita. -
Print
jaWrite
tulostavat konsoliin, eivät ohjelman ruudulle. Tämä on tarkoituksellista. - Värit, jotka ylittävät raja-arvot 0...255 tai
PutPixel
/GetPixel
käyttämät kokonaislukuarvot, eivät toimi samalla tavalla kuin CB:n värit toimivat. - Objekteja ladattaessa pyöritysarvoparametria ei käytetä. Tämä johtuu siitä, että kuvat ladataan vain kerran ja nykyinen objektin kulma vain annetaan näytönohjaimelle piirrettäessä. Eli objekteja voi pyörittää mielivaltaisen tarkasti aina.
- Virheilmoitukset ovat tarkkoja ja antavat suurilta osin mahdollisuuden yrittää ohittaa virheen. Ei siis enää "Memory Access Violation" -virheitä, vaan tarkkoja kuvauksia siitä että mikä funktio kaatui ja miksi. Jos cbE:ssä ei ole vielä tehty johonkin ominaisuuteen virheentarkistusta, kaatunee ohjelma suorilta käsin ilman virheilmoitusta tai eteen saattaa myös tulla mystinen, (Windows-buildien tapauksessa) MSVC:n oma virheilmoitus. Debug-moodissa ajaminen voi kertoa tarkempaa tietoa.
- Edelliseen liittyen: Taulukoiden ja kuvien yli- tai aliluku/-kirjoitus kaataa ohjelman hyvin herkästi, usein ilman virheilmoitusta. Ne ovat ensimmäisiä tarkastelun kohteita jos ohjelmasi kaatuu äkkinäisesti.
-
SCREEN
ei tuhoa ladattua mediaa. - Omia TTF-fontteja voi ladata antamalla LoadFontille .ttf tiedoston sijainnin (esim.
opensans = LoadFont("OpenSans-Regular.ttf", 15)
) - Jos aiot käyttää kuvia ja niihin piirtoja, niin laita
DefaultMask
pois päältä kun lataat/luot kuvan. Näin kunDrawToImage
-kutsu loppuu, ei kuvaa kopioida videomuistissa. Kopiointi tapahtuisiDefaultMask
in ollessa päällä jotta kuvan alphaväri voitaisiin korvata täydellä alphalla. - cbE:llä kuvia ladattaessa kuvien alphaväri säilyy ennallaan. PNG-kuvat kannattaa siis tehdä niin, että siinä ei käytetä maskiväriä vaan alpha laitetaan jo itse kuvaan haluttuna määränä.
-
Smooth2D
asettaaRotateImage
jaResizeImage
-komentojen lisäksi päälle multisamplauksen, jolloin piirtokomennot piirtyvät antialiasoituina ruudulle, kun ruudulle piirretään suoraan. Kuviin piirrettäessä multisamplaus ei toimi. Huom! Jos käyttäjän näyttökortti ei tue multisamplausta, ohjelmasi saattaa kaatua seuraavanSCREEN
komennon yhteydessä, erityisesti jos yrität laittaa ohjelman koko ruudun esitystilaan. -
Smooth2D
asettaa myös fontit latautumaan antialiasoituina. Kun fontti on ladattuSmooth2D
:n ollessa päällä, piirtyy sillä kirjoitettu teksti aina antialiasoituna. - Jos kuvien tai objektien piirtokoordinaatti on täsmälleen kahden pikselin välissä (eli liukuluku päättyy .5), niin eri koneiden näytönohjaimet voivat bugailla ja piirrellä kuvat väärin. Tätä koitetaan korjailla mutta melko hankalaa, kun ongelma ilmenee vain muutamilla koneilla.
-
Timer()
palauttaa millisekunteina ajan siitä, kun cbE on pyörähtänyt käyntiin. -
HUOM! Objektien piirto sekä kuvien maailmankoordinaatteihin piirto luultavasti bugaavat, kun piirtokoordinaatit ovat kahden pikselin välissä. Ongelmalta välttyy kun tekee alunperin kuvia, joissa on vähintään yhden pikselin täysin läpinäkyvä reunus. Aiheesta on tehty bugiraportti #119 mutta sitä on todella hankala korjata. Siksi suosittelemme, että teet kaikki maailmankoordinaattehin piirrettäväksi tarkoitetut kuvasi sellaisiksi että niissä on vähintään yhden pikselin täysin läpinäkyvä reunus välttyäksesi tältä bugilta. Animoidussa kuvissa lisäät tietenkin yhden pikselin reunuksen jokaiseen kuvasarjan osaan. Törmäykset voit sitten asettaa
ObjectRange
komennolla takaisin pikselintarkaksi laittamalla törmäysalueen leveyden ja korkeuden kahta pikseliä pienemmäksi kuin mitäObjectSizeX()
jaObjectSizeY()
palauttavat.
Tekemättömät ominaisuukset on kasattu listaan tänne wikiin, ne löytyvät sivulta Toteuttamattomat ominaisuudet.
Tunnetut bugit viimeisimmässä julkaisussa (0.4.0) löytyvät täältä GitHubista. Katso myös suljetut ongelmat, jotka ovat tägätty "done-but-unreleased".