Lumberyard & Amazon GameLift Blog

SpeedTree 8 – Free for Lumberyard Developers

by Kevin Ashman | on | in Amazon, Lumberyard, Releases | | Comments

Following the release of Starter Game, we’re thrilled to give you another tool for building imaginative worlds in Lumberyard. Introducing SpeedTree 8 for Lumberyard, available free to all Lumberyard developers starting today. You can download it here.

The combination is a powerful one: take the industry-standard in 3D vegetation modeling, seamlessly integrate it with Lumberyard’s advanced rendering and lighting technology, and remove any subscription cost. The result is a faster, more intuitive way to create visually stunning worlds for your games. We can’t wait to see what you’ll build.

Over two years in the making, SpeedTree 8 comes with dozens of new features and enhancements. For a full list of updates, be sure to check out SpeedTree’s website. Here are some highlights you can look forward to in this release:

  • Full PBR material workflow and rendering – PBR rendering and a revamped material workflow give you more precise control over your maps. You can also adjust your models before exporting them into Lumberyard, saving you time and effort.
  • New Generators – Sometimes imperfections can make your trees appear more lifelike. With these new generators, you can create a variety of realistic features on your trees, including knots, fungi, gashes, and cavities.
  • New Shape Control – This feature allows you to easily bunch branches together, so you can achieve more natural, organic shapes in vegetation (such as the “broccoli” effect.) You can create large clumpy trees or small clusters within your tree branches.
  • New SpeedTree Library – Buy stock assets, including 2K leaf textures and 8K bark textures. Get access to thousands of species of trees from around the world—an incredibly diverse, high-quality collection of models and materials.
  • And much more – Including unlimited age variation; one-draw-call models with tiling textures, wind, and LOD; new techniques for low-poly branch structure modeling and mesh editing; and automatic vertex color painting for wind, with an in-modeler preview.

Getting SpeedTree 8 for Lumberyard is simple. Just visit the SpeedTree store and follow the steps to activate your perpetual license, which includes complimentary updates for the next year. There’s also in-depth documentation and a quick start tutorial to help you get started.

For more information on SpeedTree 8 for Lumberyard, you can check out our FAQ. And make sure to share your SpeedTree 8 screenshots with the Lumberyard community on Facebook, Twitter, and the forums.

Kevin Ashman has been working with game engine technologies since ’99, helping to build proprietary engine technologies, evaluating and migrating to commercial engines and middleware, and helping companies evaluate and migrate from their technologies to commercial game engines and middleware. He is now focused on the ecosystem of middleware and working with Lumberyard.

Now Available – Starter Game

by John Noonan | on | | Comments

Following the release of Lumberyard Beta 1.9, we’re excited to announce a big addition to our ready-to-use sample content. We call it Starter Game.

Starter Game is the first complete game sample to showcase the latest capabilities of Lumberyard, Amazon’s free AAA game engine. Think of it as a “what’s what” of engine features: component entities, real-time global illumination, 3rd person camera and locomotion, interiors and exteriors, particle effects—all of these come to life in Starter Game in a big way. It’s not just a quick path for getting started with the engine; it’s also a great example of what you can build today using Lumberyard.

We first gave you a glimpse of Starter Game at GDC 2017, and now we’re happy to give you the entire project for free, including full source and assets. Whether it serves as inspiration for a game of your own, or as a way of learning Lumberyard’s features, Starter Game is another tool for helping you reach your game dev goals.

Watch this video on how to download and install Starter Game.

In many ways, Starter Game started with you. We heard your requests for more sample content—please keep that great feedback coming by the way!—and then looked for ways to incorporate features from 1.9. So we started working with Climax Studios, known for their great work on Silent Hill: Shattered Memories and the Assassin’s Creed Chronicles series. With Climax’s decades of experience, and your great suggestions, Starter Game was born.

One feature that Starter Game leverages in particular is our new Component Entity system, which was recently updated in 1.9. This system provides a modular and intuitive way of constructing game elements, helping you create complex entities faster and with minimal effort. Starter Game uses the Component Entity system wherever possible, including Player Control, AI, UI and Particles. It also shows how this new system can be used in conjunction with legacy tools and APIs (e.g. terrain brush, FlowGraph, etc.), freeing you to adopt new features as you see fit.

In addition to components, another request we got from developers was to include an example of bipedal locomotion, since humanoids are the most common form of player characters. Enter Jack: the fully modifiable, two-legged robot of Starter Game, complete with a trailing third-person camera. You can learn from Jack’s setup, tweak parameters to change the feel, and bring it into your game to accelerate your prototyping. Jack also utilizes AimIK, an inverse kinematics system to point the held-weapon appropriately at targets, without creating bespoke animations. Thanks to AimIK’s procedural generation, you won’t need to create individual animations for every single angle or posture, saving you time and effort.

The world of Starter Game also takes advantage of Lumberyard’s voxel-based global illumination system, time of day editor, and sun trajectory tool. Lit by the sun’s angle at a particular time of the day, Starter Game shows off realistic effects like sun rays, long shadows, and volumetric fog across four square kilometers of terrain. Especially relevant for outdoor environments, the global illumination system is a great way to dramatically tweak the look and feel of your environment with just one single variable. We encourage you to play around with the game time to see how it affects the visual appearance of the world.

There’s a lot more to discover with Starter Game: waterfalls, a spaceship, indoor environments, and enemy robots—go check it out for yourself and let us know what you find! (Stay tuned for future content as well.) We’re excited to see what you build.

Be sure to share some of your favorite #StarterGame screenshots with our community on Twitter, Facebook, and the forums!

 

John Noonan has spent most of his career working on AAA console games, including the Crackdown and Halo franchises. As Executive Producer on the Amazon Lumberyard Content Team, John helps create inspiring content that demonstrates the capabilities of Lumberyard.

Now Available – New Particle Editor Features

by Trent Campbell | on | in Lumberyard, Releases | | Comments

Whether it’s adding atmosphere to environments or imbuing characters with special powers, particle effects help set the tone of your game. With the release of Lumberyard Beta 1.9, we’re excited to announce a slew of updates to the particle editor, introducing dozens of new features, a host of usability improvements, and new platform support — all intended to make creating visual effects quicker and easier. Let’s take a closer look.

Creativity meets efficiency
It takes time to bring a scene to life in a compelling and realistic way. Creating visual effects like fire, water, or smoke (or even using a particle system for motion graphics), can be a drawn out process. To help you work quicker, the particle editor includes a strength over lifetime curve on most attributes — both for emitter and particle lifetime. This feature helps you manipulate position, color, size, and other attributes in a simple, efficient way directly on the attribute itself. By combining animation over the particles lifetime with a curve also set on the emitter lifetime, you can achieve complex effects with a few simple steps.

Here’s an example of curves affecting particle size:

Another way Lumberyard 1.9 makes it easier to create complex effects is by integrating the particle system with the new component entity framework and EBus system. This integration provides a solution for adding per-entity-variety to particle effects at run-time, allowing you to set or script several attribute modifications to be event, time, or trigger based. The dynamic component attributes also provide the ability to set the influence of the strength curves shown above on a per entity basis.

