Planet Gamedev

Game From Scratch

Tiled 0.15.1 Released

by at January 30, 2016 04:37 PM


Tiled, the open source map editor, just release a minor update in the form of 0.15.1.   This release added/fixed/changed the following features:


You can download Tiled here.


If you are interested in learning more about Tiled, we have a comprehensive tutorial series available here.

NeoAxis 3D Engine 3.4 Released

by at January 30, 2016 04:31 PM


NeoAxis, a C# based game engine with a rich tool suite including a full map editor, just released version 3.4.  A somewhat minimal release in anticipation of version 4.

Features from the release:

  • Updated tools skin.
  • Latest PhysX 3.3.4. Works faster and is more stable. Good character physics, improved car physics, fixed terrain problems.
  • OS X support has been improved. New Mono Runtime 4.2.1 with new Generational GC (SGen) support. OS X 10.8 now is the minimal supported system.
  • Sound backend has been improved. OpenAL Soft updated up to 1.17.2. Internal SSE optimizations.
  • All example maps have been updated.
  • Better object selection algorithms in Map Editor. It's now easier to select zones, portals and other volumes.
  • Post processing: Color correction lookup table support.
  • Exporters: support of the latest Autodesk 3ds Max 2016 and Maya 2016. Ability to install exporter for yet unpublished versions of 3ds Max and Maya (2017+) added.
  • Exporters: Ability to install exporters to a specified folder.
  • File system: The ability to load archives during simulation. As example to use it for downloadable content.
  • Map Editor: Ability to open the type of selected object in Resource Editor. Use context menu.
  • MapCamera: Ability to set orthographic camera.
  • Web Browser Control: You can now configure a local HTML start file. Zooming and mip maps generation for in-game 3D GUI.
  • Bug fix: Native memory manager: Crash Memory_AllocAligned on 64-bit applications.
  • Bug fix: Exporters: Unable to override material in some cases.

Geeks3D Forums

AMD GPU PerfStudio 3.4 now available

January 30, 2016 02:41 AM

What’s New in V3.4?

New Features

  • NEW – Support for an open source DirectX® 12 Plugin
  • With the GPUOpen initiative AMD is now providing ...

AMD’s Radeon SDK and all samples are now located at the GPUOpen website

January 30, 2016 02:36 AM

AMD’s commitment to Open Source is growing.
AMD’s Radeon™ SDK and all samples are now located at the GPUOpen website

