Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

7. April 2016


Fast on the heels of the 4.11 release, Unreal just release UE 4.11.1 hotfix.  Perhaps the biggest part of this release is the addition of support for the Oculus Rift 1.3 SDK.  There are also resolutions to several significant bugs.


From the UE4 forums (login required):

Fixed in 4.11.1
Updated! UEBP-140 Oculus Integration 1.3 SDK, automation features, adapter support
Fixed! UE-28961 UnrealLightMass fails to compile with VS2015 Update 2
Fixed! UE-29031 Unable to connect to SSL Perforce Server
Fixed! UE-28933 GarbageCollection crash using IWCE
Fixed! UE-28992 [CrashReport] Crash When Enabling Capsule Direct Shadows on a Skeletal Mesh
Fixed! UE-29005 [CrashReport] UE4Editor_CoreUObject!FGCCollector::HandleObjectReferences() [garbagecollection.cpp:586]
Fixed! UE-29012 Crash attempting to open blueprints with make nodes of missing structures made prior to 4.11
Fixed! UE-28954 PSVR Using Old Tracking Data
Fixed! UE-29080 GearVR - project unexpectedly closes on launch
Fixed! UE-29108 GearVR vrplatlib.jar staging logic is backward


As always, the hotfix can be downloaded using the Epic Games Launcher.

GameDev News

7. April 2016


Over the holidays I picked up a Steam Controller and if I am honest I’ve been somewhat underwhelmed.  I never once found a game that performed better than using an XBox One or Keyboard/Mouse, rendering it kind of useless to me.  I thought no major loss, I’ll go ahead and write some code and share it here, making a small amount of lemonade from lemons life gave.  It was after all and interesting device with a world of potential.  Then I discovered the only way to take advantage of the Steam Controller was through the the Steam SDK.  Eww.


So, for the most part, this device has just past time in the bad purchases junk drawer.  A recent development has occurred that may cause me to dust off the controller after all.  A library has been released on Steam enabling you to utilize the controller without the Steam SDK.  Fro the github repository:

This is a little C library for Linux based operating systems that allows accessing the Steam Wireless Controller as a gamepad. It exposes all button and axis data as well as acceleration, angular velocity and spatial orientation.

It is also possible to configure certain controller features and use its haptic feedback capabilities.


Get started

Get the source and build it. The project can be built with CMake, but I guess you could just compile the .c file into a library.

First you need to enumerate all available devices and iterate over them. Use SteamController_Open to get a device handle:

SteamControllerDeviceEnum *pEnum = SteamController_EnumControllerDevices();
while (pEnum) {
    SteamControllerDevice *pDevice = SteamController_Open(pEnum);

    // ... store pDevice for later use ...

    pEnum = SteamController_NextControllerDevice(pEnum);

After that you can use SteamController_Configure with the desired flags to set up the controller. Then you useSteamController_ReadEvent to receive updates about connection status, button, axis and vector values and battery voltage.

Use SteamController_UpdateState to accumulate events into a controller state.

See example.c for a very crude, very rudimentary example.

You may be thinking at this point that the library is Linux only by that description.  Fortunately, there was this recent commit:

The API was changed to use opaque data types to aid porting to different platforms. Support
for Windows platforms was added and common functionality was separated into groups
with similar concerns.

Very cool work. Anybody else out there pick up a Steam controller and love the thing? If so, in what scenarios are you using it?

6. April 2016


Mesa 11.2.0 has just been released.  Mesa started life many years ago as an open source (MIT License) implementation of the OpenGL graphics API.  Over the years the Mesa project has implemented several other APIs such as OpenVG and OpenGL ES.  Mesa has also become a steward of sort for open source graphic driver implementations shown here.  Another common usage scenario for Mesa is the software layer, that allowed compatibility with accelerated graphics on non accelerated hardware.


Enough with what Mesa is, and back to the release.  Details of the 11.2 release:

- CI
 - Add Travis-CI configuration file.

- Documented more environment variables, squashed a ton of typos.

- Core mesa
 - Fix locking of GLsync objects.
 - Ongoing work for GL_OES_geometry_shader support

 - Massive amount of fixes - ubo/ssbo amongst others.
 - Significant rework in preparation for GL_ARB_enhanced_layouts support.

- GL
 - Reduced binary size (by about 15%)

- Nine
 - Various fixes - multithreading, rounding issues, honour alignments, etc.

 - Add support for WGL_ARB_render_texture

- OSMesa (both classic and gallium)
 - Add new OSMesaCreateContextAttribs() API

 - Android: Add ANDROID_framebuffer_target and ANDROID_recordable support.
 - Wayland: Try to use wl_surface.damage_buffer for SwapBuffersWithDamage
 - X11: Fixed a number of crashes

Video backends:
 - Correct the timestamping during video decoding

 - Disable MPEG4 by default
 - Make the implementation thread safe
 - Add BOB/motion adaptive deinterlacing

- i965
 - Add more KBL PCI IDs
 - Fleshed out libi965_compiler in preparation for Vulkan support

- llvm
 - POWER8 optimised codepaths

- nouveau
 - Renamed various symbols to follow the naming scheme used by Nvidia.
 - Updated against the new nouveau UAPI
 - Initial support for GM20x GPUs
 - Added a nouveau backend for st/va
 - Ongoing work towards compute shaders support
 - More performance counters work - added SM30 (Kepler), removed unused ones.

- radeon(s)
 - Dropped support for LLVM 3.5. LLVM 3.6 or later is required
 - ETC support for Stoney
 - Disable MPEG1 (UVD)
 - Big endian fixes

- svga
 - Avoid emitting redundant commands - SetIndexBuffer, SetVertexBuffers
 - Increase the fence timeout

- virgl
 - Add virtio 1.0 PCI IDs

Platform specific:
- Android
 - Added virgl to the build
 - Handle secondary arch on mixed 32/64bit builds, ARM64 support
 - Fixes when building for SSE 4.1 capable CPU
 - Various compatibility fixes for AOSP build system rework

 - DragonFly support/fixes
 - Removed hardcoded link libraries references (-ldl, -lpthread)
 - Check for correct python binary name.

- Windows
 - Visual Studio 2013 or later is now required

This release adds support for the following extensions:

- GL_ARB_arrays_of_arrays on all gallium drivers that provide GLSL 1.30
- GL_ARB_base_instance on freedreno/a4xx
- GL_ARB_compute_shader on i965
- GL_ARB_copy_image on r600
- GL_ARB_indirect_parameters on nvc0
- GL_ARB_query_buffer_object on nvc0
- GL_ARB_shader_atomic_counters on nvc0
- GL_ARB_shader_draw_parameters on i965, nvc0
- GL_ARB_shader_storage_buffer_object on nvc0
- GL_ARB_tessellation_shader on i965 and r600 (evergreen/cayman only)
- GL_ARB_texture_buffer_object_rgb32 on freedreno/a4xx
- GL_ARB_texture_buffer_range on freedreno/a4xx
- GL_ARB_texture_query_lod on freedreno/a4xx
- GL_ARB_texture_rgb10_a2ui on freedreno/a4xx
- GL_ARB_texture_view on freedreno/a4xx
- GL_ARB_vertex_type_10f_11f_11f_rev on freedreno/a4xx
- GL_KHR_texture_compression_astc_ldr on freedreno/a4xx
- GL_AMD_performance_monitor on radeonsi (CIK+ only)
- GL_ATI_meminfo on r600, radeonsi
- GL_NVX_gpu_memory_info on r600, radeonsi


More information on the Mesa project is available on their homepage.

GameDev News

5. April 2016


Officially announced at GDC 2016, Unity has begun a certification program.  In a nutshell, it’s a way to prove to employers and prospective employers that you do in fact know what you are talking about when you say you “know Unity”.  This is a very common practice in the world of IT, especially if you come from a corporate background.


But... is it useful? 


Frankly, that depends.  Mostly it depends if the certification actually means anything, if the certification process is actually vetted, the material certified is sufficiently challenging without being arbitrarily obtuse or impractical in the real world.  Basically, the certification is valuable if people value it.  In the corporate world, sometimes a certification was sufficient to get you hired in a given field, while other certifications literally aren’t worth the paper they are printed on.


Yeah, that sounds like a complete cop out answer, but it’s also true.  Certifications that are purchased or that can be found as a prize in the bottom of a box of cracker jacks mean absolutely nothing.  On the other hand, certifications are also often used as a cash cow for organizations and for profit colleges to milk the unaware.  Certification and training are very often not the same thing, a point many are confused by.  In the end, the Unity certification value will ultimately be decided by the community.  If it’s respected and used as a hiring benchmark, it will certainly be worth getting.  If it is not, it wont be.  Again, I know that sounds like a cop out answer, but it’s the way these things work.


Anyways, that’s talking about IT certifications in general, what about this new Unity one?  Well first off, they have courseware coming soon.  This represents training materials aimed at getting you ready for the certification process.  Generally video tutorials, printed materials, project files and a course syllabus to prepare you to take the certification.  Generally these kinds of things assume you have tertiary knowledge ( ie, C# skills, game programming concepts ) but otherwise start from ground zero and then train you to the point you would be able to pass certification.  In the case of Unity, they describe the courseware as:

Whether you are preparing for certification or simply want to increase your proficiency with Unity, the Unity Certified Developer Courseware provides a structured learning path that starts at square one and leads you through the process of making a working game.

  • Includes 14 hours (~2 days) of instructional videos, developed by Unity Technologies.
  • Teaches key concepts in both coding and game design – develop an end-to-end understanding of game creation with Unity.
  • Focuses on best practices – learn the best and most efficient methods for building a game with Unity.
  • Includes game project files – follow along and learn hands-on through the direct application of skills.
  • Covers 20 topic areas specifically geared toward preparation for Unity Certified Developer Exam.
  • Available in 1, 3, and 6-month Access Passes – learn at your own pace and on your own schedule.

14 hours certainly doesn’t sound like sufficient instruction to go extremely in-depth, especially for a program that “start at square one”.  How much does all of this cost?  No idea.  That’s obviously going to be a pretty big decision point in the end.  The cost for this kind of material can vary massively, from the cost of a book or two, to a couple of grand.


Alright, back to the certification process itself.  They are held at major Unity conferences as well as events around the world.  You can locate your closest location using this tool.  In my particular case, I’d need to travel 2-4 hours to find a test.  Somewhat odd that Ottawa has an event but not Toronto, but anyways...



And the price of the test you say?  I imagine that it varies from location to location, but in my case the Montreal event is shown below:



Finally you may be asking yourself, what exactly are you going to be tested on?  Well the objectives of the examine are summarized in this PDF.  Looking through the overview to be honest, the exam looks like the kind of thing someone with any game programming experience could breeze through with an hour or two of brush up time with Unity, while someone who has no prior game programming experience has no hope in hell of gleaming this much experience in 14 hours of training.  I also have to say... a few of these topics are a bit...  unexpected.  For example:


These are topics that have almost NOTHING to do with Unity, are going to be tangental at best to a programmer and downright yawn inducing for an artist.


On the other hand, I sound overly negative of this course and I shouldn’t be.  Certifying a minimum level of ability in an industry that is so accessible to amateurs is a noble effort and if done right has some value.  If it is ultimately going to be worth while will in the end be determined by the community.

GameDev News

4. April 2016


Torque2D, an open source (MIT) 2D game engine build on top of Torque 3D technology, just released version 3.3.  This release adds two major new features, positional audio and TextSprite.

From the release notes:

Positional Audiot2d

Simon already put together an in-depth blog post on the virtues of positional audio. You can find it here. Let me give you the highlights. First, one scene can act as a listener. Then any object in that scene can call %object.playSound("beepAssetID") to play that sound. Those sounds can take an optional second parameter which is an AudioDescription. The AudioDescription can specify if the sound should loop along with a few handy other features. These were previously available in older versions of the engine so I image many of you will get the hang of them quickly.
Of course the whole point of all this is to hear the sound in the position it is on the screen. The best part is that the Doppler Effect happens. So you can make things quiz past your characters without any extra work. Again see Simon's blog for more details.


My contribution was the TextSprite. The previous bitmap font sprite, called the ImageFont, has been removed, but I tried to keep the TextSprite as similar as possible to keep updating your projects simple. The TextSprite is far more powerful than the ImageFont and I don't think you'll want to look back once you start using it.


It all starts with a FontAsset which is a new asset that basically takes a Bitmap Font File as its main parameter. This is the file generated directly by AngelCode's Bitmap Font Generator. In fact, the ToyAssets module includes a configuration file with a few example fonts to make it super easy to use. Basically to add a new font you just save the file using the Font Generator and then make a FontAsset taml file with the asset name and a reference to a font file. And just like that, you've got a new font that you can use in your game. The documentation is in the Github T2D Wiki if you want to learn more.


The TextSprite is loaded with cool features so I'll type fast. First, you give your TextSprite a valid FontAsset. Unlike the ImageFont, you can set the size of the TextSprite and think of its bounding box as a box to type in. Inside the box you can align the text to the left, right, center, and justify. You can also vertically align the text to the top, middle, or bottom. When it hits the edges of the box you can set the overflow options. Horizontally, this includes the ability to word-wrap the text, which was a major missing feature of the ImageFont. But you can also shrink the text to fit, clip the text, or just let it overflow the box. Vertically you have similar options sans the wrap.
The font has a font size that applies to every character, but you can further customize the size by scaling the font in the x or y direction. On the font level you can also set the kerning (that's font lingo for space between characters). And finally, since this is a sprite you can set the blend color, rotation, and do things like collisions. You can even grow the sprite which will dynamically change the word-wrapping over time. We could stop here and you'd be happy, but it gets better.

Super Cool Features

You might want to sit down for this. You can change the blend color, scale, and position of individual characters. That means that you can have all white text and put that critical word in blue. You can make the letters shake for a cold character. You could have the text appear one letter at a time as a dialog box as seen in nearly every game. All this and more is now possible with the TextSprite. A new TextSprite Toy has been added to the Sandbox that demonstrates some of these tricks. Take a look at it and then give it a try.

GameDev News ,

Month List

Popular Comments

Trying to run our C++ tutorial on a new Visual Studio version and getting a MSVCR100D.dll missing error
Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

14. May 2014


I’ve had a few users run into this error when trying to run the GameFromScratch C++ Game Dev tutorial:




The program can’t start because MSVCR100D.dll is missing from your computer.  Try reinstalling the program to fix this problem.


Fortunately this can be pretty easily fixed, simply download and install the Visual Studio 2010 runtime redistributable.  You can download it here.




The binaries I include with the SFML tutorial of SFML 1.6 are compiled for Visual Studio 2010 and aren’t compatible with Visual Studio 2012/2013.  Normally this is just a matter of recompiling SFML 1.6 in the newest version of Visual Studio, then linking against those Lib/DLL files.  However this process certainly isn't straight forward as the SFML 1.6 code base was actually targeting for Visual Studio 2008 and amazingly enough, depending on some external libraries compiled for Visual C++ 2005!


To be honest, if you are running through this tutorial series, by far the easiest solution is to install Visual C++ 2010 Express.  It can be installed side by side with newer versions.


If there is enough demand, I can try to make 2013 compatible binaries that you can include with your project.

Programming ,

blog comments powered by Disqus

Month List

Popular Comments