We’ve also added a host of improvements to our GPU particles, bringing their feature support closer to that of CPU particles. One of these new GPU features is depth-based cubemap collision, which allows you to define an area around the emitter for particles to test against and achieve accurate view-independent collisions. Like CPU particle physics properties, these features can be tuned to interact with all or parts of your scene geometry. Lighting, wind, gravity and other rendering and physics systems are able to influence particles either globally or by local volumes, making your effects more believable and realistic.

New Emitters
We’re also excited to add five new emitter types to the particle effects system. When using these emitters on their own, or in combination with multiple emitter types, you can achieve very complex effects.

The new Point Emitter, for example, provides a spherical distribution emitter that you may be familiar with from other effects software. Whereas the Sphere and Circle Emitters provide less common features, letting you animate particles over relative axial coordinates.

You can animate streams of particles on standard XYZ coordinates with the Box Emitter, or confine them to a specified bounds on each axis. Additionally, the Beam Emitter can be used for more motion graphics type effects, as well as more organic beam results.

Create fast in a customizable environment
We’re always looking for new and creative ways to help artists move fast. To improve efficiency and iteration time, Lumberyard includes a dynamic library system that lets you work on several effects within the same environment — all without needing to reload particle effects or switch to another editor instance when working on a separate effect. Effect Libraries can contain many different particle systems categorized according to an artists needs. For example, a team might want to have all of the forest effects in a library named “Nature_Forest,” or libraries tailored to specific characters. In the library pane, you can interact with particle emitters by dynamically moving, parenting, grouping, and creating folders for organization in a hierarchy. In addition to displaying the attributes of selected emitters, this makes modifying any piece of an effect quick and efficient.

To maximize workflow efficiency, you can customize the Library, Attribute, and Preview panes in the particle editor. Attribute sections (such as movement, lighting, size, etc.) can each be docked and tabbed in the user interface and saved as a custom layout. In addition to customizing the interface, you can drag and drop a set of commonly used attributes into a unique custom attribute section and save for quick access. I always keep particle count, particle lifetime, color, size, and, speed in my custom attribute list. Since I’m constantly iterating on these five attributes, this helps me finish an effect and achieve the desired look with a base effect that’s fully optimized. Each layout or custom attribute pane can be shared across the team.

Samples and Testing Grounds
The Particle Technical Samples level is a great place to dive in and learn about these particle editor features. You can find it in the Lumberyard Samples project, which is the default project for any new install of Lumberyard. You can also check out our online tutorials to learn how to create a wide variety of stunning effects.

Here are a few samples you will find in this level:

“Creativity is contagious. Pass it on.” – Albert Einstein
The particle editor is a great example of how customer feedback has shaped feature development at Lumberyard. To learn more about using these new features, you can read our online documentation and visit our tutorials. As you familiarize yourself with the particle editor, we’d love to see the effects you’ve created. Be sure to show off your creativity in our particle editor forums. If you have questions or issues, we always appreciate hearing from you on the forums as well.

 

Trent Campbell has been directing art and animation in PC and console games for nearly fifteen years, including franchises like Star Wars, Aliens, and Dungeon Siege. Having joined Amazon in 2012, he now is Product Manager for graphics in Lumberyard. Aside from being an animation and visual effects nut, he enjoys telling stories through fiction writing and filmmaking.

Now Available – Lumberyard Beta 1.9

by J.C. Connors | on | in CloudGems, Lumberyard, Releases | | Comments

Today, we’re excited to announce the availability of Lumberyard Beta 1.9, our biggest release yet.

With over 473 improvements, fixes, and features, this release includes a new Player Account Cloud Gem for implementing player authentication in under 30 minutes, Component Entity workflow updates for building complex content faster, new GPU features and emitter types for the particle editor, so you can fill game worlds with visually stunning effects, and lots more. You can download Lumberyard Beta 1.9 here.

These improvements are a direct result of your feedback. We’ve talked in the past about kaizen – the Japanese word for “continuous improvement,” which remains one of our team’s core philosophies. Because of your great suggestions and ideas from GDC last month, we were able to reinforce our commitment to kaizen in some major areas of Lumberyard. Here are a few of them:

New Player Account Cloud Gem

One of the most common requests we got at GDC was to deliver more Cloud Gems. Released in February, our exclusive Cloud Gems Framework made it easier for developers to build and launch connected game elements (e.g. dynamic content, leaderboards, live messages) in as little as 30 minutes with one engineer. For this new release, we’re adding the Player Account Cloud Gem to Lumberyard’s growing collection of gems, providing a customizable, stand-alone solution for player authentication and management. If you’re looking to require a game key when players register for your game, or to store additional metadata for players in the cloud, the Player Account Cloud Gem will save you time and effort.

Here’s why. Traditionally, to implement a player account system yourself, you would need to setup a database service to store account information, implement secure hashes to protect player information, and then implement a service and e-mail system, so players can recover lost passwords and user IDs. You would also have to setup a login flow, identity caching, and expired authentication token renewal processes in the game client. This work could take several months for 2-3 engineers to accomplish, and if you got something wrong, there’s the risk your players couldn’t get into your game. With the Player Account Cloud Gem, this is simplified to just a few steps, so that one engineer can make it all happen in about 30 minutes. As a result, anyone can manage and update player data from the Cloud Gem Portal dashboard:

Component Entity Workflows

We also debuted the latest workflows for the Component Entity system at GDC this year. Because of your feedback, we were able to make some key improvements to this release, providing a more modular and intuitive method for constructing game and engine elements. The goal with the new Component Entity system was simple: to help developers create complex, working entities faster and with minimal effort, regardless of whether you are building a small, casual game, or a massive, AAA experience. Let’s look at some ways we’ve recently improved the Component Entity system.

First, the new Component Entity system employs reflection, serialization, and messaging to automatically expose features of components to designers, with no additional engineering required. This means you can drag-and-drop and edit component properties right in the Lumberyard Editor, creating fully cascading prefabs, which we call “slices,” in just a few clicks.

Second, to help reduce your effort and accelerate iteration, we made it difficult to create entities that don’t work. For example, if you try to add a duplicate component on the same entity (e.g. more than one static mesh), the system won’t let you make that mistake. If a component requires another component to function (e.g. the simple animation component requires a skinned mesh to work), we automatically add the dependency, so you don’t have to.

Third, we wanted to create more flexibility on how the new Component Entity system handles missing or mistaken configurations. An entity can now contain invalid and incompatible components, but we display any service problems with a new warning system. Warnings help you correct any problems and give you quick choices to fix missing dependencies. For instance, if you add a Primitive Collider without first adding a Shape, the Primitive Collider will suggest that you add a Shape, letting you choose the type of Shape you want in just one click. Until a Shape is added, the Primitive Collider doesn’t register, thus preventing runtime problems if you run the game before selecting a Shape.

Lastly, thanks to your feedback, we’ve also made new usability improvements to the Entity Inspector. The Inspector can now remember the order in which Components are added, allowing you to rearrange Components more easily through the right-click menu. (We’re also planning to add drag-and-drop in a future release.) We have also enabled cutting, copying, and pasting Components across entities, improved the search functionality to help you navigate large amounts of content, and redesigned the component UI to improve readability.



Particle Editor

