booting it out the door or just getting the thing finished
DESCRIPTION
Booting It Out The Door or Just Getting the Thing Finished. Jan Svarovsky Kuju Entertainment. Introduction. Scope of talk and definitions So how do you finish a game Issues that face you Solutions to get your to your goal Prevention - making it easier next time Conclusion and questions. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/1.jpg)
Booting It Out The Dooror
Just Getting the Thing Finished
Jan Svarovsky
Kuju Entertainment
![Page 2: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/2.jpg)
Introduction
• Scope of talk and definitions
• So how do you finish a game– Issues that face you– Solutions to get your to your goal– Prevention - making it easier next time
• Conclusion and questions
![Page 3: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/3.jpg)
Definitions - Audience
• Programming– But decision-makers
• Yet not programming– Code is the glue that holds art / design together– With power comes responsibility– Therefore talk strays into management
![Page 4: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/4.jpg)
Definitions
![Page 5: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/5.jpg)
Definitions - “Endgame”
• Deliberately woolly definition– Alpha / beta vary from game to game– Especially small projects may not have them
• It’s more a state of mind– Finishing not adding features– Deadlines looming– Starting to realise it’s going to be tough– Me!
![Page 6: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/6.jpg)
Definitions - “Finished”
• Everything is negotiable– TRC / TCR / …– PC / Mobile can have patches– Version 2– Often it’s in everyone’s interest to pass
milestone– Feature creep
![Page 7: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/7.jpg)
Definitions - “Finished”
• There are stages– Alpha / beta / milestones / publishers– Of varying importance
• Ultimate deadline is gold master– Still negotiable, may never have been set– Something that someone might want to buy– Always should have this one in mind
![Page 8: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/8.jpg)
Issues that face you
![Page 9: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/9.jpg)
Issues
• Current status– Existing problems
• Final status– Defining what you need to achieve
• Getting from one to the other– what will get in your way
![Page 10: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/10.jpg)
Current status
• Code
• Gameplay– or “everything else”– mechanics
• eg “you can double-jump” and “there are 3 species”
– content• levels, storyline
• even custom puzzles
![Page 11: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/11.jpg)
Current Status - code
• Slow
• Too much memory
• Applies to CPU, GPU, sound
• Buggy
• Not finished
• Wrong platform
![Page 12: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/12.jpg)
Current Status - Gameplay
• Mechanics– We have control over this, have to implement it– Not finished– Is it fun?
• Content– We have to provide a smooth pipeline– Employ twice as many artists on half-speed
pipe?
![Page 13: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/13.jpg)
Current Status
• Not a problem!– Of course it’s not finished, slow, buggy– It didn’t exist at all to begin with!
![Page 14: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/14.jpg)
What is the current status?
• Overall game– Chances are no-one’s played the game– Most people looking after their own section– Completeness < perceived completeness
• Code– No-one’s sure what’s complete– Or how buggy it is
![Page 15: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/15.jpg)
Final Status
• Feature creep
• Feature removal
• The pipeline is part of your product– There’s a code pipeline too
![Page 16: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/16.jpg)
Getting from one to the other
• Code and data rot
• Personnel coming and going
• Fixing bugs rather than leaving them
• Things that slow you down– header files– too much interconnectedness
![Page 17: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/17.jpg)
Solutions
![Page 18: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/18.jpg)
Solutions
• Mostly it’s about people and the process
• First section will be specific code fixes
• Afterwards “the rest”– I’ll imagine I’ve just turned up on your project
![Page 19: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/19.jpg)
Specific code fixes
• Consoles have duplicated data– Go back to “legacy” level load system for PC
• Memory / Size– Often large easy fixes available– Overload operator new() to tag memory
• and similar for textures / sounds
– Number of allocations just as bad as size
![Page 20: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/20.jpg)
Operator new
void *all_blocks;
void *operator new(size_t Size, const TCHAR *tag)
{
void *retval = malloc(Size + 8); // create memory with extra space
if (!retval) return NULL;
*(void **)retval = all_blocks; // link all blocks together
*all_blocks = retval;
((const TCHAR **)retval)[1] = tag; // label the memory
return retval;
}
CTexture *tex = new(“Frontend”) CTexture(…);
![Page 21: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/21.jpg)
Optimisation
• Vtune / Aprobe / SN Tuner / etc• Always bigger optimisations at higher level
– Do you need that many line checks?– Do you need poly/poly collision far away?
• Bigger optimisations at even higher level– Do you need collision at all?– Do you need that many objects
• Look outside programming
![Page 22: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/22.jpg)
General fixes
• Believe TRC / TCR’s / etc– And that they’re there to help you
• Multiplayer game for feature testing– The AI behaviour emerges from humans– Game doesn’t need to be so complete
![Page 23: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/23.jpg)
People
• Work hard!– Why? Because it’s their game
• Keep hassling people– Force people to play the game– Testers don’t mean you can avoid your job– Think outside your bit
• True of everyone not just leads
![Page 24: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/24.jpg)
People - task lists
• You need to give people something to do
• But they have to see the forest for the trees– Civilians’ voices example
• Everyone’s just typing typing typing
![Page 25: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/25.jpg)
People - overlapping
• To start with, easily definable tasks
• Towards the end, things overlap– “it crashes” - who’s to fix?
• Why is this not true on a building site?– All code can affect all other code
• Why is this not as true in bank systems?– Efficiency over tidiness
![Page 26: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/26.jpg)
People - nerves
• Make big changes– It’s never too late
• actually, I do have an example where it might be
– People err on the side of not changing– Tiptoeing round increasingly unstable system
![Page 27: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/27.jpg)
Prevention
• It’s never too late
• So this overlaps with “fixes”
![Page 28: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/28.jpg)
Pipeline
• Time from change being made to tested– Load times
• Easy to optimise
– Resource creation• resource machine becomes the bottleneck
– Towards the end, this becomes painful• Things are more set in stone
• Optimisations to loading may slow down resource generation
![Page 29: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/29.jpg)
Code Pipeline
• Compile times– header files, precompiled headers– “Thing.h”
• Extract out system dependency– You’ll be changing that lots at the end
![Page 30: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/30.jpg)
Pipeline
• Avoid rot with error testing code– Sensible defaults (eg green texture, flashing)– “Human-readable” errors– Errors as near as possible to their fix
• Animation editor example
– People must care about it
![Page 31: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/31.jpg)
Scalability
• Especially on PC, but true on consoles– LOD based on distance
• Not just of gfx, but of gameplay if you can
• You’re always pushing the engine
• You don’t commit to spec until later
![Page 32: Booting It Out The Door or Just Getting the Thing Finished](https://reader036.vdocuments.mx/reader036/viewer/2022062802/568144b9550346895db181b0/html5/thumbnails/32.jpg)
Issue avoidance
• “it’ll all be ok in the end”
• Make the game complete earlier– Vertical slice– Gameplay shouldn’t rely on final art