Legacy content is provided [url=

Gamasutra Feature Articles

Facebook moves to shut down its Parse developer platform

January 30, 2016 12:09 AM

Facebook's Parse developer platform is shutting down because, according to a blog post published by Parse co-founder Kevin Lacker, "we need to focus our resources elsewhere." ...

Geeks3D Forums

NVIDIA - Vulkan Shader Resource Binding

January 29, 2016 11:08 PM

In this blog post we will go into further details of one of the most common state changes in scene rendering: binding shader resources such as uniform- or storage-buffers, images or...


Stingray Support -- Hello, I Am Someone Who Can Help

by Anonymous ( at January 29, 2016 11:00 PM

Hello, I am someone who can help. 

Here at the Autodesk Games team, we pride ourselves on supporting users of the Stingray game engine in the best ways possible – so to start, let’s cover where you can find information!

General Information Here!

Games Solutions Learning Channel on YouTube:
This is a series of videos about Stingray by the Autodesk Learning Team. They'll be updating the playlist with new videos over time. They're pretty responsive to community requests on the videos, so feel free to log in and comment if there's something specific you'd like to see.
Check out the playlist on YouTube.

Autodesk Stingray Quick Start Series, with Josh from Digital Tutors:
We enlisted the help from Digital Tutors to set up a video series that runs through the major sections of Stingray so you can get up and running quickly.
Check out the playlist on YouTube.

Autodesk Make Games learning site:
This is a site that we've made for people who are brand new to making games. If you've never made a game before, or never touched complex 3D tools or a game engine, this is a good place to start. We run you through Concept Art and Design phases, 3D content creation, and then using a game engine. We've also made a bunch of assets available to help brand new game makers get started.

Creative Market:
The Creative Market is a storefront where game makers can buy or sell 3D content. We've got a page set up just for Stingray, and it includes some free assets to help new game makers get started.

Stingray Online Help
Here you'll find more getting started movies, how-to topics, and references for the scripting and visual programming interfaces. We're working hard to get you all the info you need, and we're really excited to hear your feedback.

Forum Support Tutorial Channel on YouTube:
This is a series of videos that answers recurring forums questions by the Autodesk Support Team. They'll be updating the playlist with new videos over time. They're pretty responsive to community requests on the videos, so feel free to log in and comment if there's something specific you'd like to see.
Check out the playlist on YouTube.

You should also visit the Stingray Public Forums here, as there is a growing wealth of information and knowledge to search from.

Let's Get Started

Let’s get started. Hi, I’m Dan, nice to meet you. I am super happy to help you with any of your Stingray problems, issues, needs or general questions! However, I’m going to need to ask you to HELP ME, HELP YOU!!

It’s not always apparent when a user asks for help just exactly what that user is asking for. That being the case, here is some useful information on how to ask for help and what to provide us so that we can help you better and more quickly!
  •  Make sure you are very clear on what your specific problem is and describe it as best you can.
    • Include pictures or screen shots you may have
  • Tell us how you came to have this problem         
    • Give us detailed reproduction steps on how to arrive at the issue you are seeing
  • Attach your log files!
    • They can be found here: C:\Users\”USERNAME”\AppData\Local\Autodesk\Stingray\Logs
  • Attach any file that is a specific problem (zip it so it attaches to forum post)
  •  Make sure to let us know your system specifications 
  •  Make sure to let us know what Stingray engine version you are using

On another note … traduire, traduzir, 翻, Übersetzen, þýða, переведите, ਅਨੁਵਾਦ, , and ... translate! We use English as our main support language, however, these days – is really, really good! If English is not your first language, please feel free to write your questions and issues in your native language and we will translate it and get back to you. I often find that it is easier to understand from a translation and this helps us get you help just that much more quickly!

In Conclusion

So just to recap, make sure you are ready when you come to ask us a question! Have your issue sorted out, how to reproduce it, what engine version you are running, your system specs and attach your log files. This will help us, help you, just that much faster and we can get you on your way to making super awesome content in the Stingray game engine. Thanks!

Dan Matlack
Product Support Specialist – Games Solutions
Autodesk, Inc.

Gamasutra Feature Articles

Get a job: Be an Environment Artist at Insomniac Games

January 29, 2016 09:35 PM

The studio behind Sunset Overdrive & Ratchet & Clank seeks an artist to work on modeling, texturing and laying out in-game environments at their studio in Burbank, California. ...

State of the Industry: Game devs offer opinions on our VR future

January 29, 2016 09:02 PM

Pressed for their (anonymized) thoughts on VR and AR, game developers from around the industry shared their opinions in the GDC 2016 State of the Industry survey. Here, we share some of them with you. ...

Video: Designing games for infinite play

January 29, 2016 08:33 PM

At GDC 2015 Richard Lemarchand hops onstage to deliver a talk that investigates the game design potential of 'open play' -- play that does not necessarily result in an outcome of victory or defeat.  ...

Core Labs Game Accelerator seeks more devs to mentor and support

January 29, 2016 08:10 PM

This weekend marks the deadline to apply for the second Core Labs Game Accelerator program, a 6-month online initiative pitched as a way to help you build a sustainable business around your game. ...

Don't Miss: How a strategy game studio trained to make The Division

January 29, 2016 07:23 PM

How does Ubisoft develop a game across as many as ten studios? Gamasutra speaks to David Polfeldt, managing director of Massive, developers of The Division, to find out in this classic 2014 feature. ...

Marketing gaffe sheds light on how YouTubers are contracted to hype games

January 29, 2016 07:09 PM

Kotaku seemingly received by mistake (and published) a game company's marketing campaign proposal for YouTubers, which helps shed some light on how the business of being an "influencer" works in 2016. ...

Which games and platforms did best in the media in 2015?

January 29, 2016 05:55 PM

A look back at which games generated the most buzz with the games press in 2015, including a list of the top 15 games, how Xbox and PlayStation did relative to one another, and a focus on Oculus Rift. ...

New Nintendo 3DS is now supported by Unity

January 29, 2016 05:06 PM

Unity has announced support for Nintendo's New 3DS is now available. Unity announced its intention to support the platform last year. ...

GDC 2016: Audio wizards share learnings in the Audio Bootcamp

January 29, 2016 05:02 PM

GDC 2016 organizers are offering an early look at the informative and intriguing sessions taking place during the Audio Bootcamp that helps open the March conference. ...

Game design in episodic games

January 29, 2016 04:59 PM

"Two families of game mechanics can be considered for episodic games: Adventure game mechanics and action game mechanics. We find them in different mixes in nearly all episodic games because of their strong storytelling dimension." ...

6 predictions for mobile games in 2016

January 29, 2016 04:57 PM

"I don't predict there to be huge changes in 2016. I do believe, however, that core games will affect the mid-core market, though in a way they didn't expect." ...

Game From Scratch

Unreal Engine 4.11 Preview 4 Released

by at January 29, 2016 04:29 PM


Continuing in their weekly release schedule, a new preview release is available for Unreal 4.11.  As always, these preview releases are very much in development and should be used only by the brave of heart of weak of mind! ;)

In this release we get:

Fixed! UE-25870 Crash opening level blueprint
Fixed! UE-25927 Crash upon selecting the character in the First Person templates
Fixed! UE-24480 Hiding root actor does not hide ChildActor
Fixed! UE-25604 Pressing compile on the Vehicle Blueprint in vehicle advanced and Vehicle Templates Cause the Editor to crash
Fixed! UE-25593 UnrealHeaderTool does not detect program plugins enabled by default
Fixed! UE-25266 HTML5 packaging code project fails could not verify LLVM version
Fixed! UE-25069 [CrashReport] Editor crashes if pointlight is added to level on El Capitan
Fixed! UE-25553 Cinematic camera broken in Infiltrator
Fixed! UE-24815 Crash upon undoing actor selection on a static mesh when paint mode is enabled
Fixed! UE-25713 Crash when adjust sound spatialization through blueprint
Fixed! UE-25123 Mac Editor Freezes after connecting and disconnecting a mobile device
Fixed! UE-24730 Crash loading QA-Promotion FDeferredShadingSceneRenderer
Fixed! UE-25233 Unable to add Chrome as a platform in the HTML5 SDK option. This prevents launching a project in Chrome.
Fixed! UE-24757 Editor crashes when exiting and having a widget blueprint open.
Fixed! UE-25272 IHeadMountedDisplay Crash
Fixed! UE-25774 Editor Crashes When Attempting to Constrain a Component to Itself
Fixed! UE-25011 Crash when selecting a revision with the Blueprint Diff Tool
Fixed! UE-24650 Materials using separate translucency stop rendering if r.SeparateTranslucency is 0
Fixed! UE-24411 Unable to push to SteamVR while Oculus service is running
Fixed! UE-24712 Cannot select a Point Light or Sky Light by clicking on the sprite in the viewport on Mac
Fixed! UE-24300 Crash changing a setting in the Details panel with multiple components selected
Fixed! UE-25753 Slate Renderer Crashing on Shutdown
Fixed! UE-25752 Widget Component crashes on destruction
Fixed! UE-25625 Failing to compile will cause blueprint variables to reset to their default values
Fixed! UE-25605 ContentExamples' Math Hall map opens with Blueprint compiler warnings
Fixed! UE-25573 ContenExamples' LevelScripting map opens with Blueprint warnings
Fixed! UE-25323 Opening a project that contains an actor in viewport with a child actor component of type TextRenderActor crashes the editor
Fixed! UE-25146 Crash occurs texture painting on Mac with Metal
Fixed! UE-25129 Crash occurred painting on landscape sublevels with Retopologize tool
Fixed! UE-25118 Retopologize tool does not line up with cursor
Fixed! UE-25065 [CrashReport] UE4Editor_Persona!FPersonaMeshDetails::IsSectionSelected() [personameshdetails.cpp:1179]
Fixed! UE-24967 Integrate D3D12 update from MS
Fixed! UE-25788 Plugin Warden Fixes
Fixed! UE-25665 FastDecimalFormat doesn't handle overflow when rounding correctly
Fixed! UE-25633 ContentExamples' NetworkFeatures map opens with Blueprint warnings
Fixed! UE-25520 The new BP gather method is ignoring non-root level BPs
Fixed! UE-25507 Vehicle Advanced Template's dashboard view camera on ground in VR
Fixed! UE-25377 Spinning logo in Blueprint_Communication map is the incorrect size
Fixed! UE-25093 Landscape tool switches to Manage New Landscape when hiding a level with landscape mode open.
Fixed! UE-22632 Building the Engine using Visual Studio 2015 can fail if Windows Driver Kit is installed.
Fixed! UE-25680 Right stick is shown but not used in Flying template
Fixed! UE-25675 Player can leave the map in Rolling Template
Fixed! UE-25676 Player can get stuck under bridge in Rolling Template
Fixed! UE-24737 Console Command autocomplete displaying in wrong area
Fixed! UE-25805 Map load errors for RoomNight in RealisticRendering
Fixed! UE-25477 BlueprintOffice has missing NodeGUID warnings on open
Fixed! UE-25529 ContenExamples' BlueprintSplines map opens with blueprint warnings
Fixed! UE-25866 A bug in UBTService_BlueprintBase makes it impossible to create "deactivation-only" BP implemented BT services
Fixed! UE-25739 Crash closing Binary editor with Oculus Audio Plugin enabled
Fixed! UE-24237 Audio not playing at Start Time set by Play node on PC
Fixed! UE-25851 Typo in SkinRendering 1.1 content example
Fixed! UE-24528 Listener Focus Priority Scale doesn't work with Sound Concurrency
Fixed! UE-25682 Broken animation is created if the user records from gameplay but exits PIE before stopping
Fixed! UE-25891 Slate standalone renderer font cache is 1 frame behind
Fixed! UE-25889 Shaped text doesn't handle some characters correctly
Fixed! UE-25013 Editing right-to-left text is very unstable
Fixed! UE-25693 Some maps in ContentExamples have inconsistant Player Start node positions
Fixed! UE-25611 Disable writing NoOBBInstall batch file
Fixed! UE-25886 Content Examples Blueprint_Communication example 3.1 flickers upon looping
Fixed! UE-24006 Game does not launch from UFE using cook on the fly
Fixed! UE-22731 Crash undoing the redo of deleting a bp instance with edits after modifying class
Fixed! UE-25582 Crash moving message log window while messages being pumped to it
Fixed! UE-24872 Camera translates up when clicking in the viewport after working in subeditors
Fixed! UE-25876 Content Examples player has wide slider selection area
Fixed! UE-25947 Portal IPC doesn't filter message scope to just the active users OS account
Fixed! UE-25759 Decals do not render on some Android devices
Fixed! UE-25791 TVOS templates failing to build on EC
Fixed! UE-25521 Editor font doesn't render Arabic glyphs
Fixed! UE-25644 First Person BP and Code gun has odd rotation
Fixed! UE-22270 Interface functions inherited after a duplicated actor blueprint is reparented to the blueprint it was duplicated from cannot be deleted.
Fixed! UE-25961 Untested GameplayDebuggerPlugin enabled in QAGame
Fixed! UE-25575 Long Google Play App ID can cause an invalid error
Fixed! UE-25710 ContentExamples' BlueprintsOverview map opens with Blueprint warnings
Fixed! UE-25704 BlueprintMouseInteraction interactive box moves upon PIE or Launch On
Fixed! UE-22471 Crash when attempting to PIE after undoing deletion of a component
Fixed! UE-25718 Top Down pointer decal is partially missing when on walls
Fixed! UE-25853 Vehicle Advanced BP template has inconsistent lighting
Fixed! UE-25841 Top Down decal and shadow do not affect the template text
Fixed! UE-25786 MatineeFightScene has warnings and errors effecting performance
Fixed! UE-25763 Matinee ContentExamples map has misaligned sequences
Fixed! UE-25679 ExampleProjectWelcome map has inconsistent icon use
Fixed! UE-25699 BlueprintInputExamples map giving PIE errors when playing pixel ship
Fixed! UE-25835 "Auditorium" reverb effect no longer plays in Audio map example 1.9 in Content Examples
Fixed! UE-25878 Content Examples buttons are green when display is not active
Fixed! UE-22705 Inconsistent values from input Y-axis on motion controllers
Fixed! UE-24187 Editor hangs after selecting submit to source control from drop-down
Fixed! UE-25479 Unable to package a BP project for Linux missing UE4Game binary
Fixed! UE-25815 Error loading the editor with Oculus Audio Plugin enabled
Fixed! UE-25351 Setting the Falloff Distance of a Sound Wave/Cue to 0.0 will no longer Play Sound


As always the new preview release of Unreal can be downloaded using the Epic Game Launcher.

Global Game Jam Starts Today

by at January 29, 2016 04:24 PM


The Global Game Jam kicks off today.  The theme has not yet be announced, I will update this post once it has.  I think at this point in time the game jam concept should beimage pretty familiar to everyone...  theres a theme, a time limit and a set of rules and people run off, develop games and they are judged, prizes are awarded and there is much rejoicing.  The GGJ is special mostly because it’s the biggest Game Jam of them all, with events all across the globe.  If you are looking to participate locally, you can check for a site near you using this form.  If you want more details, the FAQ is probably the place to start.

If I’ve done a pretty poor job of explaining the whole thing, here is the GGJ’s description in their own words:

The Global Game Jam® (GGJ) is the world's largest game jam event (game creation) taking place around the world at physical locations. Think of it as a hackathon focused on game development. It is the growth of an idea that in today’s heavily connected world, we could come together, be creative, share experiences and express ourselves in a multitude of ways using video games – it is very universal. The weekend stirs a global creative buzz in games, while at the same time exploring the process of development, be it programming, iterative design, narrative exploration or artistic expression. It is all condensed into a 48 hour development cycle. The GGJ encourages people with all kinds of backgrounds to participate and contribute to this global spread of game development and creativity.

The structure of a jam is usually that everyone gathers on Friday late afternoon, watches a short video keynote with advice from leading game developers, and then a secret theme is announced. All sites worldwide are then challenged to make games based on that same theme, with games to be completed by Sunday afternoon. In January 2015, we had over 500 locations in 78 countries create 5439 games in one weekend! GGJ 2016 is January 29-31 at a location near you… if not you can make one of your own. The jam is known for helping foster new friendships, increase confidence and opportunities within the community. The jam is always an intellectual challenge. People are invited to explore new technology tools, trying on new roles in development and testing their skills to do something that requires them to design, develop create, test and make a new game in the time span of 48 hours.

The GGJ stimulates collaboration and is not a competition.


The whole being a parent thing makes these things pretty much impossible for me to participate in unfortunately.  Perhaps one of these days I will curry enough favors that I can disappear for a weekend and binge code during one of these.

Gamasutra Feature Articles

Future of VR is social, say Steam VR developers

January 29, 2016 04:24 PM

The image of a person wearing a black blinder over their face is an image that doesn't exactly scream "social." That image of isolation is something that this new crop of VR game developers intends to change. ...

Game From Scratch

Unity Announce Support for New Nintendo 3DS

by at January 29, 2016 04:12 PM


Title pretty much says it all.  Unity just announced device support for the New Nintendo 3DS (that is actually the name, called the 3DS LL in Japan).  In case you are wondering, yes Unity already supported the 3DS as a platform, this announcement is specifically about the new model.  It appears to be a version of Unity 5.1 at this point and interestingly, this release ships with only IL2CPP, so there is no Mono runtime.  This should result in greater speeds, but may have a few unseen consequences.  You still need to be registered in Nintendo’s Developer program to gain access.


Excerpt from the announcement:

We announced our intention to support Nintendo’s recently released New Nintendo 3DS platform at Unite Tokyo and we’ve been very busy in the meantime getting it ready.  Now we’re pleased to announce it’s available for use today!

The first question people usually ask is “do you support the original Nintendo 3DS too?”  To which the answer is a qualified “yes”. We can generate ROM images which are compatible with the original Nintendo 3DS, and there are certainly some types of game which will run perfectly well on it, but for the majority of games we strongly recommend targeting the New Nintendo 3DS for maximum gorgeousness.

We’ve been working very closely with select developers to port a few of their existing games to New Nintendo 3DS. We’ve been busy profiling, optimizing, and ironing out the niggles using real-world projects, so you can be confident your games will run as smoothly as possible. In fact, one game has already successfully passed through Nintendo’s exacting mastering system; Wind Up Knight 2 went on sale at the end of last year!

Unity’s internal shader code underwent a number of significantchanges in the transition from version 5.1 to 5.2.  This brought many benefits, including cleaner and more performant code, and also fixed a number of issues we had on console platforms.  We’re not able retrofit those fixes to the 5.1 based version, so we shall only be actively developing our shader support from version 5.2 onwards.

We’ve been putting Unity for New Nintendo 3DS version 5.2 through its paces for a few months, and it’ll be made available once it’s proved itself by getting a game through Nintendo’s mastering system too.  That should be in the near future, but it’s not something that’s easy to put a date on.

So far, we’ve been in development with a Nintendo 3DS-specific version of the Unity editor, but now we’ve switched our focus towards upgrading to the latest version, with a view to shipping as a plug-in extension to the regular editor.  We have a 5.3 based version running internally, and we’re working hard to get it merged into our mainline code-base.

It should be mentioned that some features are not yet implemented in this first public release, notably UNet and Shadow Maps (although Light-Maps are supported). We’re prioritising new features according to customer demand, but right now our main goal is to get into the regular editor.

In common with other mobile platforms, there are some limitations as to what can be achieved with the hardware. For instance, Unity’s Standard Shader requires desktop-class graphics hardware so it’s not something we can support on Nintendo 3DS. However, as with other platforms, if you try to use a shader which is unsupported then Unity will fall-back to a less complex shader that gives the best possible results.

GDX-AI 1.8 Released

by at January 29, 2016 04:00 PM


Gdx-ai, an artificial intelligence library (steering, formations, pathfinding and more)  for LibGDX just release version 1.8.  From the change log:


- Updated to libgdx 1.9.1

- API Change and Addition: Pathfinding API

* Added method getIndex to the interface IndexedGraph.

* Removed classes DefaultIndexedGraph and IndexedNode.

- API Change and Addition: Behavior Tree API extended to make it easier to think and design in terms of states, see

* Added ability to guard any task.

* Added branch task DynamicGuardSelector.

* Now the text format supports internal sub-trees that, besides improving reuse and readability, allow you to use composite guards.

* Now the parser is able to report comments, which can be useful for certain tools such as graphical editors.

Gdx-ai can be downloaded from Github or can be installed using the GDX setup utility.

Gamasutra Feature Articles

Procedurally generating wrapping world maps in Unity

January 29, 2016 03:57 PM

A guide to generating a realistic, wrapping world map in Unity using C# programming, complete with a discussion of the techniques involved, and sample code. ...

Ubisoft and ESL form Rainbow Six Siege eSports league

January 29, 2016 03:53 PM

Ubisoft and leading eSports outfit ESL have joined forces to give the developer's tactical shooter, Rainbow Six Siege, its own dedicated eSports league.  ...

Konami profits on the up as Metal Gear Solid V ships 6 million

January 29, 2016 02:57 PM

Konami's latest financials are in, and it's good news for the Metal Gear Solid publisher, with both revenue and profit margins on the up.  ...

Road to IGF: Steel Crate Games' Keep Talking and Nobody Explodes

January 29, 2016 02:28 PM

"We decided to make a VR game where the spectators could be involved in some way and really take advantage of the differing viewpoint they had," says Ben Kane of Steel Crate Games. ...


Toon (or "Cel") Shaders in Stingray

by Ben Mowery ( at January 29, 2016 01:34 PM

Stingray’s standard rendering pipeline is a powerful system for photorealistic real time rendering. However there are many games where photorealism is not desired. In this tutorial we will examine implementation of a toon shader (or cel shader).

Toon shading is a visual effect that makes a game scene look like a cartoon:

What we see here is actually two separate effects:

1)      Outline marking. The taxi and background objects are drawn with black outlines around their edges.
2)      Color quantization. Instead of smooth color transitions along the surface of the ground and taxi, there are abrupt jumps between discrete “bands” of color.

