Planet Gamedev

Real-Time Rendering

Benchmarking tweets

by Eric at May 03, 2016 01:40 AM

I asked what others did for benchmarking in my last post. Here are the replies on Twitter in a semi-coherent edited form. If I missed any replies, I blame Twitter, whose interface is a magical maze.

First there were some FPS vs. SPF comments:

Richard Mitton: If you’re not measuring in milliseconds then you’re doing it wrong.

Christer Ericson: Yes, ms, not FPS. FPS is not a linear unit for the artists (or anyone).

Marc Olano: FPS isn’t linear. Usual definition of median averages middle 2 for even samples = also wrong. Use ms.

Morgan McGuire notes: FPS *is* a good measure if what you care about is interaction or visual smoothness. SPF is good for computational efficiency.

I replied to Richard & Christer: I’m interested in your reaction to the use of median vs. mean. FPS vs. SPF irrelevant for relative performance.

I also changed the original post to talk about milliseconds instead of frames, to avoid this facet of the discussion.

Christer Ericson: It’s important to catch the spikes, so in the context you’re talking about I would do max. Or mean+variance. Also, don’t think I’ve ever, for profiling reasons, looked at any average. You always look at a specific frame.

Timothy Lottes: I’m personally only interested in worst case ms/frame.

Cass Everitt: Agree with those that concentrate on worst times.

Eric Haines: Right, it depends what you’re looking for, e.g. don’t drop below 60 FPS. I’m mostly warning against using mean.

I added a note to the original post about tracking the max, which makes sense if you’re trying to guarantee a frame rate.

Tobias Berghoff, who benchmarks consoles:

I use min/max/med the most. Averages really only come into play when I need more digits. I spend significant amount of time below the 0.5% mark when wearing my platform tuning hat. I don’t miss trying to get sensible numbers out of PC h/w. But this also comes into play when measuring very short processes. When something only takes a couple of microseconds, you often end up oscillating between states that make the distribution multi-modal. Median won’t catch small shifts.

cupe: Stacked color-coded graph of nested timings (or a subtree of it). Usually unfiltered for analysis, avg for comparisons. Hierarchy is on the left, tooltip displays e.g. “scene/fluid/poisson”, click to restrict. Horizontal lines are milliseconds, orange line is 16.6 ms.


E.g. click the big violet bar to see only post (and zoom in to stretch 4ms to screen):


Javdev: We use a profiler, Adobe Scout, select multiple frames & see which code is most expensive & iterate it to prevent frame drops.

Björn Blissing: One option is to plot a histogram over the captured data. Reveals if your max/min are outliers or more common occurrences.

Michael Marcin: Try always running circular etwtrace and when frame time dips save and examine the trace.

Mikkel Gjoel: We filter in viewer. Options for all mentioned, and vsync (as that is what we are shipping).


Fabian Giesen: General order statistics (percentiles etc.) are good. Just a plot of frame durations over frame # is helpful, too! And simply recording all frame durations over a few seconds, sorting them and plotting that is quite handy, too. That gives you all the percentiles (and median etc.) and gives you a feel for the shape of the distribution, which matters. (I’m not very happy with single-value summaries; they lose too much information.)

Jaume Sanchez Elias: I like Chrome FPS meter: current, min, max; over time; frequency graph for each framerate


Krzysztof Narkowicz: Min, max, avg and std dev. Percentiles and med would make a nice addition, but it’s a hassle to compute them.

Anton the Mighty: I always use the standard deviation or standard error and indicated what value n sample size is. Most gfx benchs=bad. It’s usually worth also eyeballing actual data in detail because repeating patterns show either cycles or error in timers. Most recently there was something a friend had with the power manager in windows causing a cycling load on the cpu. I also visually check out timing for cpu+gpu functions across frames with apitrace etc. pretty neat.

All for now – feel free to email or tweet me with anything you want to add.


Gamasutra Feature Articles

Microsoft moves to boost indie devs with month-long ID@Xbox promo

May 02, 2016 11:47 PM

The company pioneered downloadable independent games on the Xbox 360, and promoting them with the much-missed "Summer of Arcade" -- and now it's back with something new. ...

The Chinese mobile game market is shifting toward core titles

May 02, 2016 11:22 PM

The most popular games are still casual, but a flood of RPGs is crashing into the space, and it's going to change the lay of the land. ...

Oculus Rift heads to retail at Best Buy stores

May 02, 2016 10:51 PM

The next step in VR adoption? A selected number of Best Buy stores will get Oculus Rift demo units (and units for purchase, too). A larger rollout is planned for later in the year. ...

