Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
26. February 2016

 

Marmalade SDK, a popular C++ and Lua based mobile focused game engine, just released version 8.2.1.  Apple platforms certainly were the focus of this release with 3D touch and Watchkit support being the major new features.  For details on the new 3D Touch support, check out this recently released tutorial.

 

From the release notes:

Highlights

  • Support for 3D Touch on iOS. See 'Detecting touch pressure' here
  • Support for WatchKit extensions on iOS.
  • Fixed App Store codesigning on PC.
  • Added the ability to control the inclusion of extensions that contain IDFA. This is required by apps that were rejected from the App Store for inadvertently using IDFA. For more details see 'Preparing for binary upload' in the iOS Platform Guide

Changed since 8.2

Marmalade Hub
  • MSDK-2294 Fixed a bug where after cancelling the 'Create Deployment' dialog, a blank deployment page was shown.
  • HUB-236 The Builds list and 'Last Build' were not updated correctly.
  • MSDK-2311 Added ability to view/edit MKB from Hub.
  • HUB-309 Fixed a bug where the log was not visible if something went wrong when opening a project.
  • HUB-314 Could not create a deployment.mkf file with empty mkb.
  • HUB-310 Provide a way to reset deployment settings of a project.
  • HUB-125 Add ability to create multiple builds in the 'Builds' page.
  • HUB-285 Fixed the Hub UI becoming unresponsive when building on Mac OS.
  • HUB-302 Fixed the Configurations tab hanging after cancelling a save operation.
  • MSDK-2317 Company name and publisher entries were not being set.
  • MSDK-2361 Changes to the project's readme file weren't saved.
Marmalade Quick
  • MSDK-2254 Fix issue where removeNode() could not be called multiple times for a given object.
  • MSDK-2265 If createSprite is called using a table, allow xScale and yScale to be defined if relativeScaleX/relativeScaleY are not given.
  • MSDK-2276 Fix OSDateCallParam lunary test on OS X.
  • MSDK-2280 Fix issue where QNode:setParent() was not setting the object in question as a child of the target.
  • MSDK-2265 Fix Lunary test code to pass on PC.
Platform Abstraction
  • s3ePointer (MSDK-2208) Implemented support for reporting touch pressure using s3ePointer events. Currently supported on selected iOS devices with 3D Touch technology (iPhone 6S/6S Plus) and iPad Pro with Apple Pencil. See Detecting inputs for more information on detecting touch pressure.
Middleware
  • IwAnalytics (MSDK-2302) Deprecate IW_ANALYTICS_EXCLUDE_IDFA_SUPPORT - use new DISABLE macro S3E_EXT_IOSIDENTIFIERS_DISABLE_ON_IPHONE instead. (Remove need to recompile the iwanalytics module to switch behaviour).
iOS
  • HUB-311 Implemented support for 3D Touch App Shortcut actions (currently supported on iPhone 6S and iPhone 6S Plus) through news3eIOSAppShortcut extension.
  • MSDK-2309 Re-implementation of fix for issue in iOS Native Debug with space in the project name.
  • MSDK-2264 Fix for "invalid signature" error during App Store submissions when building on PC.
  • MSDK-2330 Updated WKWebView interface in s3eWebView to reflect standard ARC changes in UIWebView.

Android
  • MSDK-2338 Fixed a regression with stack sizing issues which caused crashes on secondary threads due to stack overflow. The crux is that the default for the deployment option SysStackSizePlatform had changed from 0 to 128k. It has been changed back to 0 to get the system default stack size. One manifestation was that s3eAudioPlayFromBuffer crashed on different thread on Android.

  • MSDK-2355 Removed spurious warning: "The target name is different across different builds of the project" when building a middleware module or extension with Visual Studio 2015 in Android Native mode.
  • MSDK-2286 Minor fix to prevent potential crash in s3eAndroidGooglePlayBilling extension on some devices.
Windows Desktop
  • MSDK-2176 Fixed issue with Alt-F4 being ignored as a quit request when in fullscreen mode.
  • MSDK-2334 Fixed regression in snprintf (and friends) in vc11 and vc12 builds where passing 0 for size would cause stack corruption or a crash
