Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
8. July 2016


Cocos2d-x is a popular open source C++ based cross platform game development library.  If you are interested in learning more about Cocos2d-x, we have a complete tutorial series available here.  The Cocos2d-x team just announced the release of Cocos2d-x 3.12.  Version 3.12 adds support for the Tizen platform, experimental support for VR, fixed some Android performance issues, add obb Android support and WebGL improvements. 

In addition to these features, there are dozens of new features and bug fixes, including:

[HIGHLIGHT] add VR support

[HIGHLIGHT] add Tizen support

[HIGHLIGHT] fix Android performance issue

[HIGHLIGHT] Web engine performance improved in WebGL mode

[HIGHLIGHT] support obb extension on Android

[NEW] Core: add `utils::findChild()`

[NEW] Core: add CSV format support to tile maps

[NEW] Core: add `FileUtils::getContents()`

[NEW] Core: cocos2d::Value supports unsigned

[NEW] Particle: add feature to pause/resume particle emitter

[NEW] Platform: support Windows 10 UWP x64

[NEW] UI: add clamp and shrunk feature for system fonts, currently only support iOS, Android and Mac

[NEW] UI: make ListView select item programmatically

[NEW] UI: add `EditBox::InputFlag::LOWERCASE_ALL_CHARACTERS` to lowercase characters

[NEW] UI: add `setBounce()` to WebView

[NEW] Web: refactor TMXLayer renderers

[NEW] Web: can force orientation in mobile browser

[NEW] Web: support high resolution TTF Label on retina display

[REFINE] Android: use clang instead of gcc to compile codes

[REFINE] Android: hide virtual button by default

[REFINE] Android: set music volume control as default

[REFINE] Android: usage clang insteand of gcc to compile codes

[REFINE] Audio: catch `IllegalStateException` exception to avoid crash when playing background music with SimpleAudioEngine on Android

[REFINE] Core: fix many warnings

[REFINE] Core: move StringUtils functions from deprecated header file to ccUTF8.h

[REFINE] Core: FontFNT will ignore chars that exceeds 65535 and print a warning information

[REFINE] Core: `Node::ignoreAnchorPointForPosition()` is deprecated and add `Node::setIgnoreAnchorPointForPosition()`

[REFINE] Core: allow inherit from platform FileUitils

[REFINE] Core: add optional alpha parameter to Color4B and Color4F

[REFINE] Core: Follow action can accept horizontal and vertical offset

[REFINE] Core: TMXXMLParse parse `id` element

[REFINE] Lua: rename all member functions named `end()` to `endLua()`

[REFINE] JSB: make selectedSprite opitional in MenuItemSprite

[REFINE] JSB: return null if read failed in `js_cocos2dx_CCFileUtils_getDataFromFile()`

[REFINE] Template: iOS tempalte is refined to make cocos2d-x game scene work better with other UIView

[REFINE] Template: remove ``

[REFINE] Template: ARC support on iOS and Mac OS

[REFINE] UI: TTF and BMFont label wrap mode will automanytically changed to char wrap mode when label's width is less than word's boundary

[REFINE] UI: UIWidget adds missing properties for clone

[REFINE] UI: UIScrollBar caches the texture created with base64 encoded images

[REFINE] UI: EditBox now prints lowercase letters by default

[REFINE] UI: enable WebView's local storage on Android

[REFINE] UI: improve EditBox implementation on WinRT

[REFINE] UI: make PageView indicator more tunable

[REFINE] UI: make PageView page turning event time tweak configurable

[REFINE] UI: RichText is improved: add effect of outline, shadow and glow; catch the event of open url; ability to extend tags; add anchor of image tag

[REFINE] 3D: skeleton animation is more efficient when two animations switch frequently

[REFINE] 3rd party: update webp to 0.5.0

[REFINE] Web: improve basic types to reduce memory usage

[REFINE] Web: Show line number in console statements

[REFINE] Web: Cache base64 image of PageViewIndicator and ScrollViewBar

[REFINE] Web: Pass error in cc.AsyncPool in onEnd callback

[REFINE] Web: Separate ccui.ListView event callback from ccui.ScrollView for its own events

[FIX] Android: fix compiling error if using NDK r11+

[FIX] Android: package name is `libcocos2dx` instead of application name if building with Android Studio

[FIX] Audio: AudioEngine can not work if the file path contains not ascii code on iOS

[FIX] Audio: SimpleAudioEngine::playEffect() doesn't work correctly on Linux

[FIX] AssetsManager: can not work

[FIX] AssetsManagerEx: use manifestUrl from remote version

[FIX] Core: `FileUtils::writeValueMap()` will crash on iOS if it contains `Value::Type::None` type element

