{"id":125759,"date":"2022-06-16T20:15:36","date_gmt":"2022-06-16T20:15:36","guid":{"rendered":"http:\/\/BungieNet_ContentItem_51438"},"modified":"2022-06-16T20:15:36","modified_gmt":"2022-06-16T20:15:36","slug":"engineering-values-handbook-player-experience-first","status":"publish","type":"post","link":"https:\/\/sickgaming.net\/blog\/2022\/06\/16\/engineering-values-handbook-player-experience-first\/","title":{"rendered":"Engineering Values Handbook \u2013 Player Experience First"},"content":{"rendered":"<p> (Not sure what this post is about?&nbsp; Check out <a href=\"https:\/\/www.bungie.net\/en\/News\/News?aid=51421\"><br \/>\nLiving Bungie&#8217;s Values as Engineers<\/a>.)<\/p>\n<p>On to the second Bungie Value!<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.bungie.net\/pubassets\/pkgs\/168\/168788\/value2.png\" alt=\"Player Experience First\"><\/p>\n<div>How do we live this as engineers?&nbsp; This turned out to be a bit simpler than <a href=\"https:\/\/www.bungie.net\/en\/News\/News?aid=51422\"><br \/>\nTeams are Stronger than Heroes<\/a>\u2014we think it\u2019s just these four main points.<\/div>\n<div class=\"collapsible\">\n<p>Our technology ambitions are led by our creative aspirations.<\/p>\n<div class=\"collapsible-body\">\n<ul>\n<li><b>All our engineering work is ultimately in service of our games<\/b>, including work on tools, data pipelines, game clients, operations, security, and services.<\/li>\n<li>Sometimes we pursue world-first tech innovation to unlock a critical player experience, but we prefer to recombine existing best practices to enable experiences with high flexibility and reliability\u2014<b>we&#8217;re at our best as remixers and perfecters.<\/b><\/li>\n<li><b>We make games first and game technology second.<\/b><\/li>\n<li><b>We prioritize opportunities to adopt known off-the-shelf solutions to reduce our support surface and risk<\/b>, even at higher overall cost.<\/li>\n<\/ul>\n<p><small><\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<td><i>\u201cThe best games emerge when technology is a partner in the creative process\u2014unlocking new possibilities, upgrading ideas, and joyfully creating something new together. I\u2019ve found as an AI engineer, the code you write contains countless micro-scale design decisions, so it\u2019s critical that you are aligning every day with your design partners. Going all the way back to Oni and <a href=\"https:\/\/www.bungie.net\/en\/aboutus?page=publications&amp;publication=12667\" title target>Halo: Combat Evolved<\/a>, and in <a href=\"https:\/\/www.bungie.net\/en\/aboutus#page=publications&amp;publication=12670\" title target>all our<\/a> <a href=\"https:\/\/www.bungie.net\/en\/aboutus#page=publications&amp;publication=12676\" title target>projects past<\/a> and <a href=\"https:\/\/careers.bungie.com\/jobs\/3932545\/unannounced-project-gameplay-engineering-lead\" title target>future<\/a>, we\u2019ve strived to build those tight partnerships between individual engineers and designers. That\u2019s where the magic happens.\u201d<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/i><b>Chris Butcher, 2000-<\/b><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><\/small><\/div>\n<\/div>\n<div class=\"collapsible\">\n<p>We care about ultimate outcomes, not just fulfilling specifications.<\/p>\n<div class=\"collapsible-body\">\n<ul>\n<li>We don\u2019t rely on leads or architects above us to get everything right, and <b>we don\u2019t blindly implement specs<\/b> that are handed to us\u2014<b>we care how our work will ultimately show up<\/b> in a workflow, internal service, or player experience. Therefore, <b>we ask questions and suggest ideas regardless of our level<\/b> (see: Strong Ideas Loosely Held). It&#8217;s possible to take this too far and &#8220;go rogue&#8221; or be too disruptive, so we balance this by maintaining good alignment with our managers, teams, and stakeholders.<\/li>\n<li><b>After delivery, we stay in close touch with customers<\/b> to make sure our work is really having the desired impact.<\/li>\n<li><b>If an ecosystem isn\u2019t working for customers, we believe something should change<\/b>, even if our code is fantastic and performing as-designed.<\/li>\n<\/ul>\n<p><small><\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<td><i>\u201cOne thing that surprised me a lot about the User Interface (UI) team I\u2019m on is how much discussion time we spend on the \u201cplayer experience,\u201d beyond just the specific UI feature work we each need to do. The experience of our features is not driven just by those with the User Experience (UX) roles, but by everyone on the team giving their own input as a player themselves and from their perception of the player community. We all actively contribute to shaping ideas into the (hopefully) wonderful player experiences that they become. Not by our designated role, or by our job profile, but purely because we aspire to create an enjoyable experience that the players will love. There\u2019s a lot of sharing of ideas early and often on my UI team, and there is also a lot of sharing across all of our UI teams to get more opinions into how we can create the best possible experience. Finding a better idea and then going through and modifying a feature we already spent a lot of time on can be really disruptive to our schedule, but it\u2019s worth considering because the ultimate outcome is often more important than finishing something simply and swiftly.\u201d<br \/><\/i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>Mason Coram, 2020-<\/b><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<td><i>\u201cI remember a lot of debate and scheduling friction about a reward recovery system that would move items from one inventory bucket to another at different game transition times, to save them from deletion. This was in the Destiny 1 M3 playtest era (2013), and cutting features due to time was getting more common as we barreled towards launch. The reward recovery system survived because of a player-experience -first story: \u201ciImagine how bad it would feel as a player to see the sweet rare exotic loot bauble of your dreams spawn and, due to bugs in other systems like physics, roll away inaccessibly or vanish on network disconnect.\u201d That reward recovery feature still exists as the &#8220;postbox&#8221; where people currently store more stacks of things than they should have.<\/p>\n<p>&#8220;I also remember delaying the initial rollout of the microtransaction (MTX) commerce system by several quarters to add player-first features. We really wanted to roll out MTX quickly to offer new avenues of cosmetics, so all delays were painful. The most involved delay was for a vendor refund system, which let you actually return purchased MTX items and get back spent Silver for a limited time. It was really costly to build the UI, it added a lot of tech and design debt, and we predicted it would get little use, so it was pretty unloved across the board as a standalone feature. We still did it though. Even with all of its drawbacks we felt a return system for &#8220;store credit&#8221; would be a key part of a responsible MTX rollout, because it would minimize player regret with an unfamiliar new system.&#8221;<\/p>\n<p><\/i><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>Chris Chambers, 2011-2018 and 2021-<\/b><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><\/small><\/div>\n<\/div>\n<div class=\"collapsible\">\n<p>We drive down toil so we can spend more time delighting players.<\/p>\n<div class=\"collapsible-body\">\n<ul>\n<li><b>We seek opportunities to reduce toil<\/b> and eliminate recurring support triggers so that everyone can spend more time focusing on novel player experiences!<\/li>\n<li><b>We constantly question our own workflows and seek to accelerate ourselves<\/b>, to help reduce pressure and make our jobs more fun.<\/li>\n<\/ul>\n<p><small><\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<td><i>\u201cToday, May 18, 2022, I saw an email thread go by with a wonderful example of this. Alex Loret de Mola, an animation and AI engineer, sent a message to our EngHelp email alias, a catchall we have for \u201cas an engineer I need help figuring something out and I\u2019m not sure who to ask\u201d. He was hitting a crash deep in our code reflection generator and wasn\u2019t sure why. Three people engaged within an hour\u2014both with advice on changing his code to follow reflection rules to fix the specific crash, and with advice and conceptual background on how a couple of other things in his in-progress changelist probably weren\u2019t going to work the way he wanted. At this point, Alex\u2019s issues were all fixed, and that could have been the end of the thread, but it wasn\u2019t.<\/p>\n<p>\u201cHe wanted to fix the reflection generator crash, to make it so any future person making the same mistake would get a nice error message that would tell them how to fix it. A domain expert quickly volunteered how to get the reflection generator under a debugger and repro a specific case (it\u2019s tricky because normally it\u2019s run automatically and very few people debug it). Two other people offered quick upgrades to that advice. Alex used their instructions, found the issue, prototyped a fix, got a code review, and submitted it. Alex even took their reflection-debugging instructions and found a good wiki home for them. Now Alex knows how to debug the reflection generator, that information is discoverable for other engineers, and a confusing build system crash will never happen again\u2014that source of toil is just <b>gone<\/b>.\u201d<\/p>\n<p><\/i><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>David Aldridge, 2008-<\/b><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><\/small><\/div>\n<\/div>\n<div class=\"collapsible\">\n<p>Our code powers connection.<\/p>\n<div class=\"collapsible-body\">\n<ul>\n<li><b>We seek out and propose new possibilities for bringing players together<\/b> and inspiring positivity and friendship.<\/li>\n<li><b>We think about the social consequences and externalities<\/b> of our systems and algorithms.<\/li>\n<li><b>We study and explore emerging innovations in digital communication and togetherness technologies.<\/b><\/li>\n<\/ul>\n<p><small><\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<td><i>\u201cWhen working on Crossplay, we started looking at player names and we were faced with a choice between trying to provide players with global name consistency or maintaining the status quo setup. We pushed to try to provide players with consistency across multiple platforms via Bungie names vs using platform names directly, which would change if a person logged on from a different platform. This required broad and deep code work, it radically influenced our visual designs, and required us to carefully plan and align with platform-holders. But in the end, I think the user experience was worth the effort!\u201d<\/i><br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>Henry Vogler, 2012-<\/b><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><\/small><\/div>\n<\/div>\n<p> See you next time for value #3 \u2013 Strong Ideas Loosely Held!<\/p>\n<p>\n-Bungie Engineering<\/p>\n<div>We\u2019d love to talk with you. Here are some of the tech roles we\u2019re hiring for, with many more on our&nbsp;<a href=\"https:\/\/careers.bungie.com\/jobs\">careers<\/a>&nbsp;page!<\/div>\n","protected":false},"excerpt":{"rendered":"<p>(Not sure what this post is about?&nbsp; Check out Living Bungie&#8217;s Values as Engineers.) On to the second Bungie Value! How do we live this as engineers?&nbsp; This turned out to be a bit simpler than Teams are Stronger than Heroes\u2014we think it\u2019s just these four main points. Our technology ambitions are led by our [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":125760,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34],"tags":[],"class_list":["post-125759","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bungie-news"],"_links":{"self":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/125759","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/comments?post=125759"}],"version-history":[{"count":0,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/125759\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media\/125760"}],"wp:attachment":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media?parent=125759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/categories?post=125759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/tags?post=125759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}