Compressing loads of content into only 20mb

Similar documents
Compression; Error detection & correction

CONSOLE ARCHITECTURE

BD-HDMV vs BD-J Menus

VA 402. class presentation by Berrin Sun Supervised by Ekmel Ertan. Pixel Art

Compression; Error detection & correction

IMGD The Game Development Process: File Formats

Memory Management: High-Level Overview

Mali Developer Resources. Kevin Ho ARM Taiwan FAE

Terrain Tutorial using Shade-C By padmalcom (February 2011)

G64PMM - Lecture 3.2. Analogue vs Digital. Analogue Media. Graphics & Still Image Representation

Preparing Music and Narration for AV s

Broken Age's Approach to Scalability. Oliver Franzke Lead Programmer, Double Fine Productions

Gerald's Column by Gerald Fitton

Fundamental of Digital Media Design. Introduction to Audio

Making Your First Character

Starting from. An Introduction to Computing Science by Jeremy Scott LEARNER NOTES

Developing the Roadmap - Director Next Survey

IOS PERFORMANCE. Getting the most out of your Games and Apps

Tech Tracker + Social Networking module Quarterly Release: Q1 2012

Hardware Overview. Steve Rabin Senior Software Engineer Software Development Support Group

UNDERSTANDING MUSIC & VIDEO FORMATS

Video coding. Concepts and notations.

Texture Compression. Jacob Ström, Ericsson Research

Optimizing Audio for Mobile Development. Ben Houge Berklee College of Music Music Technology Innovation Valencia, Spain

Standard File Formats

Adobe Premiere Pro 2 Bible PDF

Robin Dittwald Institut für Linguistik Universität zu Köln June Subtitles with ELAN An Easy Guide

Introduction to Computing and Systems Architecture

Working with Adobe Premiere Pro CS4

ASTC Does It. Eason Tang Staff Applications Engineer, ARM

Limitations of the trial version? Posted by arpad.andrassy - 02 Jan :47

Flowmap Generator Reference

BEDIENUNGSANLEITUNG OPERATING INSTRUCTIONS

Guide Contents Introduction Useful Information Navigating the Scene Hotkeys Placing and Manipulating Objects The Builder Cube Builder Cube Edit

Advanced Gemstone Shaders

Professional reviews. June 17, 2016

Collaboration policies!

TF5800PVR recording to DVD using ProjectX and Nero

Post-Production. Ashwin Saraf Brian Block Sam Bantner Travis Bagley

Xbox 360 Wireless Headset With Bluetooth Won't Connect To Controller 1

2

Intensity Pro 4K Incredible quality capture and playback in SD, HD and Ultra HD for your HDMI, YUV, S-Video and NTSC/PAL devices!

What is Data Storage?

EPUB # PLANTRONICS RIG MIC NOT WORKING XBOX ONE EBOOK

I ll be speaking today about BC6H compression, how it works, how to compress it in realtime and what s the motivation behind doing that.

the gamedesigninitiative at cornell university Lecture 15 Game Audio

Three OPTIMIZING. Your System for Photoshop. Tuning for Performance

The Auto-MipMapper Shader

Your guide to NZ s best entertainment experience

Apple Compressor 4.1 Detailed Video Training Outline Chapter 1 - Get Started

Flip Writer Integrate elements to create Page-flipping ebooks. User Documentation. About Flip Writer

ACTIVITY 5 WORKING IN TOON BOOM STUDIO. Select color for the background

Aud-X 5.1 Help.

Effortlessly create incredible movies

Godot engine Documentation

Copyright 2017 by Kevin de Wit

Introducing Thrive - The Ultimate In WordPress Blog Design & Growth

Building scalable 3D applications. Ville Miettinen Hybrid Graphics

Case Study: The Pixar Story. By Connor Molde Comptuer Games & Interactive Media Year 1

Enabling immersive gaming experiences Intro to Ray Tracing

Quicktime Player Error Codec For Avi Per

Data Crow Version 2.0

Lecture 19 Media Formats

Shadows for Many Lights sounds like it might mean something, but In fact it can mean very different things, that require very different solutions.

OneClick Video Converter Free Version

Visual Effects-After Effects

the gamedesigninitiative at cornell university Lecture 13 Memory Management

Bringing AAA graphics to mobile platforms. Niklas Smedberg Senior Engine Programmer, Epic Games

Adobe Premiere Elements For Dummies (For Dummies (Computers)) PDF