Extensions
  • s3eIOSWatch (MSDK-1255) Introduced s3eIOSWatch extension for data exchange between Marmalade apps and WatchKit 1.0 style app extensions (Apple Watch apps). See iOS specific functionality and tips for more information.
  • s3eFacebook (MSDK-2210) iOS extension can now provide app activation analytics data to Facebook if EnableAppEvents ICF option is enabled.
  • s3eGameCenter (MSDK-2209) Introduced a function to list multiple GameCenter achievements at the same time. Enabled control of achievement completion banner from updated s3eGameCenter example.
Tools
  • MKB System (MSDK-2289) Fixed a bug where an empty file group [] or [""] in a 'files' block in an mkb file would cause an invalid Xcode project to be emitted.
  • EDK (MSDK-2307) Support DISABLE macros on a subset of extensions in the SDK - those used by prebuilt Quick engine and those that use IDFA on iOS.

GameDev News ,

10. February 2016

 

This news care of /r/gamedev, EA have released EASTL under the BSD license on Github.

EASTL has been around for ages, and got a limited release a number of years back, but this is the first time there has been a complete release under a BSD license.  EASTL is an implementation of the Standard Template Libraries in C++, but optimized for game performance, especially on consoles.  This new release represents a more up to date version and one that is actively maintained.

If you are familiar with the C++ STL or have worked with other templated container/algorithm libraries, you probably don't need to read this. If you have no familiarity with C++ templates at all, then you probably will need more than this document to get you up to speed. In this case, you need to understand that templates, when used properly, are powerful vehicles for the ease of creation of optimized C++ code. A description of C++ templates is outside the scope of this documentation, but there is plenty of such documentation on the Internet.

EASTL is suitable for any tools and shipping applications where the functionality of EASTL is useful. Modern compilers are capable of producing good code with templates and many people are using them in both current generation and future generation applications on multiple platforms from embedded systems to servers and mainframes.

The Github repository is available here.

GameDev News

26. January 2016

 

This one comes care of /r/gamedev and I have to say on first glance I am rather impressed.  This is a C++ based open sourced game engine with a WYSIWYG editor and C# scripting support.  A look at this screenshot from the Github page should get you somewhat excited:

Banshee Editor

 

The engine description direct from the author:

A modern open-source game development toolkit. It aims to provide simple yet powerful environment for creating games and other graphical applications. A wide range of features are available, ranging from a math and utility library, to DirectX 11 and OpenGL render systems all the way to asset processing, fully featured editor and C# scripting.

For game developers Banshee aims to provide a complete set of tools and APIs needed to make a game from start to finish. It provides a highly intuitive and customizable editor that is easy to use by artists, designers and programmers alike, supporting development stages from asset management, scene building, scripting to game publishing. C# scripting makes your development easier by giving you access to the entire .NET library, along with fast iterations times while being safe and easy to write. Editor is fully extensible with the help of specially developed scripting API so you may customize it for exact needs of your project.

For engine developers it aims to provide a high quality foundation to build and improve upon. Banshee runs on a powerful multi-threaded C++14 core created to take advantage of all resources modern hardware can offer. Built from ground up using modern design principles, everything is modular, layered and decoupled as much as possible, making it easier to modify, replace or add functionality. Platform specific functionality is kept at a minimum making porting as easy as possible. Additionally every non-trivial method, class and field is documented. All this combined makes Banshee a great platform to build upon, for developing higher level systems like editor tools, core enhancements like new rendering techniques and platform ports, all the way to creating fully specialized toolsets that fit your team's needs exactly.

 

Engine code looks nice and clean from the examples shown:

    RENDER_WINDOW_DESC renderWindowDesc;
    renderWindowDesc.videoMode = VideoMode(1280, 720);
    renderWindowDesc.title = "My App";
    renderWindowDesc.fullscreen = false;

    Application::startUp(renderWindowDesc, RenderSystemPlugin::DX11);
    Application::instance().runMainLoop();
    Application::shutDown();

 

The engine is currently Windows only and requires Visual Studio 2013 or 2015. I have to say by first impressions, this is certainly an interesting looking engine and one I will have to check into a bit closer if I get the chance.  Obviously it’s a 0.2 release, so expect the usual menagerie of bugs and performance issues.

If you are interested in learning more, be sure to check out the introduction video:

GameDev News , ,

25. January 2016

 

