Little Polygon Toolchain

This game is from the old Ludum Dare platform. You can try viewing the original page on Web Archive
(may not load correctly).
Announcement here: http://www.ludumdare.com/compo/2014/05/24/minild51-little-polygon-toolchain/

I've been cleaning up my personal SDL2 toolchain this weekend and updating it to the OpenGL 3.2 Core Profile, and I figured I'd share here in case it's useful to anyone else.

Basically, I wanted to make it easier to make chunky-pixel games, so I've implemented and shared:

(i) A build toolchain in python which imports portable assets (PNG, PSD, GIF, WAV, MP3, TMX, TTF) and other general userdata and exports a native binary (*.bin) which is loaded using SDL IO. Sprites and Glyphs are automatically atlassed onto textures and WAVs and other big buffers are zipped with zlib to keep the size down.

(ii) A batching Sprite and Spline renderers which use a "triple buffered" approach. There are 3 shared dynamic vertex buffers which are populated round-robin with sprites until a draw call is induced (either because it hit capacity or GL state, like the texture atlas, has changed) at which point we swap. This way, thanks to OpenGL's asynchronous pipeline approach, one batch is currently being rendered, one is "in flight" and one is actively bound to the application and there's high saturation and throughput.

(iii) I'm also playing around with linking the Mono redistributable runtime and binding using P/Invoke to support end-user modding of games.

Build Dependencies (Python 2.x)
-lxml (for parsing TMX maps)
-PIL or Pillow (for image processing)
-pyyaml (for asset script parsing)
-psd_tools (for photoshop import)

Runtime Dependencies
- SDL2
- SDL2_Mixer
- vectorial (for portable SIMD, included in git submodule)
- Mono (optional, for demo-mono)

Dependencies included for Mac and Windows. Linux can get everything through apt-get / etc :)

As a testing ground, I've been porting my LD28 submission from Unity to SDL2: http://www.ludumdare.com/compo/ludum-dare-28/?action=preview&uid=19295

Wishlist:
- Alternate OpenGL ES Implementation
- Emscripten Support (for browsers)
Found a bug?
Tell us on Discord