[FIX] Core: `ClippgNode::setStencil()` may cause assert error if it is invoked before

[FIX] Core: `TextureCache::addImageAsync()` doesn't set pixel format corretly

[FIX] Core: `GL::SetBlending()` doesn't set dst correctly

[FIX] Core: vertex z can not work correctly if window size changed on desktop platforms

[FIX] Core: use `std::isnan()` instead of `isnan()` to fix compiling errors on some Linux platforms

[FIX] Core: crash on windows when using PolygonInfo

[FIX] Core: fix `libpng error: CgBI: unhandled critical chunk` error with Xcode 7.3

[FIX] Core: EXC_BAD_ACCESS random crash caused by reallocation of shared indices memory

[FIX] Core: memory leak of `utils::captureScreen()` on iOS and Mac OS

[FIX] Core: assert error if remove an event listener twice at the same time

[FIX] Core: FileUtils::getValueMapFromFile() returns wrong value if it is a number with scientific notation on Android

[FIX] Core: UIGrayScale shader is not reloaded when reloading shaders

[FIX] Core: `SpriteFrame::clone()` doesn't clone polygonInfo

[FIX] Core: `FileUtils::createDirectory()` fails on Mac OS with sandbox

[FIX] Core: `cocos2d::Value` operator overloading of comparison `==` returns wrong value in case Type::VECTOR

[FIX] Core: wrong content size if minisize

[FIX] Core: can not have a class named `Game` on Windows

[FIX] Core: crash if load bad image on Windows

[FIX] Core: custom shader uniforms and attributes do not have effect in DrawNode

[FIX] Core: blend mode doesn't work with animated sprite

[FIX] Core: `FileUtils::removeDirectory()` can not work correctly when the path is not end of `/` on iOS and Mac

[FIX] JSB: fix some bugs related with JSB debegger

[FIX] JSB: scheduler callback target lost

[FIX] JSB: missing scroll widgets constants

[FIX] JSB: if obj is undefined or null then attempt to access obj.__nativeObj leads to incorrect behavior

[FIX] JSB: use `require()` to require the same script twice may crash

[FIX] Lua: lua function is not invoked when error happens in websocket

[FIX] Network: HttpClient Content-type limitation on iOS

[FIX] Network: downloader crash when storage path contains spaces

[FIX] Network: SocketIO crash on reconnect

[FIX] Physics: PhysicsBody damping doesn't wrok

[FIX] UI: EditBox may cause `java.lang.IndexOutOfBoundsException` exception on Android

[FIX] UI: TextFieldTTF doesn't show password correctly

[FIX] UI: RichText crash on Windows

[FIX] UI: EditBox can not use custom font on Android

[FIX] UI: can not use TTF font on Android

[FIX] RenderTexture: `setOpacity()` has not effect

[FIX] 3D: `Sprite3D::createNode()` may not work correctly with particular model data

[FIX] Web: `getParentToNodeTransform` doesn't return result

[FIX] Web: remote image without extension in url can't be loaded as image

[FIX] Web: nested clipping nodes rendering issue in WebGL render mode

[FIX] Web: IMEDispatcher can't work in mobile Chrome


Cocos2d-x is available here.

GameDev News

16. June 2016


Cocos Creator 1.1.10 was just released.  Cocos Creator is a full game editing environment built on top the Cocos2d-x series of technologies.  If you are interested in learning more I did a hands on with Cocos Creator video a few months back.


