
Polycode is completely free and open source (MIT license), with all development happening publicly on Github. Its core is written in C++ and currently runs on Mac, Windows and Linux with iOS and Android support planned in the future.

You can use Polycode as a C++ library or write everything in Lua using the Polycode IDE.
Polycode's API is designed around the "do more with less code" philosophy. It uses a managed scenegraph system that takes care of rendering and updates, but provides the ability to do custom rendering and updates if you so wish.

Custom cross-platform IDE for editing content and Lua scripts. Write everything in Lua inside the IDE and publish directly to all supported platforms or use it in tandem with the C++ API for content editing. Layout 2D Polycode entities (with 3D support planned for the future), edit materials and write Lua scripts.

Publish your app directly from the IDE to all supported paltforms if you are using Lua only. Polycode creates its own app format called a "polyapp", which contains all of your code and assets and wraps it into a platform-specific player. The C++ API is cross-platform as well, of course, but you will need to compile it yourself.

Simple to use hardware accelerated 2D and 3D graphics. Both 2D and 3D graphics use the same hardware accelerated rendering, but 2D graphics are simplified and separated from 3D for convenience (though both can be rendered at the same time). Polycode provides material and screen shader and HDR rendering support.

Font rendering in 2D and 3D via Freetype with full Unicode support. Support for TrueType and OpenType font loading and substring colorization.

Polycode supports spritesheets for 2D animation, skeletal animation for 3D meshes and Tween classes for animation of custom parameters.

Polycode uses custom mesh and skeletal animation file formats, but you can import mesh and skeletal animation assets from Collada and other popular formats.

Built-in particle systems with bezier curve controls for color and scale.

Audio with 2D and 3D positional sound support and loading from WAV and Ogg Vorbis files.

Gamepad/joystick, keyboard and mouse input handling. Multi-touch handling on Windows via Windows Touch API (Windows7 and above) and TUIO touch handling via the TUIO module.

Basic UDP networking support with easy to setup client-server structure. Module for HTTP-based data loading via libcurl.

Physics modules that integrate with 2D and 3D entities and can be used to add physics simulation and collision detection.

Themeable, easy to use cross-platform UI that integrates with the rest of Polycode. Use the same UI that was used to build the Polycode IDE.