Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon Join the GFS Discord Server!
30. April 2018

OGRE3D just released version 1.11.  OGRE (Object Oriented Rendering Engine) is an open source rendering framework written in C++.  The 1.11 release codenamed “Rhagorthua” was heavily focused on cleaning up the underlying code base to improve future development.  This includes tasks like switching to C++11 STL containers when possible, reduced memory consumption and a new scene loading API, SceneLoaderManager.  You can download OGRE 1.11 here.

Full details of this release from the changelog:

  • Main
    • RenderTexture: complete and fix PF_DEPTH usage
    • Support bulk convert and get sub volume of a slice of a compressed texture
    • Add errors for too many or too litle braces in scripts Closes #701.
    • Adds KTX (ETCCodec) support for loading mipmapped textures
    • Adds support for PVRTC pixel format in KTX containers
    • clang-tidy: fix performance-faster-string-find
    • clang-tidy: fix performance-type-promotion-in-math-fn
    • Fixed crash in RenderSystem::shutdown due to the notifications being sent to already destructed render targets
    • fix several gcc8/ clang7/ MSVC warnings
    • DataStream::readLine - fix out of bounds read (ret = 0)
    • generate a deprecation warning on "lod_distances" usage
    • Image - undeprecate 2D loading overloads
    • improve ResourceGroupManager documentation
    • ParticleSystem::fastForward - use round to avoid float iteration
    • Root - skip FrameListeners that are removed during event dispatch
    • SceneManager - explicitly disable mip filtering for depth map
    • SceneManager - flag GPV_GLOBAL on setAmbientLight
    • ScriptCompiler - improve error messages
    • SubEntity - add quotes to name strings
    • MeshLodGenerator: fix wrong stream eof() usage
    • InstancedEntity: Take scale into account when culling objects.
    • [Win32] Register Ogre log files to be collected by Windows Error Reporting and eventually passed to developer (would not happen under debugger)
    • Main: StringConverter - use empty newlocale on MinGW
  • Bites
    • ApplicationContext - fix reading shader cache and log on failure
    • ApplicationContext - forward fullscreen option to SDL (#658)
  • CMake
    • allow overriding OGRE_WARNING_FLAGS
    • Dependencies - propagate CMAKE_GENERATOR_PLATFORM
    • specify minimal required SWIG version
    • update dependencies
    • warn on deprecated true/ false settings
  • EXRCodec: Fix VS2017 error C2872: 'FLOAT': ambiguous symbol. (#723)
  • D3D11: D3D11Mappings - map DXGI_FORMAT_R8_UNORM to PF_R8
  • D3D9: fix compilation with MinGW
  • GL*:
    • log shader compile errors output as LML_CRITICAL
    • Fix for VAO leakage in ~GLVertexArrayObject
    • removed mRenderTargets destruction from ~GLxxxRenderSystem() as it's already done in RenderSystem::shutdown() method
    • do not force-enable shader cache
  • GL3+
    • FBOs are not shared between contexts, should be used and destroyed on the proper one
    • Fixed bugs on attempt to download non-zero miplevel; support for depth > 1
    • fix loading monolithic program from cache and log on failure
    • GL3PlusTextureBuffer: Ability to download to the non-consecutive PixelBox, useful for tiled rendering of very large images, atlasing, etc. GL RS already could do this
    • gl3w - update get_proc for APPLE from upstream
    • GLSLShader - workaround gl_ClipDistance on Intel Windows Driver
    • auto upgrade shaders to version 150 on OSX
    • Do not unbind VAO at the end of _render() to significantly increase performance of multi-pass rendering, at least on OSX
    • Exclude glsl130 and glsl140 profiles unsupported in OSX Core profile
  • GL3+/ GLES2
    • enable primitive restart when available
    • GLxxxFBORenderTexture,GLxxxFBOMultiRenderTarget::getCustomAttribute() should return GL context to switch to before rendering
    • Optionally recreate FBO in GLXxxFrameBufferObject::bind(bool recreateIfNeeded) if unusable with current context
  • GLES2
    • do not automatically activate, as no other RS does this
    • If VAOs are supported: do not unbind VAO at the end of render(), do not clear scratch VAO #0 if not corrupted, explicitly bind scratch VAO #0 when required. Caching removed as it is not VAO ready, and will always miss in current usage scenario.
  • GL: drop OSX Mavericks HBL_DISCARD workaround
  • GLSupport:
    • do not attempt to set external windows full-screen
    • fix layout qualifier parsing
    • GLX - implement minBufferSize
    • GLX - support creating core 4.6 context
    • OSX - make sure contextProfile is correctly forwarded
    • Fix crash when embedding OgreOSXCocoaWindow in external window
  • RTShaderSystem: fix compile error when using double precision (#622)
  • Overlay
    • Scripts - add support for ogrescript syntax
    • warn about incompatibility with new script compiler
    • Accept opening '{' on the same line as the Overlay definition in a .overlay script
  • Samples
    • Browser - avoid double free on OSX
    • PBR - precision statement should in GLSLES only
    • python - update raw sample to deprecation-less API
    • Sample - const correctness
    • shadows.glsl enable upgrading to GLSL150
    • Terrain - use "General" resource group instead of "Terrain"
  • Tests:
    • General - do not try loading shared plugins in static build
    • Terrain - actually test something
  • Docs
    • describe how to use the fixed-function Pass options in shaders
    • Overlay/ Fontdef - improve parameter formatting
    • update css for Doxygen 1.8.13
    • update Overlays section and update GUI library references

GameDev News

30. April 2018

ShaderForge, on of the more popular extensions on the Unity Asset store, was just released completely free and open source today by it’s developer.  The developer made the following tweet this morning:


The source code and associated assets are now available on Github under the liberal MIT open source license.  The developer opted to make it free and open source because they no longer intend to continue development and Unity 2018 has currently broken ShaderForge due to it’s new shader model. 

ShaderForge is a visual graph based shader authoring tool that makes creating shaders a great deal easier.  Similar functionality to this is now be including in Unity 2018 and earlier, so this release is really only relevant to people using Unity 2017 or earlier, or people that are interesting in diving in to the source code.

GameDev News

28. April 2018

The development branch of the Godot game engine just received CSG (Constructive Solid Geometry) support.  Keep in mind it was just added and you need to build from source, so expect some bugs and glitches for now.  CSG can be thought of like super powered boolean modelling, enabling you to prototype game levels extremely quickly by adding and subtracting geometric primitives from each other.  You can also now loft polygonal objects to create more complex CSG shapes.  Since everything is implemented as nodes, everything can be instanced, animated, etc.

You can check out the new CSG functionality in action in this video, also embedded below.

If you are interested in learning to use the Godot 3 game engine, be sure to check out our complete tutorial series available here.

GameDev News

26. April 2018

The JavaScript 2D game framework, Cocos Creator, just received a minor update bringing it to version 1.9.1.  The majority of new functionality in this update are focused on WebChat and QQPlay support, although there are also some changes and bug fixes.  If you are interested in learning more about Cocos Creator, be sure to check out our hands-on video.

WeChat Games
  • Support for publishing the entire project to the WeChat mini game sub-domain. For details, please refer to [document] (
  • Support WeChat game configuration in the build panel ** Remote server address ** option to facilitate the download of remote resources
  • Support for using TTF fonts on WeChat mini games
  • Switch the adaptation layer of the WeChat game from ES6 to ES5, users can not enable ES6 to ES5
  • Fix potential audio memory leak in WeChat game
QQ Play
  • Support QQ to play in the build panel to configure the remote server address option to facilitate the download of remote resources.
  • Fix some minor bugs in XMLHttpRequest with QQ
  • Fixed an issue where the js path could not be resolved during QQ build
  • Perfect QQ play with multi-touch support
  • Added QQ support for base64 encoded images
  • Perfect QQ Play Adaptation Layer
  • Perfect audio support for QQ
  • Fixed black screen issue after QQ checked MD5 Cache
Other Updates
  • [Editor] [Build] Bug fix for custom project build template functionality not working on the Facebook Instant Games platform
  • [Editor] [Build] Add build-start event to make it easier for users to do some processing before they build
  • [Engine] [Wechat] Fixed an issue where WeChat game audio could not be stopped
  • [Engine] [iOS] Fix the issue that the isTypedArray method fails on iOS 8-9
  • [Engine] [Web] Fixing particle system will remove memory if it is not activated yet
  • [Engine] cc.isValid adds an optional argument. Passing true will return false at the beginning of the destroy frame.
  • [Engine] [Android] Fix a Memory Leak on jni
  • As of v1.8.2, cc.eventManager is no longer recommended. Use cc.EventTarget or cc.systemEvent instead. The original API will be removed in 2.0.
  • As of v1.8.2, cc.inputManager is no longer recommended. Use the same interface as cc.systemEvent instead. The original API will be removed in 2.0.
  • As of v1.8.2, dragonBones.CCFactory.getFactory is no longer recommended. Please use dragonBones.CCFactory.getInstance instead. The original API will be removed in 2.0.
  • When copying and pasting resources in the explorer, the resource properties will not be copied. (Since 1.9.0)
QQ Play known issues:

QQ is still playing in the grayscale test, developers also need to obtain internal testing qualifications for development, and only supports compiling on Mac for the time being. In addition, our adaptation work for QQ has not been completely completed yet. The following modules are currently not supported:

  • Label: TTF is not supported, system font can only use the default font
  • Particle system: Map data is not stored in plist. Only support map URL
  • WebView
  • VideoPlayer

GameDev News

25. April 2018

The HTML5 base 3D game engine PlayCanvas has been covered several times here on GameFromScratch, both in the Closer Look series, as well as a more recent 3D game tutorial.  It has been under development for several years, but just yesterday it finally hit that biggest of milestones, a 1.0 release.  There wasn’t actually a huge number of changes in the 1.0 release, in fact there was only a single minor source change.  It’s more a sign of confidence from the PlayCanvas team about the maturity of the game engine.

From the PlayCanvas blog:

PlayCanvas was born 7 years ago, way back on 9th May 2011. In the early days, we were essentially prototyping, seeing what this amazing new WebGL API could do. By October 2011, we set up a source code repository and committed our first engine prototype. Right at the beginning, we adopted semantic versioning for naming our releases. Our initial commit generated engine v0.10.0. From that point onwards, we adopted a rapid release cadence, often publishing more than one release a week. The months and years passed, our team grew and feature after feature was integrated into the codebase. But through all that time, we never incremented the major version number. Why? Well, there were several reasons:

  1. Our rapid deployment meant we never delivered a monster release that seemed to warrant going to 1.0.0.
  2. We always made a huge effort to maintain backwards compatiblity. Projects like the inane Doom3: Gangnam Style created in December 2011 still work fine today! So we never (intentionally) broke your projects.
  3. We, uh, just never got around to it!

The PlayCanvas API is now very stable, mature and battle-hardened. Backwards compatibility is something we take very seriously indeed. And today, PlayCanvas is used in production by thousands of developers.

GameDev News

See More Tutorials on!

Month List