The particle editor also received a big update this month. Moving out of preview with this release, the particle editor includes dozens of new features, usability improvements, and improved mobile platform support, so you can more easily create stunning visual effects for your game. You told us that you wanted simpler and more flexible emitter handling, so you could better achieve an epic scale of particle effects. You also wanted more specialized emitter types to help you iterate faster. With the release, you got it all. Lumberyard Beta 1.9 includes re-configurable emitter hierarchies for easily managing your emitter parent-child relationships, GPU feature additions for pushing hundreds of thousands of particles in an effect, and five new emitter types.

And More

There’s a lot more to Lumberyard Beta 1.9, so be sure to check out the full release notes here. Other highlights include a new one-step, express installation process, support for both Z-up and Y-up world coordinates in the FBX importer, improved search functionality for the Asset Browser, Component Entity and Lua support for the UI Editor and Twitch Metastream, support for versioned Gems, and much more.

Of course, it was impossible to address all of the great feedback that came out of GDC in just the last six weeks. We’re continuing to practice kaizen by aggressively iterating on workflows, improving engine performance, integrating new cloud capabilities, helping you build the most ambitious and highest-quality, multiplayer, live, and community-driven games. Please continue sending feedback and suggestions to our forums or by emailing us. The team loves hearing from you.

To get started with Amazon Lumberyard, please visit the Lumberyard website to download the engine. You can learn more about Lumberyard’s new features by watching our Tutorials, visiting the Forums, or reading through our Documentation.

Now Available – Lumberyard Beta 1.8, Introducing the Cloud Gems Framework

by J.C. Connors | on | in Amazon, CloudCanvas, Lumberyard, Releases | | Comments

AirplaneWe’re excited to announce the release of Lumberyard Beta 1.8, which you can download here. This release contains over 234 new improvements, fixes, and features, and introduces Cloud Gems Framework, a new framework designed to help you build popular cloud-connected features in as little as 30 minutes with one engineer.

As AWS, we are fortunate to work with many of the industry’s best game studios, from the earliest pioneers in mobile and social, like Supercell and Zynga, to PC and console developers with galaxy-sized ambitions, like Cloud Imperium and Leslie Benzies’ Everywhere. We’ve seen developers harness the cloud for innovation and growth, connecting players together at a scale that was previously impossible, enabling new forms of competition and gameplay, and giving their teams deep and real-time insights into what their players like – and don’t like – about their games.

Customers tell us that as important as the vast compute and storage of the cloud is to their successful games today, the cloud will become even more critical to the creativity and scale of the next generation of games. The amount of developer demand for connecting global audiences, using mass compute to push creativity, and building more social and multiplayer features, made “deeply integrated with AWS” a founding pillar of Lumberyard.

We define “deeply integrated” in two ways. One, we want to make it as easy as possible for you to build common connected elements, like multiplayer, social features, and dynamic and live content updates, in your game. We want you to focus on great gameplay, not hiring expert backend engineers and spending months or years building undifferentiated infrastructure. Next, we aspire to help you create fantastic new types of gameplay and real-time interactions made possible by massive on-demand, global compute and storage. Here, we’re inspired by the game teams thinking about procedural gameplay, complex artificial intelligence, and games of huge scale and incredible fidelity.

Lumberyard Beta 1.8’s new Cloud Gems Framework makes it easier for you to build and launch connected game elements, such as dynamic content, leaderboards, and live messages. With the Cloud Gems Framework, you can add a connected feature to your game in as little as 30 minutes, with one engineer, freeing up the rest of your team to think about innovation and player experience.

The Cloud Gems Framework is made up of the Cloud Gem Portal, a web application that lets anyone on your team visually manage your cloud features (e.g. scheduling messages, releasing dynamic content, or deleting a fraudulent leaderboard score), and Cloud Gems – modular packages of discrete functionality and assets that include everything necessary for a developer to include that functionality into their project, including backend and client functionality. Cloud Gems can be used out of the box in production, and they come with full source code in case you want to customize their behavior in whatever way you choose.

Cloud Gem Portal

Lumberyard Beta 1.8 includes three sample Cloud Gems to help you get started quickly:

Dynamic Content Cloud Gem
Many of today’s successful games are live and “always-on.” Teams want to be able to better engage players by adding and changing content frequently, with as little friction as possible to the development team. With a dynamic content backend, your team can quickly respond to player feedback, offer special characters, A/B test gameplay features, or just add new characters or levels to a game to extend its life – all without requiring your players to download an updated executable and install it themselves.

To build a dynamic content system yourself, you would need to stand up servers to host the content, create a scheme to specify what dynamic content is available, deal with versioning of the content, build tools to upload the content to your servers, write engine code that queries your server to see when content has changed, build a robust downloading and verification system, and finally write the code that hot-loads that content into a running instance of your game. This work could take 2-3 engineers several months to get right, and if this system fails, players may never see the content your team worked hard to create.

With the Dynamic Content Cloud Gem, you can package, upload, and deliver content to your players in as few as 7 steps:

  1. Enable the Dynamic Content Gem in Lumberyard Project Configurator
  2. Click “Upload Resources” from the Cloud Canvas Resource Manager
  3. Open the Dynamic Content Manager from the Editor’s AWS menu
  4. Create the manifest that lists your dynamic content
  5. Click “New Package” from the Dynamic Content Manager
  6. Drag and drop the assets you want to upload
  7. Click “Upload Packages” from the dynamic content manager. This puts the content in the cloud and marks it as private.

Once your content is uploaded to the cloud, you can use the Cloud Gem Portal to release your content immediately or schedule the content for release later, letting you determine exactly when players receive the updates to your game. When the new content has been downloaded by the player, the Dynamic Content Gem automatically loads the new content and makes it available in the game.

Leaderboards Cloud Gem
Competition is a great way to foster player community – in January, eight of the top ten games watched on Twitch were competitive multiplayer games. Adding a leaderboard to your game is a popular way to encourage competition in your community. Traditionally, to set up a leaderboard, you would have to provision database servers (in a scalable manner) to store the high score data, write and deploy REST endpoints to gather the scores, write a web-based console or other application to manage the high score data on the server, and teach client-side developers how to make appropriate network calls to send the player’s score to the REST endpoint. With the Leaderboard Cloud Gem, this is simplified to 4 steps that an engineer can accomplish in about 30 minutes

  1. Enable the Leaderboard Cloud Gem in Project Configurator.
  2. Click “Upload Resources” from the Cloud Canvas Resource Manager.
  3. In the Cloud Gem Portal, create as many leaderboards as you want based on the statistics on which you want to rank your players.
  4. Send the player’s score or other data to the cloud at appropriate intervals using simple calls to the Leaderboard component from script or C++.

The Cloud Gem Portal also provides a console for managing the players on the leaderboard, and allows an administrator to delete fraudulent scores and ban players that abuse the system.