Both will be implemented in Stingray’s deferred rendering pipeline as post-process effects. Knobs to control various shader parameters will be exposed in the Stingray Editor UI and passed to the shader programs in a constant buffer to fine tune the effect and explore debug images.

There are multiple techniques for achieving both of these effects. Detailed examination of all of them is beyond the scope of this tutorial however a brief overview of the most popular methods is below.

Color Quantization:

In a simple forward rendering pipeline, the pixel shader will calculate the diffuse lighting intensity as a function of the angle between the incoming light vector and the surface normal at the point the pixel shader is processing. The intensity is then used to scale the underlying surface color, typically read from a texture. Rounding the intensity value to, say, the nearest 0.1 will create a banded effect. A general formula is:

intensity = floor(intensity * num_bands) / num_bands

Because Stingray’s physically based lighting model involves much more complex calculations than the above diffuse lighting calculation, this approach cannot be applied directly. This approach also has the disadvantage that it will not work on the results of post-processing effects applied after the main rendering pass such as bloom.

Instead of reaching into the middle of the rendering pipeline and changing the intensity calculation, we can begin with the final rendered image and iterate over each pixel. The intensity value can be recovered from the color value, quantized, and then applied back into the pixel. By working backwards from the final color value, we avoid the problems with the approach in (a) and we do not have to consider the complexity of the preceding rendering pipeline.


