Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

31. October 2016


LWJGL, the Light Weight Java Game Library, is a low level game framework for Java layered over top of libraries such as OpenGL, CL, AL and Vulkan.  It has been used by a number of game engines including LibGDX and jMonkeyEngine to provide performant cross platform 3D support in Java.  LWJGL just released version 3.1, updating several of the underlying bindings, making various improvements and several bug fixes.


From the release notes:

  • Bindings have been split into modules and are available as separate artifacts. (#100)
    • The download configurator on the website can be used to customize LWJGL builds and Maven/Gradle projects.
  • Added LMDB bindings.
  • Added Nuklear bindings. (#101)
  • Added Tiny File Dialogs bindings.
  • Added bgfx bindings. (#240)
  • Added support for new EGL, OpenCL, OpenGL, OpenGL ES and Vulkan extensions.
  • Updated all bindings to latest versions.
  • Vulkan javadoc is now almost identical to the Vulkan man pages, with links to the online Vulkan specification.
  • Generator: Removed buffer object binding checks. (#197)
  • Generator: Added support for mapping byte/short parameters to int.
  • Generator: Added support for va_list parameters.
  • Generator: Reduced bytecode size of generated methods.
  • Generator: The Vulkan bindings are now automatically generated.
  • Optimized strlen methods used internally by LWJGL.
  • Optimized misaligned memSet and memCopy.
  • Added support for stack allocations with custom alignment.
  • Removed allocation functionality from read-only, externally managed structs.
  • Improved library loading diagnostics and added Configuration.DEBUG_LOADER option.
  • Libraries extracted by the SharedLibraryLoader are now locked to avoid conflicts with other processes (e.g. antivirus software). (#225)
  • Simplified javadoc of unsafe versions.
  • Callback instances are now tracked when the DEBUG_MEMORY_ALLOCATOR option is enabled.
  • Fixed realloc tracking in the debug allocator.
  • Shared libraries that ship with LWJGL are now always preferred over system libraries.
  • Fixed return type of functions that return pointer to boolean.
  • stb_image: Fixed result auto-sizing of stbi_load* functions.
  • Functions that deallocate memory no longer have Java array overloads.
  • Fixed memSet bugs.
  • Fixed Java array overload generation for functions with multiple auto-size-result parameters.
  • Fixed custom checks in Java array overloads.
  • Fixed lookup of Critical JNI natives on Windows x86.
  • Disabled Critical JNI natives for functions affected by JDK-8167409 on Linux & MacOS.
Breaking Changes
  • xxHash: Added support for stack allocation of streaming hash state. Opaque handles have been replaced by the XXH*State structs.
  • NanoVG: Dropped version suffixes from NanoVGGL classes.
  • Mapped more integer parameters and return values to Java booleans, that were missed while working on #181.
  • Dropped VKUtil class and moved the version macros to VK10.

The LWJGL project is open source and available on Github here.

31. October 2016


Cocos Creator is an open source JavaScript powered game engine and editor built on top of the Cocos2d-x framework.   For more details of how Cocos Creator works, check out this hands-on video showing an earlier version in action.  Cocos Creator just released a new version, 1.3, bringing several new features including rich text support, a new audiococos engine and Dragon Bones animation file support.  On gotcha of this release however is that 32bit Windows support for the editor has been dropped.


From the release announcement in the Cocos2d-x forums:


Cocos Creator 1.3.0 released!

We are excited to release version 1.3.0 of Cocos Creator. Cocos Creator is a new, unified, development tool that handles every step in the game development process.

This version offers an incredible performance increase for both Web and native platforms. There are 6 major features and numerous small changes in this version that will help Creator meet the needs of more and more types of projects! The following is the highlight of this update:

  • Rich text support
  • Dragon Bones skeleton animation support
  • Prefab automatic synchronization
  • Automatically packaging textures to Atlas
  • Added UI controls: PageView, Toggle, ToggleGroup, Slider
  • New AudioEngine

Important upgrade instructions

  • The Windows version now uses use a 64-bit architecture, there is no longer support for 32-bit Windows systems. The advantage is that the editor can deal with a large number of image resources and improve the efficiency by at least 5 times, but also to support the emerging image format Webp.

GameDev News

31. October 2016


With the Microsoft Hololens one step closer to being an actual consumer product (and an affordable one to boot!) Unity have stepped up their holographic development support. The current development iteration times have been a bit painful using the Hololens devkit, so this new approach should hopefully speed things up a great deal.

Holographic Emulation is a new feature that vastly reduces iteration time when developing holographic applications in Unity. Developers creating applications for Microsoft HoloLens will immediately benefit by being able to prototype, debug, and iterate on design directly from the Unity Editor without getting bogged down by long build and deploy times. Holographic Emulation works in two different modes: Remoting and Simulation.


Holographic Remoting allows you to run your application directly from the Editor after connecting to a Windows Holographic device (Microsoft HoloLens). The application will behave as if it were deployed to the device (with full sensor data and positioning), but will actually be running on the host machine. The Game view window will also allow you to see what is being rendered on the device (absent, of course, anything that the wearer of the device sees from the real world).

Holographic Simulation goes one step further, allowing you to run on a simulated device directly in the editor — in other words, no physical device is necessary. This is a great option for development when you have a limited number of devices to share among your team, or you want to get started early with holographic development before getting physical hardware.


You can read a great deal more about the new Emulation options at this blog post here.

GameDev News

28. October 2016


Unity have released another patch, this one 5.4.2p2. Contains fixes in the areas of graphics, particles, physics and iOS. Details from the release notes:


  • IL2CPP: Android - improved building performance.
  • iOS : Exposed ReplayKit streaming APIs to user scripts.


  • (818174) - Android: Fixed a case of audio stutter when launching Android player from a notification on the lockscreen.
  • (826047) - Animation: Fixed erroneous "Playable was not Disposed" being displayed.
  • (824009) - Asset Bundles: Fixed the assetBundle property of AssetBundleCreateRequest so that it stalls instead of returning null when the bundle is not yet ready
  • (808412) - Collaborate: Fixed a bug where double-click on "Show differences" icon for a local change in Collaborate toolbar cause a crash.
  • (832097) - Editor: Fixed an issue with addition of duplicate references of auxiliary platform-specific editor DLLs to editor C# project.
  • (793204]( - Editor: Fixed the errors when capturing screen or sending images to remote.
  • (807375) - Editor: Fixed the icon quality regression caused by unnecessary scaling step.
  • (814484) - Editor: Improved performance of SetParent in deeply nested UI panels.
  • (832292) - Graphics : Updated shader macros to support lod + sampler variations for texture cubes and arrays.
  • (808298) - Graphics: Fixed a crash in CommandBuffer.DrawRenderer because of a NULL or inactive camera.
  • (825082) - Graphics: Nullify RECT in case GetClientRect fails so we don't have trash in RECT.
  • (840596) - IL2CPP: A call to GetCurrentMethod in a generic method should return the generic method definition, not the inflated generic instance method.
  • (837974) - IL2CPP: Fixed generated C++ code not compiling when calling Math.Abs on an unsigned integer.
  • (838259) - IL2CPP: Return an empty array from GetGenericArguments when it is called on a MethodInfo object from a non-generic method. Previously the runtime incorrectly threw an assert in this case.
  • (820692) - iOS: Fixed a performance regression by resizing the constant pool adaptively on Metal.
  • (820885) - iOS: Fix a race condition when changing resolution on startup on Metal.
  • (820938) - iOS: Fix bug in retrieving of certain values of IScore larger than 32 bits.
  • (808537) - iOS: GameCenterPlatform.ShowLeaderboardUI now shows the specific leaderboard when requested (note, the symptoms are still observable on iOS 8.4 and 9.x due to a bug in the OS itself).
  • (801369) - iOS: ILeaderboard.LoadScores now does callback if SetUsersFilter is called.
  • (815816) - Kernel: Fixed local scale of duplicate game object not matching original local scale of game object if parent has rotation set.
  • (829178) - OSX: Fixed a crash on startup when OpenGL2 is used.
  • (825180) - Particles: Don't allow prewarm on non-looping systems.
  • (833513) - Particles: Fixed a crash when using uninitialised curves.
  • (837680) - Particles: Fixed an issue when rendering during OnPreRender using RenderWithShader.
  • (819881) - Particles: Prevent restarting particle system when parent transform moves in the editor.
  • (833737) - Physics 2D: Ensure that BoxCollider2D.Cast correctly detects a multi-edge EdgeCollider2D.
  • (820300) - Physics 2D: Ensure that BoxCollider2D/PolygonCollider2D with large vertex but small area is created correctly.
  • (830078, 819705) - Shaders: Fixed some cases of unsupported shader variants leading to a crash.
  • (829326, 818524) - Trails: Fixed an occasional TrailRenderer crash when using Clear script API.
  • (826310) - UI: Fixed an issue where the Disabled Trigger animation was triggered on hovering over a Button when this was not Interactable.
  • (834148) - UnityWebRequest: DownloadHandlerAssetBundle will become done once download finishes.
  • (834583) - UnityWebRequest: Fixed a crash when downloaded asset bundle had zero size.
  • (837783) - Windows: Fixed potential lock when in fullscreen exclusive mode and minimising/maximising screen.

As always, the patch can be downloaded here.

GameDev News

27. October 2016


Substance Painter 2.4 has just been released.  Substance Painter is a popular Physically Based Renderer (PBR) texturing application.  This release brings a redesigned shelf which is now highly customizable.  Other updates include:

Advanced Filtering
It is now possible to filter, search and sort through assets by using a combination of folders, usages and keywords. Assets can be easily filtered by shelf as well and searches can span through multiple shelf locations at once.

New Import Dialog
The import process has been rebuilt from the ground up to allow to easily import and arrange multiple assets in a shelf or project at once. Assets copied manually in the shelf will also appear in real-time in Substance Painter without the need to restart the tool.

Bonus: New Particle Presets
We’ve added 4 new particle presets (Electric Circuit, Electric Lines, Rococo and Veins Small) that can be modified to create all sorts of interesting patterns and tweaked some of the existing ones to improve their default behavior. Let us know what you think!


More details from the release notes:

  • [Shelf] New interface to browse resources (tree-view, filters and so on)
  • [Shelf] Allow to save a search as a preset
  • [Shelf] Allow to create a new window from a preset
  • [Shelf] New interface for importing resources
  • [Shelf] Don't copy default allegorithmic shelf in Documents folder
  • [Shelf] New particles presets : Electric Circuit, Electric Lines, Rococo, Veins Small
  • [Shelf] Improved older particles presets to be more easy to use (like "Rain")
  • [Shelf] Add new information on resource contextual menu
  • [Viewport] Improve performance when loading environment maps
  • [Viewport] Add support of environment maps that are not power of two

Fixed :

  • Crash when removing a mask
  • Crash when painting after saving a preset
  • Crash with environment blur on some GPUs
  • Crash when assigning a wrong resource with the mini shelf
  • [Shelf] Clean + Save remove tags and metadata for resources in the project
  • [Shelf] importing a preset will display its resources in the shelf
  • [Export] Normal map generated from height channel has a low intensity
  • [Export] Normal from mesh is not always present in final normal map
  • [Export] Dilation with transparency can sometimes result with no transparency
  • [Scripting] "alg.plugin_root_directory" can returns a truncated network path
  • [TextureSet] Lock button is enabled when re-opening non-square projects


You can see the new shelf in action in the video below:

GameDev News

Month List

Popular Comments

Learning Scala, found a great book
Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

10. December 2013


So lately I’ve been working on my LibGDX tutorial series and I am certainly a fan of the library.  Java on the other hand, after years of using C#, just seems flawed.  Not that it is a bad language, just that it’s a bit kludgy.  Fortunately there are a number of languages built over top of the Java Virtual Machine, allowing you to make use of most of the Java eco-system, while working in a different language.  Some of the more popular options are Groovy, a scripting language that targets the JVM and Clojure, a functional LISP like language.  I don’t personally want a fully dynamic language ( I like typed languages for large projects ) so Groovy is out, while LISP might as well be Klingon.  I like some functional programming, but my brain just doesn’t work that way… to warped by years of procedural programming.


Fortunately there is Scala.


I’ve only just started playing with it but I am already impressed.  It’s almost as if someone took all the aspects of Java I dont like and set out to fix them.  Things I like:

  • runs on the Java VM, so can use libraries like LibGDX without issue but still feels familiar
  • type inference.  Feel like a dynamic language while staying dynamically typed.  I miss var from C#!
  • Functional programming lite.  High Order functions.
  • It’s got REPL ( command line programmability ) even if it’s faked.  Great way to learn the language.
  • Everything is an object, one of Java’s biggest warts
  • Pattern matching… it’s like an uber switch statement and looks to be a huge time saver
  • traits and sealed… I think.  Basically a trait is an interface with codability, while sealed allows a class to define which classes can extend it.  It will take some use, but both seem to solve commonly encountered problems, but both may have huge downsides.
  • makes the language much more compact while still feeling like Java.
  • operator overloading.  This was simply a stupid Java mistake.
  • best conditional expression evaluation I have ever seen.  Optional semi colons.


I'm still just at the beginner phase, but I have to say I’ve already had a ton of AHAH moments.  There are a few annoyances, at least initially.  For example, I dont like the variable coming after the variable name… there might be a huge win here somewhere, but it feels very unnatural coming from Java. 


Anyway, back when I started looking to catch up on Java I looked for a book that taught Java but did so making certain assumptions about the programmers experiences.  For example, I know what a class is, how a loop works, etc…  Sadly I never found such a book.  This time however, for learning Scala, I did.


Scala for the Impatient

cover This book is exactly what I was looking for when I was looking for a Java book for experienced programmers.  In the authors own words:

I wrote this book for impatient readers who want to start programming in Scala right away. I assume you know Java, C#, or C++, and I don’t bore you with explaining variables, loops, or classes. I don’t exhaustively list all the features of the language, I don’t lecture you about the superiority of one paradigm over another, and I don’t make you suffer through long and contrived examples. Instead, you will get the information that you need in compact chunks that you can read and review as needed.

From what I have read this is exactly true.  I have no prior Scala experience, but I have never found myself once struggling with any concepts presented in this book.  Nor frankly have I been bored, something I often struggle with for programming books.

I need to make something extremely clear.  If you do not have a solid prior programming foundation in C# or Java ( or possibly C++ ), this is not the book for you!  The book basically covers how Scala deviates from other languages, so if you don't know the fundamentals, you will struggle.  It is also not a language reference.  If you are new to programming or want a language reference, Programming in Scala is probably the book you want.

One other thing I really appreciate about this book is the authors writing style.  It’s an easy read and he has a sense of humour.  Here for example is his tip on operating overloading:

In Java, you cannot overload operators, and the Java designers claimed this is a good thing because it stops you from inventing crazy operators like !@$&* that would make your program impossible to read. Of course, that’s silly; you can make your programs just as hard to read by using crazy method names like qxywz. Scala allows you to define operators, leaving it up to you to use this feature with restraint and good taste.

That paragraph is pretty typical of how the book goes.

So I’m heading off on this Scala adventure in my spare time.  Expect a few related posts here and there as I go.

Programming ,

blog comments powered by Disqus

Month List

Popular Comments