Message of the Day Cloud Gem
Another way to foster engagement is by sending messages to your players at opportune moments, whether to notify them of special offers, new content updates, or send any other timely communication as you wish. Traditionally, you would need to provision and configure a set of scalable database servers, write a web-based application to manage the entry, modification, deletion, and scheduling of the message content, write REST endpoints to serve the message content, and write client-side game code to request the messages and display them. Using the Message of the Day Cloud Gem you can get there, again in 4 steps and about 30 minutes:

  1. Enable the Message of the Day Cloud Gem in Project Configurator.
  2. Click “Upload Resources” from the Cloud Canvas Resource Manager.
  3. In the Cloud Gem Portal, create and schedule as many messages as you want.
  4. Query the list of active messages from Message of the Day component using simple calls from script or C++.

We have more Cloud Gems in development, so if you have any particular cloud functionality you want to see next, let us know on the forums. Also, if you’re going to be at GDC next week, stop by the Lumberyard booth to meet the Cloud Canvas team and get a hands-on demonstration of Cloud Gems, or sign up for our GDC devday to watch us take a game from zero to cloud-connected in real time. We’ll also provide some glimpses at our future vision for how the AWS cloud can enable new types of gameplay and real-time interactions.

There’s lots more to Lumberyard Beta 1.8, too. You’ll find a streamlined information architecture of our menus in Lumberyard Editor, root motion animation support in the FBX importer, mobile and console support for the multiplayer sample, multi-UV support for meshes, language support in the UI editor, and more. For details on everything new in this release, check out the full release notes.

To get started with Amazon Lumberyard, please visit the Lumberyard website to download the engine. You can learn more about Lumberyard’s new features by watching our Tutorials, visiting the Forums, or reading through our Documentation.

Streamline Case Study: Accelerated Launch with Amazon GameLift

by Chelsea James | on | | Comments


About Proletariat

Founded in 2012 by five game industry veterans, Boston-based Proletariat is an indie game company focused on building innovative multiplayer experiences. They’re the masterminds behind the award-winning World Zombination, a massive online game where players work together to strategize with armies of zombies or humans to attack and defend cities. Their newest multiplayer game, Streamline, is built for audience interaction and allows streaming broadcasters and viewers to change gameplay rules in real-time during a match.

The Challenge

Proletariat announced Streamline at GDC 2016 in March and had planned to unveil their beta in September at TwitchCon 2016, the premier event for game streamers. But, when Amazon approached them with an opportunity to be included in the Twitch Prime public launch at TwitchCon 2016, Proletariat decided to accelerate their development to make Streamline available for everyone to play. Proletariat was excited but concerned that their custom game server solution was already too time-consuming to manage and lacked the functionality needed to support increased player demand.

Proletariat’s custom cloud solution was built around AWS Elastic Container Service (ECS), a container management service that makes it easy to manage applications on AWS EC2 instances. They manually operated basic game server functionalities, like running server health checks and connecting players to available game servers. These processes worked for their player load but would be too time-consuming to manage once Streamline became publicly available. Their custom cloud solution also could not identify which game servers had active game sessions. This meant that while they were manually scaling their server capacity, they could accidentally scale down an active game session and disconnect players from Streamline. It was also difficult to simplify testing because they could not run multiple game server processes on a single EC2 instance. Each game server needed a unique public port, but the team could not retrieve the public port number from inside its container.

Proletariat wanted to keep using AWS’s proven infrastructure to host their game servers, but it would take thousands of hours to build the functionality they needed. With TwitchCon 2016 fast approaching, Proletariat was introduced to Amazon GameLift; an AWS managed service that simplifies game server hosting and scales server capacity in minutes.

“For the team at Proletariat Inc., the choice was pretty simple – hire a team of engineers to spend months building out our cloud infrastructure, or deploy with Amazon GameLift in just minutes.” said Seth Sivak, CEO, Proletariat Inc.

The Implementation

Proletariat downloaded the Amazon GameLift Server SDK for C++, integrated it into their Unreal Engine game server build, and uploaded their game server to Amazon GameLift. To house their Unreal Engine game server, Proletariat needed to decide which of the 5 Amazon GameLift instance types would best fit their needs. “Being a real-time game, we needed network optimized Amazon GameLift instances, so we chose c4.xlarge.gamelift instances for our fleet,” said Cauê Waneck, Streamline’s Lead Engineer. ”Amazon GameLift lets us set our runtime configuration to support four game servers on each instance, which is perfect because our servers are single-threaded. This lets us leverage one game server process per vCPU, which greatly simplifies our testing and iteration processes.”

Proletariat used the AWS JavaScript SDK with Amazon GameLift to manage the creation of new game sessions between its custom-built Node.js matchmaking system and their C++ game servers on Amazon GameLift. They also used specific game session data to find game servers with available capacity for quick matches. This data helped them classify whether a server should accept new players and identify which game sessions had available player slots. “Amazon GameLift made it so easy for us to matchmake high volumes of players and reduce wait time. Amazon GameLift is super easy to implement and performs really well,” said Waneck. “It also helped us give our players the ability to host custom game matches because we could associate a game session with a party leader. “

Proletariat also activated Amazon GameLift’s built-in game session protection to prevent instances with active games from scaling down and taking players offline. “Amazon GameLift is like an insurance policy – it gave us peace of mind about server scaling, especially at launch,” said Waneck. “It was easy to set up and monitor using the Amazon GameLift console. We can also easily turn on automatic server scaling when we need it as well.”

The AWS Command Line Interface (CLI) with Amazon GameLift made it easier to launch new fleets and reuse commands when implementing logic in Proletariat’s build system. While deploying game client updates, Proletariat used simple commands to leverage Amazon GameLift aliases to transition players from one fleet to another with no downtime. Proletariat also used the CLI to launch its game servers in regions around the world in just minutes. “The Amazon GameLift team supported us the whole way through. It’s nice to know they are there 24/7 to help us tackle any operational issues, so we don’t have to,” said Waneck.

In just five days, Proletariat used Amazon GameLift to release Streamline with confidence at TwitchCon 2016. Amazon GameLift saved them thousands of development hours that they instead used to focus on polishing the innovative gameplay that lies at the heart of Streamline.

More information

Learn more about hosting and scaling dedicated game servers with Amazon GameLift. Read more about Streamline: playstreamline.com.

Now Available – VR Sample

by J.C. Connors | on | in Lumberyard, VR | | Comments

We’re proud to announce the availability of the Virtual Reality Samples Project, a set of three levels that demonstrates techniques used in the production of VR content. The new project, available as a standalone download here, showcases VR features including stereo video playback, haptic feedback, and spatial audio. These levels provide a starting point from which developers can build their own VR projects.

We believe rapid iteration is crucial to the development of great products, so we’re invested in making tools that are easy to learn and accelerate the creation of developers’ most ambitious projects. Last year, we re-architected the VR system to be more modular and scalable by moving device support to the Lumberyard Gems system, enabling developers to add support for any VR devices they desire. To further reduce iteration time, we implemented the “VR Preview” button to enable instant testing of VR applications directly from the Editor. Recently, in the Lumberyard Beta 1.7 release, we created platform-agnostic tools that let developers build once and deploy on multiple VR platforms in order to help eliminate the effort involved in working around platform-specific peculiarities. As we look to the coming months, our team is excited to continue to simplify and expand tools and samples that let developers build great VR experiences quickly. The VR Samples Project demonstrates many techniques used to more quickly create VR content, and we’d like to walk you through three specific examples:

Video Playback
We build our roadmap entirely from our customers’ needs, and video playback has been one of the most requested features for Lumberyard. For example, one of our VR customers wanted to record 3D video of scenes from an upcoming movie in order to develop a complementary VR experience with the release of the film. To help them achieve this, we added the Video Playback Gem in Lumberyard Beta 1.7, which allows video assets to be inserted into a game scene. When the Video Playback Component is added to any Component Entity in a scene, it will load and play back video up to 4K resolution at 60fps in mono or stereo. You can use either the Ffmpeg or LibAV libraries, which support every major video container and codec (e.g.MP4 with H.264 and H.265/HEVC, WebM/MKV with VP8 and VP9, MOV with the Quicktime QTRLE, and more). The video is rendered to a texture that can be applied to any surface in the world, and just like any texture, can have material effects applied to it. Because performance is especially critical to our VR customers, we designed the video playback system to make efficient use of render targets so that a single video can be rendered onto potentially hundreds of surfaces simultaneously with no loss in performance.

vr-sample-many-tvs

The Video Playback component can be placed on a sphere to create an immersive 360-degree video playback experience. To take advantage of any existing content you may have, the component accepts videos in top-bottom or bottom-top stereo and supports animated alpha masks with MOV video, which is useful for those who are experimenting with compositing video in a 3D scene.

The TV Room level provides a demonstration of the complete range of functionality of the Video Playback Gem using a TV model with a stereo video texture applied to it. You can switch between three different video styles showing 2D, 3D and spherical playback. The level demonstrates how to load video files to play on any surface, how to control video playback with Flow Graph or Lua, and how to set up stereo 360-degree videos. Try increasing the number of TVs in the sample from 1 to 100’s to see the performance for yourself!

vr-sample-tv-room

Motion Controller Haptic Feedback
Haptic feedback is an important feature of VR, because it can add subtle texture or bombastic feedback to enhance presence in your virtual world. Lumberyard’s force-feedback system has been updated to allow motion controllers to be receivers of force-feedback events, letting developers leverage all of the existing force-feedback functionality already present in Lumberyard. In Lumberyard Beta 1.7, we’ve updated the Oculus and OpenVR Gems to include haptic feedback for the Oculus and Vive motion controllers. As mentioned previously, the modular nature of the Lumberyard VR system lets developers author their own Gems to support the rapidly growing ecosystem of VR devices.

vr-sample-box-garden

The Box Garden level demonstrates four fundamental features of a VR application: haptic feedback, playspace control, motion controller tracking, and handling input from motion controllers. Haptic feedback is demonstrated using a Flow Graph script, which uses force-feedback envelopes specified in XML to author custom effect magnitude and duration. The playspace control gives access to the dimensions of the playspace for room scale applications. We demonstrate a general use-case of scaling floor space in the Box Garden level, but creative developers could theoretically use these outputs for any purpose, including scaling the number of entities that spawn in a space or scaling the objects within the space. The virtual motion controllers in this sample are linked directly to the physical motion controller transforms that are output from flow nodes. In the future, we will be moving this functionality to a simple drag-and-drop component that can be attached to any Component Entity, and switched based on the attached device ID, so you can support a wide variety of controller models using a single component.

Audio Production for VR
In order to provide a feeling of presence in an immersive VR world, players need to be able to reconcile the position of audio cues associated with visual activity in a manner that is consistent with the real world. VR audio tweaks the traditional 3D audio model to give you a more personal sense of listening in the environment. Game audio is traditionally “flattened” into a 2D field and spatialized about the listener based on their orientation, but with VR you need to do more. When you move your head around, the sound field needs to make sense to your brain. VR audio requires techniques to trick the ears into knowing if sounds are in front or behind you. We use filtering and micro-delays to approximate the time it takes for a sound to reach each ear individually to accomplish this effect

The Xylophone Sample was created to demonstrate spatial audio for our customers who are using the full licensed version of Audiokinetic’s Wwise with the Audiokinetic Oculus Spatializer plugin. The level lets you fire blocks at a giant xylophone that plays simple notes, and topple a giant set of dominoes set up in a pattern to play a familiar song. As you turn your head to look around, you should be able to naturally pinpoint where the sound is coming from.

vr-sample-xylophone

SDK Updates in Beta 1.7
Lumberyard Beta 1.7 also updates the Oculus SDK from 1.5 to 1.9, and OpenVR SDK from 1.0.0 to 1.0.3. Please see our release notes for further information.

What’s Next?
VR is still in its infancy and we’re excited to see what emerges as ambitious developers strive to create spectacular VR experiences. Our team is excited to work with those customers, and provide the tools they need to explore this new frontier. If you’re going to be at GDC this year, please swing by our booth to meet the Lumberyard VR team, check out the technology we’re currently working on, and tell us about the things you’d like to see in the future. And if you’re not going to be at GDC, please let us know what we can do to help on the forums.

Download the VR Sample Project here.

 

About Our Contributors

Andrew Goulding has shipped games on every major platform since the Game Boy Advance, working in gameplay engineering, design, production, and writing. He’s been at Amazon for over two years and is one of the Lumberyard VR team’s senior engineering leads. He spends his time dreaming up and building tools that will enable virtual and augmented reality to revolutionize entertainment, business and social experiences.

In Young Yang joined Amazon in 2015, bringing experience from popular AAA projects, including the Halo and Tom Clancy series. In her current role as content lead on the Lumberyard VR team, she is excited to explore new technologies that can deliver transformative and immersive user experiences.

Now Available – Lumberyard Beta 1.7

by J.C. Connors | on | in Lumberyard, Releases | | Comments

It’s hard to believe it’s been less than a year since we launched Lumberyard. Customer response and engagement with Lumberyard have exceeded our expectations, and we’re really excited to accelerate our progress for customers in 2017. We are getting continuous feedback from game developers of all types, including some of the industry’s most ambitious developers, like Cloud Imperium, who are building incredible connected worlds. Today, we are excited to kick off the new year with our biggest release since launch – a direct result of the great feedback we have received from customers. Lumberyard Beta 1.7 includes more than 403 new features, improvements, and fixes, which you can now download here.

There is a lot to like in this month’s release, and I want to call out some of the updates that make Lumberyard easier to use and more accessible to professional game developers. As our team thinks about accessibility, we also want to make sure that our choices never block you from achieving your vision, no matter its sophistication or quality, or the size and makeup of your team.

One of the most important ways we measure accessibility is asking, “how quickly can customers get an asset into the engine and iterate?”  One of the most repetitive tasks for game developers is creating and managing project assets. For artists, designers, and gameplay engineers, this happens hundreds or even thousands of times a day, so we believe if we can make handling an asset even a few seconds faster, we can make a big difference to your team’s speed. Our strategy for achieving acceleration is with Lumberyard’s Asset Processor and, new to Lumberyard Beta 1.7, the Asset Browser. With the Asset Processor, you can get assets into the engine nearly instantly. You simply save a file (for example, from Maya or Photoshop) into a folder, and the Asset Processor automatically processes that file from source art into game-ready assets. If you go back and edit an asset, Lumberyard knows about the change and updates it automatically in the background, in a few seconds, with zero effort on your part.

