4. How to Get There?
• Most common problem is game architecture is wrong
• Further complicated by poor organization
• Building in Unity is fast, can become messy fast too
• So is there a better way?
5. Starting Off Right
• Building anything of substance requires some planning
• But doesn’t necessarily take a lot of time
• Identify requirements and key features of your game
• Prototype and test specific things on target platform(s)
• Document findings
• Team agreement on constraints
• Capture core design using data-centric approach
6. Platform Prototype
• Not a gameplay prototype!
• Complexity test on target hardware
• Graphics capability and performance
• Memory usage and performance
• Use simple, but representative, assets
• Correct polygon count, pixel size, shaders, etc.
• Use profiler to assess feasibility
• Repeat until you have a clear idea of how the game will be
put together
7. Example: iOS 2D Action Game
• Large static background
• Player is “Defender”
• “Raiders” attempt to raid “Treasure”
• Both Defender(s) and Raiders use “Weapons”
• Will a large background image cause problems on iOS?
• Will a large number of separate alpha-sorted Raider and
Weapon sprites cause framerate hiccups?
• Do we need to pack sprites into atlases?
8. Data Prototype
• Approach development as a data problem
• Identify the data, structure and relationships
• Consider how designers will modify properties
• Designer scenes, exposed properties, XML, etc.
• Create test sets of data with team, design outward from
there
• Consider how art, design and code will come together to
implement the requirements and features
• Data helps define scope of what you’re building
12. Workflow Tips
• Get organized, stay organized
• Use sensible folder structures
• Use meaningful names
• Unity is GUID, not path, based
• Can move things around freely
• Don’t nest Resources folder, keep at root
• Stage incoming assets outside assets folder
• Use design-time only scenes, don’t mix
13. Technical Tips
• Learn, understand and use Unity’s awesome component
architecture
• Create project and global script templates
• Use lazy initialization
• Use static public methods instead of instance methods
• Enable objects from pools rather than Instantiate/Destroy
• Consider separate cameras for scene and GUI
• Write custom editor scripts
• Refactor often