This release brings several new features and fixes to the table including:

  • [Atlas] Add ‘Use specified Atlas to replace spriteFrame in current Scene’ menu item in ‘Developer’ menu.
  • [Assets] Imporved atlas asset importing performance.
  • [Scene] node path shown in Scene status bar can be selected and copy now.
  • [NodeLibrary] nodes dragged from Node Library will no longer be prefabs.
  • [NodeLibrary] a zoom slider is added to control how big the node icons are.
  • [Import] Fixed a Widget error when importing from Cocos Studio project.
  • [Import] Fixed an node visibility animation effect error when importing from Cocos Builder.
  • [Prefab] Fixed a critical error that occurs when close prefab editing mode while reloading scene.
  • [Animation] add animatable Collider.size property.
  • [Animation] add animatable Node.skew property.
  • [Animation] add cc.AnimationClip.createWithSpriteFrames API to generate animation clip in runtime.
  • [Build] Fixed build to ‘Web-Desktop’ show incorrect viewport issue.
  • [Build] Fixed build to Android with ‘default’ template will report error issue.
  • [Editor] Fixed font size in some editor buttons.
  • [Dashboard] Add path validation to new project page.


  • [Sprite] Fixed crash error when using Tiled mode on tiny images.
  • [Mask] Fixed using removeChild to remove a node with Mask component will report error issue.
  • [Component] Fixed many different failures when modifying a property’s type if it’s already serialized.
  • [ScrollView] Add scrollToOffset API to allow positioning scrolling content with pixel position.
  • [ScrollView] Add event capture phase to solve registering event on node under scrollView may fail issue.
  • [Layout] Fixed None mode wrong calculation of anchor position.
  • [Label] Fixed set color on the node has no effect on label color issue.
  • [Label] Fixed calculated node size wrong using ‘Resize Height’ mode.
  • [Spine] Fixed v1.0 project Skeleton node cannot be scaled issue.
  • [Tilemap] Fixed scene graphic display error in Windows environment.
  • [Tilemap] Native platform now supports CSV layer data.


  • [Engine] loadResAll now allow path ended with ‘/’.
  • [Engine] Fixed handling cross domain images will report downloadImage error issue.
  • [Engine] Fixed hot update failed on Android platform issue.
  • [Engine] Fixed missing JavascriptJavaBridge dependencies in C++ engine that cause calling Java method from JavaScript failed issue.
  • [Engine] Fixed opacity related actions like FadeOut, FadeTo fail to work in JSB issue.
  • [Engine] Fixed EventTouch getID method may cause recursive looping issue.
  • [Desktop] Fixed when allow window size to change, the viewport shows wrong zoom when resizing window issue.


The full release notes are available here.

GameDev News

1. June 2016


Cocos Creator is a JavaScript based game engine and editor built on top of the Cocos2d-x project.  I did an in-depth “hands on” video a few months back if you are interested incocos learning more.  Today they just released version 1.1.0 adding several new fixes and features.  New features include the ability to import projects from Cocos Studio or Cocos Builder, a new Collider component, a refined asset loading API.


