Independent Development and Writing Your Own Engine

Post on 22-Nov-2014

407 views 1 download

Tags:

description

A talk about why an independet developer would want use their engine. And experiences we had making our own for Stem Stumper

transcript

Independent Development and Writing Your Own Engine

Using Ananse’s Engine as an Example

Who Am I?

• Born and raised in The Bronx, NY• CMU SCS 2008• Interned at EALA on Medal of Honor

Airborne• Worked at Demiurge Studios for 2 years• Started Ananse Productions in November

2010• Stem Stumper released in April 2011• Background is mostly in Programming!

Stem Stumper

Sonar Mode

Today’s Talk

• Reasons why we went on our own• Lessons learned • Ask questions!

Why Use An Engine?• Several engines have a strong

community• Less dependency on engineering• Large feature set available from day

one

Why Write Your Own?

• Engineering a core part of team• Building team expertise• Specialization (Accessibility)• Possibly License

Ananse’s UI Goals

• Platform independent• Works with accessibility tech • Visual guide to making UI that’s

easy to integrate in game• Non-programmers could easily

design UI

Interface Builder

Interface Builder

• Has accessibility and localization built into it

• IOS standard way of making UI• Lots of documentation and tutorials• Very platform specific

wxGlade

wxGlade

• Tried to use open source standard• Lets you design UI graphically• Had to parse XML ourselves

(libxml2)• Used for the first month of project• No absolute positioning!

Glade

Glade

• A different open source standard• Allowed for easy placement• Still not non-programmer friendly

but we ran out of time!

UI Lessons Learned

• Be tolerant of different formats• First tool is almost never the right

tool

UI Lessons Learned

• Process more important than bells and whistles

UI Lessons Learned

• Text based formats help for debugging first passes

Platform Specific Tech• File IO• Accessibility Tech• OpenGL

C++, Java, and Android• Android NDK not really mature until

Gingerbread (OS 2.3)

C++, Java, and Android

• Still need familiarity with JNI• Try to stay in one language as long

as possible • Be mindful of threading and

garbage collection issues

File IO on Android

• Assets live in gzip-ed package requiring Android API to read

• IO abstracted to reader/writer classes which internally handle specific

Accessibility on Android

• Apple has VoiceOver, a very robust touch based screen reader

• Android catching up with Eyes-Free project which is key based

• Android introduces arrow navigation control

• Don’t need to double tap instead of single tap

OpenGL

• Too much work to abstract draw calls

• All OpenGL functionality limited to one set of cpp files

• Still abstract things like texture loading, etc.

• One place Android and Apple agree

Platform Lessons Learned

• Decouple systems as much as possible

Platform Lessons Learned

• Focus on one platform at a time!

Q&A

• kmensah@ananseproductions.com• @AnanseProds/@insomniac2846