proton_features
This is an old revision of the document!
Features
- Create 2D and 3D games that run on seven platforms in C++: OSX, Win, iOS, Android, WebOS, RIM Playbook, Linux
- Entire engine based on GL (Can use OpenGL ES 1.X or GL 1.3)
- In App Purchase integrated for iOS, Android, webOS through a single interface (IAPManager)
- Third party systems integrated: Tapjoy, Hooked, Chartboost (implemented through AdManager and its plugin system)
- 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)
- Hierarchical entity/component based system that handles game and GUI objects together (they are the same thing)
- Sigslot based (with boost::signals) messaging system that lets you dynamically schedule calling entity and component functions, set variables
- Supports screen stretching to fit any screen size, manual multiple resolution layouts, or a mixture of both
- Internal component based GUI system with menus, buttons, scrolling, text input (supporting hardware and soft keyboards)
- Particle system (LinearParticle)
- Font system supporting in-line coloring, kerning, scaling, wrapping. Imports BMFont generated fonts.
- Simple to use Sound Manager with smart caching and streaming. (Supports 6 implementations)
- Portrait and landscape modes support with rotation/flip
- Automatic internal handling to seamlessly around 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
- Touch screen, accelerometer, and vibration support
- 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
- 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 storage 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
- Liberal open source license
- Used in the games Dungeon Scroll, Mind Wall, Blip Arcade, Dink Smallwood HD, and Tanked (Free 3d game)
- Even if you don't plan on selling a desktop version of your game, having a native desktop binary makes it a breeze to 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 function/variable creation at an entity or component level using a variant data type
- 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.1337761886.txt.gz · Last modified: 2012/05/23 08:31 by seth