2D Endless Runner in Unity for Mobile - GDG DevFest Istanbul 2014

45
2D Endless Runner in Unity for Mobile Murat Gürel @muratgurel GDG Devfest Istanbul, Dec 2014

Transcript of 2D Endless Runner in Unity for Mobile - GDG DevFest Istanbul 2014

2D Endless Runner in Unity for Mobile

Murat Gürel @muratgurel

GDG Devfest Istanbul, Dec 2014

About Me• Software Engineer, iOS - Peak Games

• Native iOS development for 3 years - 2 years professionally.

• 4 games with Unity

Why am I here?

• Evliya Çelebi experiences

• Insufficient resources on the internet

• Project management from scratch

• Tips, tricks & time-savers

Evliya Çelebi

VIDEO

Evliya Çelebi

• Started in June 2014

• 1 month research prior

• 4 sceneries with 5 different sprite sets (20 total)

• More than 40 levels with various difficulties

Agenda• Components

• Colliders & Layers

• Tags & Camera

• State Machine

• Animations

• Level Editor & Level Design

• Performance

• Development Environment

Components

Components• Unity is a component based system. Don’t try to do

everything with inheritance

Components

• Try to separate functionality into components

Colliders & Layers

Colliders & Layers• Use compound colliders. Don’t use 1 collider for

everything

Colliders & Layers• Instead of hard-coded values, use triggers

Colliders & Layers• Use layers & collision matrix to disable collision

between layers

Tags & Camera

Tags• Try to be type safe. Don’t rely on tags too much

• GetComponent is fast & safe

Tags• Use tags for higher level stuff

• Enemy, Player, Obstacle etc. (Not LongObstacle)

PlayerObstacle Collectible

Collectible

Camera• Use layers to disable rendering for certain

cameras

State Machine

State Machine

• We have a state machine for our main character

• Listen for events & let state decide what to transition into

• Character listens to state changes

• Other scripts can also hook into changes

State Machine

State Machine

Run Slide

Animations

Animations• Use mecanim

Animations• Know about animation triggers

Animations• For smaller animations, we use the legacy

system

Level Design

Level Design

• We have separate level slices

• We append them together

• Random enough

• Easier on development & design

• Random enough to be fun

• Predictable enough to control economy

• Fully random is extremely hard & not good for game

Level Design

Level Design

VIDEO

Level Editor

Unity Editor• Do not use editor to set variables excessively

• Only expose variables a level designer should use

• Validate if needed

• Do it inside scripts for other stuff

Level Editor

• If you can, separate level design from coding

• Unity editor is highly extendible

• Can make a level editor inside Unity

Level Editor

• Sharing workload

• Faster level design

• Fewer bugs if done correctly

• Shorter overall project time

• Editor itself can have bugs

• Teaching designers

• Cannot prevent default unity actions

ADVANTAGES DISADVANTAGES

Level Editor

• Designers place placeholders

• Have convenience methods

• Can validate & test level individually

• Send us the final level

Cross-Platform

Cross-Platform

• 1 image set with resolution 1280x800

• Show more game area

• Use percentage for resolution dependant stuff

• Preprocessor macros or conditionals

• uGUI for UI

Performance

Performance• Try to use simple shaped colliders (circle,

rectangle)

Performance• Use texture atlases

• Unity sprite packer is not good, we used TexturePacker

• Better packing algorithm

• Exports for Unity

• 54 MB to 37 Mb memory gain

Performance• Do not load every asset at once

• Async load when needed

VIDEO

Performance

• Test on device, not just simulator

• Have a FPS gauge

Performance• Use profiler

Performance• Try to use static fonts

Thank You!

Twitter: @muratgurelE-mail: [email protected]