Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Tiedostojen pienennys

Sivun loppuun

mika132 [05.01.2012 20:40:50]

#

Eli minulla on harjoitusprojekti ollut siitä asti kun C++ aloin käyttämään johon aina "harjoittelen". Nyt haluaisin tietää kevennys metodeita. Kyseessä on 2D tasohyppely missä ei ole sen enempää ihmeellisiä ominaisuuksia, mutta seuraavaksi ajattelin harjoitella yleisesti keventämistä. Peli sisältää noin 60kuvaa ja 6biisiä. Ongelma on, että pelin koko on 44mt.. Mietin, että mitä mahdollisuuksia on saada tuota pienemmäksi.

Kuva kansion koko: 800kt (.png kaikki tallennettu)
Musiikki: 30mt (mp3 tallennettu)

Mietin, etä onko jotain että jos nuo pakkaisi esim .zip tai .rar muotoon niin saadaanko ne C++ avattua?

lisäksi muistin käyttö on 50mt kohdilla.. Mitä tuohon voisi tehdä noin yleisesti? Yksi on ainakin varmaan, ettei lataa kaikkea alussa heti?

Metabolix [05.01.2012 20:46:50]

#

Sanoit 44 megaa. Jos siis kuvat ovat alle megan ja musiikki 30 megaa, missä ovat ne puuttuvat 13 megaa?

Älä yritä pakata tuota dataa enempää. Käyttämäsi formaatit ovat jo valmiiksi pakattuja, joten pakkauksesta ei ole käytännössä hyötyä (mutta paljon vaivaa kylläkin).

Kuten ehkä itsekin näet, iso osa tilasta menee musiikkiin. Voisit siis pienentää pakettia heikentämällä musiikin tallennuslaatua.

Itse ohjelmasta kannattaa poistaa turhat osat eli tehdä optimoitu ja stripattu käännös ilman debuggaustietoja (GCC:lle liput -O2 -s). Ohjelmatiedoston voi myös pakata ohjelmalla nimeltä UPX.

Suorituksen aikana kannattaa tietenkin pitää muistissa vain ne asiat, joita tarvitaan, eli esimerkiksi valikon grafiikat voi ehkä poistaa pelin ajaksi. En kuitenkaan ihmettelisi, jos pelissäsi olisi myös muistivuotoja, kun niitä on tusinoittain nähty jo näissä kyselyketjuissasi.

ErroR++ [05.01.2012 21:02:19]

#

Metabolix kirjoitti:

Sanoit 44 megaa. Jos siis kuvat ovat alle megan ja musiikki 30 megaa, missä ovat ne puuttuvat 13 megaa?

Loput kolmetoista megaa ovat tietysti se peli kaikkine asetustiedostineen ja muut tiedostot.

Metabolix [05.01.2012 21:28:53]

#

ErroR++: Kiitos, että valaisit asiaa, enpä olisi ikinä itse keksinyt! Eikö mieleesi juolahtanut mikään seuraavista:

jalski [05.01.2012 23:35:18]

#

Metabolix kirjoitti:

13 Mt on todella paljon harrastelijapelin ohjelmatiedoston kooksi, kun monet hienot 3D-pelitkin vievät vähemmän. Esitinkin jo arvauksen, että ohjelma on ehkä käännetty epäoptimaalisesti ja debuggaustietojen kanssa.

Isolta kyllä kuulostaa... ;-)

Minulla tällä hetkellä tekeillä oleva PL/I:llä kirjoitettu puzzle peli OS/2:lle tulee varmaan mahtumaan muutamaan sataan kilotavuun kaikkine datatiedostoineen (pelissä jokunen pieni kuva ja tekstipohjainen karttatiedosto).

mika132 [06.01.2012 03:17:56]

#

Juuri tuota tarkoitan.. Itse en jostain syystä saa edes peruspelimoottoria jonka olen kasannut mahtumaan edes 1mt.. Ja siis kyseessä on 1 -> 40x40 kuva 1 teksti ja funktioita tekstin ja kuvien piirtämiseen / lataamiseen ja "huoneiden" suorittamiseen. Jostain syystä aina menee ainakin 1mt.. Olen moottoriin koittanut keksiä jotain uutta kokoajan, mutta ei vain onnistu.. Siksi ajattelin kysyä ohjeita, että miten noita voisi keventää.

Nimittäin tiedän, että hieno ja hyvin tehty 3D peli olisiko ollut noin 2mt johon mahtui. Siksi olen huolissani omista 2D pelien muisti syönnistä.

Macro [06.01.2012 09:34:50]

#

Ehkä olet kirjoittanut saman koodin joka huoneen sisään, kun olisit voinut käyttää funktioita.

User137 [06.01.2012 14:47:36]

#

Minkä kokoinen on .exe tiedosto ja mitä on muut tarvittavat datatiedostot kuvien ja äänen lisäksi? Kääntäjän optioilla siihen ehkä pystyy vaikuttamaan, esim siinä paljonko se lisää ylimääräisiä kirjastoja tai optimoi. Sitten on ainakin UPX jolla saa exe:t vielä pienemmiks, muttei ne sitten enää pienene .zip:ssä.

Musiikit pitäisi streamata kiintolevyltä joten niitä ei ladata ohjelmaan kokonaisina. WAV luonnollisesti menee kokonaisina muistiin. Kuvatiedostot taas; jos niitä on vaan muutama niin ok ladata kaikki. Mutta jos kuvia ja/tai ääniä on enemmän niin parempi ladata vain käytettävät tiedostot ja vapauttaa pois kun ei tarvitse.

Ja sitten tietysti, peleissä tavallinen virhe on esim piirtää koko shakkilauta yhteen kuvatiedostoon, kun riittää että kuvatiedostossa on yksi valkea ja yksi musta ruutu... jos siis halutaan jotain graafista efektiä ruutuihin, muutenhan ne piirretään pelkkinä neliöinä. Reunuksiin tarvitaan 2 pikkukuvaa: ensinnä kulma, ja toiseks yhden ruudun korkuinen reunus. Noita kahta kääntelemällä saa koko laudan ympäröityä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta