Portable Games 1. Geluid - Hoe een Game 90% kleiner te maken.

Door ObAt op maandag 25 april 2011 16:35 - Reacties (21)
Categorie: Geluid, Views: 4.183

Inleiding
Portable Games zijn erg handig, het zijn games die op een andere manier zijn ingepakt zodat je niet meer een oneindig lange installatie uit hoeft te voeren. Ook zijn sommige Direct Play RIPs vele malen kleiner dan het origineel. In deze post wil ik is wat algemene info geven over games.

Direct Play RIP's/Portable Games zijn vaak illegaal omdat deze een crack bevatten, in deze blog gaat het niet om het downloaden of verkrijgen van deze illegale bestanden maar om de technische inhoud van z'n RIP. Mocht BREIN deze post toch niet leuk vinden dan hebben ze pech kunnen ze zich bij mij melden :)

Opbouw van een spel
Vrijwel alle spellen verschillen gigantisch van elkaar, dit heeft te maken met de Engine van het spel (de manier hoe het spel in elkaar is gezet). Sommige spellen (Age of Mythology, Left4Dead2 ect) passen geen (extra) compressie toe op het spel, alle geluiden vind je gewoon terug als een .wavje ,ook alle models e.d. zijn allemaal los te vinden. Het voordeel hiervan is dat je in principe de hele game kunt veranderen en heel makkelijk mods en extra maps kan maken. Het nadeel hiervan is dat er meer dan 40.000 bestanden nodig zijn om Left4Dead2 werkend te krijgen. Ook is de game nogal groot (11.8GB). De vraag is, moet dat zo groot? Je hebt nu 3 DVD's nodig om het spel te installeren (of 1 dure DVD9 en een DVD5), dit is te gek voor woorden.

Nut van Compressie
Stel Left4Dead2 wordt 'maar' 10 Miljoen keer verkocht. Als we een spel hebben van 11.8GB en we verkopen het alleen via Steam dan is er dus 11.800.000GB=11.800TB! bandbreedte nodig om alleen al om het spel te kunnen downloaden! Ikzelf heb de game tot 2.45GB kunnen comprimeren, dat is een afname van 80%, en 80% is veel op 11.800TB. 9.440TB kon bespaard worden als de ontwikkelaars verder keken dan hun neus lang is. Ook voor spellen die steam nooit zullen zien is het handig. Zoals hierboven gezegd is een afname van 3 DVD's naar 1 DVD'tje ook de moeite waard om na te kijken.

Het enige probleem was dat lang niet alle computers zo krachtig waren om deze zware berekeningen te doen. Compressie is een vrij tijdrovend en zwaar proces als je het niet goed doet. Als je echt goed wilt 'inpakken' heb je toch wel 2GB RAM nodig. Dit klinkt allemaal zeer ernstig en heftig, maar de minimale systeemeisen van een nieuw spel zijn vaker gelijk of nog hoger! Dit probleem is dus ook opgelost!

Kwaliteit vs Grootte
Het gebruik van WAV bestanden is ongelooflijke overkill en niet nodig, deze manier van het opslaan van geluid heeft veel te veel schijfruimte nodig. MP3 bestanden worden vrijwel nooit toegepast in games omdat MP3 toch kwalitatief een stuk minder is en MP3 kent een heel aantal patenten. Zou het niet ideaal zijn als er nou een compressietechniek zou zijn die patentloos is en een veel betere compressie heeft dan Wav'jes? Dat zou inderdaad erg handig zijn, gelukkig bestaat zoiets ook nog! Ogg Vorbis is gemaakt door de Xiph.Org Foundation en is vrij van patenten! Ook is de compressie vele malen beter dan Wave.

Maar

Praktijk testje
Om te testen als wat ik allemaal uitkraam wel waar is heb ik een 1:1 CD gedownload. De download bestaat uit 15 Wave bestanden met een totale grootte van 576MB. Nadat ik deze met een command line programmaatje (oggenc2) heb gedecodeerd tot Ogg Vorbis bestanden bleef er nog maar 46,0 MB van over (=wtf!). Ook heb ik de Wave bestanden gedecodeerd tot MP3'tje (320Kbps) (De Call of Duty reeks maakt gebruik van MP3 compressie) en dit zijn de resultaten:

Wave: 576 MB (604.424.676 bytes)
MP3: 130 MB (137.019.375 bytes)
Ogg Vorbis: 46,0 MB (48.304.268 bytes)

Terug naar Left4Dead2, hier zitten 4.929GB aan Wave bestanden in!!! Dat is bijna de halve game! Nadat ik deze gedecodeerd heb na Ogg Vorbis bestanden en heb ingepakt met de simpele tool FreeARC is er nog maar 504MB van over! Dat is een afname van bijna 90%!! En dat al alleen met het inpakken van de muziek! Dan hebben we het nog niet over de models e.d.

Conclusie
Op gebied van compressie kunnen we nog veel leren, in deze kleine blogpost wil ik graag laten zien wat we op dit moment al kunnen maar niet doen. In deze post heb ik het alleen over muziek gehad, ik ga het hierna nog over andere bestanden houden. Ook zal ik het nog is goed hebben over de verschillende manieren om iets te comprimeren.

Voor alle duidelijkheid
Na een aantal reacties wil ik graag het volgende toevoegen, ik heb deze post gemaakt om te laten zien wat nu mogelijk is, zonder rare dingen te hoeven te gebruiken. Voor ontwikkelaars is het ook niet veel werk om Ogg Vorbis toe te voegen aan de game aangezien het gewoon een 'Dll-bestandje' is wat ze moeten toevoegen (hetzelfde als bij MP3 en WAV, of voor video Bink bestanden). Het is misschien nog wel minder werk omdat er geen gezeur meer is over patenten e.d. Het decoderen van een Wave bestand naar Ogg Vorbis duurt ongeveer net zolang als van Wave naar MP3. Het afspelen van Ogg'jes slaat er ook niet in, vrijwel niets is er voor nodig (net als de andere formaten).

Q: Wav/Wave ~OMG~ wat is het verschil?
A: Een Wave bestand heeft als extentie .wav het zijn dus de zelfde bestanden.
Q: Kan ik Ogg Vorbis nu ook al gebruiken?
A: Jup, gratis te downloaden via http://www.vorbis.com/ :)
Q: En Direct Play en Portable dan? Wat is daar het verschil tussen.
A: In principe wordt er hetzelfde mee bedoelt :D

Volgende: Portable Games 2. Geluid - Welk effect heeft compressie op de kwaliteit? 05-'11 Portable Games 2. Geluid - Welk effect heeft compressie op de kwaliteit?
Volgende: KPN Chatheffing nu al onderuit gehaald? 04-'11 KPN Chatheffing nu al onderuit gehaald?

Reacties


Door Tweakers user Voxyn, maandag 25 april 2011 16:51

Dit zijn de leuke blogposts _/-\o_

Vroeg me al een tijdje af waarom rips zo klein zijn soms :P

Door Tweakers user FatalZero, maandag 25 april 2011 16:52

Kijk dit vind ik nou een leuke blog, misschien ook nog eventueel hebben over de consequenties qua kwaliteit en cpu usage wanneer je het moet decoden?

Door Tweakers user Spetsnaz, maandag 25 april 2011 17:11

Maar als je alles omzet naar Ogg Vorbis moet de game toch ook ondersteuning hebben voor dit formaat om het af te kunnen spelen? Anders heb je er niet zoveel aan.

Door Tweakers user YopY, maandag 25 april 2011 17:11

Ben niet helemaal zeker wat deze blog nu moet zijn:

* Een oproep om de enkeling die nog .wav gebruikt voor games toch over te halen compressie te gebruiken
* Een tutorial voor het maken van een game met compressie (is het niet)
* Een of andere schaamteloze advertentiecampagne voor het OGG formaat
* Een rant

Door Tweakers user filenox, maandag 25 april 2011 17:21

Leuk om te lezen, hopelijk ga je hier nog dieper op in, 80% compressie is niet niets... :)

Door Tweakers user Snake, maandag 25 april 2011 17:28

En hoe zorg je ervoor dat het spel de ogg file afspeelt ipv de wav file?

Door Tweakers user Spetsnaz, maandag 25 april 2011 17:42

Snake schreef op maandag 25 april 2011 @ 17:28:
En hoe zorg je ervoor dat het spel de ogg file afspeelt ipv de wav file?
Dat gaat dus niet dus eigenlijk gaat dit nergens over.

Door Tweakers user EvilWhiteDragon, maandag 25 april 2011 17:44

Snake schreef op maandag 25 april 2011 @ 17:28:
En hoe zorg je ervoor dat het spel de ogg file afspeelt ipv de wav file?
Inderdaad, dit lijkt me toch redelijk lastig op zijn minst. Als je nu de kwaliteit van de vaw's had verlaagd had ik begrepen hoe je toch prima het spel kan blijven spelen, maar nu?
Lijkt me sowieso geen universele methode, aangezien een hoop spellen wel enige compressie gebruiken.

Door Tweakers user ObAt, maandag 25 april 2011 18:29

EvilWhiteDragon schreef op maandag 25 april 2011 @ 17:44:
[...]

Inderdaad, dit lijkt me toch redelijk lastig op zijn minst. Als je nu de kwaliteit van de vaw's had verlaagd had ik begrepen hoe je toch prima het spel kan blijven spelen, maar nu?
Lijkt me sowieso geen universele methode, aangezien een hoop spellen wel enige compressie gebruiken.
Rustig maar, we hebben het in aller eerst over het vervoeren van informatie we decoderen het naar Ogg Vorbis maar voordat je het spel speelt maak je er weer een Wave bestand van. En trouwens het is voor de ontwikkelaars helemaal niet moeilijk om Ogg Vorbis te ondersteunen, evenveel werk (of zelfs minder! omdat er geen patenten zijn) dan bijv. MP3 en Wave!

Door Tweakers user ObAt, maandag 25 april 2011 18:32

FatalZero schreef op maandag 25 april 2011 @ 16:52:
Kijk dit vind ik nou een leuke blog, misschien ook nog eventueel hebben over de consequenties qua kwaliteit en cpu usage wanneer je het moet decoden?
Dat zal ik doen, hou de blog in de gaten :)

@YopY
Meer een mix tussen 2 en 4. Ik zit niet zomaar reclame te maken voor Ogg Vorbis, het is zover ik weet de fijnste en beste manier om games te compressen :) Als iemand wat beters weet hoor ik dat natuurlijk graag!

Door Tweakers user Snake, maandag 25 april 2011 19:57

Volgens mij is het inderdaad wel het probleem dat ogg cpu kracht kost om het af te spelen, waarbij het bij wav veel minder ligt. Als je constant muziekjes speelt kan ik me wel voorstellen dat dit een impact heeft. Langs de andere kant zijn die files inladen een pak trager (meer IO) dan bij ogg files. I guess it's a tradeoff.

Door Tweakers user Snake, maandag 25 april 2011 19:57

Spetsnaz schreef op maandag 25 april 2011 @ 17:42:
[...]


Dat gaat dus niet dus eigenlijk gaat dit nergens over.
Adem eens diep in en uit. Ik stel gewoon de vraag. En vragen staat vrij.

Door Tweakers user sebastius, maandag 25 april 2011 20:00

Deze truc (voor tijdens transport geluid comprimeren en daarna het weer terugzetten naar het originele formaat met een haartje kwaliteitsverlies) wordt al jaren toegepast in de illegale circuits. Vond het toen erg vindingrijk, leuk dat je er wat over verteld.

Door Tweakers user Huismus, maandag 25 april 2011 20:41

Snake schreef op maandag 25 april 2011 @ 17:28:
En hoe zorg je ervoor dat het spel de ogg file afspeelt ipv de wav file?
Ik denk dat dat best wel mogenlijk is. Je recodeert de WAV bestanden tot OGG, maar je houd de .wav extensie. Ik denk dat het spel de bestanden afspeelt zolang je ze in Windows Media Player kunt afspelen, omdat Microsoft dezelfde techniek gebruikt (voor DirectX spellen natuurlijk).

Ik kan me herinneren dat als ik een muziek CD (ja die bestaan nog) in de CD speler van de computer deed terwijl ik LEGO Rock Raiders speelde, het spel de muziek van de CD ging afspelen ipv de muziek van het spel.
Het spel maakte dus geen onderscheid in .cda en in .wav bestanden, waarschijnlijk dankzij DirectX.

Door Tweakers user Ivos, maandag 25 april 2011 20:55

@Huismus: nou niet precies denk ik. In je voorbeeld denk ik namelijk dat dat spel een mixed-mode CD was, een deel Audio cd en een deel data cd. Was wel meer gebruikelijk, en je kon de muziek op de CD rom zelfs gewoon luisteren met een normale CD speler. Lego Raiders bevatte dan code om track X af te spelen, en welke CD dat dan is maakt niet uit verder.

Dit verhaal is inderdaad wel interessant, ware het niet dat het soms lastiger is dan we vermoeden denk ik, zeker als er in 1 bestand meerdere geluiden zitten, en er een bepaald stukje wordt afgespeeld. Wordt redelijk CPU intenstief dan denk ik? Zijn er developers / audiotechneuten die hier wat over kunnen toevoegen?

