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
![Page 1: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/1.jpg)
Independent Development and Writing Your Own Engine
Using Ananse’s Engine as an Example
![Page 2: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/2.jpg)
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!
![Page 3: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/3.jpg)
Stem Stumper
![Page 4: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/4.jpg)
Sonar Mode
![Page 5: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/5.jpg)
Today’s Talk
• Reasons why we went on our own• Lessons learned • Ask questions!
![Page 6: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/6.jpg)
Why Use An Engine?• Several engines have a strong
community• Less dependency on engineering• Large feature set available from day
one
![Page 7: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/7.jpg)
Why Write Your Own?
• Engineering a core part of team• Building team expertise• Specialization (Accessibility)• Possibly License
![Page 8: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/8.jpg)
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
![Page 9: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/9.jpg)
Interface Builder
![Page 10: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/10.jpg)
Interface Builder
• Has accessibility and localization built into it
• IOS standard way of making UI• Lots of documentation and tutorials• Very platform specific
![Page 11: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/11.jpg)
wxGlade
![Page 12: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/12.jpg)
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!
![Page 13: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/13.jpg)
Glade
![Page 14: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/14.jpg)
Glade
• A different open source standard• Allowed for easy placement• Still not non-programmer friendly
but we ran out of time!
![Page 15: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/15.jpg)
UI Lessons Learned
• Be tolerant of different formats• First tool is almost never the right
tool
![Page 16: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/16.jpg)
UI Lessons Learned
• Process more important than bells and whistles
![Page 17: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/17.jpg)
UI Lessons Learned
• Text based formats help for debugging first passes
![Page 18: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/18.jpg)
Platform Specific Tech• File IO• Accessibility Tech• OpenGL
![Page 19: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/19.jpg)
C++, Java, and Android• Android NDK not really mature until
Gingerbread (OS 2.3)
![Page 20: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/20.jpg)
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
![Page 21: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/21.jpg)
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
![Page 22: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/22.jpg)
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
![Page 23: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/23.jpg)
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
![Page 24: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/24.jpg)
Platform Lessons Learned
• Decouple systems as much as possible
![Page 25: Independent Development and Writing Your Own Engine](https://reader034.vdocuments.mx/reader034/viewer/2022051411/546faa00af79593f7f8b4571/html5/thumbnails/25.jpg)
Platform Lessons Learned
• Focus on one platform at a time!