Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
8. January 2019

The Panda game engine is a C++/Python based open source game engine form in collaboration between Carnegie Mellon and Disney, previously used to power MMOs such as Toon Town Online and Pirates of the Caribbean.  In addition to the 1.10.0 release they performed a complete facelift, with a new logo and a much nicer overall website.  The major improvements to Panda in 1.10.0 include support for Python 3.x in addition to Python 2.x, improvements to the shader process and underlying OpenGL renderer, cross platform gamepad support, Android port improvements, HarfBuzz text shaping and more.

Complete details from the release notes:


  • Experimental ability to build for Android
  • New input framework to natively support gamepads, joysticks, etc.
  • Multi-threaded render pipeline is a lot more stable now
  • New setuptools-based deployment pipeline
  • Improvements to mouselook smoothness
  • Cache is now at $XDG_CACHE_HOME/panda3d (~/.cache/panda3d), not ~/.panda3d
  • Addition of unit test suite
  • Many improvements to thread safety
  • Many performance improvements
  • Tons of bugfixes
  • Big style cleanup of C++ source code

Python API

  • Complete support for Python 3
  • Support for coroutines and async/await
  • Property interfaces have been added for many settings
  • More flexible handling for keyboard arguments in C++ APIs
  • Python bindings are completely separated out of the C++ libraries.
  • Interrogate binding generator has many improvements.
  • Use of pandac.PandaModules is discouraged, use panda3d.core et al
  • Use of libRocket is discouraged due to lack of Python 3 support
  • Tasks are now sorted in addition order when lacking a sort value
  • Fixes iris/fade transitions for extreme aspect ratios
  • WeakNodePath is now exposed to Python
  • WindowProperties.size(x, y) deprecated; use WindowProperties(size=(x, y))
  • Calling bare run() is deprecated, use instead
  • downcastTo*() methods have been removed, they were already no-ops


  • Add new shader-based terrain rendering method (ShaderTerrainMesh)
  • The default ColorAttrib mode is now T_vertex
  • The ColorAttrib T_off mode now properly disables vertex colors entirely
  • Make handling of color attributes more consistent between renderers
  • Ability to create an OpenGL core profile context; set "gl-version 3 2"
  • Experimental support for reverse-Z rendering for best depth precision
  • sRGB framebuffers supported more widely
  • Support for infinite near/far clip in lens
  • Add some PBR material parameters to material class
  • Addition of more built-in GLSL shader inputs; see manual.
  • Add p3d_FragData[] GLSL output for MRT in GLSL 1.30
  • Add flag enabling vertex shader control over point size
  • Support signed ints and double-precision floats in vertex data with GLSL
  • Support unsigned 11/10/10-bit floating-point textures and vertex data
  • Support for SSBOs via ShaderBuffer class
  • Support OpenGL FBO buffers without any attachments
  • Support passing uint variables to GLSL shader
  • Allow rendering objects with empty vertex data (for vertex pulling)
  • Add LogicOpAttrib, for supporting logical operator blending
  • Improvements to OpenGL ES support
  • Support for geometry with adjacency information
  • Change default alpha blending to improve blending rendered result
  • New method for obtaining native OpenGL texture object
  • Support windowless offscreen rendering on macOS
  • Panda resets OpenGL state better before and after draw callbacks
  • OpenGL renderer better supports debugging tools like apitrace
  • Support fixed-depth billboards, useful for 2D tags that don't change size

Shader generator

  • Significant performance improvements
  • Support for point light shadows
  • Hardware skinning support
  • Changes to match fixed-function pipeline better
  • Fixes for normal vector normalization
  • Support multiple normal maps (uses Reoriented Normal Mapping)
  • Tracks modifications to materials and texture stages automatically


  • Allow specifying light color based on color temperature
  • Setting specular color of a light separately is deprecated
  • New GLSL inputs to make implementing lighting in shaders much easier
  • Add representation for sphere light and rectangle light
  • Efficiency improvements for passing light information to shader
  • Interocular distance for shadow cameras now always defaults to 0
  • Add low-level lighting module from RenderPipeline


  • Support cube map arrays
  • Support buffer textures
  • Many more texture formats supported
  • BC4 and BC5 compression modes supported
  • Proper depth textures supported in DirectX 9 renderer
  • set_ram_image(_as) directly supports buffer protocol
  • TexturePeeker supports more formats and component types


  • Dramatic improvements to text rendering performance
  • Support for HarfBuzz for higher-quality text shaping and kerning
  • Support for right-to-left text
  • Support for signed-distance-field rendering in egg-mkfont


  • The default unit for audio is now 1 meter for each Panda unit.
  • Native .flac loader
  • Support videos with alpha channel in ffmpeg
  • OpenAL stability improvements, especially on macOS
  • Support loading .opus files with libopusfile
  • Fix various memory leaks