Let s create a grid of pixels that you can use for creating pixel art. CSS provides table styles for grid and table layouts.

Understanding Browsers

2010 Intel Core processor family (Intel Core i3/i5/i7)

BitSquid Tech Benefits of a data-driven renderer. Tobias Persson GDC 2011

Step-by-step guide to dubbing (ADR) in Audacity

CHAPTER 10: SOUND AND VIDEO EDITING

Get to Know the VideoStudio Workspace

CS4621/5621 Fall Computer Graphics Practicum Final Projects. Professor: Kavita Bala Instructor: Nicolas Savva

Download Saitek cyborg 3d force. windows 7 driver

The RANCH RenderFarm User Guide Part II the RANCH for Maxwell Render

Session A First Game Program

Lecture 16. Introduction to Game Development IAP 2007 MIT

#596*Free Download: 'Audio Editor - 3 PC / Liftetime free update' by GilISoft Internatioinal LLC. Coupon Code

Pharmacy college.. Assist.Prof. Dr. Abdullah A. Abdullah

Final Cut Pro X. Online Training. Months , ADMEC Multimedia Institute TM. Information Brochure

Image, video and audio coding concepts. Roadmap. Rationale. Stefan Alfredsson. (based on material by Johan Garcia)

Window Media Player Manual Update Xp Dvd Decoder

Optimizing and Profiling Unity Games for Mobile Platforms. Angelo Theodorou Senior Software Engineer, MPG Gamelab 2014, 25 th -27 th June

Your logo here. October, 2017

Image creation with PHP

Make Courses User Guide. version

TSBK 07! Computer Graphics! Ingemar Ragnemalm, ISY

Computer Games 2012 Game Development

How To Change Ipod To Manually Manage Music Without Erasing

GROW-IT. Plug-in for Daz3D Studio

Scenarist BD Professional Plus The world standard for Blu-ray Disc authoring

Manual Book Ipod Shuffle 4th Gen Charging. Light While >>>CLICK HERE<<<

Profiling and Debugging Games on Mobile Platforms

Georgios Tziritas Computer Science Department

Unplanned Blocky Puzzles Creating PETSCII for the Commodore 64

the gamedesigninitiative at cornell university Lecture 10 Memory Management

Transcription:

Compressing loads of content into only 20mb A case study through Swords & Soldiers for WiiWareTM Joost van Dongen

What's to come Introduction Texture compression Text compression Audio Executable size Sprite animation Level format

Introduction

Who am I? Joost van Dongen Ronimo Games Lead programmer / co-founder

What is Ronimo? Independent game developer Utrecht, Netherlands De Blob (PC), Swords & Soldiers (WiiWare)

Why compression?

Download size Size often irrelevant for console games: DVD / Blu-ray Fast internet Large hard-discs (including 360 / PS3)

TM Not so on Wii! Small internal Wii system memory Low max size per WiiWare game Wii busy during download

Stop buying? Gamers reluctant to remove games from Wii system memory Some stop buying when disc full 20mb target for Swords & Soldiers

SD card update But... SD card as extra harddisc Works nicely Update released just before Swords & Soldiers Hardly any reason to not do some more MBs Still ain't much!

Mobile platforms Size also important for mobile platforms iphone PSN on Playstation Portable

Swords & Soldiers

Swords & Soldiers WiiWare Side-scrolling real-time strategy Lots of features and assets for a WiiWare game

Swords & Soldiers

Swords & Sizes Total size: 17.4mb Executable: 2.6mb Textures: 8.2mb Music: 2.6mb Sound: 1.8mb Text files (XML, dialogue): 0.5mb Becomes 21.2mb with shared files

Total team 1 programmer + 1 intern 4 artists + 1 intern 2 designers + 1 intern 11 months

Coding team 1 programmer + 1 intern 11 months Only quickly implementable techniques

Wii!Wii Most techniques not Wii-specific Some extra work might be needed elsewhere

Texture palettes

Textures 2D game Lots of animations Textures are about half the download

Textures 587 textures 141mb without compression Went to 8.2mb with no visible loss

Palette textures Store colour palette Only indices in texture Max 256 colours per texture Each colour is 16 bit

Palette textures

Cartoony style Large colour areas Perfect for palette textures

Not for everything Coloured gradients problematic Fix banding when it occurs Swords & Soldiers: 400 palette textures (8 bit) 100 greyscale textures (4 bit) 100 uncompressed textures (16-32 bit)

Realistic styles Palette not always good option Causes banding Can probably still be used in many textures