Nintendo NX hardware will not sell at a loss

May 02, 2016 10:42 PM

Straight from the mouth of Nintendo's president: "Next, about how we are looking at cost, we are not thinking of launching the hardware at a loss." What's the big deal? Explanation inside. ...

Nintendo's president gets grilled on its mobile business, NX plans

May 02, 2016 09:04 PM

President Tatsumi Kimishima goes up in front of his company's investors -- and despite their best efforts, remains cagey about the company's future, even in the near-term. ...

Video: 20 lessons learned from 20 years of making Magic: The Gathering

May 02, 2016 08:19 PM

"Not a lot of people design the same game for twenty years," said venerable Magic: The Gathering head designer Mark Rosewater in his GDC 2016 game design talk. "Not a lot of games last twenty years." ...

Blog: Consequences in games

May 02, 2016 07:59 PM

"Consequences are a form of constraints, and contemporary players do not like constraints. They want to do whatever they want to do, as though they were on a playground or playing with toys." ...

Get a job: CCP Games in Atlanta seeks a VR Graphics Engineer

May 02, 2016 07:52 PM

The Georgia-based branch of CCP Games, CCP Atlanta, is looking to hire a graphics programmer with VR/AR experience to work as part of a small team on VR projects. ...

Geeks3D Forums

(Demoscene) Experiments in Motion Graphics 1968

May 02, 2016 07:40 PM

Demo video by John Whitney @ IBM, 1968 (!)

Rendered on IBM 2250