With the new Lumberyard Asset Browser Preview in 1.7, you can now see all of your available assets (including source folders and files in editor, gem, and project folders) in a familiar view in the Editor, and use those assets in your scenes by drag and dropping. Having the ability to access source assets in just one step from the Editor dramatically speeds up iteration, especially when your project uses complex source assets that can produce multiple outputs (e.g. a single .fbx file that contains both meshes and materials). Also, the new Asset Browser automatically updates itself as assets are changed, removed, or added, using the Lumberyard Asset Processor.  The Asset Browser’s underlying APIs are exposed to the Lumberyard bus system, so if you are writing your own plugin or controls, you have access to rich information about the assets, for example file size, name, location, what source produced the asset, and what other assets were produced at the same time.

Another way we think about accessibility is in the layout and information architecture of the Lumberyard Editor itself. There are hundreds of features accessed through the Lumberyard Editor, ranging from the fundamental (e.g. material editors and lighting tools) to the genre-specific (e.g. road and river tools). The quantity of features, which naturally grows over time, can become more difficult to learn, if not organized efficiently. Additionally, best practices evolve over the years, as both game teams create new specialized roles, and DCC tools evolve. To this end, Lumberyard Beta 1.7 gives you a look at some of the changes we are making to the core Editor UX to make Lumberyard more accessible, without losing any of features that enable you to build the highest-quality, most ambitious games. You’ll notice the default Editor layout itself looks a bit different:

Lumberyard Editor

(If you’ve already installed a previous version Lumberyard, we don’t overwrite your current layout, but you can switch to the new layout by selecting View – Layouts – Component Entity Layout)

What you see above is the first phase of our Editor UX improvements. We’ve interviewed many game developers, both internal and external, and have begun reorganizing and streamlining the main editor interface based around the new Component Entity system and the feedback we’ve received from our customers. Previously, to create a game object you had to select between 12 different object types, and then navigate multiple layers of the Rollup Bar to customize them. Now there is one type of game entity, which you can create with a simple right click. Editing an entity’s components, selecting files to be used on that entity, and toggling between all of your level’s entities all happens in the main window. You can also create nested prefabs of entities (“slices”) just as easily – just right click on the main window.

Next on our UX team’s list is to streamline the toolbar and top menu, while still giving you the ability to deeply customize your layout based on your role or preferences. We’re collecting more data and feedback from customers – if you have ideas, we want to hear about them. Please let us know on our forums, where you can see a preview of where we are heading next.

For mobile developers, “easy to use” also means being able to deploy a game from the Editor to a device in as little time as possible, so you can go from editing your game to playing it. Lumberyard Beta 1.7 includes a new Deployment Tool in the Editor, so you can deploy release, profile or debug builds from the Editor to your Android device in as little as seconds, with just one click. Previously, your engineers had to rely exclusively on command line tools to deploy a mobile build. Now, anyone on your team can deploy an Android build to a device from the Editor.

In addition to helping you iterate faster by making the Editor more accessible, our team spends a lot of time thinking about ways to continue making it easier for you to build multiplayer games. 80% of the top PC and console games feature multiplayer, and 90% of the top games streamed on Twitch are multiplayer games. So it’s no surprise that we continue to get positive feedback from game developers when we release systems and services to make multiplayer easier than with other engines. To this end, our networking team has released a brand new multiplayer sample built entirely using Component Entity workflows and our high-performance networking layer, GridMate, which is designed for efficient bandwidth usage and low-latency communications. In less than 30 minutes, you can have the new sample up and running, and use it for a starting point for your own multiplayer game or prototype. The sample currently supports PC, and we’ll expand it to support mobile and console platforms soon.

Lumberyard Multiplayer Sample

These examples are just a sampling of the changes we’ve made in our continuing journey to make Lumberyard a world-class and easy-to-use engine that can create fantastic community-driven games. That said, we’re just getting started. As the industry evolves, more people play, and fans demand even higher quality content, we’ll continue to improve your ability to work fast, achieve your most ambitious vision, and build a game your fans will love, regardless of whether you are an engineer, artist, game designer, or a new role that hasn’t been invented yet.

There’s lots more to this update, too, including Visual Studio 2015 support, spherical video playback support for VR, integration with Perforce Helix, UX improvements to our Geppetto character tool, new component entities that support audio, lighting, compound shapes, and animation, updates to Twitch ChatPlay and Metastream, integration with the latest AWS 1.0.24 SDK, and more. For details on everything new in the Lumberyard Beta 1.7 release, check out the full release notes here.

To get started with Amazon Lumberyard, please visit the Lumberyard website to download Lumberyard. You can learn more about Lumberyard’s new features by watching our Tutorials, visiting the Forums, or reading through our Documentation.

Protect Multiplayer Game Servers From DDoS Attacks Using Amazon GameLift

by Hok Peng Leung | on | in Game Dev, GameLift | | Comments

Today’s most successful multiplayer games connect millions of gamers around the world. The spirit of competition and gameplay is amplified when players connect online. With the rise of multiplayer gaming, there has been an increase in the frequency and intensity of cyber-attacks that disconnect players from their favorite games and leave them disappointed. A common type of malicious attack that blocks players from game servers is a distributed denial of service (DDoS).

DDoS attacks work by targeting a game’s network layer, flooding servers with massive numbers of requests until performance grinds to a halt. These attacks can severely limit a game’s availability for players and degrade the player experience for those who can connect. Game developers’ inability to prevent attacks–or quickly respond to and mitigate them–can erode the trust they have earned with customers.

This blog post uses a typical game server architecture to highlight DDoS attack vulnerabilities, and discusses how to stay protected using AWS’s built-in cloud security, AWS security best practices, and Amazon GameLift’s security features.

Multiplayer Games on Amazon GameLift
Most games hosted on GameLift follow a typical architecture, as shown in Figure 1. To use GameLift, game developers take the following steps:

  1. Integrate the Amazon GameLift SDK into their game server and upload it to GameLift.
  2. Set up a fleet of EC2 instances in the GameLift console.
  3. Enable a game client to communicate with the GameLift service and connect to GameLift-hosted game servers.
  4. Optionally, set up developer-managed auxiliary game services, such as for matchmaking or player authentication.
  5. Manage GameLift fleets over time, including scaling resources to meet changing player demand.

Figure 1. Game server architecture using Amazon GameLift

As illustrated in Figure 1, the Amazon GameLift service and game server computing resources used by GameLift are built on AWS infrastructure. AWS protects the availability of the AWS global infrastructure, as well as services like GameLift and Amazon EC2.

AWS infrastructure is DDoS-resilient by design and is supported by DDoS mitigation systems that can automatically detect and filter malicious traffic. Attacks against the AWS infrastructure can be large scale and consist of layer 3 attacks (e.g. UDP reflection) or layer 4 attacks (e.g. SYN floods). These attacks are designed to flood the network, causing legitimate requests to be dropped or delayed. Layer 3 and 4 attacks generally have clear, unambiguous signatures. AWS continually monitors our global infrastructure and engages our DDoS mitigation capabilities as needed to protect the targeted service.

