Rim have released Gameplay 1.6, a 3D cross platform library for writing games for Blackberry 10, Playbook, PC, Mac, Android and iOS devices using C++. This is a project we have been following here at GameFromScratch for quite a while, and given the complexity, its amazing just how fast you can get up to speed.
If C++ is your language of choice ( or LUA for that matter ), you really should check out Gameplay, it’s completely free and open source.
The following are the release notes of the 1.6 release:
- Adds file Stream interface for reading/writing files instead of using fread/fwrite.
- Adds Terrain class to support for heightmap based terrains featuring LOD, multiple surface layers, loading from PNG, RAW8/16, full transform, physics, patch culling and verticle skirt for cracks.
- Adds object-space normal map generation to gameplay-encoder for terrain normal map generation.
- Adds scene support for loading .terrain files in .scene files.
- Adds scene support for inline cameras to .scene files.
- Adds suppoft for defining .scene files without ‘path’ to gpb. New node can not be create in .scene file.
- Adds static Scene::getScene(const char*) to query currently active scenes in a game, helpful for script access.
- Adds support for multiple translate, rotate and scale commands in a single node entity within .scene files, processed in-order they are defined.
- Adds scene support for material auto binding scene ambient color, light color and light direction.
- Adds support for setting the depth compare function on materials.
- Adds support for texture/sampler arrays being passed to materials.
- Adds support for loading uncompressed DDS textures for the following formats: R8G8B8, A8R8G8B8, A8B8G8R8, X8R8G8B8, X8B8G8R8
- Adds improvments to prefer higher quality mipmap generation.
- Adds improved Gamepad API support for button enumeration, triggers and some mobile Gamepad support on BlackBerry.
- Adds additional gameplay-tests for billboards, forms, gamepads and lights.
- Adds support for launching the browser via launchURL(const char*).
- Adds physics support for setLinearFactor and setAngularFactor on rigid bodies.
- Adds methods to PhysicsCollisionObject to allow conversion to subclass types (i.e. PhysicsRigidBody, PhysicsCharacter, etc) from script.
- Adds option for fullscreen without width/height config to use native desktop resolution.
- Adds Linux support for OpenAL PulseAudio back-end.
- Adds support for latest Bullet Physics 2.81 with NEON optimizations for mobile targets.
- Adds support for preprocessor directive NO_LUA_BINDINGS in the gameplay project to omit inclusion of generated lua bindings in compilation for developer mode value.
- Adds optimizations to Lua generator to only write generated files if they differ from existing files, reducing both build times and committing of unchanged script binding files.
- Adds changes to Slider for setValueTextVisible, setValueTextAlignment, setValueTextPrecision and getters.
- Adds Microsoft Windows 7 64-bit support.
- Adds Apple iOS 6 support.
- Fixes to external-deps to reduce the size of the libraries on Windows.
- Fixes for Android to no longer need to copy files to the SD card before reading them. None of the Android samples require an SD card.
- Fixes for animation of opacity on UI and fonts.
- Fixes in UI for removing controls and also setVisible(bool).
- Fixes for UI controls missing on MacOSX.
- Fixes for setting UI alignment programmatically.
- Fixes for lighting shaders.
- Fixes to the texture minification mode from GL_LINEAR_MIPMAP_LINEAR to GL_NEAREST_MIPMAP_LINEAR for newly created textures with mipmaps.
- Fixes minor memory leaks and possible access violations when calling Game::exit() from script.
- Fixes physics debug drawing for large scenes causing the internal MeshBatch to grow to an enormous size.
This release certainly makes Gameplay on the desktop seem much more viable. Terrain support is certainly a nice new addition as well.
Good job Gameplay team.