Allegro, a C++ based game programming library just released version 5.1.13 WIP, so I would assume the WIP tag means you can expect a few more hiccups than normal.  Allegro holds an interesting place in my heart, as it was one of the first DOS based game programming libraries I ever used.  Yes, I said DOS.  Allegro has been around for a little while...  fun fact, the guy that started Allegro eventually ended up at Microsoft where he was one of the main developers of the now defunct XNA project.

 

Enough trivia and reminiscing... back to the release:

Changes from 5.1.12 to 5.1.13 (January 2016)

The main developers this time were: Julian Smythe, Elias Pschernig and Peter Hull.

Graphics:

  • Add al_get_opengl_program_object (SiegeLord).

Input:

  • Fix spurious triggering of the mouse grab key when it wasn't otherwise set (SiegeLord).

Android port:

  • Avoid multiple HALT/RESUME events on Android (Max Savenkov).

  • Implement al_get_monitor_info for Android (Reuben Bell).

  • Fix Android crash on file access.

  • Implement ALLEGRO_FULLSCREEN_WINDOW on Android.

  • Fix crash if display is destroyed while the app is switched out.

  • Add support for x86_64 Android.

  • Add al_android_set_apk_fs_interface.

Linux port:

  • Allow using OpenGL ES in X11.

  • Fix the initial display size not being correct sometimes (SiegeLord).

  • Fix a race condition in the XInput joystick driver (Trent Gamblin).

OSX port:

  • Fix various memory leaks.

  • Fix al_set_window_title.

  • Fix a lot of decrepid and deprecated code.

  • Fix single buffer flip display (SiegeLord).

Windows port:

  • Fix Windows UNC path handling.

  • Fix clipboard nul-termination issues (Trent Gamblin).

  • Set the window title immediately upon window creation (SiegeLord).

Build system:

  • Define CMAKE_FIND_ROOT_PATH for i686-w64-mingw32 cross compiler (Martijn van Iersel).

  • Allow building with older CMakes again (SiegeLord).

  • Do not catche compile tests' failure (Bruce Pascoe).

  • Add a way to statically link the runtime with MinGW (SiegeLord).

  • Don't link the MSVC C runtime at all when requesting a static runtime and building a static library (SiegeLord).

Documentation:

  • Add links to the source code of the definitions of the most API entries.

  • Fix sidebar generation with modern Pandoc (Boris Carvajal).

Python:

  • Fix ordering issue for HAPTIC* structs.

  • Fix missing ALLEGRO_PRIM_ATTR_NUM.

Other:

  • Add a 'none' debug level to turn off logging entirely in debug builds (SiegeLord).

  • Reconfigure logging after the configuration files are loaded (SiegeLord).

  • Fix al_set_new_window_title() off-by-1 (Bruce Pascoe).

  • Don't call al_get_time() before system is installed (SiegeLord).

Audio addon:

  • Add al_get_default_voice and al_set_default_voice.

  • Flush the pulse audio stream rather than draining it, fixing some audio breaks (SiegeLord).

  • Fill audio stream fragments with silence in the audio addon rather than in the acodec addon, fixing some garbage output (SiegeLord).

  • Fix possible deadlock when destroying audio streams (SiegeLord).

Acodec addon:

  • Don't read past the audio chunk's end when streaming wav files (SiegeLord).

  • Turn off allegro_acodec dynamic loading by default, fixing a common footgun (Bruce Pascoe).

Image addon:

  • An enormous amount of work supporting reading of esoteric (and not) BMP format variants (palletted, GIMP-style, etc). New tests were added using the manual bmp suites.

Native dialog addon:

  • Update code to work with modern OSX versions.

  • Clean up menu handling on OSX.

GameDev News

22. January 2016

 

Cocos2D-X, the popular cross platform C++ 2D game library, just released version 3.10.  If you are interested in learning more, I have a full Cocos2D-x tutorial series available here.Cocos2d-x Logo

 

From the release notes:

[HIGHLIGHT] UI: Rewrite Scale9Sprite and improve the scale9sprite performance and reduce memory consumption.

[HIGHLIGHT] UI: Change PageView to derive from ListView.

[NEW] Core: Added Application::getVersion() to get the app version.

[NEW] UI: Add PageView indicator.

[NEW] UI: Label add three Overflow type to new label, see release note for more information.

[NEW] UI: UIText::clone supports clone the text effect.

[NEW] Label: Add methods to query label effect state.

[NEW] UI: UIRichText support the new line element.

[REFINE] 3rd party: WebP loading improvements WebP loaded as premultiplied alpha if it has.