Although game servers that are hosted on AWS benefit from AWS infrastructure protections, game servers have their own points of vulnerability. Attackers may try to use valid requests to consume all available resources, making them inaccessible to legitimate players. They may also try to directly bombard game servers with invalid requests in an attempt to crash or compromise the server. While it is impossible to protect against all conceivable DDoS attacks, there are a number of steps you can take to reduce your risk.

Best Practices for Protecting your Game Servers on Amazon GameLift
To increase protections for your game servers, consider implementing the following best practices. These measures include taking advantage of special GameLift features and applying a set of AWS Best Practices for DDoS Resiliency to securing your game servers hosted on GameLift.

      1. Deploy your game to multiple regions
        Deploying your game server in multiple regions provides redundancy that makes it more challenging for an attacker to take down your entire game globally. Figure 2 shows the regions supported by Amazon GameLift.

        Figure 2. Amazon GameLift Region Availability

      2. Distribute players across many instances
        By using Amazon GameLift, you have the opportunity to distribute player load across many instances. This distribution prevents your game from experiencing a 100% outage for all players in the event that an instance gets compromised. Setting your fleet’s minimum capacity to two or more instances ensures that only a fraction of your players are affected if any one instance fails.
      3. Pick an adequately large instance size with additional capacity to absorb malicious traffic
        When creating an Amazon GameLift fleet of computing resources to host your game servers, choose an instance type with the size and computing power that best suits your game. GameLift supports many different AWS instance types to choose from to build your fleet, such as t2.micro, c3.large, and r3.8xlarge. Each instance type has different capacity for compute, memory, storage and network bandwidth. In order to determine which instance type to use, you should run your game server under valid stress scenarios (e.g. connect a maximum number of players to the game server) and ensure that your game server can process the request with additional capacity to spare. The amount of additional capacity you allow will determine the size of the attack your server can tolerate without impacting the players.
      4. Autoscale your server capacity to absorb a DDoS attack
        Use Amazon GameLift’s autoscaling feature to quickly increase capacity to absorb a DDoS attack. GameLift allows you to configure autoscaling rules in order to horizontally scale your fleet to satisfy an increase in player requests. Increasing capacity by allowing your fleet to scale up provides you with additional time to respond to the attack. When autoscaling with GameLift, a maximum capacity limit is required to prevent over-spending. See the Amazon GameLift documentation for more information on how to Set Up Fleet AutoScaling.
      5. Enable resource protection for your game
        Amazon GameLift’s resource protection feature prevents one player from creating an excessive number of game sessions and consuming your available resources. GameLift lets you set a resource creation limit policy, which specifies the maximum number of game sessions that one player can create within a specified period of time. A policy applies to all resources in a fleet.

          1. To add a resource creation limit policy to an existing fleet, use the AWS CLI command update-fleet-attributes. The example below sets a fleet’s resource creation limit policy such that no one player can create more than two game sessions within a five-minute period. If the request is successful, the fleet ID is returned.
            --Enable resource protection on a fleet--
            PS H:\>aws gamelift update-fleet-attributes --region us-west-2 --fleet-id 
            fleet-b3f84103-8928-48cb-89c2-2c1cd0f9d35e --resource-creation-limit-policy 
            NewGameSessionsPerCreator=2,PolicyPeriodInMinutes=5
            {
            "FleetId": "fleet-b3f84103-8928-48cb-89c2-2c1cd0f9d35e"
            }
            

            Figure 3. Enable resource protection on a fleet

          2. To view an existing resource creation limit policy for a fleet, use the AWS CLI command describe-fleet-attributes. If successful, a set of attributes for the specified fleet is returned, including any resource creation limit policy in force.
            -View the resource creation limit policy on a fleet-
            PS H:\>aws gamelift describe-fleet-attributes --region us-west-2 --fleet-id
            fleet-b3f84103-8928-48cb-89c2-2c1cd0f9d35e
            
            {
             "FleetAttributes": [
             {
              "Status": "ACTIVE",
              "Description": "Test fleet",
              "BuildId": "build-14719bed-30ec-4c59-9da7-ac03437d0689",
              "CreationTime": 1478131210.71,
              "NewGameSessionProtectionPolicy": "NoProtection",
              "FleetId": "fleet-b3f84103-8928-48cb-89c2-2c1cd0f9d35e",
              "ResourceCreationLimitPolicy": {
               "NewGameSessionsPerCreator": 2,
               "PolicyPeriodInMinutes": 5
              },
              "LogPaths": ["C:\\game\\serverErr.log",
              "C:\\game\\serverOut.log"
              ],
              "OperatingSystem": "WINDOWS_2012",
              "Name": "Test_0b1dd591-2318-4691-9314-c01c42f3da36_Fleet"
             }]
            }

            Figure 4. View an existing resource creation limit policy on a fleet

      6. Validate new player connection requests
        In Amazon GameLift, a player joins a game by sending a request to the GameLift service, receiving game session information, and then connecting directly to the game server. When GameLift receives a join request, it finds an open player slot in a game session and reserves it for the player, then responds with the game session’s IP address, port, and a player session ID. When connecting to the game session, the game client includes the player session ID. As a best practice, your game server should validate the player session ID with GameLift before allowing the player to join the game. Validating the player session ID prevents other game clients from joining the game and stealing the reserved slot. This is done with a call to the Server API action AcceptPlayerSession.The C++ code snippet in Figure 5 illustrates how to verify that a new player connection is using a valid player session ID.

        -On your game server, validate the playerSessionId-
        void ReceiveConnectingPlayerSessionID (Connection& connection, const Aws::String&
        playerSessionId)
        {
         Aws::GameLift::GenericOutcome connectOutcome = 
                Aws::GameLift::Server::AcceptPlayerSession(playerSessionId);
        		
         if(connectOutcome.IsSuccess())
            {
                connectionToSessionMap.emplace(connection, playerSessionId);
                connection.Accept();
            }
            else 
            {
                connection.Reject(connectOutcome.GetError().GetMessage());
            }              
        }

        Figure 5. C++ code to validate the player session ID

      7. Detect and filter out invalid or malicious requests
        We recommend that you design your game server to take steps to detect and filter out malicious traffic as soon as possible. Here are our recommended steps (to be done in order):

        1. Ensure that your server keeps running even when capacity is exceeded. The first and cheapest way is to decline any excessive requests that the server cannot process. This can be done by enforcing a maximum number of concurrent requests at the server or, if possible, at the load balancer.
        2. Authenticate new player connections before processing a request. Authenticating players gives you an easy way to filter out any requests from non-signed-in users. Additionally, it gives you an identity you can use to track the player’s request pattern. Choose a player authentication mechanism that is difficult to automate. This makes it much harder for attackers to generate the high number of players needed to DDoS your server. Two good methods for proving that human processing has occurred during sign-in are captchas and proof-of-work, which requires the player to perform a non-negligible computational task.
        3. Define your game application network protocol and validate the input thoroughly to filter out any malformed requests. Invalid requests can cause the server to crash; this is one way an attacker can inject malicious code to run on the server and cause buffer overflow. We recommend that you perform extensive penetration testing against your network protocol to ensure that only valid inputs are processed.
        4. Limit the scope of access granted to a player. For example, a regular player should not be able to successfully call administrative operations.