Door BleepBloop, maandag 25 april 2011 20:57

Steam past zelf ook al compressie toe, dus wat dat betreft maakt het weinig uit.

Door Tweakers user ObAt, dinsdag 26 april 2011 08:12

@Snake

Denkend dat de grafische berekeningen honderden malen zwaarder zijn zal dit meevallen, maar toch zal ik dit ook testen :)
Huismus schreef op maandag 25 april 2011 @ 20:41:
[...]

Ik denk dat dat best wel mogenlijk is. Je recodeert de WAV bestanden tot OGG, maar je houd de .wav extensie. Ik denk dat het spel de bestanden afspeelt zolang je ze in Windows Media Player kunt afspelen, omdat Microsoft dezelfde techniek gebruikt (voor DirectX spellen natuurlijk).

Ik kan me herinneren dat als ik een muziek CD (ja die bestaan nog) in de CD speler van de computer deed terwijl ik LEGO Rock Raiders speelde, het spel de muziek van de CD ging afspelen ipv de muziek van het spel.
Het spel maakte dus geen onderscheid in .cda en in .wav bestanden, waarschijnlijk dankzij DirectX.
Neen helaas zo werkt het niet, in 'echte' games wordt meestal rechtstreeks een DLL aangesproken die het bestand kan afspelen, omdat Media Player alles altijd 1 (of meerdere) secondes te laat afspeelt! (Als jij een liedje afspeelt duurt dat meestal een seconde voordat hij daadwerkelijk start met spelen)

@Bleepbloop
Steam past zeer weinig compressie toe, en de ene compressie is de andere niet! Dit is toch wel een sterkere compressie :)

Door SA007, dinsdag 26 april 2011 09:26

Voor zover ik weet is de hele reden dan WAV nog gebruikt wordt in spellen omdat dit direct door de geleuidskaarthardware afgespeeld wordt en daardoor heel erg snel kan gestopt/start worden.
Alle gecomprimeerde bestanden hebben een lag daarin zitten waardoor je geluidseffecten vertraagd zouden worden wat de spelervaring natuurlijk onderuit haalt.

Het is natuurlijk wel mogelijk om het gecomprimeerd in de installer te hebben staan war uitgepakt wordt tijdens het installeren.

Door Tweakers user Kwastie, dinsdag 26 april 2011 13:01

Volgens mij compressed Valve de gedeeltes tijdens het downloaden, en pakt deze uit zo gauw er een gedeelte binnen is, het kan dus best zijn dat je 100 MB binnenhaalt maar dat je in werkelijkheid maar 70MB gedownload hebt.

Ik heb het nooit gemeten, maar downloaden met steam lijkt atijd veel sneller te gaan dan de snelheid die steam aangeeft

[Reactie gewijzigd op dinsdag 26 april 2011 13:03]


Door Tweakers user WeeJeWel, dinsdag 26 april 2011 14:29

SA007 schreef op dinsdag 26 april 2011 @ 09:26:
Voor zover ik weet is de hele reden dan WAV nog gebruikt wordt in spellen omdat dit direct door de geleuidskaarthardware afgespeeld wordt en daardoor heel erg snel kan gestopt/start worden.
Alle gecomprimeerde bestanden hebben een lag daarin zitten waardoor je geluidseffecten vertraagd zouden worden wat de spelervaring natuurlijk onderuit haalt.

Het is natuurlijk wel mogelijk om het gecomprimeerd in de installer te hebben staan war uitgepakt wordt tijdens het installeren.
+1

Door Tweakers user ObAt, woensdag 27 april 2011 21:37

SA007 schreef op dinsdag 26 april 2011 @ 09:26:
Voor zover ik weet is de hele reden dan WAV nog gebruikt wordt in spellen omdat dit direct door de geleuidskaarthardware afgespeeld wordt en daardoor heel erg snel kan gestopt/start worden.
Alle gecomprimeerde bestanden hebben een lag daarin zitten waardoor je geluidseffecten vertraagd zouden worden wat de spelervaring natuurlijk onderuit haalt.

Het is natuurlijk wel mogelijk om het gecomprimeerd in de installer te hebben staan war uitgepakt wordt tijdens het installeren.
Dat is helemaal correct, maar die lag valt in praktijk zo erg mee dat het niet merkbaar is. Een aantal spellen hebben dat al bewezen (voorbeelden blijf je me schuldig). Het afspelen van een Oggje is helemaal niet zo zwaar, er moet alleen nog wat aan verbeterd worden :)

Reageren is niet meer mogelijk