[REFINE] UI: Slider `setCapInsetProgressBarRebderer` change to `setCapInsetProgressBarRenderer`.

[REFINE] UI: RichText support new line element.

[REFINE] UI: Set focus to Widget when touched.

[REFINE] 3D: Change char* to string in Terrain.

[REFINE] Studio: Merge Studio ActionTimeLine change back into engine.

[REFINE] Studio: Merge Studio changes for compatible withe 32bit Mac System.

[REFINE] Studio: Merge Studio changes for lua-binding, js-binding and simulator.

[REFINE] Mac: Make engine compatible for 32bit Mac.

[REFINE] 3rd party: WebP loading improvements WebP loaded as premultiplied alpha if it has.

[REFINE] Audio: AudioEngine on Linux replace the original SimpleAudioEngine with a new version of FMOD, now AudioEngine support all platforms!

[REFINE] IOS: Add virtual keyword for some render related function.

[REFINE] UI: Fixes boring deprecated warning in HttpRequest.

[REFINE] Network: Fix Downloader bug on iOS & Android platform.

[REFINE] Studio: Fix deprecation warning in SkeletonRenderer.

[REFINE] JS: Add js test case for fix, improve template.

[REFINE] Network: Permit http access to cocos2d-x.org in test projects on iOS.

[REFINE] Network: Crash when removing a remotely downloaded image from texture cache in js-binding.

[REFINE] Win10: WinRT project update version to v3.10.

[REFINE] Console: Add quiet option for Cocos Toolkit.

[REFINE] JS: New GC model for js-binding.

[REFINE] Doc: Fix typos in documentation and comments.

[REFINE] UI: update controlButton size calculate with new Scale9Sprite logic.

[REFINE] Win10: Added missing _USRJSSTATIC preprocessor define for ARM builds.

[REFINE] JS: Added ccvector_to / ccmap_to converted to new js-binding API.

[REFINE] UI: Slider misprint fix.

[FIX] Network: fix possible websocket crash in its destructor.

[FIX] Core: Fix premultiplyAlpha for mipmaps and compressed textures.

[FIX] UI: Fix Scale9sprite rendering error when content size smaller than the sum of leftInset and rightInset.

[FIX] Win32: Fix EditBox crash when removing an EditBox in a scheduler.

[FIX] Android: Fix cannot add view to mFrameLayout when extends Cocos2dxActivity.

[FIX] 2D: Fixed actionNode set at wrong position bug.

[FIX] 3D: Fix the movement of PUParticle lags one frame.

[FIX] UI: Fix the wront argument of setPlaceholderFontName in EditBox.

[FIX] UI: Fix EditBox editBoxEditingDidEnd may use the original text after change the text of EditBox in user script.

[FIX] Audio: Fix `FinishCallback` never be called in Windows.

[FIX] UI: Fix Layout stencil clipping nested with Clipping Node rendering issue.

[FIX] UI: Keyboard doesn't hide when click the screen outside of EditBox on iOS platform.

[FIX] UI: Fix a fatal bug in EditBox implement on Windows platform.

[FIX] UI: Fix edit box setPlaceholderFontName and scale font size issue.

[FIX] Core: Fix memory leak when initWithImage() failed.

[FIX] Network: CCDownloader on iOS is broken in v3.9 js-binding.

[FIX] JS: Bindings fixes for Menu, Sprite and Label.

[FIX] Studio: Remove weak reference in ActionNode.

[FIX] UI: shouldStartLoading method should return value to js in js-binding.

[FIX] UI: Fix scrollview render error.

[FIX] JS: Fix win32 js project crash issue.

[FIX] UI: Button touch doesn't work with scale9 enabled.

[FIX] JS: Fix evalString doesn't return result issue.

[FIX] JS: Fix ComponentJS proxy management issue in JSB.

[FIX] Android: Fix include in cocos network module.

[FIX] Network: Fix web socket crash.

[FIX] UI: Fix TextField missing default password style text setting.

[TEST] S9SpriteTest: Scale9Sprite fade actions with cascade opacity.

[TEST] Web: Remove default focus block from UIFocusTestVertical.

[TEST] Lua: Fix pageViewTest Horizontal scroll won't work in Lua-test.

 

Cocos2d-x can be downloaded here.

GameDev News ,

Month List

Popular Comments