independent development and writing your own engine
DESCRIPTION
A talk about why an independet developer would want use their engine. And experiences we had making our own for Stem StumperTRANSCRIPT
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
• [email protected]• @AnanseProds/@insomniac2846