Clockwise from upper left: initial color buffer; intensity values; intensity quantized into 5 discrete bands; final result with toon quantization.

Outline Marking:

A straightforward geometric technique is to render each object twice. First render a slightly enlarged version of the object in all black, then render the object in color on top. A black outline will be left behind. This technique can be implemented with a vertex shader that pushes each vertex slightly in the direction of the normal, which will typically be away from the center of the object. While computationally expensive for complex objects, this approach is well suited to a forward-rendering pipeline and does not require allocation of additional buffers.

Since Stingray uses deferred rendering, image processing edge-detection techniques are a better fit. There are a variety of 2D filters that can be run on an image to detect edges. In particular the Sobel operator performs well for our application. Wikipedia ( explains the Sobel operator in detail, but the underlying principle is simple: compare neighboring pixel values and look for sudden changes.

Sobel Filter on Depth Buffer:

The most obvious place to search for gradients is in the depth buffer: as we “fall off” the edge of an object there will be a sudden increase in the depth value as we hit the object in the background.


Clockwise from upper left: depth buffer, scaled from 3 to 35, depth values greater than 100 in highlighted in blue; output of Sobel filter divided by average depth, scaled from 0 to 15, values greater than 15 highlighted in blue; output image with detected edges (threshold 0.9) marked in black.

Sobel Filter on Normal Buffer:

While edges on the top of the construction cone are distinct, the edges along the bottom were not visible in the depth buffer gradients. This is not surprising since there is little change in depth from the bottom of the cone to the floor. However there is a change in slope which can be detected by searching the normal buffer for gradients:



Clockwise from upper left: normal buffer; Sobel filter applied to normal buffer, scaled from 0 to 5; output image with detected edges (threshold 0.9) marked in black.

Note that surface normal are vectors and the Sobel operator works on scalar fields. We compute the dot product of each normal vector against it’s neighbors as input to the Sobel filter. As expected, this detects the edges on the bottom of the cones. It also misses the edges on the tops of some of the cones further back against the white bump in the background.

The normal buffer is also useful for detecting edges internal to an object such as the line between a character’s head and neck.

Both methods of edge detection perform well in certain areas of the scene. By triggering on both normal and depth gradients we obtain a complete outline: 

Finally, combining with the color quantization effect we have a complete toon shader:

Implementation in Stingray:

The example toon shader can be downloaded from:

Since this demo only affects the core renderer, we can modify those files directly and do not need to import a specific project. Compare the files in the download and patch in changes made to:


Add the new files:


Now open the Stingray Editor and create a new project based on a template of your choice. The images above were made using the Vehicle demo.

The ZIP file contains an “orig” directory and “patch” directory which can be diffed to highlight the specific changes made.

Changed Files:

render.render_config:Core rendering configuration file. Allocates buffers and defines format (RGBA8, stencil, floating point, etc.). Defines per-frame render flow as series of shader calls to populate those buffers.

toon.component: defines a Stingray “component” which encapsulates user-defined variables such as the edge color and threshold. This component can be added into the rendering environment to activate the shader.

toon.shading_environment_mapping: mapping between variables defined in toon.component and names that will be made visible to the renderer and shader via the constant buffer.

post_processing.shader_source: raw source code for shader, texture sampler definitions and shader compilation directives.

For more information on render configuration files, please see our related video, Stingray Render Config Tutorial:

Shader Environment Components and Variables:

Open any level in the project and view the scene. Among the objects in the level, there is a shading environment which contains various parameters related to effects such as fog and lighting. The “toon.component” defines a new component for our shading environment. Let’s add it to the level to enable the toon shader:

Step #1: Open any level in the project

Step #2: Click on the “midday_shading_environment” item in the Explorer panel

Step #3: Choose “+ Component” in the Property Editor panel

Step #4: Select the “toon” component. (If not present, confirm that the toon.component and toon.shading_environment_mapping files were correctly integrated into core/stingray_renderer/shading_environment_components.)

The toon shader should immediately take effect. Click on the “midday_shading_environment” object and scroll down in the properties panel until the Toon section is found:

“Enable toon shading” checkbox is checked by default. The toon.component file defines this knob:

            toon_enabled = {
                type = ":bool"
                default = true
                editor = {
                    label = "Enable Toon"
                    description = "Is Toon Enabled?"

By default toon_enabled is true which is why the shader took effect as soon as we loaded the Toon component.

Grepping the core/stingray_renderer tree for “toon_enabled” reveals that it is used in renderer.render_config:

{ type="dynamic_branch" shading_environment={ toon_enabled=true }
pass = [
{ type="fullscreen_pass" shader="copy" input=["output_target"] output=["postfxdemo_scratch"] }
{ type="fullscreen_pass" shader="toon" input=["postfxdemo_scratch" "depth_stencil_buffer"] output=["output_target"] }

This “dynamic branching” feature causes the renderer to invoke the toon shader when the enable knob in the GUI is checked. The Toon panel in the shader properties exposes many other knobs useful for debugging and tuning the shader and are demonstrated in the companion video on our YouTube channel:

Shader Programs:

Shader environment variables can also be referenced directly in shader programs via the constant buffer. Search for “toon” in post_processing.shader_source and locate the CBUFFER:

// Constant buffer
// Stingray will populate these constants before invoking our shader.
// The engine identifies constants based on their names. For example,
// any float2 with the format inv_input_textureN_size will be set to
// (1/texture_width, 1/texture_height).

float4x4 world_view_proj;

// (1/texture_width, 1/texture_height). Used to calculate offsets to adjacent pixels.
float2 inv_input_texture0_size;    

// Rest of the buffer are debug knobs provided by the GUI. To understand how these
// knobs are exposed grep core/stingray_renderer/* for "toon_edge_color".
// The file core/stingray_renderer/shading_environment_components/toon.component
// makes the variables visible in the GUI, assigning labels like "Is Toon Enabled?"
// core/stingray_renderer/shading_environment_components/toon.shading_environment_mapping
// maps the GUI variables to constant names and is what the Stingray renderer uses to match
// the inputs to the named constants below.

// Only apply the toon effect to pixels within this linearized depth range
UNIFORM float2 toon_depth_range;

// The edge color. Black is a common choice, but any color can be used.
UNIFORM float3 toon_edge_color;

// We encode multiple scalar values into each component of the two below vectors:
//   toon_float_param.x:  exponent to apply to result of edge detection filter, typically 1 to 1.5
//   toon_float_param.y:  cutoff threshold for edge detection filter
//   toon_float_param.z:  number of color bands to quantize colors into, 3 - 10 are typical values
//   toon_float_param.w:  distance (in pixels) to offer the samples taken, 1.0 is a typical value
//   toon_normal_param.x: cutoff threshold for the edge detection filter when applied to normal buffer
//   toon_normal_param.y: distance (in pixels) to offset the samples taken for the edge detection filter
//                        on the normal buffer. Typically set to 1 to sample the neighboring pixels. Can
//                        experiment with fractional values as linear interpolation is used.
UNIFORM float4 toon_float_param;
UNIFORM float2 toon_normal_param;

// Enables us to toggle different components of the toon shader on and off to better
// see their effect.
UNIFORM bool toon_enable_color_banding;
UNIFORM bool toon_enable_sobel_edge_detection;
UNIFORM bool toon_enable_normal_edge_detection;

// We can view certain intermediate values graphically to assist with debugging and choosing
// appropriate threshold values. See the code for the meaning of each of these.
UNIFORM bool toon_debug_output_depth;
UNIFORM bool toon_debug_output_sobel;
UNIFORM bool toon_debug_output_sobel_scaled;
UNIFORM bool toon_debug_output_normal_gradient;
UNIFORM bool toon_debug_output_luminance;
UNIFORM bool toon_debug_output_discretized_luminance;

// Unlike color values which vary from 0.0 to 1.0 in each component, the above debug outputs
// can have a much wider range. toon_debug_range specifies a range to scale the values to. For
// example, a range of [0, 50] is typically good for viewing linearized depth values.
// Any pixels outside of toon_debug_band will be marked green or blue and is useful for establishing
// distance of certain objects when viewing a depth buffer. 
UNIFORM float2 toon_debug_range;
UNIFORM float2 toon_debug_band;


The toon.shader_environment_mapping file provides a mapping from the knobs exposed in the GUI and the shader constant buffer. To add your own constants:

1)      Create an entry in toon.component with the definition to be exposed in the GUI.
2)      Create an entry in toon.shader_environment_mapping to map the variable to a named shader constant.
3)      Declare the constant with a matching name in the CBUFFER section of your shader program. Before invoking your shader, Stingray will load the constant buffer with the appropriate value.

Let’s now review the shader program itself. It is invoked during through the post processing resource generator in render.render_config:

{ type="fullscreen_pass" shader="copy" input=["output_target"] output=["postfxdemo_scratch"] }
{ type="fullscreen_pass" shader="toon" input=["postfxdemo_scratch" "depth_stencil_buffer"] output=["output_target"] }

(For more details on resource generators, please see our previous tutorial at

The toon shader is passed two input buffers as arguments: a copy of the final output buffer and the depth buffer. These will be accessed via the texture samplers defined in the shader program which
lives in post_processing.shader_source:

hlsl_shaders = {
         toon = {        
                 includes = [ "common", "gbuffer_access" ]
                 samplers = {                     
                          input_texture0 = { sampler_states = "clamp_point" }
                          input_texture1 = { sampler_states = "clamp_point" }
                          gbuffer0 = { sampler_states = "clamp_linear" }
                          gbuffer1 = { sampler_states = "clamp_linear" }
                          gbuffer2 = { sampler_states = "clamp_linear" }
                          gbuffer3 = { sampler_states = "clamp_linear" }

DECLARE_SAMPLER_2D(input_texture0); // Color buffer. We will modify to apply toon effect.
DECLARE_SAMPLER_2D(input_texture1); // Depth buffer. Used to locate edges.
DECLARE_SAMPLER_2D(gbuffer0);       // We only use the normals in the guffer, but bring DECLARE_SAMPLER_2D(gbuffer1);       // all gbuffer components to simplify
DECLARE_SAMPLER_2D(gbuffer2);       // experimentation.

We can also bring in the gbuffer without explicitly passing it as an argument because our shader includes “gbuffer_access”.

Since we’re accessing individual pixels in the color and depth buffers, no interpolation is desired and we choose point sampling. Linear interpolation is used for accessing normal values from the gbuffer.

Notice that the shader block contains three code sections: “vp_code,” “fp_code” and “code.” For this demo, we only implemented “code” and left “vp_code” and “fp_code” unmodified from a blur shader copied as a template. Stingray supports both DirectX and OpenGL based platforms, and requires shader code be defined for both. As we are demoing on Windows only the DirectX portion was written.

Moving on to the actual shader code we see how color quantization is performed:

static const half3 luminance_vector = half3(0.2127, 0.7152, 0.0721);

// Apply color quantization                                                 
if(toon_enable_color_banding >= 1.0)
         // Recover luminance from the color buffer value
         float luminance = dot(c.rgb, luminance_vector);
         if(toon_debug_output_luminance >= 1.0)
                 return float4(luminance, luminance, luminance, 1.0);

         // Discretize the luminance value into toon_num_color_bands
         float discretized_luminance = floor(luminance * toon_num_color_bands) / toon_num_color_bands;
         if(toon_debug_output_discretized_luminance >= 1.0)
                 return float4(discretized_luminance, discretized_luminance, discretized_luminance, 1.0);

         // Adjust the color to match the discretized luminance value
         c.rgb /= luminance;
         c.rgb *= discretized_luminance;

Notice that if the debug_output_luminance and output_discretized_luminance flags are checked in the GUI, the shader will display debug output. In the code snippets below debugging has been removed for brevity.

The Sobel edge detector is implemented by convolving two kernels with the depth buffer, one to detect gradients in the X direction and another in the Y direction. The results are combined to determine the relative amount of local change at each pixel. Pixels that are above a threshold are marked as edges.

// Sobel filter kernel. See
const static float3 sobel_x[6] = {
         float3(-1, -1, -1), // third element is weight
         float3(-1,  0, -2),
         float3(-1,  1, -1),
         float3( 1, -1,  1),
         float3( 1,  0,  2),
         float3( 1,  1,  1)

const static float3 sobel_y[6] = {
         float3(-1, -1, -1), // third element is weight
         float3( 0, -1, -2),
         float3( 1, -1, -1),
         float3(-1,  1,  1),
         float3( 0,  1,  2),
         float3( 1,  1,  1)

// Calculate the result of the Sobel operator on this pixel. Also track the minimum (closest)
// linearized depth value encountered. Typical test scenes had a value of 5 - 20 for nearby
// objects.
float2 offset_multiplier = inv_input_texture0_size * float2(toon_depth_offset, toon_depth_offset);
float weighted_sum_sobel_x = 0;
float lowest_depth = 1000000.0;
for (i = 0; i < 6; ++i) {
         float depth = TEX2D(input_texture1, input.uv + float2(sobel_x[i].x, sobel_x[i].y) * offset_multiplier).r;
         depth = linearize_depth(depth);
         lowest_depth = min(depth, lowest_depth);
         weighted_sum_sobel_x += sobel_x[i].z * depth;
float weighted_sum_sobel_y = 0;
for (i = 0; i < 6; ++i) {
         float depth = TEX2D(input_texture1, input.uv + float2(sobel_y[i].x, sobel_y[i].y) * offset_multiplier).r;
         depth = linearize_depth(depth);
         lowest_depth = min(depth, lowest_depth);
         weighted_sum_sobel_y += sobel_y[i].z * depth;
// Now we have the magnitude of the gradient.
float gradient = sqrt((weighted_sum_sobel_x * weighted_sum_sobel_x) + (weighted_sum_sobel_y * weighted_sum_sobel_y));
// The depth difference between two adjacent pixels on a flat plane
// far in the distance will be much greater than for the part of the plane close to the viewer.
// Let's scale by the minimum depth value to account for this to avoid false triggers on far away objects.
float scaled_gradient = gradient / lowest_depth;

// Also scale it with an exponent. This changes the distribution within [0, 1] so that
// values over a threshold of, say, 0.7 will decrease slightly below the threshold.
// Higher exponent means fewer pixels classified as edge. Values of 1.0 to 1.5 work
// well for the exponent. This step is not strictly necessary and could be removed as
// an optimization.
scaled_gradient = pow(scaled_gradient, toon_exponent);
// Parts of the scene that are far away will generate too many false positives due to a rapid
// change in depth. For example a flat plane far in the distance will suffer from this effect.
// Don't mark these areas with outlines.
if(lowest_depth > toon_depth_range.x && lowest_depth < toon_depth_range.y)
         // We're in an area where we're applying toon edges. If the scaled gradient exceeds
         // the threshold, output the edge color.
         if(scaled_gradient > toon_edge_threshold)
                 c.rgb = toon_edge_color.rgb;
                 return c;

Similar code is applied to the normal buffer and can be found in the source file. The best way to explore the shader programs is to use the debug features in the GUI to look at the output graphically step-by-step as demonstrated in the companion video: All of the intermediate images in this writeup were generated with the debug knobs.

Two practical notes on the shader program parameters:

Sampling offsets: both depth and normal based edge detection exposes a sampling offset parameter. A value of 1.0 will check the immediate neighboring pixels when evaluating the Sobel filter. Larger values will result in thicker edges, sometimes with the unwanted side effect of double lines (or “halos”). Since point sampling is used on the depth buffer, only integer sampling offsets make sense. Linear sampling is used on the normal buffer so smaller values like 0.5 are meaningful.

Exponent: the exponent parameter for Sobel filter on the depth buffer can be used to sharpen the edges just as with the specular exponent common on material properties. It has little effect on the scenes we tested and could be removed as an optimization.

Default values used in screenshots:
               Depth Range:                    [0, 110]
               Color Bands:                      5
               Edge Color:                        Black
               Depth Buffer Edge:          Sampling Offset = 1.0, Exponent = 1.5, Threshold = 0.9
               Normal Buffer Edge:        Sampling Offset = 1.0, Threshold = 0.8

For any suggestions or questions on this shader, please visit the Autodesk Stingray forum:

Future improvements to the shader will include adding compatibility with temporal anti-aliasing and improved scaling of depth buffer values prior to applying edge detection for better detection of edges in the distance. 

Gamasutra Feature Articles

5 tips for the Global Game Jam

January 29, 2016 12:06 PM

"During the past four years, I've served as a judge at various locations. Each year, I see teams running into the same problems, causing them to miss their objectives. So here are some tips to help you get around those blockers." ...

Logic over time: Programming tips for persistent data

January 29, 2016 08:54 AM

Fallout 4 and Skyrim programmer Jean Simonet shares tricks and insights: "I need an entity to perform one or more actions over multiple frames, and to have some smarts about what it is doing in the process." ...

Unreleased, unfinished Saints Row PSP game leaked... by its developers

January 29, 2016 12:12 AM

Here's something you don't see every day: Deep Silver Volition, developers of the Saints Row franchise, have released a downloadable file of an unreleased game in the franchise to the wild. ...

Gamasutra Feature Articles

Report: Xbox One install base around 19 million

January 28, 2016 11:29 PM

Though Microsoft has ceased to report hardware numbers, we now have a reliable source: Electronic Arts. ...

Get a job: Vrse is hiring a Software Engineer

January 28, 2016 10:37 PM

Virtual reality storytelling firm Vrse is looking for someone with Unity, Metal and other game development experience to join the company as a software engineer in its San Francisco, CA office. ...

Star Wars Battlefront helps fuel a strong holiday quarter for EA

January 28, 2016 10:07 PM

The holiday season seems to have treated Electronic Arts well, as the company reported an increase in both its sales and profits over the period as part of its most recent financial filing. ...

Microsoft beats profit estimates, but Xbox sales slip

January 28, 2016 09:47 PM

The company did very well in its core productivity and tech businesses, but its Xbox performance isn't what it could be. ...

Arcen to lay off 'almost all' staff after poor sales of its latest game

January 28, 2016 09:23 PM

Indie game company Arcen (AI War) expects to lay off nearly all of its staff by Monday for financial reasons, according to a lengthy blog post published today by company founder Chris Park.  ...

LTV: The metric you have to know about

January 28, 2016 09:14 PM

"It shows how much money one user will bring in an average for all the time of using the product. LTV indicator is universal, it is calculated both in web analytics and mobile analytics." ...

The burrito that wraps up excellent VR design fundamentals

January 28, 2016 09:03 PM

In a typical video game, to exit a play session you press the start button, and select "exit" from a menu. In Owlchemy Labs' VR game Job Simulator 2050, I ate a burrito to quit the game.                                                    ...

Experiments with image processing effects in Unity

January 28, 2016 08:52 PM

"I feel like the game's graphics have improved significantly with very little effort. Performance was affected, but not enough to make me want to tear any effects back out." ...

State of the Industry: Developer stats that were too weird to publish

January 28, 2016 08:45 PM

Who's still making PSP games? Is the 360 still viable? What's up with Linux? These stats didn't make it into the GDC 2016 State of the Industry report but they're fun to think about, so here they are. ...

The relationship between game music and live performance

January 28, 2016 08:27 PM

"First, we'll get a perspective on what the classical symphony performance has in common with the act of playing a video game. Then, we'll learn about a method of turning a video game into a musical instrument for performance art." ...

USC Games is becoming an academic publisher for video games

January 28, 2016 08:09 PM

The University of California's games program, USC Games, is going to try its hand at being a publisher, starting with games made by its own students. ...

Procedural World

Announcing Unreal Engine 4 support

by Miguel Cepero ( at January 28, 2016 07:57 PM

We got Voxel Farm running in UE4. It s not a plugin yet, but we have included an example project that does all the tricky work. More development is required, but I believe this is at a state where others can benefit from it.

I'm already loving how nicely and quicly the voxel content renders. Here you can see the unreal dude on top of our alien biome:

I was thrilled when it took only a couple of clicks to get a good behaving character. Setting up lighting and atmospherics was also very easy. We are not fully exploiting the shading and many other toys in UE4 so it is bound to get much, mucher better.

Been able to just link to our C++ code makes the collaboration between the two engines a breeze. Thanks to that we can run on ARM platforms like iOS.

I leave you with a rather long run of a character over a Voxel Farm terrain. This is a work-in-pogress biome by a new artist that joined our team, Mr. Bohan Sun. You will also note this is only the bare voxel geometry, it is lacking all instanced meshes like grass, shrubs, smaller stones, etc.

I want to thank Alexander Ostman for donating his Voxel Farm/UE4 integration. This became the base of what we are offering today. Drop me a line if you want to get in contact with him.

Gamasutra Feature Articles

Capcom's fortunes rise on the back of games like Monster Hunter X

January 28, 2016 07:13 PM

Capcom reports today that it's seen an uptick in both sales and profits over the past nine months, driven primarily by sales of console and mobile games -- most notably, Monster Hunter X. ...

Road to the IGF: Star Maid's Cibele

January 28, 2016 07:09 PM

'It would be easy to make myself look cool in a game about myself, but that's not my goal,' says Nina Freeman. 'I want to be honest, which doesn't always make me look cool in the game story.' ...

Why racing games aren't winning on mobile

January 28, 2016 06:08 PM

"Need for Speed: No Limits is stuck in its low spot on the top 100 grossing chart, with only occasional bumps to top 50, which are driven by in-game events and sales." ...

Tips and advice for VR, from Steam VR game devs

January 28, 2016 05:58 PM

We spoke with several game developers at Valve's Steam VR event this week, about lessons and advice for VR game development. ...

Blog: A bit about project organization and planning

January 28, 2016 05:26 PM

"The problem every game developer has faced, though, is that when you reach 95% of the project, you get the feeling that it's almost done, the pressure goes down, and yet you still have about 50% of the work remaining." ...

Sharpen your community management skills at GDC 2016

January 28, 2016 05:02 PM

GDC officials highlight a handful of great game community management GDC 2016 talks from seasoned talent at Blizzard, Trion, Daybreak and more. ...

Next Games nets $10 million from existing investors

January 28, 2016 04:58 PM

Mobile developer Next Games has secured $10 million in funding from existing investors, meaning the studio has now raked in $18 million in external funding since it was founded in 2013.  ...

GameStop turns publisher for Insomniac's Song of the Deep

January 28, 2016 04:43 PM

Ratchet & Clank developer Insomniac Games' latest title, a 2D side-scroller called Song of the Deep, will be published by GameStop.  ...

Geeks3D Forums

Intel - Software Occlusion Culling (Update 1/15/2016)

January 28, 2016 04:40 PM

This article details an algorithm and associated sample code for software occlusion culling which is available for download. The technique divides scene objects into occlud...

Gamasutra Feature Articles

Rovio spins off education businesses to create Fun Academy

January 28, 2016 03:45 PM

Angry Birds creator Rovio has spun out its education operations into a new company under the name of Fun Academy.  ...

Over 5 million Google Cardboard headsets have now been shipped

January 28, 2016 03:09 PM

Over 5 million Google Cardboard viewers have been shipped since Google launched the cheap virtual reality headset 19 months ago. ...

Game From Scratch

Unity Release Patch 5.3.2p1

by at January 28, 2016 03:07 PM


Another week another Unity patch.  Windows version available here, while the Mac version is available here.  This one is composed of the usual assortment of bug fixes and improvements:

  • IL2CPP: Removed warnings from generated C++ code when compiling with clang.
  • (754282) - 2D: Fixed memory leak when applying changes to sprite.
  • (741003) - Android: Fixed internal profiler on Gear VR.
  • (738843) - Android: Timeout no longer happens when an application is sent to the background.
  • (756198) - AssetBundle: Loading multiple invalid asset bundles fails correctly now.
  • (736556) - AssetBundle: Change to use natural sorting when listing the AssetBundle names.
  • (756567) - AssetBundle: Fixed the AssetBundle loading error which was built with DisableWriteTypeTree enabled.
  • (716166) - AssetBundle: Fixed the hash collision when building AssetBundles.
  • (743704) - AssetBundle: Fixed the issue that LoadAsset(name) returns null if a bundle contains a prefab and another asset with the same name.
  • (715753) - AssetBundles: Fixed AssetBundle.CreateFromFile retaining file descriptor. - The previous fix was incomplete.
  • (760985) - Audio: Fixed mixer reverb effects getting cut off early in standalone builds.
  • (757799) - Core: Fixed crash when game object that is a child of a missing prefab is deleted.
  • (750117) - Editor: Fixed game object duplicates on play when reference to that game object is set in another scene.
  • (none) - Frame Debugger: Even when it was not used, it was creating some overhead in development standalone builds. Reduced that.
  • (756849) - Graphics: Fixed crash when calling Graphics.DrawMesh with null material.
  • (none) - Graphics: Fixed gpu memory leak in the splash animation.
  • (740782) - Graphics: Fixed a crash in the editor when switching graphics API from a non-DX9 API e.g. DX11.
  • (none) - Graphics: Fixed profiling related information (SetGpuProgramName) performance issue in development player builds.
  • (760665) - Graphics: Fixed SkinMeshInfo memory leak.
  • (724664) - Graphics: Textures imported as cubemaps now are properly marked as non-readable if import option says so. Saves memory!
  • (724547) - IL2CPP: Implemented support for Assembly.GetReferencedAssemblies and Module.GetTypes()
  • (none) - iOS/Xcode: Added .tbd extension support.
  • (759212) - iOS: Fixed code completion for iOS Editor Extensions.
  • (759459) - Mono: Corrected a crash in mono_string_to_utf8_checked when Marshal.StructureToPtr is called from managed code.
  • (none) - Mono: Resolved intermittent crash caused by a race condition that occurs when using managed threads.
  • (none) - OpenGL ES & desktop OpenGL (Shader compiler): Various bug fixes and performance improvements.
  • (756786) - Particles: Fixed IsFinite error spam with particles and second camera.
  • (756971) - Particles: Fixed issue where particle system is stopped and cleared and after that it won't play when simulation space is set to local.
  • (756194) - Particles: Fixed: particle system only playing once.
  • (756725) - Particles: Fixed: particle system not playing when triggered via Event Trigger.
  • (696610) - Particles: Fixed issue where particles are not drawn in the correct order on rotated particle systems.
  • (759502) - Particles: Fixed the issue of particles disappearing after going offscreen and returning.
  • (756742) - Particles: Fixed issue whereby particles systems are not looping correctly.
  • (755677) - Particles: Fixed issue where ParticleSystem.IsAlive() always returns True for particle systems with longer duration.
  • (723993) - Particles: Fixed wrong culling of some particle objects caused by incorrect bounds calculation due to parent scaling.
  • (757461) - Particles: Fixed issue where particle system doesn't play if method is called via Invoke fixed.
  • (745121) - Particles: Particles are now emitted with the correct position//rotation when using a Skinned Mesh Renderer or Mesh Renderer as shape.
  • (754405) - Scripting: Fixed issue that causes UnityScript to incorrectly detect some methods return type.
  • (739376), (740617) - UI: Fixed "Trying to add (Layout Rebuilder for) Content (UnityEngine.RectTransform) for layout rebuild while we are already inside a layout rebuild loop." error.
  • (753423), (758106) - UI: Fixed flickering/texture swapping issues.
  • (747512) - UI: Fixed issue with incorrect accent calculation for non-dynamic fonts.
  • (759841) - VR: Fixed crash when trying to enter play mode when the Plugin was not loaded or the Oculus runtime was not installed.
  • (755122), (717989), (734122) - VR: Fixed Skybox clipping issue.
  • (none) - VR: Fixed VR Focus and VR ShouldQuit not respecting notifications when the Device was disconnected.
  • (none) - XboxOne: Fixed a bug with YUY2 processing on the XboxOne.

Gamasutra Feature Articles

GOG launches its own take on Steam's Early Access service

January 28, 2016 02:17 PM

Nearly three years after Valve rolled out Steam's Early Access program, competitor is launching its own curated storefront dedicated to selling "games in development." ...

LittleBigPlanet 3 dev Sumo Digital to open new UK studio

January 28, 2016 02:15 PM

Nottingham will become the home of LittleBigPlanet 3 developer Sumo Digital's third global studio, and will work in tandem with the studio's Sheffield and India offices on a number of projects.  ...

Game Design Aspect of the Month

Upcoming Workshops in Game Writing and Genre Fiction

by (Sande Chen) at January 28, 2016 02:12 PM

I'm pleased to announce the fourth installment of the Game Writing Portfolio Workout on February 2nd at Microsoft NYC! I'm so amazed by the reception of these workshops.  I even got a standing ovation at the conclusion of the last Workout.  

If you'd thought about writing for video games or even if you are a practicing game writer, come join me in this fun community event.  No experience is required, though it is helpful.  Participation in the earlier workouts are not needed to understand what's going on, but you do get a broader sense of what is the craft of game writing if you have attended the earlier sessions.  I think this may be the last of the series, at least for now, because I want to get back to the genre fiction workshop I first offered back in July 2015.  It's what got the Game Writing Portfolio Workout started but there's still lots to explore in the worlds of science fiction, fantasy, and horror game writing.  Call it a specialization :)

As always, the event is held through Playcrafting NYC, which offers classes and events related to game development.  Early Bird tickets start selling now.

Then, on March 3rd, I'll return to Microsoft NYC for Writing for Sci-Fi, Fantasy & Horror Game Worlds If you're interested in science fiction, fantasy, and/or horror and want to populate your game world with monsters, creatures, aliens, fantastical beasts, and otherworldly cultures, you can benefit from this participatory workshop. Tickets sold here.

About Me

My background is a mixture of theatre, film, journalism, economics, and writing.  I received a S.B. in Writing and Humanistic Studies (now the major of Comparative Media Studies) at MIT and then I specialized in Screenwriting at USC's School of Cinematic Arts.  My first published game as a writer was on the epic space combat RPG, Terminus, which won 2 awards at the 1999 Independent Games Festival.  Afterwards, I worked on the episodic fantasy series Siege of Avalon, MMO Wizard101, and the dark fantasy RPG, The Witcher, for which I was nominated for a Writers Guild of America Award in Videogame Writing. I currently head the WGAE Videogame Writers Caucus and am SIG leader of the IGDA Game Design SIG.

Gamasutra Feature Articles

Tips for not getting rejected from Apple's App Store for IPv6 issues

January 28, 2016 12:04 PM

"Ok, now we have to prepare for Apple's AppStore reject policy to apps which does does not support IPv6 networking to be started early this year." He's what you need to know to avoid that! ...

Releasing an indie game on 3 consoles at once and failing financially

January 28, 2016 08:52 AM

"Sure, the game only generated a fraction of what we spent on it, but we've learned a lot. Now it's time to get up, dust off our shoulders and get the creative juice flowing again!" ...