Physics / collisions

  • CollisionTube is renamed to CollisionCapsule.
  • Box-box collision test is improved to work well with the Pusher
  • More box tests for collision system: box-into-plane, box-into-poly
  • Capsule (tube) can be used as "from" shape into plane, sphere, capsule, box
  • Bullet objects are serializable to .bam files.
  • Bullet bindings are now thread safe.
  • Bullet debug drawer is more efficient; no longer inherits GeomNode.
  • Various fixes to bullet vehicle wheel synchronization
  • PhysX bindings are deprecated.

Pipeline / loading

  • Support for Assimp library to load a broad variety of model formats
  • Ability to specify min-lod, max-lod, lod-bias in .egg file
  • Egg file materials support PBR-style material parameterization
  • Support loading more DDS files, including DX10-style ones
  • Add support for OpenEXR and HDR textures
  • Support line/point thickness in bam2egg
  • bam2egg no longer inserts a vestigial ModelNode at the top
  • bam2egg supports depth test, offset, cull bin attributes
  • Accept a .gz file wherever a .pz file is accepted
  • egg-palettize supports mirror and border-color wrap modes
  • More robust checks against memory corruptions when loading bad .bam files
  • Support for Maya 2017 and 2018
  • Support preprocessing GLSL shaders created with Shader.make


  • We now require using MSVC 2015 or 2017 to compile on Windows.
  • At least GCC 4.8 is now required.
  • With GCC/clang, enabling C++11 is now required.
  • Allow building with more recent ffmpeg versions
  • Support for old FFMpeg versions (before 1.1) dropped.
  • The ppremake build system has been removed.
  • Support for OpenSSL versions before 0.9.7 has been dropped.


  • Use of NULL is replaced with nullptr
  • WeakPointerTo now requires use of lock() method for thread safety
  • Mutex et al now satisfy C++11 Lockable constraints
  • Panda headers no longer contain using namespace std;
  • PN_int32 et al have been removed, use stdint.h types instead
  • The need to link with pystub and add Python include dirs is removed.

You can learn more about this release on the Panda developer blog and the source is available on Github on the BSD license.  You can download the Panda SDK here with Linux, Mac and Windows downloads available.

GameDev News

8. January 2019

Back in June of 2018, Microsoft acquired GitHub for an eye watering 7.5 Billion dollars.  This transaction took several months to make it through regulatory approval, with Microsoft finally taking control near the end of 2018.  Yesterday, we saw the first official impact of the ownership change and for end users, it’s a pretty good change.  The free tier of GitHub now offers unlimited private code repos!  This was arguably the biggest reason for many small developers to actually pay for a premium account, so for these developers, they can downgrade to free and save their money.  Now the major limitation between Free and Pro accounts is the number of collaborators in a private repo, with the free tier have a limit of 3, while the pro tier has no such limit.

Details of the new changes from the Github blog:

  • GitHub Free now includes unlimited private repositories. For the first time, developers can use GitHub for their private projects with up to three collaborators per repository for free. Many developers want to use private repos to apply for a job, work on a side project, or try something out in private before releasing it publicly. Starting today, those scenarios, and many more, are possible on GitHub at no cost. Public repositories are still free (of course—no changes there) and include unlimited collaborators.

  • GitHub Enterprise is the new unified product for Enterprise Cloud (formerly GitHub Business Cloud) and Enterprise Server (formerly GitHub Enterprise). Organizations that want the flexibility to use GitHub in a cloud or self-hosted configuration can now access both at one per-seat price. And with GitHub Connect, these products can be securely linked, providing a hybrid option so developers can work seamlessly across both environments.

Pricing for individuals now breaks down as follows:


Not a bad first move…

GameDev News

7. January 2019

Over the weekend, Esoteric Software released version 3.7 of their Spine animation software.  Spine enables you to create complex 2D animations using a bone and mesh based workflow, much like working and animating in 3D.  It is a software that we have covered several times on this site including this step by step tutorial as well as in our recent round-up of bone based animation packages.  The 3.7 release brings several new features and improvements including new audio support, improved exporters, new skinning functionality and a new C++ based runtime.

Major new features of the 3.7 release include:

  • Audio support
  • Stretchy, compressed and uniform inverse kinematics
  • Mesh whitespace stripping
  • Revamped exporters(Gif, APNG, Range and Crop limiting)
  • Pixel rendering
  • Skin combining
  • Type to Search
  • Skin duplication
  • Vertex copy/paste
  • CLI improvements
  • Runtime improvements
  • New C++ based spine runtime (will power UE and Cocos)

You can learn a great deal more about this release on the Spline blog or by watching the video embedded below.  In addition to the new 3.7 release, a Spine Web Player was also released, with the announcement being lost in the holiday noise!

Art GameDev News

