User Tools

Site Tools


This is an old revision of the document!


  • Create games and apps that run on seven platforms in C++: OSX, Win, iOS, Android, WebOS, RIM Playbook, Linux, Flash
  • Entire engine based on GL (OpenGL ES 1.X or GL 1.3)
  • In App Purchase integrated for iOS, Android, and webOS through a single interface (IAPManager)
  • Third party systems integrated: Tapjoy, Hooked, Chartboost, Startapp, Flurry
  • System specifics are abstracted, hiding the gotchas and caveats of each platform, while still harnessing the full power of the native hardware (for instance, hardware audio decoding)
  • Sigslot based (with boost::signals) messaging system that lets you dynamically schedule calling entity and component functions, set variables
  • Supports fake screen resolutions with stretching, so you can target only a few sizes and automatically scale up/down to the closest one
  • Internal component based GUI system with menus, buttons, scrolling, text input (supporting hardware and soft keyboards)
  • 2D and 3D Particle system (LinearParticle for 2d, and Irrlicht for 3D)
  • Font system supporting in-line coloring, kerning, scaling, wrapping. Imports BMFont generated fonts.
  • Simple to use AudioManager with smart caching, streaming, and per sfx controls. (Supports 6 implementations)
  • Portrait and landscape modes support with rotation/flip (on some platforms)
  • Automatic internal handling to seamlessly deal with power-of-2 texture limitations
  • Socket and HTTP classes, in-game file downloading
  • Powerful 2D image handling with scaling, tinting, rotation, animation
  • FileManager that transparently handles decompressing files when needed, supports mounting zips as filesystems, automatically mounts Android .apks
  • Get abstracted input from touch, mouse, DInput, iCade, Xperia gamepad, 60Beat Gamepad, accelerometer
  • RTPack command line tool intelligently handles image conversions to .rttex format, a wrapper that handles multiple formats including jpg and powerVR compression types
  • Requires minimum outside dependencies for portability, most are included (such as libjpg, libpng, a small subset of boost, etc)
  • Large group of cross platform utility functions suitable for stealing if you want (Such as RemoveDirectoryRecursively, CreateDirectory Recursively, LaunchURL, etc)
  • Supports premultiplied alpha, can optionally convert on load
  • Separate “system” and “game” timers make pausing the game easy
  • Built-in database system (VariantDB) can serialize key/data pairs to/from disk or raw memory easily
  • All C++ source is “right there” making debugging easier - don't know how to use a component? Look at its source
  • 3D features provided by the optional pre-integrated Irrlicht component - Proton SDK doesn't use any of its window setup or input code, but only the rendering pieces
  • Even if you don't plan on selling a desktop version of your game, having a native desktop binary makes it a breeze to debug and record high speed movies of your app for promotion purposes

The Insane Proton Sigslot based Entity/Component System

  • No messy C++ hierarchy - Only a single entity type that lets you add components and additional entities as children
  • No hard-coded Render or Update functions, a very different way to think about and use entities
  • Loose coupling, can call functions, get/set variables without knowing anything about the entity/class - directly or scheduled
  • Dynamic creation and runtime binding of function and variables. Supports reflection, remote procedure calls, tweening
  • Components can share data and work together - for example, adding the RenderTrailComponent will add a 'trail' without knowing anything about the component (s) that is actually handling rendering
  • Can request callbacks when data is changed or functions are called
  • You can just ignore the entire entity system if you want, or just use it for your app menus/GUI
proton_features.1355382682.txt.gz · Last modified: 2012/12/13 07:11 by seth