Results Uncompressed textures: 141mb Hardware formats: 36.8mb For both download and in memory

DXT

Wii Individual palette per texture (re-use optional) 16 or 256 colours Colours can have alpha Full shading, only palette in storage Supported in hardware Nice!

OpenGL palettes Same palette for everything Only 256 colours overall Shading impossible Useless

Shaders Can emulate palette in pixel shader Read greyscale index from texture Use greyscale to look-up colour in 1D texture Filtering problematic without hardware support

Shader performance Slower than direct texture read Lots of cache misses in palette? Or not: palette is very small Reduces cache misses in texture itself Not actually tested......but seems quite feasible

Texture compression

Texture size 36.8mb: still too much for WiiWare Need to drop further

lz77 Compression algorithm Uses dictionary Store recurring pieces once and reference them

Runlength Replace repeating value Set how often the value occurs Example: 1111111 becomes 71

Texture compression Hardware formats: 36.8mb Runlength: 13.8mb lz77: 8.19mb lz77: 5 seconds to decompress on Wii

Why so strong? 78% compression Palettes! Few values repeated often Both lz77 and runtime love that!

I want strong? Does this work for more realistic styles? Not easily: too many colours and noise

I like strong! Reduce colour variation Often not noticeable! Also works without explicit palettes Can then do arbitrary colour count

Might work in things like this (Gears of War)

Text compression

Text compression XML common these days Often binary to save space

Swords & Soldiers 221 text files Mostly XML No compression: 3.65mb LZ77: 0.30mb

Slow? Often heard: XML too slow to parse on load Should save memory image instead So people say

Mwa S&S skirmish AI One 227kb XML Decompressed with lx77 Parsed with TinyXML Takes Wii less than 1 second Okay by me

Audio

Ogg/Vorbis Open source audio format Free to use BSD-like license Okay for closed source commercial software Consult platformholder about this!

Ogg versus MP3 S&S: 10 minutes of stereo music

Ogg versus MP3 S&S: 10 minutes of stereo music MP3 128kbps 9.0mb MP3 64kbps 4.4mb Ogg 45kbps 2.6mb

Ogg versus MP3 S&S: 10 minutes of stereo music MP3 128kbps 9.0mb sounds good MP3 64kbps 4.4mb sounds terrible 2.6mb sounds nearly like MP3 128kbps Ogg 45kbps

Swords & Soldiers All audio in S&S on 45kbps Ogg Music, voices and audio effects

Good enough Is quality good enough? Reviews very positive about audio in S&S Reviews never mention bad audio quality Apparently good enough

Executable

Executable Why would you want to compress that?!

Executable Wii executable: 3.40mb Quite relevant on a whole of 21mb

Executable S&S Windows exe: 1.15mb Wii executable: 3.40mb

Executable S&S Windows exe: 1.15mb Wii executable: 3.40mb Cause: Wii executable contains its own OS

Executable WiiWare loads compressed executables Uncompressed: 3.40mb Compressed: 2.64mb Nice little bonus

Logging size Certain function calls grow very big Size without logging: 3.40mb Size with logging: 4.13mb Difference: 119 calls to template function

Logging size Certain function calls grow very big Size without logging: 3.40mb Size with logging: 4.13mb Difference: 119 calls to template function Odd: only from 1.15 to 1.17mb on Windows

Template function template <typename T1, typename T2> void Logger::log(const T1& part1, const T2& part2) { std::stringstream output; output << part1 << " " << part2; get()->logstring(output.str()); }

Instruction size Wii development tips Presentation on warioworld.com Some more tips Authorized Wii developers only

Sprite animation

Spacing is problematic

Simple solution Store center and size of each frame Use space optimally Ignore ordering

Building too big to store texture for each state

Re-used animation system for buildings

Building as animation Each layer in Photoshop is an animation frame Wrote custom exporter for this Frames are layered in-game Saved texture space on buildings this way

Level design

Small team No time to create a custom editor Ended up doing level design in Notepad I don't understand: why don't artists like Notepad? (Not compression: this is about small-team development)

1D Swords & Soldiers is really 1D

Example level file

Notepad Not as bad as it looks 1D is quite clear Quickly editable Still, not WYSIWYG, so not cool Very fast solution if you have only one coder!

Conclusion

Conclusion Texture palette: good quality for cartoony The less colours, the better lz77 works Ogg beats MP3 Executable size is relevant on WiiWare Cutting up buildings saves space

? Joost van Dongen joost@ronimo-games.com