Amazon Game Tech Blog

New Asset Dependency System in Amazon Lumberyard 1.22 – Available Now

As our latest group of customers prepared their games for launch, they told us the most tedious part of shipping is figuring out which assets need to be in the final build. Today, we’re excited to release Amazon Lumberyard Beta 1.22, which introduces a fundamental change to the way Lumberyard handles game assets to make that process easier. When it comes time to release your game, packaging your assets is a simple set of steps in Lumberyard Beta 1.22 instead of a tedious, time-consuming task. You can download Lumberyard Beta 1.22 here.

A video game on your player’s device consists of two things: the code that runs and displays the game, and the game’s assets—the collection of objects (character models, textures, animations, AI, sound effects, etc.) that make up the game’s world.

As game developers iterate on a game, they constantly add, change, and delete assets as they find what does and doesn’t work. When a developer deletes an asset from a level, they typically don’t take the time to delete it from source control as well, so by the time a project is nearing release, many of the assets in source control are no longer in use by the game. One of our customer’s game contained 40 GB of assets in source control, but only used 4 GB of those assets in the actual game.

Developers in this position have a couple of choices. If the game is small, or if they have been judicious about deleting unused assets from source control, they can just ship all of their assets, which guarantees that all assets will be available to the game. On the other hand, players could download gigs and gigs of extra content they don’t need—and content you may not be ready to share. The current solution is to put a system in place to determine which assets are needed by the game, then package and ship only those assets. This can be a difficult and time-consuming task, and in this release of Lumberyard we are doing something about it.

The reason the most game engines can’t determine which assets are actually being used by a game is that assets do not store any information about other assets on which they depend. For example, a material asset (used for rendering) contains, among other things, references to multiple texture assets. If any of those textures are missing, the material will fail to load. The best case is that something doesn’t look right; the worst is that the game crashes. The developer would need to make sure that the material and all three textures were in the final set of asset packages.

Enter asset dependency tracking. Lumberyard’s new Asset Dependency Graph provides the means to determine the set of assets a given asset depends on. By recursively walking the entire dependency graph, the engine can easily determine the exact set of assets your game needs to run. So when it comes time to release your game, packaging your assets becomes a simple set of steps as opposed to a several days-to-weeks development effort.

Now that the engine can determine which assets your game needs, our next task was to build a tool that packages a game’s assets into one or more asset bundles (single files that contain many assets packed together). Further, we added the ability to create new asset bundles that contain only those assets that have been added, changed, or deleted since the last asset deployment. This allows a game developer to do incremental content releases with only those assets that have actually changed since the last time they were shipped. Your players won’t have to waste time and bandwidth downloading new content or re-downloading old content.

Finally, because Lumberyard provides source code and encourages developers to modify Lumberyard to fit their needs, we added multiple validation systems that will alert the developer if they have done something that interferes with Lumberyard’s ability to generate a correct asset dependency graph.

The Asset Dependency Graph has other uses as well. For example, it could be used to optimize order that assets are loaded or streamed to players, giving you even more control over the player experience and load times. Look for more improvements to our asset pipeline in future releases.

You can read the full release notes for Lumberyard Beta 1.22 here. Other improvements included updates to supported mobile operating systems, and fixes and improvements for Networking.

Please note, as we prepare for Microsoft Visual Studio 2019 support, Visual Studio 2015 is no longer supported. Visual Studio 2017 is the currently support version.

We recently released a centralized Tutorial Guide to make it easier to browse and find the tutorials you are looking for. You can find it here.

As always, we want to hear from you. We are continually updating our roadmap based on your feedback. You can reach us on our forums.