Recap
While it is impossible to build a game server architecture that is completely resistant to DDoS attacks, you can deploy game servers that are not easily impacted using AWS and Amazon GameLift. This blog lays out a three-tiered approach to prevent or mitigate DDoS attacks: (1) rely on the built-in protections of AWS infrastructure and services, (2) take advantage of GameLift-specific features such as resource protection, autoscaling, and new player validation, and (3) implement some core best practices, such as those described in Best Practices for DDoS Resiliency to stop malicious requests and prevent them from sneaking through.

Hok Peng Leung joined Amazon in 2014 as the Head of Software Development for Amazon GameLift. He’s spent 11 years building large scale gaming services that have set industry standards for online gameplay experiences. Prior to Amazon, Hok worked at Microsoft and helped to ship both Xbox 360 and Xbox One.

 

Lumberyard in 2016 – Looking Back, Looking Ahead

by J.C. Connors | on | in Lumberyard, Releases, Twitch | | Comments

December is a busy month for teams at Amazon, and the Lumberyard group is no exception. There’s lots of bustle in our four offices as we wrap up features for the next release, look deep into the data from our last user test to see areas we can improve, review animatics for the GDC surprises we have in store, and leap into action when one of our customers gives us a call with an idea or an issue to solve. While our team will get some time off to relax and get caught up on the latest video game releases (Titanfall 2 and Planet Coaster are on my list), we’ve much to do before that happens.

As important as it is to look forward, it’s also important to look back. Lumberyard was launched into Beta on February 9 this year, and a lot has happened since:

Lumberyard 2016 Infographic

February – Lumberyard 1.0 launched as a free, AAA game engine deeply integrated with AWS and Twitch… and the world got another tool to battle zombie outbreaks, thanks to our diligent (and creative) legal team.

March – Lumberyard 1.1 launched with 208 new improvements, new features, and fixes, including a preview of our new Component Entity system, designed to make it easier for engineers and content creators alike to create gameplay in Lumberyard. Mobile support for iOS and Android launched, along with integration with Allegorithmic’s Substance, and a new FBX importer. March was also the first time many of you got to meet our team in person, at the 2016 Game Developers Conference in San Francisco. Thousands of people traversed our booth, and we introduced you to Rin, in beautiful high-dynamic range:

Rin in HDR

April – Lumberyard 1.2 launched with over 218 improvements, new features, and fixes. We called this release a “kaizen” release – Japanese for “continuous improvement” – as we believe it’s important at times for our team to relentlessly improve what is already in the engine, based on our customer feedback. We’ve learned in our experience making games that many times it isn’t the big new feature that accelerates teams, but the nuts and bolts quality of life improvements – interface tweaks, performance increases, cutting a task down from five steps to three steps, etc.

June – Lumberyard 1.3 launched with over 130 improvements, and became one of the first game engines with support for HDR displays. This release also included modular VR support, so you can more easily build games for any of the dozens of VR devices that are launching in the next year. Our own artists were especially excited for the other features in this release, including volumetric fog, improved motion blur, height mapped ambient occlusion to bring out subtle details and depth cues in terrain, and more performant depth of field effects. We also improved iOS performance by 15% in this release.

July – Several of our team’s veterans stormed Siggraph, broadcasted live on Twitch, and talked about the future of Lumberyard. Hao Chen, who leads our graphics vision and has many, many Halo games on his resume, talked about the explosion of display complexity happening today and tomorrow. Eric Schenk talked about leading technology teams, from his days at Radical and EA-Frostbite and, now, here at Amazon. And Pat Wyatt, who was one of the leaders of Blizzard’s Battle.net and ArenaNet, talked about the importance of connectivity and community in today’s games.

August – Lumberyard 1.4 launched, with 230 improvements, new features, and fixes. Whereas the previous release made artists smile, this one was for gameplay engineers, with a new Lua editor and profiling tools to help them iterate more quickly on complex gameplay. This release also let you build more cost-efficient multiplayer games, as GameLift announced support for hosting more than one instance of your game’s server code, or one or more instances of multiple game servers, on a single EC2 instance.

September – Lumberyard 1.5 launched with 210 improvements and a brand new feature — the Lumberyard Asset Builder SDK, which lets you add custom asset types to Lumberyard’s Asset Processor, which itself automatically processes game assets behind the scenes as you work. This release also included support for OSVR and dozens of improvements to the Component Entity system based on the feedback we’ve been hearing from our customers.

TwitchCon 2016 blasted off this month, with over 41,000 attendees, and Amazon Game Studios revealed three new games, built on Lumberyard, including an in-depth look at Breakaway, a 4v4 team battle sport. Our networking and GameLift teams were excited to finally be able to talk about Breakaway, since it so heavily utilized GridMate, Lumberyard’s robust, flexible, and low-latency networking subsystem, as well as GameLift to automatically scale its multiplayer sessions on AWS. Breakaway also demonstrated Twitch Metastream, a new Lumberyard feature that lets Twitch streamers look like the pros, letting them deeply customize broadcasts of your game. Streamers can use any HTML tool to create and display dynamic real-time graphics based on the data you provide.

Twitch Metastream in Breakaway

October – This month, the Lumberyard team opened a new location in Austin, Texas, one of the long-standing centers of gravity for great game development talent and innovation in community-driven games. Although it’s only been a handful of weeks since they joined, our Austin team is already moving fast. We have new staff members joining us not only in Austin before the end of the year, but at all of our locations (and if you’re interested in joining us, we’re still rapidly hiring for next year).

November – Lumberyard 1.6 launches, with 337 improvements, new features, and fixes, a new record for our team’s velocity. This release included Twitch Metastream, support for Linux dedicated servers, a suite of new components, new Cloud Canvas functionality that helps you choose between multiple deployments (e.g. test or release) of AWS resources when launching your game and to protect your live deployments against inadvertent modifications, and an 8.4GB reduction in our initial installation size.

Our team also spent several days game jamming with Lumberyard, to put the engine and new systems through their paces. Like most game jams, the end results were often hilarious, but full of learnings for the team, which will result in many quality-of-life improvements in the upcoming releases, especially around component entity, scripting, and slice workflows.

lumberyard-gamejam

Now we’re well in December, and putting a bow on the features coming in Lumberyard Beta 1.7, which you will see early next year. This new release is our biggest one yet. We’re currently tracking over 400 improvements, new features, and fixes, which we believe reflects our growing team, the culmination of many months of development, and more and more customers like you giving us feedback. Beta 1.7 includes Visual Studio 2015 support, the ability to deploy Android builds directly from the Editor, dozens of improvements to Component Entity workflows, Cloud Canvas support for consoles, and lots more that we’ll tell you about next month.

When we started Lumberyard, we had tremendous conviction that a free AAA game engine, deeply integrated with the cloud and a massive community would help developers move faster and better engage players in the types of experiences fans are demanding today. Our vision is not to settle with the premise of creating a world-class engine alone – we aspire to help you create experiences that would otherwise be impossible to build today. While we’ve worked hard this year and had a lot of fun in the process, it is still day one for us, and we’re looking forward to delivering more improvements, more “cloud and crowd” features, and more big ideas next year.

If you have some great big ideas, or feedback for us, we’d love to hear from you. Happy holidays from the Lumberyard team.