Complete changes from the release notes:

  • [Scene] Fixed when undo with Ctrl/Cmd+Z node size may not get recovered issue.
  • [NodeLibrary] Fixed user custom nodes cannot be saved issue.
  • [Editor] Fixed an simulator crash issue if Cocos Builder imported project has particle data with missing texture
  • [Editor] Remove data that's using default value in exported JSON file to reduce release package size.
  • [Editor] Fixed an issue that cause Editor log file cannot be accessed.
  • [Editor] Add auto refresh option to enable or disable refresh on preview device when recompiling scripts or saving scene.
  • [Editor] Fixed renaming Atlas assets may cause texture asset reference error issue.
  • [Editor] Fixed publish to web platform may have broken bitmap font asset reference issue.
  • [Editor] Fixed an issue that when importing Tmx assets on Windows, the raw asset reference may be invalid.
  • [Prefab] Fixed after double click prefab to enter edit mode, click close without any modification will cause save prompt to pop issue.
  • [Animation] Fixed changing current editing animation clip name will cause error.
  • [Animation] Fixed an issue that cannot drag spriteFrames to spriteFrame property track.
  • [Component] When add more than one component that may affect node's size, there'll be clear error message.
  • [Component] Make sure there are correct error message when CCClass property default value is inconsistent with property type.
  • [Label] Bitmap Font component now has original font size displayed in Properties panel.
  • [Label] Fixed when Label using system font update string content the node size will not be updated correctly issue.
  • [Label] Fixed Label using TTF font may cause font resource to be loaded twice in Web browser issue.
  • [Label] Fixed when Label content size changed the event not fired correctly issue.
  • [Canvas] Fixed setting opacity property has no effect for Canvas node if there's an EditBox component in Canvas's children.
  • [Layout] Fixed deactivate children node will not trigger size recalculate for Layout container resize mode.
  • [Layout] Refactored Layout and Widget calculation to increase performance.
  • [ScrollView] Fixed when content is a Layout component with ResizeMode set to Container, the scrollToXXX apis will not take effect in current frame issue.
  • [ScrollView] Fixed in JSB use Label as content may not be able to scroll issue.
  • [MotionStreak] Now the trail will be rendered according to anchor point, also fixed setDirtyFlag error on Android, add a property to set trail color.
  • [Audio] Fixed AudioSource will not stop playing when switching scene.
  • [Engine] Add a new class cc.NodePool to replace cc.pool. The new NodePool will be fully compatible with the new event system, so you can get a node from the pool and register/deregister any event you like.
  • [Engine] Add VideoPlayer component, currently only supports Web, iOS and Android.
  • [Engine] Fixed an issue that update may execute before start.
  • [Engine] Fixed an issue that using = false in onLoad function will not disable rendering issue.
  • [Engine] Fixed an issue that update will not execute after disable and enable component multiple times.
  • [Engine] Fixed cc.Animation.removeClip api will stop current playing animation if the first argument is not defaultClip and the second argument is false
  • [Engine] Fixed dt (delta time) in update function may not be real time between this and previous frame issue.
  • [Engine] Reworked cc.loader.loadRes api, now url should not specify file extension. The second arugment is to specify a type for the resource. Add a new api cc.loader.loadResAll to load all assets in a given folder.
  • [Engine] Add cc.director.preloadScene api for preload a scene and all its assets. The oldcc.director.runScene will be deprecated
  • [Engine] Fixed cc.tintTo has inconsistent arguments between web and JSB
  • [Engine] Fixed unschedule the same callback function twice will terminate all other scheduler issue.
  • [Engine] Fixed accessing builtin component in onLoad may not get component instance issue.
  • [Engine] Fixed calling addComponent in onLoad will result in the added component's onLoad not execute immediately issue.
  • [Engine] Fixed calling loadScene in onLoad function will cause error issue.
  • [Engine] Add a feature to force orientation according to Publish setting even if the platform does not allow it (there're some browser that will lock the orientation)
  • [Engine] In preferences panel you can set JavaScript and C++ engine path to the clone from github, to easily integrate custom engine workflow.
  • [Engine] Fixed using setSiblingIndex to change node order may cause touch event handling in wrong order.
  • [Engine] Add protection for important global variable so they cannot be overwrite.
  • [JSB] Fixed cc.pSub return value type is not Vec2 issue.
  • [JSB] Fixed cc.callFunc callback function argument not consistent between JSB and Web issue.
  • [JSB] Fixed error when calling event.stopPropagation in JSB
  • [JSB] Fixed auto-binding for jsb.EventListenerAssetsManager
  • [JSB] Fixed a crush issue that onTouchBegan function in eventListener cause when not return true.

GameDev News

12. May 2016


Cocos2d-x is a popular, cross platform C++ based game engine.  If you are interested in learning more about Cocos2d-x, I have done a complete tutorial series here.  Cocos2d-x just released a new version, 3.11.


This release is primarily bug fixes and API maintenance, consisting of:

* upgrade Chipmunk to v7.0.1.
* use new memory model in JSB, don't have to invoke retain/release in JavaScript. It is disabled by default.
* upgrade Curl to v7.48.
* upgrade OpenSSL to 1.0.2g.
* use VSCode and new Firefox to debug Cocos2d-x JSB programs.
* new WebGL Renderer: activate WebGL on Android by default, Sprite auto-batching and a shared rendering buffer for Sprites


Cocos2d-x is available for download here.

GameDev News

3. May 2016


Cocos Creator is a new game editor built over top of the Cocos2d-x JavaScript port.  I did a hands on video with an earlier version of Cocos Creator if you are interested in learning more.


This release brings a number of new changes and features, including:

  1. [Animation] Allow position.x and position.y properties can be added separately in an animation
  2. Windows] Use new installer framework based on Squirrel.Windows. New version of Cocos Creator will be installed to %User/AppData/Local/CocosCreator, different version will be stored in sub folder named as app-x.x.x.
  3. Dashboard] Dashboard stays in memory now. When open a project the Dashboard window will hide, and show up again when the project is closed. Added Systray icon for dashboard. You can open multiple project from Dashboard now.
  4. JSB] Fixed newly created cc.SpriteFrame via url cannot be displayed when assigned to sprite issue.
  5. Engine] We include cocos2d-x prebuilt library in installation so no more manually building for that.
  6. Render] Add SpriteDistortion component for simulating a 3D ball rolling effect
  7. Render] Add Circle mode for Mask component
  8. Render] Fixed rotating a node with Mask will not display correctly issue.
  9. Console] Optimized duplicated message into collapsed messages.
  10. Animation] Fixed switching among multiple animation clip may cause timeline to lock up issue.
  11. Animation] Fixed play animation direction error when wrapMode is set to Reverse
  12. Animation] Fixed root node may jump to other position when updated sample issue.
  13. Component] Fixed help button link on builtin components
  14. Component] Add tooltip for Layout and EditBox components
  15. Prefab] Fixed when reference a node from scene on a component attached to Prefab may cause duplicated node instantiated together with prefab issue.
  16. Tiledmap] Fixed rotated tile in a tax file will not display correctly issue.
  17. Build] emit a editor:build-finished message after a successful build process. So plugins can catch that and do modifications to the built project.
  18. Build] Fixed iOS project templates may cause rejection when submitting to iTunes connect issue.
  19. Editor] Make error message when requiring third party javascript library more clear.
  20. Auto Update] Fixed when text is large in change log, the window will not display all content issue.

The full release announcement and download information is available here.

GameDev News

GFS On YouTube

See More Tutorials on!

Month List