IBM still offers the programming manual[/ur...

Gamasutra Feature Articles

Blog: Unexpected narrative in games

May 02, 2016 07:33 PM

"Metroid isn't the only game to use this type of storytelling. Journey, Ico, Sword & Sworcery, and others tell their stories with very little text or cinematic sequences." ...

How Epic came to embrace free-to-play and games-as-a-service

May 02, 2016 07:24 PM

"I would describe it as seeing the writing on the wall," cofounder Tim Sweeney tells Polygon in a new feature. "There was an increasing realization that the old model wasn't working anymore." ...

Patrice Desilets: 30 words on creativity, plus a peek at 1666

May 02, 2016 07:17 PM

In his talk at the Reboot Develop conference, Patrice Desilets discussed 30 words that he associates with creativity...and showed off some in-engine footage of his game 1666: Amsterdam ...

Dishonored, and tactile interface metaphors

May 02, 2016 07:01 PM

"The consistent and weighted emphasis of the moral dichotomy of player choice in Dishonored becomes only reinforced, as our bodily interactions with the controller approach our assumptions of how we might expect the actions to feel." ...

Don't Miss: How Call of Duty 4: Modern Warfare was made

May 02, 2016 06:20 PM

Infinity Ward's influential shooter debuted almost a decade ago. Now, read this classic postmortem the lead designer and technical art director wrote of it for Game Developer magazine. ...

Researcher Espen Aarseth wins $2.3M grant to create a theory of games

May 02, 2016 06:01 PM

The European Research Council has awarded a € 2 million grant to noted game researcher Espen Aarseth to fund his five-year effort to "develop and quality-assure some basic concepts for game analysis." ...

Tips and tricks for demoing roomscale VR content

May 02, 2016 05:55 PM

"Ensuring that VR demos are smooth now, in the early days, helps keep the public interested and excited in the future!" ...

Blog: Why the 'late' arrival of the Nintendo NX may be a good thing

May 02, 2016 05:22 PM

"Many were expecting the NX to launch toward the end of 2016, where it could capitalize on the commercial busyness of the fourth quarter. I'd argue that this move to 2017 could be a good thing." ...

Square Enix Montreal enlists former Hyper Light Drifter, Fez devs

May 02, 2016 05:05 PM

Game developers Teddy Diefenbach and Renaud Bedard announced today that they'll be joining Lara Croft Go studio Square Enix Montreal to embark on a new project. ...

How Apple TV forced us to rethink mobile UX

May 02, 2016 04:30 PM

"I agree with Tim Cook's notion that the future of the TV is apps. But an app is just a bundle of code. What makes a great app is the experience it offers to its specific user." ...

Geeks3D Forums

Intel HD Graphics Driver

May 02, 2016 04:12 PM




NVIDIA GeForce Game Ready driver 365.10

May 02, 2016 03:32 PM

Our new GeForce Game Ready 365.10 WHQL drivers are optimized for Battleborn, Forza Motorsport 6: Apex Beta, the Overwatch Open Beta, and the ongoing Paragon Beta. To download ...


Khronos Releases OpenVX 1.1 Specification

May 02, 2016 01:00 PM

The Khronos Group announces the immediate availability of the OpenVX 1.1 specification for cross platform acceleration of computer vision applications and libraries. OpenVX enables performance and power optimized computer vision algorithms for use cases such as face, body and gesture tracking, smart video surveillance, automatic driver assistance systems, object and scene reconstruction, augmented reality, visual inspection, robotics and more. Conformant OpenVX 1.0 implementations and tools are shipping from AMD, Imagination, Intel, NVIDIA, Synopsis and VeriSilicon. OpenVX 1.1 builds on this momentum by adding new processing functions for use cases such as computational photography, and enhances application control over how data is accessed and processed. An open source OpenVX 1.1 sample implementation and full conformance tests will be available in the first half of 2016.

Gamasutra Feature Articles

Self-publishing myths and realities

May 02, 2016 08:00 AM

"Often publishers are looked at as marketing and user acquisition partners, so making a good game and hiring a marketing person should be enough. Not quite." ...

A brief history of the fireball in fantasy games

May 02, 2016 08:00 AM

History at its hottest. A look at the development of the long-range attack known as Fireball, from homebrew tabletop to LARP to blockbuster RPG videogames. ...

Game From Scratch

This Week In GameDev–May 1, 2016

by at May 02, 2016 02:16 AM


The following is a recap of major events in the world of game development for the week ending April 17th, 2016.  I do a weekly video recapping the news available here with this week’s video embedded below.  This post is a collection of links mentioned in the recap.



The Video

cbloom rants

Oodle Kraken Pareto Frontier

by cbloom ( at April 30, 2016 01:48 PM

The whole idea of Kraken is to excel in the size-decodespeed tradeoff. From the beginning of its design, every decision was considered in terms of the size vs decodespeed.

So how does it do?

To visualize the size-decodespeed Pareto frontier, I like to use an imaginary loading problem. You want to load compressed data and then decompress it. One option is the null compressor (or "memcpy") that just loads uncompressed data and then memcpys it. Or you can use compressors that give smaller file sizes, thus quicker loads, but take more time to decompress. By dialing the virtual disk speed, you can see which compressor is best at different tradeoffs of space vs. speed.

Of course you may not actually be just trying to optimize load time, but you can still use this imaginary loading problem as a way to study the space-speed tradeoff. If you care more about size, you look at lower imaginary disk speeds, if you core more about CPU use, you look at higher imaginary disk speeds.

I like to show "speedup" which is the factor of increase in speed using a certain compressor to do load+decomp vs. the baseline (memcpy). So the left hand y-intercepts (disk speed -> 0) show the compression ratio, and the right hand y-intercepts side show the decompression speed (disk speed -> inf), and in between shows the tradeoff. (By "show" I mean "is linearly proportional to, so you can actually look at the ratio of Y-intercepts in the Pareto curve and it tells you compression ratio on the left and decompression speed on the right).

03-02-15 - Oodle LZ Pareto Frontier and 05-13-15 - Skewed Pareto Chart

The chart showing "millis" shows time, so obviously lower is better. I show a few ways to combine load & decomp. Sum is the time to load then decomp sequentially. Max is the larger of the two, which is the time if they were perfectly overlapped (not usually possible). Personally I think "l2 sum" is most useful. This is the sqrt of sum of squares, which is a kind of sum that biases towards the larger; it's kind of like a mix of "sum" and "max", it means you want the sum to be small, but you also want them to similar times.

Kraken tops the Pareto curve for decodespeed vs size for a huge range of virtual disk speed; from around 2 mb/s up to around 300 mb/s.

Of course the Pareto curve doesn't tell the whole picture. For one thing I don't have encode speed in the equation here at all (and sometimes you need to look at the memory use tradeoff too, so it's really a size-decodespeed-encodespeed-memoryuse surface). For another you sometimes have strict requirements, like I must hit a certain file size, and then you just pick the fastest decoder that meets that requirement. One thing the curves do clearly tell you is when a curve just completely covers another (that is, is greater in Y for all values of X), then that compressor is just never needed (in space & decodespeed).

Silesia :

Game Test Set :

Just for comparison to earlier posts on my Blog about the other Oodle compressors, here's a run of lzt99 with the full Oodle compressor set.

I've included ZStd for reference here just to show that Kraken jumping way up is not because the previous Oodle compressors were bad - far from it, they were already Pareto optimal. (I like to compare against ZStd not because it's bad, but because it's excellent; it's the only other compressor in the world I know of that's even close to Oodle in terms of good compression ratio and high speed (ZStd also has nice super-fast encode speeds, and it's targetted slightly differently, it's better on text and Oodle is better on binary, it's not a direct apples comparison)).

You can see that LZHLW is just completely covered by Kraken, and so is now deprecated in Oodle. Even LZNIB and BitKnit are barely peeking out of the curve, so the range where they are the right answer is greatly reduced to more specialized needs. (for example BitKnit still romps on strongly structured data, and is useful if you just need a size smaller than Kraken)

Gamasutra Feature Articles

Devs Answer: how much did your parents support playing video games as a kid?

April 29, 2016 11:52 PM

We polled developers on how their parents felt about them playing games as kids to see which ones had full support, and which ones were only able to justify it once they'd built a career on them. ...

The unexpected creative genesis of Her Story

April 29, 2016 11:35 PM

"If all your ideas are coming from movies, that can be a problem. An artist has already gone out into the world and compressed a lot of information to create that film." ...

Australian Parliament report calls for renewed game industry funding

April 29, 2016 10:40 PM

Australian parlimentary report recommends reinstating funding developers with grants and loans to boost the local game biz, and adding tax breaks for bigger studios. ...

Get a job: Be a UI Artist on Rocket League

April 29, 2016 08:02 PM

Psyonix, the independent developer behind Rocket League, is looking for a highly skilled UI Artist to join the team working at its offices in San Diego, California. ...

After 13 years, 'casual' game hub JayIsGames will shut down

April 29, 2016 07:56 PM

The folks over at long-running online game hub JayIsGames have confirmed that the website will cease operations this week, though it will remain online for the foreseeable future. ...

Video: Designing without a pitch - The FTL postmortem

April 29, 2016 07:29 PM

FTL devs Matthew Davis and Justin Ma speak frankly at GDC 2013 about how and why they frequently altered or abandoned aspects of the game's design as they developed it to evoke a specific feeling. ...

Don't Miss: Molyneux and Webley recount the history of Lionhead

April 29, 2016 06:59 PM

Now that Lionhead is closed, look back at this 2006 feature where Peter Molyneux and Mark Webley speak at length about how they helped create the company, and their lessons learned along the way. ...

China is driving big growth for Unity mobile game installs

April 29, 2016 06:40 PM

Unity reports that in the first 3 months of 2016 nearly 220k Unity mobile games were installed 4.2 billion times on 1.7 billion devices. 31 percent were in China, vs. just 11 percent in the U.S. ...

Survey: Less than half of U.S. households own dedicated game consoles

April 29, 2016 06:00 PM

The results from the ESA (and Ipsos MediaCT's) annual survey of Americans suggests that for the first time in years, a dedicated game console is in less than half (48 percent) of U.S. households. ...

Game From Scratch

TexturePacker 4.2 Released

by at April 29, 2016 05:56 PM


TexturePacker is a handy tool I’ve featured several times here on GameFromScratch as well as a video feature as part of the gamedev toolbox series.  It’s one of those handy Swiss army style tools that enables you to pack multiple images into one or more sprite sheets.  Texture Packer 4.2 brings a number of new features to the table:

  • a simplified user interface is available now for new users
  • improved help
  • indexed PNG (PNG-8) (more) available
  • improved sprite sheet animation previewer

Sprite sheet animation previewer

  • support for ETC2, PVRTCII, DXT1/5 formats
  • user interface cleanup
  • several fixes
    • all data formats now use UTF-8
    • EaselJS/CreateJS animation frames now written correctly
    • now case sensitive aware on MacOS
    • better Cocos2d-x support

Lumberyard 1.2 Released

by at April 29, 2016 04:40 PM


It was only a few months back that Amazon launched Lumberyard, their CryEngine powered game engine.  In March they released Lumberyard 1.1 then earlier this week they just released Lumberyard 1.2.  At least out of theZombiesEditor gate they are keep the updates coming at a good pace.


So what exactly is in Lumberyard 1.2?

  • new audio tutorial on integrating Wwise audio in Lumberyard
  • extended mobile support from 1.1.  More iOS and Android devices added included iPhone 6 series, Air2 and iPad Pro, with Note 5 and Nexus 6 added on the Android side )
  • network bindings for components enabling network synchronization
  • improve particle editor including library support, GPU particle rendering, advanced playback controls, a gradient editor and more
  • UI Animation system enabling you to animate certain properties of UI components.

That’s the new features, then comes the rather massive list of changes and features.

• The Asset Processor now stores log files in a logs subfolder (located in the same location as
the Asset Processor executable file). These logs include detailed information that you can use to
diagnose issues in the Asset Processor.
• The Asset Processor now recognizes when copies of the tool are stored in different locations for
different projects on the same machine. If you attempt to run Lumberyard Editor while the
Asset Processor from a different branch or version of Lumberyard is running, you will receive
notification and the option to run the correct Asset Processor or exit the old version. This helps
to prevent connection to and communication with the incorrect Asset Processor.
• To allow you to get started while assets compile in the background, the Asset Processor now
supports priorities assigned to asset types to compile in the configuration file. By default
meshes and animations are preferred over textures.
• A new algorithm is now used to order the Asset Processor’s build queue and dynamically
reorder the queue based on the connected platforms and the assets requested by these
platforms. Unconnected platforms have a lower priority than connected ones.
• The default audio error logging verbosity is now set to Errors & Warnings to increase visibility.
• Added a flow graph node to control Audio components.
• Added a method to stop all sounds to the audio proxy.
• To help reduce confusion about their purpose, removed the Development deployment and
Hello World feature from the default project.
• Deployment stacks are no longer created under the project stack. This change allows you to
create, update, and delete deployments without risking changes to other deployments.
• Added the ability to push unrelated entities with instanced entities to a slice asset.
• The Entity Outliner can now show multiple components of the same type.
• The FBX Importer now automatically converts FBX units to meters. This allows you to use scenes
from different content creation packages because the content is automatically scaled logically
upon import.
• The FBX Importer now reads Up-Axis orientation data. This allows you to use scenes from
different content creation packages because the content is automatically oriented logically
upon import.
• Changed the command that is used to start the Amazon GameLift server from start_lobby
to gamelift_start_server.
• Added support for idle timeout in all modes. Idle timeout is disabled by default. To enable idle
timeout for Amazon GameLift, you can add +sv_idle_seconds 600 to your server’s
command line in the Amazon GameLift dashboard.
• Removed the GridMateGameLift static library and moved all Amazon GameLift code in the
Multiplayer Project to the Amazon GameLift Gem.
• Changed the include paths for Amazon GameLift session header files from
GridMateGameLift/Session/.. to GameLift/Session/...
• The installer now automatically installs the Visual C++ Redistributable Packages for Visual
Studio 2013, if it is not already on your machine.
• To help provide clarity, the installer now clearly states the build version that will be installed.
• To help improve functionality, the installer now reports metrics when certain steps are
• Improved the error messages for configuring an Android project to help diagnose problems.
• Added support for the Android devices Samsung Galaxy Note 5 and Motorola Nexus 6.
• Created a separate download package for iOS developers to help with line ending problems in
JSON files.
• Various updates for iOS include exposing global blending weight and fixing VisArea bugs.
• Improved the Xcode project generation for iOS by using rsync to copy assets.
• Added support for enabling r_VisAreaClipLightsPerPixel in GMEM for iOS.
• Created a Gem for GridMate GameLift integration. This Gem contributes to Lumberyard’s
modular approach, allowing you to more easily customize the engine for your needs. You can
optionally include this Gem in your Lumberyard game project.
• Disabled the Connect and Host flow graph nodes for the Multiplayer Gem.
• Added the ability to search for Amazon GameLift sessions by game instance ID. This enables
you to create a custom matchmaking service with your game hosted by Amazon GameLift.
• Added support to the GridMate API for reusing EC2 instances in Amazon GameLift, which
removes the need to spin up a new instance for every game session.
• Modified replica initialization to take a debug name.
• Updated AzFramework to require GridMate. On Xbox, GridMate requires winsock
(ws2_32.lib) to link in. On Windows, GridMate links in using a pragma in code.
• Removed support for Windows XP and earlier by updating the _WIN32_WINNT version to
0x6000 (Windows Vista), and removing the unnecessary inet_ntop() implementation.
• Modified UpdateFromChunk to call per chunk and not per replica.
PROJECT CONFIGURATOR – Various updates include adding metrics reporting, ensuring the
ProjectConfigurator.log file is saved to the engine root, and updating the project template to
match the latest changes to the Empty Template.
• The Twitch:JoinIn:CreateLink flow graph node now includes an Error port, which is
signaled if the link was not created successfully. The GameName port was removed; the game
name is now copied from the sys_game_name console variable.
• You can now use the joinin_uriScheme console variable to set the URI scheme for the
JoinIn link. The default value is game.
• You can now use the chatPlay_GroupServerList console variable to set the list of group
chat servers and ports.
• In the Samples Project, the UIDemo level was renamed to UIEditor_Sample.
• Removed the UiDemo Gem and added the functionality to the Samples Project.
• Added the UiInitializationBus to help simplify the process of writing custom UI components that
require data initialization after loading a canvas in-game.
• In the File menu, New has been renamed to New Canvas.
• In the component properties, the Selected state has been renamed to Hover.
• In the Properties pane, the Components button has been renamed to Add Component and is
now located at the top of the pane.
• Added the ability to remove components by right-clicking the component.
• Added the flow graph nodes Ui:Element:SetIsEnabled and
• Added the image types Stretched to Fit and Stretched to Fill to the Image component. These
image types maintain the aspect ratio of the texture when the element is a different aspect
• You can now show the anchor preset in use by using the icon to the right of the anchor values
in the Anchor properties.
• Renamed the following parts of EBus for clarity:
o EBusEventGroupContainerTypes renamed to EBusHandlerPolicy
o EBBCT_SINGLE renamed to EBusHandlerPolicy::Single
o EBBCT_MULTI renamed to EBusHandlerPolicy::Multiple
o EBBCT_MULTI_ORD renamed to EBusHandlerPolicy::MultipleAndOrdered
o EBusContainerTypes renamed to EBusAddressPolicy
o EBCT_SINGLE renamed to EBusAddressPolicy::Single
o EBCT_ID_UNORDERED renamed to EBusAddressPolicy::ById
o EBCT_ID_ORDERED renamed to EBusAddressPolicy::ByIdAndOrdered
• Updated EBus to declare traits as follows:
static const AZ::EBusAddressPolicy AddressPolicy =
static const AZ::EBusHandlerPolicy HandlerPolicy =
• Various EBus updates include adding script bindings, removing “Listener,” and improved
• Updated the Lumberyard Waf build system (lmbr_waf) QT tool to resemble the Waf QT5
• In Lumberyard Editor, you can now opt out of sending metrics by clicking File, Global
Preferences, Editor Settings, and selecting the opt-out check box.
Lumberyard Beta 1.2 includes the following fixes:
AI – The editor no longer crashes when:
• Attempting to grab an AI human in-game in the GameSDK project. This error occurred for AI
humans that had a nonexistent grab type specified in the entity settings.
• Saving CGF files for certain brush objects.
• Fixed an issue that caused the Asset Processor batch file to hang when attempting to cancel by
pressing Ctrl+C.
• Fixed an issue that prevented Lumberyard Editor from launching if the Asset Processor from a
previous build is running in the background.
• Fixed an issue that caused exported geometry (CGF and i_caf files) from 3D Studio Max to
appear as failed in the Asset Processor.
• Fixed a bug that caused numerous Asset Processor icons to appear in the system tray after
switching projects or closing tasks.
• Fixed an issue that prevented the Asset Processor from identifying changes to
sys_game_folder in the bootstrap.cfg file.
AUDIO – Fixed an issue with undoing operations that caused the Audio Controls Editor to crash.
• Fixed an issue that prevented movies or frames in Lumberyard from rendering to the paths with
spaces specified in the Render Output dialog box in Track View.
• Fixed an issue that caused incorrect sequence ranges to save when toggling between the
Seconds and Frames time units in the Sequence Properties dialog box in Track View.
• Fixed an issue that caused the editor to crash when using sequence names over 1,000
characters long.
• Fixed a bug that caused stackStatusListModel to erroneously use columnCount()
rather than the enum ColumnCount when filling out a row.
• Fixed an issue with the mobile analytics client using the default retry strategy that caused long
pauses when a network connection is not present.
• Fixed an issue that caused lmbr_aws to crash if the Metrics DLL does not exist.
• Added validation for key name, bucket name, and file name in the S3 Download and Upload
• The Forgot your password link in the Login to Amazon Lumberyard dialog box now displays the
password assistance page as expected.
• Various fixes include removing a dangling GridMate GameLift reference from the multiplayer
Gem and removing an unnecessary dependency on IAM within Client Manager.
• Fixed an issue with importing FBX files that do not have a scene settings file that caused the
Asset Processor to erroneously report a failure.
• Fixed an issue that prevented the entry of characters that would have resulted in a duplicate
group name.
• Fixed an issue that caused the Scale property to allow both 0 and negative values when
importing assets.
• Extended the iterators in the Scene API with unit tests.
• Fixed floating point precision issues that caused the flow graph node Math:Equal to become
unreliable when reporting equality between numerical values.
• Fixed an issue that caused the flow graph node Math:EvenOrOdd to reverse even and odd
numbers for the node outputs.
• Fixed an issue that caused flow graphs, game tokens, track view sequences, and objects to
delete when right-clicking the viewport while a level loads.
• Fixed an issue that caused the editor to crash when attempting to add comments to a new flow
graph by using shortcuts (for example, Right Alt+F, Right Alt+E, Right Alt+V, Right Alt+O, or
Right Alt+D).
• Fixed an issue that prevented an automatic refresh when a flow graph component is added to
an entity.
• Fixed an issue that caused the audio component to stop all triggers from executing on the
owned proxy upon deactivation.
• Fixed an issue that prevented the component flow graphs from uninitializing properly.
• Fixed an issue that caused unusual behavior when selecting Change Group Name from the
Global Flow Graphs menu.
• Fixed a crash issue when shutting down the Gem Registry.
• Fixed a shutdown crash issue in the Game Effect and Lightning Arc Gems.
• Fixed an issue with deploying Monolithic builds for game projects that include Gems.
• Fixed an issue with building tests for a new Gem that resulted in a failure and Uber file error.
• Fixed an issue with release configuration failing on launch, resulting in a “Failed to load Gems
project” error message.
• Fixed an issue that prevented the animations list in Geppetto to remain in sync and display
• Fixed an issue that erroneously allowed invalid values (0 and negative numbers) for the scale
when importing an FBX.
• The editor no longer crashes when importing a new i_caf file with blendshapes.
• The character tree list no longer displays deprecated CGA files.
• The skeleton file type list no longer displays unsupported formats, such as SKEL and CGA.
• The Resource Compiler no longer crashes due to the System Allocator from the Resource
Compiler Scene and Scene API.
• Fixed an issue that caused level slice to persist slice references across editor level sessions.
• Fixed an issue that prevented scripts from successfully reloading in the editor for entity objects.
• Fixed an issue that prevented the Camera Sample level’s dynamic fly-by camera angle from
functioning correctly when the Cycle balloon cameras button is pressed.
• Fixed various stability issues with loading meshes.
• Fixed an issue that caused the animation component to send multiple OnAnimationStopped
• Fixed an issue with live-lock during loading if a level includes a certain number of mesh assets.
• Fixed an issue that prevented the Component Palette window from unregistering from the
plugin and closing properly.
• Fixed an issue with invalid bound on an object when instantiating component entities from a
slice, resulting in the object being off at the origin and breaking selection in the editor.
• Fixed an issue that prevented values to be set when rotating a designer object on the Y axis to
90 or -90 and beyond.
• Fixed an issue that prevented the use of spaces in the Lumberyard installation path.
• The editor no longer crashes when:
o Selecting a mesh file in PreviewModelCtrl.
o Attempting to push entity changes to a slice.
o Reloading slices and the flow graph wrapper accesses deleted objects.
o Using proximity triggers that activated only once in profile.
o Dragging an asset from the file browser into the viewport when a level is not loaded.
o Cloning a game token.
o Modifying the level library before loading a level.
• Fixed an issue that prevented the Transition editor from saving changes to procedural clips.
• Fixed an issue that prevented the Mannequin Sequence file from saving properly.
• Maya 2015 no longer crashes when using the User Defined Properties (UDP) tool.
• The editor no longer crashes when setting up an AnimObject that uses a character and
animation exported from 3D Studio Max.
• Fixed an issue that misaligned the skin and bones after exporting from 3D Studio Max and
assembling in Geppetto.
• Fixed an issue that caused textures compressed by the Resource Compiler with
colorspace=*,[auto|sRGB] to crash when loaded on iOS.
• Fixed an issue that prevented skinned character shadows from working correctly in the GMEM
render path.
• Fixed a buffer overflow vulnerability in CarrierThread::ProcessIncomingDatagram
when receiving incoming datagrams.
• Fixed a buffer overflow vulnerability in CarrierThread::ReadAckData() when receiving
malformed system ack messages, preventing a denial of service.
• Fixed a crash in the object stream when skipping unreflected root node in binary mode.
• Fixed a bug that prevented game code from receiving the SignIn system event.
• Fixed a bug that prevented RPCs from being called for proxies when multiple chunks were
bound to a replica.
• Fixed a bug for processing unknown chunk types.
• Fixed an issue that caused existing players to disconnect and the server to crash if the number
of players attempting to connect exceeded the maximum number of players allowed, as
specified by the sv_maxplayers value.
• Fixed an issue that prevented the Gradient Editor from preserving set values.
• Fixed an issue that caused the delete confirmation dialog box to display twice when attempting
to delete a particle or folder.
• Fixed an issue that prevented a modified color value from saving to the XML file.
• The editor no longer crashes:
o After editing a particle from an imported library and closing the Particle Editor by
clicking Cancel in the warning message dialog box.
o After creating a library and closing the Particle Editor without saving the library.
o When attempting to hide the Attribute panel in the Particle Editor.
• Fixed an issue in the particle library version 27 that prevented particles from loading correctly.
• Fixed an issue that prevented “forward” planar decals from rendering properly in certain
• Fixed an issue that caused materials cloned with a .ddna file to bind an incorrect
smoothness/gloss texture.
• Fixed an issue that caused the sun position and lighting to move when opening the Sun
Trajectory pane.
• The particle orientation now loads correctly in a level.
• The environment probe preview option now renders correctly.
• The editor no longer crashes in debug when configuring the layout to use multiple viewports.
• Added support for MIN_MAG_MIP_LINEAR as a shader token, which resolves asserts in debug.
PROJECT CONFIGURATOR – A warning message about running lmbr_waf configure after creating
a project now persists within a single session of the Project Configurator. Previously the warning
message would disappear after the first time a new project was created.
• Fixed an issue that caused a ‘texture file missing’ warning message to display when opening the
Animation_Basic_Sample level.
• Fixed an issue that caused the Animation_Basic_Sample level to crash when using the
SamplesProjectLauncher.exe standalone launcher.
• Changed the default SDK requirements for running a game. If you want to compile game code
only, you can now run a Waf configuration step. The Codejock Xtreme Toolkit Pro, which is
included with Lumberyard, is now marked as required.
• Various fixes include updates to text, icons, and page functionality.
• Fixed the pop-up position of the Sprite Border Editor and the Anchor Presets widget.
• Fixed various issues with running a game in the editor and loading a canvas in a game that is
already loaded in the UI Editor. For example, loading a canvas in-game when it is loaded in the
editor will result in a copy of the canvas that is used by the game.
• Fixed a bug in the UITextInput component that prevented selecting a text range backwards
from functioning correctly.
• Fixed an issue with sliced images where the image rectangle is thinner than the sprite borders,
resulting in the borders overlapping.
• Fixed a bug that caused changes to save when clicking Cancel in the Sprite Border Editor.
• Fixed a bug that caused the browser to save when clicking Cancel in the Changes have been
made dialog box.
• Fixed an issue that caused the UI Editor to become unresponsive when 20+ canvas files are
open in the editor.
• Reinstated the Font Effect property in the Text component property pane.
• The image texture browser now properly supports the file formats listed in the browser: .bmp,
.dds, .gif, .jpeg, .png, .tga, and .tif.
• Fixed an issue that prevented AZStd::conditional_variable.wait(…) from halting a thread.
• Fixed an issue that prevented the AZ::Entity cached shadow from updating.
• Fixed an issue that caused AZ::Entities to vanish when moved from the initial position.
• Fixed an issue with selecting more than eight entities by adding entries to the dynamic pop-up
menu allocation.
• Fixed an issue that caused the Resource Compiler to connect to Perforce during asset
processing, even though the Perforce plugin is disabled in the editor.
• Fixed an issue with saving changes in the Audio Controls Editor that caused the Perforce
connection to break and display an error message.
• Various fixes to the CodeGenPreview solution include updates to AZCore/AZCoreTests
and support for proper include paths for rapidxml


The complete and massive release notes are available in this PDF.  Let’s hope Amazon keeps improving Lumberyard at this rate in the future, we might have a real fight on our hands!

Gamasutra Feature Articles

8 tips for showcasing your game at a convention like PAX

April 29, 2016 03:28 PM

From booth facing to strategic activity design, indie front TinyBuild shares lessons learned from bringing booths and showcasing games at 8 PAX events in a row. ...

Vivendi snaps up even more Ubisoft shares

April 29, 2016 03:18 PM

French multinational media conglomerate, Vivendi, has made another move on Assassin's Creed creator, Ubisoft.  ...

Blog: Making the switch from indie developer to indie publisher

April 29, 2016 02:06 PM

"This was the first time I'd ever published a game by another indie developer, and I found the journey incredibly eye opening. I've gone ahead and written up the story of how it all happened." ...

Games as revolutionary acts: Historians talk 1979 Revolution

April 29, 2016 01:30 PM

History Respawned's Bob Whitaker talks with historian Zackery Heern about the choice-driven narrative game 1979 Revolution: Black Friday, which is based on real history. ...

Fable developer Lionhead closes its doors for good

April 29, 2016 01:28 PM

"We can confirm that after much consideration over the six week consultation period with Lionhead employees, we have reached the decision to close Lionhead Studios." ...

Creating the paper-craft art style of Book of Demons

April 29, 2016 10:01 AM

"We put a lot of effort into making everything the way it looks now and the road to getting here was a really bumpy one. Hope you will enjoy the story of how it all came to life." ...