Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

6. February 2017


In our previous tutorial we materials in our ongoing Babylon Tutorial Series but today we are going to take things a step higher up and let someone else worry about doing the work for us.  Today we will look at exporting 3D models from Blender for use in our game.  A number of exporters exist (3ds Max, FBX, Cheetah, Unity), but today we are specifically going to talk about using Blender.

First we need to download and install the plugin.  Fortunately they make a zip version available for download.  Head on over to and click Download:



Save the zip file somewhere you will remember.  Now fire up Blender.  Select File->User Preferences…  then select the Add-Ons tab



Now choose Install From File… and select the newly downloaded zip.  Then in the filter area type “Bab” and Import-Export: Babylon.js should be available.  Simply check the checkbox to the right hand side to enable it.  We can now export our scene as a .babylon file for use in our game.  Simply select File->Export->Babylon.js:



There are no settings for the exporter, so simply pick your game asset directory and click Export Babylon.js Scene.  A .Babylon file and all of your textures will be created in your selected save location:



Now let’s look at the code required to load and display this model in our game:

    window.addEventListener('DOMContentLoaded', function(){
        var canvas = document.getElementById('canvas');

        var engine = new BABYLON.Engine(canvas, true);
        engine.enableOfflineSupport = false; // Dont require a manifest file
        var createScene = function(){
            var scene = new BABYLON.Scene(engine);
            scene.clearColor = new BABYLON.Color3.White();

            var camera = new BABYLON.ArcRotateCamera("arcCam",
            var light = new BABYLON.PointLight("PointLight",new BABYLON.Vector3(
            light.parent = camera;
            light.intensity = 1.5;

            scene,function(newMeshes) {
                    mesh.rotation = new BABYLON.Vector3(BABYLON.Tools.ToRadians(
                }                );

            return scene;

        var scene = createScene();



The magic is done using the Y() function call.  You can load a specific asset from within the .babylon file by specifying it’s name, but in this case we just want the whole thing.  Import mesh has a callback when the mesh is loaded ( it’s loaded async, so you need to use this callback ) and it’s passed an array of Mesh objects.  We simply loop through this array ( in this example it’s only one item long, so we could have just as easily done newMeshes[0] and accomplished the same thing ).  Sometimes you will need to reposition your objects when loaded due to different coordinate systems, this example shows rotating each mesh by 45 degrees along the X axis.


This example uses the ShippingContainer blend file available as part of the Patreon dropbox assets, but you can use any applicable Blend file to create the example.  If you are a Patreon support (thanks by the way!) you can find this model in Art\Blender\ShippingContainer and the code is all available (including the exported Babylon file) in Tutorial Series\Babylon\5 - PartFive – Models.


When we run this example, we should see:



The Video

Programming, Art , , , ,

2. February 2017


Krita is a popular open source painting application that has been rapidly improving as of late.  They just released version 3.1.2 and the marque feature is the addition of audio support to animations to help with synchronizing with voices and music.  You can import WAV, MP3, OGG and FLAC files and the audio can optionally be included when exporting animations.  In addition to audio support, 3.1.2 contains several new features and bug fixes including:

  • Ctrl key continue mode for Outline Selection tool: if you press ctrl while drawing an outline selection, the selection isn’t completed when you lift the stylus from the tablet. You can continue drawing the selection from an arbitrary point.
  • Allow deselection by clicking with a selection tool: you can now deselect with a single click with any selection tool.
  • Added a checkbox for enabling HiDPI to the settings dialog.
  • remove the export to PDF functionality. It is having too many issues right now. (BUG:372439)
Bug Fixes
  • fix a number of bugs with creating and editing bundles (BUG:352151)
  • fix loading presets with embedded patterns (BUG:374745)
  • Fix to the erase mode button so it keeps track of the blending mode (BUG:348290)
  • Fix creating a brush from a stamp (BUG:373846)
  • Load 16-bit RGBA TIFF files that have no embedded ICC profile as gamma corrected sRGB  (BUG:375479)
  • Make it possible to use the same language for translations as the desktop (BUG:374928)
  • Fix a possible crash in the brush engine when using older Wacom tablets on Windows 10 and a stylus that does not support rotation (BUG:375253)
  • Add extra precision to the gray slider in the levels filter (BUG:375201)
  • Fix settings for cumulative undo
  • Hide text for buttons with an icon in the toolbar
  • Restore the default favorite blending modes
  • Make it possible to delete system tags (BUG:347607)
  • Restore a step of 0.1 for the crop tool ratio spinbox (BUG:374021)
  • Fix saving the name of a local selection mask (BUG:374383)
  • Fix crash when creating a document after closing it with opacity keyframes (BUG:374381)
  • Icon updates for redo, mirror view, rotation, smoothing modes, merging layers, rotating canvas, split layer, color to alpha
  • fix crash when attempting to use a document that has a 16-bit float XYZ color space
  • Fixed making the fullscreen action checkable again (BUG:373906)
  • Don’t reset the OCIO settings when moving the window (BUG:373481)
  • Fix saving pass-through mode for group layers
  • Make user visible color space names in color models consistent
  • Fix a crash when using two windows (BUG:371124)
  • Fix a possible crash with the undo stack (BUG:374524)
  • Fix confusion when saving per-stylus presets between sessions (BUG:374957)
  • Don’t generate thumbnails without a height or width (BUG:373835)
  • Fix a potential crash when switching to the tool options in the toolbar (BUG:374497)
  • Fix exporting animation that doesn’t start with the first frame
  • Don’t reset the animation export range every time when exporting an animation

You can read the complete release notes here.

GameDev News

2. February 2017


Scirra just released information on their upcoming Construct 3 release and I have to imagine the response isn’t what they were hoping for.  Construct is a codeless game engine that ultimately generates HTML5 behind the scenes.  There are two major changes to Construct 3:c3

    • they have moved to a subscription model, $99 USD per year, which includes exporting to all supported platforms.
    • Construct 3 is now hosted entirely in the browser, Chrome specifically

Details from the original announcement:

Construct 3 works in Chrome on Windows, Mac, Linux, and Chrome OS. There's nothing to install — it's as simple as visiting a website. There are too many new features to list here, so we'll be posting regular updates over the next few weeks going in to more detail. However we've designed it web-first, with features like cloud save, remote preview, integrated WebFonts support, native-grade WebGL rendering, and much more. But don't worry - it'll still work fine when you go offline, even with an intermittent connection, and you can keep your projects offline too if you prefer. And as we promised, Construct 2 projects import with high fidelity. You won't have seen anything like this running in your browser before. And we're nearly ready to share what we've created.

Moving software to the web changes everything. Consequently we've had to make one change to the old way of doing things. As with the vast majority of web-based services, Construct 3 licenses will be based on a subscription rather than a one-off payment. We also know many existing Construct 2 users will be thinking about upgrading. Here's a summary of how pricing and upgrades will work.

  • A Construct 3 Personal subscription will be $99/year. This covers all export platforms.
  • Existing licensed Construct 2 users (including on Steam) will get 50% off their first year.
  • Anyone who buys Construct 2 from today until Construct 3's release will get their first year of Construct 3 for free. To make it a no-brainer, we're also putting Construct 2 on sale for $99. So there's no reason to wait!
  • If they choose, our existing Education users will be able to upgrade to Construct 3 for the remainder of their license period at no additional cost.
  • We will still have a basic free edition of Construct 3.

A public beta of Construct 3 will begin by April. At first our focus will be on testing, but we aim to make the full release by summer. We think you'll love it.


Judging by several of the comments in response to this announcement, the community is not exactly pleased:





It’s not all negative though, there were a few positive comments in the mix:



One major point of contention is the browser based nature and the requirement to be online, to which the Construct team responded:



I personally don’t mind browser based tools, but I do dislike single browser based tools.  With every release I am liking Chrome less and less and being tied to a single browser eliminates a lot of the web based advantage to start with.  Want to work in Safari on your iPad… you can’t.  Most recent Chrome update broke on your computer…  good luck with that.


Today, Scirra followed up with another blog post actually previewing upcoming changes in Construct 3.  (Personally I would have lead with this….)

The interface

The Construct 3 interface has been redesigned from the ground up. We've kept many familiar and useful aspects, like the panes layout and the Properties Bar. There are also some significant differences. We've aimed for a simplified, minimal design that reduces clutter and helps you focus on your content. The ribbon has been condensed down to a toolbar with just the most essential features. Everything else is now under the main menu button.

Being browser-based, the UI style can be modified using CSS. We're keen to add a custom theming system to allow anyone to edit the appearance!

Log in to Construct 3

Near the top-right corner is the user account menu. In this screenshot it's showing a guest user who hasn't logged in. You'll be able to log in to Construct 3 with the same account you use on the website. This makes it dead easy to use Construct 3 on any computer, at home, work or school. Remember, there's nothing to install! We can't wait for you to try this.

High-quality display

This screenshot was taken on a 4K high-DPI display. The high-DPI rendering in Construct 3 is flawless: every detail scales perfectly. The icons for example are all SVG, which means they scale perfectly to any size or detail. The icons have also all been redesigned with a modern flat style like Google's material design. The Layout View also works perfectly with high-DPI displays, and also features zoom-to-mouse, a greater zoom range, and native-equivalent rendering with WebGL 2. Also note the lack of a status bar - instead status appears when it is needed, and in the right context, such as inside the Layout View pane.

Improved properties

The Properties Bar has also been reworked to be easier to use with extra conveniences. For example you can click the "..." button by the project description to edit the text in a larger window. Checkboxes are used instead of on/off dropdowns. You can type calculations like 1920/2 which will set a value of 960. You can even use some system expressions like sqrt(64). Number values can be dragged smoothly with the mouse and instantly show the effect in the Layout View.


You might be wondering how we handle features that have previously required external software like Java for the minifier, or PNGCrush for image recompression. We didn't want to settle for fewer features in the browser, so we created a suite of equivalents, several of which are compiled to asm.js for near-native performance. Then we went a step further and created a scheduling architecture that uses Web Workers run tasks in parallel across all available CPU cores for maximum performance. This all ensures you can do everything in the browser - not just a subset or "lite" version, it's the real deal.

Can I work offline?

We want to be absolutely clear on this - Construct 3 will work offline! We're using the latest Service Worker technology to download the entire app the first time you visit it. Every time you visit after that, it will load directly from disk. So you can be offline, or have an intermittent connection, and you won't even notice - Construct 3 will keep working. We recognise forcing users to be online would be a significant inconvenience for many users, so we've worked hard to make the sure the offline or "lie-fi" experience is perfectly smooth.

You can of course also keep your projects offline if you prefer. We think many people will find it convenient to save and load from the cloud, especially if you use several different devices. However this is not required - you can still save and load projects locally, as you can with Construct 2.

In future we are also planning desktop builds of Construct 3 for Windows, Mac and Linux. These will work much like Construct 2 does now: you download and install the software, can copy it to a USB drive, and so on. These versions will also cover the surprisingly small featureset that can't be covered in the browser, such as saving a folder-based project to a local folder, and better copy-and-paste support. This allows you to take Construct 3 to a computer that is permanently offline, for example.


So, what do you think of the changes to Construct 3.  As was illustrated recently with Unity, many people find subscriptions completely abhorrent.   I also know many people strongly dislike browser based tools as well.  This combination is a bold choice, but one that is sure to alienate a portion of their user base.  The question remains is… how much?

GameDev News

2. February 2017


Epic have just released preview 3 of their upcoming 4.15 release.  As always, being a preview release, you should expect bugs and warts in this release and it should not be used in production.  With that in mind, this release brings a number of fixes, including:

Fixed! UE-40753 [CrashReport] UE4Editor_LevelEditor!FLevelEditorActionCallbacks::Paste_CanExecute() [leveleditoractions.cpp:1602]
Fixed! UE-41130 User Defined Enums may lose their display names on upgrade to 4.15
Fixed! UE-41073 Crash when opening blueprint with collapsed nodes with structure output, split pin
Fixed! UE-41072 Implemented Interfaces are not added to nativization list
Fixed! UE-41070 Data only blueprints are not not nativized when flagged to do so
Fixed! UE-41071 Parent blueprint not added to nativization array if only child saved
Fixed! UE-41190 Ensure failure !bStaticCall nativizing blueprint calling blueprint function library function
Fixed! UE-37815 BulkData Async loading remains in memory
Fixed! UE-38767 [CrashReport] UE4Editor_Core!FArchive::SerializeCompressed() [archive.cpp:447]
Fixed! UE-41125 Static mesh LODs other than LOD0 cannot be set to screen sizes greater than 1
Fixed! UE-41220 Crash when adding multiple collision types to a mesh
Fixed! UE-40791 The Play button on the ForceFeedback effect icons is missing
Fixed! UE-41294 Reimporting skeletal mesh clears material references from material slots
Fixed! UE-41126 HISMC UpdateInstanceTransform blueprint function does not update bounds correctly
Fixed! UE-40525 CommitMapChange doesn't fully deal with sub-levels
Fixed! UE-40939 Inconsistent line ending prompts occur in Visual Studio after adding Vehicle C++ feature pack
Fixed! UE-41163 Material curves keeps resetting to 0.f
Fixed! UE-41216 Additive Pose Asset arms become over exteneded when blended with reference pose
Fixed! UE-41082 Fix crash on cache bone with sub instance
Fixed! UE-40945 Crash trying to import facial animations
Fixed! UE-41143 Crash when launching engine without a windows audio device enabled.
Fixed! UE-41112 Crash when Dragging Skeletal Mesh with Apex Clothing into Level
Fixed! UE-37270 Changing transform of simulated component during physics freezes motion
Fixed! UE-39884 Foliage LODs are do not appear to use the base LODs lightmap any longer
Fixed! UE-40480 Ensure encountered when using the Copy/Paste sub-tool in sculpt mode
Fixed! UE-41271 Localization broken in cooked builds due to missing meta-data during cook
Fixed! UE-41253 Mobile / Use Full Precision not working on Metal
Fixed! UE-41023 Scene capture produces black texture on encoding devices with mobileHDR == false
Fixed! UE-39451 Web browser widget causes app to crash when packaging for Distribution on Android
Fixed! UE-40927 Projects crash on Android when trying to load mips
Fixed! UE-39911 Failed checkSlow(IsInGameThread()); in UWorld::GetWorldSettings
Fixed! UE-40524 Issues with PrepareMapChange/CommitMapChange and Level Collections
Fixed! UE-40810 Crash opening Infiltrator packaged on Windows for Linux
Fixed! UE-41198 Spinbox value decimal point is moved one place to the right when edited on Android
Fixed! UE-36984 TestPAL fails to compile
Fixed! UE-41146 Crash in editor when audio is playing
Fixed! UE-40451 Blueprint - User configured tvOS Bundle ID is not set properly during packaging
Fixed! UE-40392 GitHub 3111 : Fix environment variable name to the correct legacy LINUX_ROOT.
Fixed! UE-40023 UFE Deploying and launching a packaged build on Linux fails due to invalid directory
Fixed! UE-40761 Various audio clips are not playing in Elemental Demo on PS4
Fixed! UE-41209 PS4SharePlay errors are produced when launching onto PS4 with UnrealFrontEnd
Fixed! UE-41183 Crash Occurs when changing the 'Max Metal Shader Standard To Target' option within iOS Project Settings
Fixed! UE-38691 Launch On from Windows to Linux fails with missing GLSL_430 shaders
Fixed! UE-37016 GitHub 2842 : [Linux] Fix bootstrap script so it is independent on working dir
Fixed! UE-40956 Rare crash occurs in CoreAudio in Vehicle Game on Mac when quitting.
Fixed! UE-41042 GitHub 3160 : Fixed `ADB` being incorrectly set to `ANDROID_HOME`.
Fixed! UE-41079 NpToolkit2 fails to initialize in 6CPU mode on PS4
Fixed! UE-41167 Shader complexity is broken in the forward renderer
Fixed! UE-39754 Crash: Changing Material Property Overrides of Material Instance
Fixed! UE-40736 "Too many texture coordinate sets" warnings in KiteDemo
Fixed! UE-40873 Shadows of small movable components popping out
Fixed! UE-41193 Update material node tooltips based on 4.15 preview feedback.
Fixed! UE-40482 Ensure occurs when turning on Constraints in Advanced Show Flags
Fixed! UE-40980 Fix mem corruption on particles on PS4
Fixed! UE-40724 Large round stone in ZenGarden is no longer reflective
Fixed! UE-41138 Flickering in Elemental Demo when TemporalAA and bloom is enabled
Fixed! UE-41099 SpeedTree Material No Longer Compiles With Texture Coordinate Node In BaseColor
Fixed! UE-41008 LogApexClothingUtils Warning when opening QAGame
Fixed! UE-41311 Time snapping interval is not updating the timeline in UMG Sequencer
Fixed! UE-40682 Animations that overlap and blend together break when undoing
Fixed! UE-40758 Events on frame 0 fire twice
Fixed! UE-41019 Sequencer does not refresh on creating a new camera if Default Property Tracks is empty
Fixed! UE-41010 Fix up actors remove actor from sequencer folder.
Fixed! UE-41148 Logstreaming warning when opening the editor: "LogStreaming:Warning: Failed to read file 'Common/RoundedSelection_16x.png' error."
Fixed! UE-40070 VREditor: Laser not hidden on MotionControllers with docked Menu/UI Panels


As always, the preview release is available using the Epic Game Launcher.

GameDev News

31. January 2017


Unity have just released a rather large patch for Unity 5.5.1p1.  Loaded with fixes, there are also a couple of improvements to the Android gradle builds as well as a couple new graphics API in the Mesh class.  Complete patch details from the release notes:


  • Android: Gradle export now supports custom template
  • Android: Gradle export troubleshooting added
  • Graphics: Added new APIs: Mesh.GetIndexStart and Mesh.GetIndexCount.
  • Tizen: Added a button to the deployment target window to refresh the target list.
  • Tizen: Remove the Tizen 2.3 minimum OS option. 2.4 is now the only accepted OS version. Users must update their devices to Tizen OS 2.4.
  • (852307) - Android/IL2CPP: Prevent a crash which can occur with the use of OnAudioFilterRead callbacks on krait CPUs.
  • (none) - Android/Metro: Fixed the issues preventing the Application.Unload API from functioning correctly.
  • (856650) - Android: Gradle export should now work with SDK version > 6.0.
  • (854535 ) - Android: Gradle export -Fixed colliding package name for unity-android-resources
  • (869582) - Animation: Fixed a crash when setting Animator.updateMode when no AnimatorController is set.
  • (860366) - Animation: Fixed edit key overriding key frames in curve editor.
  • (862004) - Asset Bundles: Fixws intermittent freeze that could occur when calling AssetBundle.LoadAssetAsync multiple times in a single frame.
  • (871730) - Cache Server: Fixed the custom port missing for the remote option.
  • (none ) - Editor: Fixed light probe rendering in LookDev HDRIs. Previously it could go wrong depending on the lighting panel parameters set for the project.
  • (862005) - Graphics: Fixed crash in occlusion culling when loading multiple scenes.
  • (860775 ) - HoloLens: Fixed a crash that occurs on device when downloading files with WWW.
  • (867606) - IL2CPP: Allow the build to succeed when the .NET 4 TargetFrameworkAttribute attribute is used in an assembly.
  • (863806) - IL2CPP: Correct an error in UnusedBytecodeStripper2 related to UnityEngine.RenderTexture that can occur during some project builds.
  • (828288) - iOS: Fixed an issue where the ReplayKit API might be reported as available on unsupported devices
  • (796649) - iOS: Fixed orientation requests from the app getting out of sync with iOS orientation.
  • (829753) - Kernel: Json serialisation now supports correct parsing of NaN and +/-Inf.
  • (none ) - Lighting: Fixed baked light map visualisation shading mode in the Editor.
  • (861293) - LineRenderer: fixed gaps when values are repeated
  • (864043) - LineRenderer: Fixed issue where setting endColor failed if using different number of color/alpha keys
  • (847798 ) - Mono: Correct an invalid C# compiler error with generic types in compiler generated code (like lambdas and enumerators). The error from the C# compiler often includes this text: "There is no boxing or type parameter conversion from..."
  • (836770) - Networking: Fixed issue where unspawn handler was not properly invoked during object cleanup (like in NetworkManager.StopClient())
  • (864122) - Particles: Fixed "TLS ALLOCATOR ALLOC_TEMP_THREAD" error messages
  • (862777) - Particles: Fixed crash in LightsModule when destroying systems
  • (862897) - Particles: Fixed crash in ParticleSystem.Emit()
  • (856842) - Particles: Fixed issue where distance-based emission was not working
  • (862352) - Particles: Fixed issue where particle bounding boxes could become corrupted, resulting in "Invalid AABB" messages
  • (861347, 863060 ) - Particles: Fixed issue where sub-emitters were causing memory leaks
  • (862976) - Particles: Fixed issue where switching Render Mode could cause rendering artifacts
  • (868648) - Particles: Fixed rare crash when using the Trail Renderer and Multithreaded Rendering is enabled.
  • (862921) - Particles: Fixed rotation bug with mesh particles
  • (864208) - Particles: Fixed TrailModule crash when enabling trails and using ParticleSystem.SetParticles
  • (861409]( - Particles: Stretched billboards could apply scale twice if using Speed Scale
  • (859436) - Particles: Texture Animation could skip frames and display invalid data
  • (none ) - Physics 2D: Optimize the CapsuleCollider2D component intersection tests for speed and accuracy.
  • (none ) - Purchasing: Fixed a bug where a duplicate transaction could fail without calling the failure callback.
  • (none ) - Scripting: Added the following non-allocating accessors to Mesh. These accessors write into a user-specified List. The accessors are GetBindposes, GetBoneWeights, GetColors, GetIndices, GetNormals, GetTangents, GetTriangles, and GetVertices.
  • (856507) - Shaders: Fixed shader compilation error when compiling certain surface shaders using WorldNormalVector from INTERNAL_DATA e.g. shadow pass variations.
  • (810571) - Splash Screen: Fixed an issue where the splash could be truncated by a first scene taking a long time to load
  • (872286 ) - Tizen: Change the minimum API level to Tizen 2.4 in PlayerSettings.
  • (869995 ) - Tizen: Fix a NULL referencing while exiting the game.
  • (834785) - Tizen: Improve error when failing to discover a deployment target.
  • (none ) - Tizen: Improvements to emulator deployment.
  • (none ) - Tizen: SystemInfo.processorFrequency now returns proper values.
  • (869964) - TrailRenderer: Fixed visual artifacts when manually enabled during Play mode
  • (861828) - UnityWebRequest: fix proxy support, so that debuggers like Fiddler work.


As always, the patch is available for download here.

GameDev News

Month List

Popular Comments

GameFromScratch server update
Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

Home > News >

14. April 2013

I just finished performing an upgrade on the software that runs this site. I ran into a couple small snags during the upgrade that resulted in the site being unavailable for about 15 minutes. If you we're trying to access the site earlier today and received errors... My bad, sorry.



The new software should be a little quicker, but it was mostly about server security and a few perks for me, like better blogging software support. I think the upgrade went smoothly enough, but there are a lot of moving pieces. If you encounter any errors, please let me know what and where so I can fix it!



Cheers and thanks for your patience.


News ,

blog comments powered by Disqus

Month List

Popular Comments