5. January 2019

MIT have just released version 3 of Scratch.  Scratch is a visual programming language and game engine aimed at helping kids learn how to program, I previously featured it in the GameFromScratch Guide to Getting Kids Started in Game Development.  It uses a system similar to virtual lego blocks for coding games that respond to events, sensors and more.  Additionally Scratch comes absolutely loaded with content such as sprites, sound effects and backdrops that help you get started right away.

Scratch 3 brings new behaviours, a new extension system and more.  Details from the 3.0 announcement on Medium:

Scratch Extensions

With Scratch extensions, you can keep adding new coding blocks to Scratch. Program motors, lights, and sensors with the LEGO® Education WeDo 2.0, LEGO® MINDSTORMS® Education EV3, and micro:bit extensions. Program characters to speak in other languages with the Google Translate extension, or to talk out loud with the Amazon Text-to-Speech extension. You can even program characters to respond to your body movements using your webcam and the Video Sensing extension.This library of extensions will continue to grow over time, expanding what you can create with Scratch.

To help kids get started with Scratch, there is a new collection of tutorials and “how to” videos.

New Tutorials and Activities

Whether you’re just getting started or looking for inspiration, the new Ideas section of the website includes tutorials for everyone. Animate a character, make music, or create an adventure game with Cartoon Network characters. You can find more activities and full coding curricula from Raspberry Pi Code Club, Google CS First, and the ScratchEd Creative Computing Curriculum Guide.

Scratch 3.0 comes with new, easily remixable characters, backdrops, and sounds.

New Characters, Sounds, and Backgrounds

Tacos, dinosaurs, mermaids, and shoes! Beats, sneezes, squawks, and squeaks. Jungles, concert halls, mountains, and stadiums. We worked with artists to create lots of new, easily remixable characters, sounds, and backgrounds. There are also improved paint and sound editors for creating and editing your own images and sounds.

Scratch Everywhere

Scratch 3.0 is designed to work in any current browser and on a wide variety of devices — including touch devices like tablets. No internet? No problem. Scratch 3.0 has an offline editor called Scratch Desktop.

Scratch has always been more than a coding platform. What makes Scratch special is the global community of kids, educators, families, and organizations who are creating and sharing projects, developing tutorials and resources, and hosting in-person events, workshops, and conferences. We’re looking forward to seeing what you all do with this new generation of Scratch.

You can read more about the 3.0 release details here.  Scratch is a fully open source project with the Github repository available here.  If you are interested in creating JavaScript extensions, you can find code examples here.

GameDev News

3. January 2019

Corona is an open source Lua powered cross platform game engine, first released way back in 2009.  Back in 2017 Corona was released for free, after being acquired by AppoDeal earlier in the year.  Yesterday they announced that Corona will now be available under a dual licenses, GPLv3 and a proprietary commercial license.  If you require more details on the various open source licenses, be sure to check out our guide to open source licenses available here.

Details of the open sourcing:

“The transition of Corona to the open source model of development has been our long-term vision since Corona Labs was acquired by Appodeal in 2017. We believe that this move will bring transparency to the development process, and will allow users to contribute features or bug fixes to make the project better for everyone,” said Vlad Sherban, product manager for Corona Labs.

The open source model will bring more visibility and flexibility to the development process by allowing visibility into exactly what the engine team is working on and where the project is going, and by contributing valuable new features that will help spearhead Corona to the next level. Additional benefits for businesses include the potential to acquire a commercial license for source code and customize the engine for specific commercial projects.

“Corona Labs will continue to have a dedicated team and infrastructure to support our flourishing plugin ecosystem and infrastructure, as well as to keep up to date with the ever-changing requirements and updates coming from applications stores. Powered by the new open source model and supported by the development of new features and bug fixes will make Corona more community driven — but not without our help and guidance. Ultimately, going open source will provide confidence in the future of the engine and an opportunity to grow community involvement in engine development,” said Vlad Sherban, product manager for Corona Labs.

Corona is available under a split license:

  1. You can download the Corona source code under the GPLv3 license and build your games and apps, however, those games have to be distributed under the GPLv3 license, i.e you have to make your source available. Games and apps based on the open source distribution of Corona have to be distributed using the same license (GPLv3).
  2. You can download the Corona source code, negotiate a commercial license agreement with Corona Labs, and build a version of Corona that has a custom feature. You can then distribute your games and apps without opening your own source.
  3. This does not apply to daily builds and releases. Their license remains unchanged. You can download builds to freely build and distribute your apps as before. The new changes only apply to the source code of the engine which is now available.

The last point is important, as it means existing customers using the free engine can continue to use the binary releases for free, so long as they don’t touch the source code.  Speaking of source code, the code is now live on GitHub.

GameDev News

AppGameKit Studio

See More Tutorials on!

Month List