Friday, 2 September 2011

Stuff I've done at CandyCane LLC



Figured this would be useful somewhat, especially as a way to see what I've accomplished so far at my job...
I'll be updating this from time to time, since I can't remember everything I've done so far.


Not Platform Specific

  • Developed a CRC32 generator for unique IDs based on a string's data, more often used to save time when using Maps or to generate a unique ID for a game object
  • Developed a drawcall cache that caches several similar drawcalls and then draws them when a call with a different texture/blending mode is applied

iPhone

  • Developed Facebook, Twitter, and E-Mail support to Fling
  • Developed a custom Sound Engine supporting sound and music streaming, self-repeating sounds, music cross-fading, among other misc features
  • Implemented AdWhirl ads on the free version of Fling

Non-iPhone

  • Reimplemented native widgets like Text Fields and Alert Views to either a custom OpenGL implementation or the native equivalent of the targeted platform
  • Reimplemented large platform-specific parts of the CC codebase, like the OpenGL implementation, sound, file access, among other low-level code, from iOS to the targeted platform.
  • Developed a custom libPNG image loader that supports Grayscale, Gray-alpha, Indexed, and RGB/RGBA images, processing RGBA images so they had their alpha premultiplied.
  • Developed a custom FreeType text renderer that takes care of properly converting UTF-8 to UCS-4 in order to not only render high-quality text to existing bitmaps, but also to render unicode text properly. This renderer also formats the text accordingly so the game only had to send a blob of text and the maximum bitmap size to format and the formatting type (Characterwrap, Wordwrap, truncation, etc)
  • Reimplemented SFML's HTTP client to use non-SC++L code, since SC++L code of any kind would crash on Android, and used it to query the CC server for statistics purposes

Android

  • Partially (as of this post's original posting date) ported Fling to Android
  • Implemented AdMob ads and Tapjoy Offers for Fling Free
  • Implemented in-app purchases
  • Developed multiple java "gateways" to save RAM and allow the C++ side of the game to take as much control as possible.
  • Implemented screen scaling so the game works on all screen sizes.
  • Due to a lot of problems with the Android platform and Native Code, had to debug most things with no debugger, or at the very least, a print-based debugging session (that is, no debugger, just printing values from relevant variables or states)
  • Implemented app licensing and obfuscation of java code 
  • Implemented a common java library used by all versions of Fling based around a base class that handles communicating with the native C++ Fling code and several Feature Sub-classes that implement features such as Admon Ads and in-app purchases
  • Implemented save file transferring between free and paid versions of an app
  • Wrote an app that can gather a user's adb logcat without that user having an SDK

webOS

  • Ported Fling to webOS
  • Partially ported Fuzzle to webOS
  • Developed a SDL_ttf Text Renderer (later superseeded by a FreeType Renderer I also developed)


0 comments:

Post a Comment