<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=1" /> <title>Blogs recent news | Game Developer</title> <meta name="robots" content="max-image-preview:large" data-ruid="7aiy4mp3ujc" /> <meta property="og:title" content="Blogs recent news | Game Developer" data-ruid="7aiy4mp3ujc" /> <meta name="description" content="Explore the latest news and expert commentary on Blogs, brought to you by the editors of Game Developer" data-ruid="7aiy4mp3ujc" /> <meta property="og:description" content="Explore the latest news and expert commentary on Blogs, brought to you by the editors of Game Developer" data-ruid="7aiy4mp3ujc" /> <meta property="og:url" content="https://www.gamedeveloper.com/keyword/blogs" data-ruid="7aiy4mp3ujc" /> <meta property="og:type" content="website" data-ruid="7aiy4mp3ujc" /> <meta property="og:image" content="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltba62518415cda0e2/652fe6ddbc479f8697ef691f/default-cubic.png?disable=upscale&width=1200&height=630&fit=crop" data-ruid="7aiy4mp3ujc" /> <meta property="og:site_name" content="Game Developer" data-ruid="7aiy4mp3ujc" /> <meta property="twitter:card" content="summary" data-ruid="7aiy4mp3ujc" /> <link tagName="link" rel="canonical" href="https://www.gamedeveloper.com/keyword/blogs" data-ruid="7aiy4mp3ujc" /> <link rel="preload" href="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt29a087a5ab600184/681a6e95092833652bb51a11/doomparyblogfeatured.png?width=1280&auto=webp&quality=10&disable=upscale&blur=40" as="image" tagName="link" data-ruid="7aiy4mp3ujc" /> <link rel="preload" href="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt834e20e36d7a0649/68093db3086eb5cf261918f1/blue_prince_darkroom_photo.jpg?width=1280&auto=webp&quality=10&disable=upscale&blur=40" as="image" tagName="link" data-ruid="7aiy4mp3ujc" /> <script type="application/ld+json" data-ruid="7aiy4mp3ujc">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.gamedeveloper.com"},{"@type":"ListItem","position":2,"name":"Blogs","item":"https://www.gamedeveloper.com/keyword/blogs"}]}</script> <link rel="stylesheet" href="/assets/brand.generated-BCOu74EY.css"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&amp;display=swap"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&amp;display=swap"/> <script>"use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){self.airgap?.ready||(self.airgap={readyQueue:[],ready(e){this.readyQueue.push(e)},...self.airgap});self.airgap.loadOptions=Object.assign({uiShadowRoot:"open"},self.airgap.loadOptions);const e=()=>{const e="__tcfapiLocator",t=[],a=window;let n,s,o=a;for(;o;){try{if(o.frames[e]){n=o;break}}catch(e){}if(o===a.top)break;o=o.parent}n||(!function t(){const n=a.document,s=!!a.frames[e];if(!s)if(n.body){const t=n.createElement("iframe");t.style.cssText="display:none",t.name=e,n.body.appendChild(t)}else setTimeout(t,5);return!s}(),a.__tcfapi=function(...e){if(!e.length)return t;"setGdprApplies"===e[0]?e.length>3&&2===parseInt(e[1],10)&&"boolean"==typeof e[3]&&(s=e[3],"function"==typeof e[2]&&e[2]("set",!0)):"ping"===e[0]?"function"==typeof e[2]&&e[2]({gdprApplies:s,cmpLoaded:!1,cmpStatus:"stub"}):t.push(e)},a.addEventListener("message",(function(e){const t="string"==typeof e.data;let a={};if(t)try{a=JSON.parse(e.data)}catch(e){}else a=e.data;const n="object"==typeof a&&null!==a?a.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(a,s){let o={__tcfapiReturn:{returnValue:a,success:s,callId:n.callId}};e&&e.source&&e.source.postMessage&&e.source.postMessage(t?JSON.stringify(o):o,"*")}),n.parameter)}),!1))};airgap.ready((t=>{"TCF_EU"===t.loadOptions.consentManagerConfig.initialViewStateByPrivacyRegime[t.getRegimes()[0]]&&("undefined"!=typeof module?module.exports=e:e())}))}();</script> <script> self.airgap = {overrides: [],cookieOverrides: [],...self.airgap,};const allowGcmAdvanced = (event) => {if (event.purposes.has('GcmAdvanced')) {event.allow();}};self.airgap.overrides.push({override: allowGcmAdvanced});self.airgap.cookieOverrides.push(allowGcmAdvanced);</script> <script data-cfasync="false" data-local-sync="allow-network-observable" data-prompt="1" data-report-only="off" data-dismissed-view-state="Closed" data-tcf-ui-dismissed-view-state="Collapsed" data-ui-shadow-root="open" data-privacy-policy="https://privacy.informa.com/" src="https://transcend-cdn.com/cm/ef49a3f1-d8c1-47d6-88fc-50e41130631f/airgap.js" ></script> <script>console.log('[Transcend] confirmed:',airgap.getConsent?.().confirmed,[...airgap.getRegimes?.()][0])</script> <script async>!async function(){const t={detected:null};try{const e=await fetch("https://www3.doubleclick.net",{method:"HEAD",mode:"no-cors",cache:"no-store"});t.detected=!!e.redirected}catch(e){t.detected=!0}const e=window.localStorage.getItem("isRobot");e&&(t.isRobotValue="true"===e),window.adBlocker=t}();</script> <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" ></script> <link rel="preconnect" href="https://cdn.cookielaw.org" /> <link rel="preconnect" href="https://fonts.gstatic.com" /> <link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://www.googletagmanager.com" />  <script>window.NREUM||(NREUM={});NREUM.init={browser_consent_mode:{enabled:false},privacy:{cookies_enabled:true},distributed_tracing:{enabled:true},performance:{capture_measures:true},ajax:{deny_list:["bam.eu01.nr-data.net"],capture_payloads:'none'}};

;NREUM.loader_config={accountID:"3936348",trustKey:"3288925",agentID:"538600205",licenseKey:"NRJS-26ae6a3b09493bbcc87",applicationID:"538600205"};
;NREUM.info={beacon:"bam.eu01.nr-data.net",errorBeacon:"bam.eu01.nr-data.net",licenseKey:"NRJS-26ae6a3b09493bbcc87",applicationID:"538600205",sa:1};
;/*! For license information please see nr-loader-spa-1.316.0.min.js.LICENSE.txt */
(()=>{var e,t,r={384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>a,Zm:()=>c,bQ:()=>u,dV:()=>d,pV:()=>l});var n=r(6154),i=r(1863),s=r(944),o=r(1910);const a={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,o.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:a.beacon,errorBeacon:a.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}},733:(e,t,r)=>{"use strict";function n(e,t){return function(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}("".concat(String(e),":").concat(String(t)))}r.d(t,{Y:()=>n})},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>u,K7:()=>c,P3:()=>d,XX:()=>i,Yy:()=>a,df:()=>s,qY:()=>n,v4:()=>o});const n="events",i="jserrors",s="browser/blobs",o="rum",a="browser/logs",c={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},d={[c.pageViewEvent]:1,[c.pageViewTiming]:2,[c.metrics]:3,[c.jserrors]:4,[c.softNav]:5,[c.ajax]:6,[c.sessionTrace]:7,[c.sessionReplay]:8,[c.logging]:9,[c.genericEvents]:10},u={[c.pageViewEvent]:o,[c.pageViewTiming]:n,[c.ajax]:n,[c.softNav]:n,[c.metrics]:i,[c.jserrors]:i,[c.sessionTrace]:s,[c.sessionReplay]:s,[c.logging]:a,[c.genericEvents]:"ins"}},944:(e,t,r)=>{"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},993:(e,t,r)=>{"use strict";r.d(t,{A$:()=>s,ET:()=>o,TZ:()=>a,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},s={OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},o="log",a=n.K7.logging},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>a,Ze:()=>d,x3:()=>c});var n=r(3241),i=r(3606),s=r(860),o=r(2646);function a(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&u(e))}function d(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,a=i.i.handlers;if(s&&!s.aborted&&s.backlog&&a){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=s.backlog[t],r=a[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}).forEach(t=>{t[0]?.on&&t[0].context()instanceof o.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}s.isolatedBacklog||delete a[t],s.backlog[t]=null,s.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],s=e[2];n.apply(i,s)}})}},1738:(e,t,r)=>{"use strict";r.d(t,{U:()=>f,Y:()=>l});var n=r(3241),i=r(9908),s=r(1863),o=r(944),a=r(3969),c=r(8362),d=r(860),u=r(4261);function l(e,t,r,s){const l=s||r;!l||l[e]&&l[e]!==c.d.prototype[e]||(l[e]=function(){(0,i.p)(a.xV,["API/"+e+"/called"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:u.Pl+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,o.R)(23,e)}})}function f(e,t,r,n,o){const a=e.info;null===r?delete a.jsAttributes[t]:a.jsAttributes[t]=r,(o||null===r)&&(0,i.p)(u.Pl+n,[(0,s.t)(),t,r],void 0,"session",e.ee)}},1741:(e,t,r)=>{"use strict";r.d(t,{W:()=>s});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e(i.$9,e,t)}start(){return this.#e(i.d3)}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},1910:(e,t,r)=>{"use strict";r.d(t,{i:()=>s});var n=r(944);const i=new Map;function s(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),s=t.includes("nrWrapper");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},2555:(e,t,r)=>{"use strict";r.d(t,{D:()=>a,f:()=>o});var n=r(384),i=r(8122);const s={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function o(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}const a=e=>(0,i.a)(e,s)},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>s,Wt:()=>n,g:()=>c,iL:()=>a,tS:()=>o,wk:()=>i});const n="NRBA_SESSION::",i=144e5,s=18e5,o={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},a={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},c={OFF:0,FULL:1,ERROR:2}},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},2843:(e,t,r)=>{"use strict";r.d(t,{G:()=>s,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function s(e,t,r){(0,n.sp)("pagehide",e,t,r)}},3241:(e,t,r)=>{"use strict";r.d(t,{W:()=>s});var n=r(6154);const i="newrelic";function s(e={}){try{n.gm.dispatchEvent(new CustomEvent(i,{detail:e}))}catch(e){}}},3304:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(7836);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function s(e){try{return JSON.stringify(e,i())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},3333:(e,t,r)=>{"use strict";r.d(t,{$v:()=>u,TZ:()=>n,Xh:()=>c,Zp:()=>i,kd:()=>d,mq:()=>a,nf:()=>o,qN:()=>s});const n=r(860).K7.genericEvents,i=["auxclick","click","copy","keydown","paste","scrollend"],s=["focus","blur"],o=4,a=1e3,c=2e3,d=["PageAction","UserAction","BrowserPerformance"],u={RESOURCES:"experimental.resources",REGISTER:"register"}},3434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>u});var n=r(7836),i=r(5607),s=r(5732);const o="nr@original:".concat(i.W),a=50;var c=Object.prototype.hasOwnProperty,d=!1;function u(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,o){r||(r="");const a="-"===r.charAt(0);for(let c=0;c<t.length;c++){const d=t[c],u=e[d];f(u)||(e[d]=i(u,a?d+r:r,n,d,s,o))}},i.flag=o,i;function i(t,n,i,d,h,p){return f(t)?t:(n||(n=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach(function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})}),t}catch(e){l([e],r)}for(var n in e)c.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,c,f,g;let m,v;try{c=this,o=[...arguments],v=p?(0,s.$5)(r):[void 0],f="function"==typeof i?i(o,c):i||{}}catch(t){l([t,"",[o,c,d],f],e)}u(n+"start",[o,c,d,v],f,h);const y=performance.now();let b;try{return g=t.apply(c,o),b=performance.now(),g}catch(e){throw b=performance.now(),u(n+"err",[o,c,e,v],f,h),m=e,m}finally{const e=b-y,t={start:y,end:b,duration:e,isLongTask:e>=a,methodName:d,thrownError:m};t.isLongTask&&u("long-task",[t,c,v],f,h),u(n+"end",[o,c,g,v],f,h)}}}function u(r,n,i,s){if(!d||t){var o=d;d=!0;try{e.emit(r,n,i,t,s)}catch(t){l([t,r,n,i],e)}d=o}}}function l(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function f(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>s});var n=r(9908);s.on=o;var i=s.handlers={};function s(e,t,r,s){o(s||n.d,i,e,t,r)}function o(e,t,r,i,s){s||(s="feature"),e||(e=n.d);var o=t[s]=t[s]||{};(o[r]=o[r]||[]).push([e,i])}},3738:(e,t,r)=>{"use strict";r.d(t,{He:()=>i,Kp:()=>a,Lc:()=>d,Rz:()=>u,TZ:()=>n,bD:()=>s,d3:()=>o,jx:()=>l,sl:()=>f,uP:()=>c});const n=r(860).K7.sessionTrace,i="bstResource",s="resource",o="-start",a="-end",c="fn"+o,d="fn"+a,u="pushState",l=1e3,f=3e4},3785:(e,t,r)=>{"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),s=r(860),o=r(3969),a=r(993);function c(e,t,r={},c=a.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(o.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,s.K7.metrics,e),(0,n.p)(a.ET,[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(a.p_).some(t=>t===e.toUpperCase().trim())}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>s,jT:()=>n,sp:()=>i})},3962:(e,t,r)=>{"use strict";r.d(t,{AM:()=>o,O2:()=>l,OV:()=>s,Qu:()=>f,TZ:()=>c,ih:()=>h,pP:()=>a,t1:()=>u,tC:()=>i,wD:()=>d});var n=r(860);const i=["click","keydown","submit"],s="popstate",o="api",a="initialPageLoad",c=n.K7.softNav,d=5e3,u=500,l={INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},f={INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},h={IP:"in progress",PF:"pending finish",FIN:"finished",CAN:"cancelled"}},3969:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,XG:()=>a,rs:()=>i,xV:()=>o,z_:()=>s});const n=r(860).K7.metrics,i="sm",s="cm",o="storeSupportabilityMetrics",a="storeEventMetrics"},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},4261:(e,t,r)=>{"use strict";r.d(t,{$9:()=>u,BL:()=>c,CH:()=>p,Dl:()=>R,Fw:()=>w,PA:()=>v,Pl:()=>n,Pv:()=>x,Tb:()=>f,U2:()=>o,V1:()=>A,Wb:()=>T,bt:()=>b,cD:()=>y,d3:()=>E,dT:()=>d,eY:()=>g,fF:()=>h,hG:()=>s,hw:()=>i,k6:()=>a,nb:()=>m,o5:()=>l});const n="api-",i=n+"ixn-",s="addPageAction",o="addToTrace",a="addRelease",c="finished",d="interaction",u="log",l="noticeError",f="pauseReplay",h="recordCustomEvent",p="recordReplay",g="register",m="setApplicationVersion",v="setCurrentRouteName",y="setCustomAttribute",b="setErrorHandler",w="setPageViewName",R="setUserId",E="start",T="wrapLogger",A="measure",x="consent"},5270:(e,t,r)=>{"use strict";r.d(t,{Aw:()=>o,SR:()=>s,rF:()=>a});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO&&(0,i.V)(e)&&!0===e?.session_trace.enabled}function o(e){return!0===e?.session_replay.preload&&s(e)}function a(e,t){try{if("string"==typeof t?.type){if("password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,Qr:()=>c,sB:()=>a});var n=r(3878),i=r(6389);function s(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(s())return e();const r=(0,i.J)(e),o=setInterval(()=>{s()&&(clearInterval(o),r())},500);(0,n.sp)("load",r,t)}function a(e){if(s())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(s())return e();(0,n.sp)("popstate",e)}},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},5732:(e,t,r)=>{"use strict";r.d(t,{$5:()=>u,B5:()=>d,Ms:()=>s,Ux:()=>a,YA:()=>c,fQ:()=>i,yx:()=>o});var n=r(7508);const i={MFE:"MFE",BA:"BA"};function s(e,t){if(!e||!t?.init.api.register.enabled)return[];const r=t.runtime.registeredEntities;return r?.filter(t=>String(t.metadata.target.id)===String(e)).map(e=>e.metadata.target)||[]}function o(e,t){if(!e||!t?.init.api.register.enabled)return[];const r=t.runtime.registeredEntities;return r?.filter(t=>t.metadata.timings?.asset?.endsWith(e)).map(e=>e.metadata.target)||[]}function a(e,t){if(!l(t))return{};const r=t.agentRef.runtime.appMetadata.agents[0].entityGuid;return e?e.attributes:{"entity.guid":r,appId:t.agentRef.info.applicationID}}function c(e,t){return d(e,t)?{"child.id":e.id,"child.type":e.type,...a(void 0,t)}:{}}function d(e,t){return!!e&&!!l(t)&&t.agentRef.init.api.register.duplicate_data_to_container}function u(e){if(!e?.init.api.register.enabled)return[void 0];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...o(r[i--],e))}catch(e){}return t.length||t.push(void 0),t}function l(e){return 2===e?.harvestEndpointVersion}},6154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>d,RI:()=>i,WN:()=>f,bv:()=>s,gm:()=>o,lR:()=>l,m:()=>c,mw:()=>a,sb:()=>u,zk:()=>h});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,s="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),o=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),a=Boolean("hidden"===o?.document?.visibilityState),c=""+o?.location,d=/iPad|iPhone|iPod/.test(o.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=o.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)(),h=()=>{const e=o?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<o.performance.now())return e}},6344:(e,t,r)=>{"use strict";r.d(t,{BB:()=>u,Qb:()=>l,TZ:()=>i,Ug:()=>o,Vh:()=>s,_s:()=>a,bc:()=>d,yP:()=>c});var n=r(2614);const i=r(860).K7.sessionReplay,s="errorDuringReplay",o=.12,a={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},c={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0},d={RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},u=5e3,l={API:"api",RESUME:"resume",SWITCH_TO_FULL:"switchToFull",INITIALIZE:"initialize",PRELOAD:"preload"}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},6774:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.jserrors},7295:(e,t,r)=>{"use strict";r.d(t,{Xv:()=>o,gX:()=>i,iW:()=>s});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if("*"===n[0].hostname)return!1;for(var t=0;t<n.length;t++){var r=n[t];if(r.hostname.test(e.hostname)&&r.pathname.test(e.pathname))return!1}return!0}function s(e){return void 0===e.hostname}function o(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;if("*"===r)return void(n=[{hostname:"*"}]);0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let s,o;i>0?(s=r.substring(0,i),o=r.substring(i)):(s=r,o="*");let[c]=s.split(":");n.push({hostname:a(c),pathname:a(o,!0)})}}function a(e,t=!1){const r=e.replace(/[.+?^${}()|[\]\\]/g,e=>"\\"+e).replace(/\*/g,".*?");return new RegExp((t?"^":"")+r+"$")}},7485:(e,t,r)=>{"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},7508:(e,t,r)=>{"use strict";r.d(t,{AZ:()=>g,Qr:()=>b,QL:()=>m});var n=r(6154),i=r(1863),s=r(9119),o=r(7866);class a{dom=new c;performance=new c;constructor(e){this.url=e}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}let d;try{d=g(m())[0]}catch(e){d=g(e)[0]}const u=e=>"script"===e.initiatorType||["link","fetch"].includes(e.initiatorType)&&e.name.endsWith(".js"),l=new Map;let f=[];function h(e){return l.get(e)}function p(e){const t=h(e);if(t)return t;const r=new a(e);if(l.set(e,r),l.size>1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver&&n.gm.document){new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{if("SCRIPT"===e.nodeName&&e.src){const t=p((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=>{t.dom.end=(0,i.t)()};["load","error"].forEach(t=>e.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().filter(u).forEach(e=>{const t=p((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e;const r=[];f.forEach(({test:t,addedAt:n},s)=>{(t(e)||(0,i.t)()-n>1e4)&&r.push(s)}),f=f.filter((e,t)=>!r.includes(t))})}).observe({type:"resource",buffered:!0})}function g(e){if(!e||"string"!=typeof e)return[];const t=new Set,r=e.split("\n");for(const e of r){const r=e.match(o.cn)||e.match(o.hB)||e.match(o.fL);if(r&&r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\(([^)]+\.js):\d+:\d+\)/)||e.match(/^\s+at\s+([^\s(]+\.js):\d+:\d+/);r&&r[1]&&t.add((0,s.L)(r[1]))}}return[...t]}function m(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function v(e,t){return(0,s.L)(e.name)===t}function y(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType}function b(){const e={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:"unknown"},t=m();if(!t)return e;const r=n.gm.performance?.getEntriesByType("navigation")?.[0]?.name||"";try{const o=g(t),a=(o.length>1?o.filter(e=>d!==e):o)[0];if(!a)return e;if(r.includes(a))return e.asset=(0,s.L)(r),e.type="inline",e;e.correlation=h(a);const c=e.correlation?.performance.value||performance.getEntriesByType("resource").find(e=>v(e,a));c?y(e,c):function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel="preload"][as="script"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1}(a)&&(e.asset=a,e.type="preload",f.push({addedAt:(0,i.t)(),test:t=>!!v(t,a)&&(y(e,t),!0)})),Object.defineProperty(e,"scriptStart",{get:()=>e.correlation?.script.start||e.fetchEnd}),Object.defineProperty(e,"scriptEnd",{get:()=>e.correlation?.script.end||e.registeredAt})}catch(e){}return e}},7699:(e,t,r)=>{"use strict";r.d(t,{It:()=>s,KC:()=>a,No:()=>i,qh:()=>o});var n=r(860);const i=16e3,s=1e6,o="SESSION_ERROR",a={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0}},7767:(e,t,r)=>{"use strict";r.d(t,{V:()=>i});var n=r(6154);const i=e=>n.RI&&!0===e?.privacy.cookies_enabled},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>a,ee:()=>c});var n=r(384),i=r(8990),s=r(2646),o=r(5607);const a="nr@context:".concat(o.W),c=function e(t,r){var n={},o={},u={},l=!1;try{l=16===r.length&&d.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,s){!1!==s&&(s=!0);if(c.aborted&&!i)return;t&&s&&t.emit(e,r,n);var a=h(n);g(e).forEach(e=>{e.apply(a,r)});var d=v()[o[e]];d&&d.push([f,e,r,a]);return a},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{o[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[o[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof s.y?e:e?(0,i.I)(e,a,()=>new s.y(a)):new s.y(a)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=c)},7866:(e,t,r)=>{"use strict";r.d(t,{Nc:()=>s,cn:()=>a,fL:()=>i,h3:()=>n,hB:()=>o});const n=/function (.+?)\s*\(/,i=/^\s*at .+ \(eval at \S+ \((?:(?:file|http|https):[^)]+)?\)(?:, [^:]*:\d+:\d+)?\)$/i,s=/^\s*at Function code \(Function code:\d+:\d+\)\s*/i,o=/^\s*at (?:((?:\[object object\])?(?:[^(]*\([^)]*\))*[^()]*(?: \[as \S+\])?) )?\(?((?:file|http|https|chrome-extension):.*?)?:(\d+)(?::(\d+))?\)?\s*$/i,a=/^\s*(?:([^@]*)(?:\(.*?\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\d+)(?::(\d+))?\s*$/i},8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),s=0===Object.keys(r).length?e:r;for(let o in s)if(void 0!==e[o])try{if(null===e[o]){r[o]=null;continue}Array.isArray(e[o])&&Array.isArray(t[o])?r[o]=Array.from(new Set([...e[o],...t[o]])):e[o]instanceof Map||e[o]instanceof Set||e[o]instanceof Date||e[o]instanceof RegExp?r[o]=e[o]:"object"==typeof e[o]&&"object"==typeof t[o]?r[o]=i(e[o],t[o]):r[o]=e[o]}catch(e){r[o]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},8139:(e,t,r)=>{"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),s=r(8990),o=r(6154);const a={},c=o.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e){var t=function(e){return(e||n.ee).get("events")}(e);if(a[t.debugId]++)return t;a[t.debugId]=1;var r=(0,i.YM)(t,!0);function f(e){r.inPlace(e,[d,u],"-",p)}function p(e,t){return e[1]}return"getPrototypeOf"in Object&&(o.RI&&h(document,f),c&&h(c.prototype,f),h(o.gm,f)),t.on(d+"-start",function(e,t){var n=e[1];if(null!==n&&("function"==typeof n||"object"==typeof n)&&"newrelic"!==e[0]){var i=(0,s.I)(n,l,function(){var e={object:function(){if("function"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,"fn-",null,e.name||"anonymous"):n});this.wrapped=e[1]=i}}),t.on(u+"-start",function(e){e[1]=this.wrapped||e[1]}),t}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},8362:(e,t,r)=>{"use strict";r.d(t,{d:()=>s});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},9119:(e,t,r)=>{"use strict";r.d(t,{L:()=>s});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,"$1$2"):e}},9300:(e,t,r)=>{"use strict";r.d(t,{T:()=>n,f:()=>i});const n=r(860).K7.ajax,i="ajaxRequest.id"},9324:(e,t,r)=>{"use strict";r.d(t,{AJ:()=>o,F3:()=>i,Xs:()=>s,Yq:()=>a,xv:()=>n});const n="1.316.0",i="PROD",s="CDN",o="@newrelic/rrweb",a="1.1.0"},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>a,ZF:()=>c,bz:()=>o,el:()=>d});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function s(e,t){return e?15&e[t]:16*Math.random()|0}function o(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map(e=>"x"===e?s(t,r++).toString(16):"y"===e?(3&s()|8).toString(16):e).join("")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const o=[];for(var a=0;a<e;a++)o.push(s(r,i++).toString(16));return o.join("")}function c(){return a(16)}function d(){return a(32)}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var s=n[e]={exports:{}};return r[e](s,s.exports,i),s.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce((t,r)=>(i.f[r](e,t),t),[])),i.u=e=>({212:"nr-spa-compressor",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.316.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.316.0.PROD:",i.l=(r,n,s,o)=>{if(e[r])e[r].push(n);else{var a,c;if(void 0!==s)for(var d=document.getElementsByTagName("script"),u=0;u<d.length;u++){var l=d[u];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+s){a=l;break}}if(!a){c=!0;var f={478:"sha512-/91tZUpAINW5VzLS+EdJpEe0gul6FJd2zTpGwLIhi/mqcTiQPUlhoJmX5zb4EPTwdGqun46DoGQPtDShDBw4bA==",249:"sha512-XqLQgD24Jrw2HFtuRDeuxMcY5WnEXG04tpC98UJOJlIfGqQst/lKUE+G++zwulwEzcM00bl5V0e1kKGq2Nxc1g==",212:"sha512-rOHSN/tvMjFe33yfRKMs44m3dZKgs9foEl0T2tdErrZKsAF8Oe5+OLJKgySrw3WwY4MgvuS4yWEr88MMv5LZaw=="};(a=document.createElement("script")).charset="utf-8",i.nc&&a.setAttribute("nonce",i.nc),a.setAttribute("data-webpack",t+s),a.src=r,0!==a.src.indexOf(window.location.origin+"/")&&(a.crossOrigin="anonymous"),f[o]&&(a.integrity=f[o])}e[r]=[n];var h=(t,n)=>{a.onerror=a.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],a.parentNode&&a.parentNode.removeChild(a),i&&i.forEach(e=>e(n)),t)return t(n)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=h.bind(null,a.onerror),a.onload=h.bind(null,a.onload),c&&document.head.appendChild(a)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={38:0,788:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var s=new Promise((r,i)=>n=e[t]=[r,i]);r.push(n[2]=s);var o=i.p+i.u(t),a=new Error;i.l(o,r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var s=r&&("load"===r.type?"missing":r.type),o=r&&r.target&&r.target.src;a.message="Loading chunk "+t+" failed: ("+s+": "+o+")",a.name="ChunkLoadError",a.type=s,a.request=o,n[1](a)}},"chunk-"+t,t)}};var t=(t,r)=>{var n,s,[o,a,c]=r,d=0;if(o.some(t=>0!==e[t])){for(n in a)i.o(a,n)&&(i.m[n]=a[n]);if(c)c(i)}for(t&&t(r);d<o.length;d++)s=o[d],i.o(e,s)&&e[s]&&e[s][0](),e[s]=0},r=self["webpackChunk:NRBA-1.316.0.PROD"]=self["webpackChunk:NRBA-1.316.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(8362),t=i(860);const r=Object.values(t.K7);var n=i(384),s=i(1741);var o=i(2555),a=i(3333);const c=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var d=i(2614),u=i(944),l=i(8122);const f="[data-nr-mask]",h=e=>(0,l.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0},api:{register:{get enabled(){return e.feature_flags.includes(a.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(a.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:d.wk,inactiveMs:d.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){c(t)?e.mask_selector="".concat(t,",").concat(f):""===t||null===t?e.mask_selector=f:(0,u.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){c(t)?e.block_selector+=",".concat(t):""!==t&&(0,u.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,u.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]}}})());var p=i(6154),g=i(9324);let m=0;const v={buildEnv:g.F3,distMethod:g.Xs,version:g.xv,originTime:p.WN},y={consented:!1},b={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||y.consented},set consented(e){y.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,harvester:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++m}};var w=i(7836),R=i(3241);const E={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};function T(e,t={},r,a){let{init:c,info:d,loader_config:u,runtime:f={},exposed:g=!0}=t;if(!d){const e=(0,n.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=h(c||{}),e.loader_config=(m=u||{},(0,l.a)(m,E)),d.jsAttributes??={},p.bv&&(d.jsAttributes.isWorker=!0),e.info=(0,o.D)(d);const y=e.init;e.runtime??=(e=>{const t=(0,l.a)(e,b),r=Object.keys(v).reduce((e,t)=>(e[t]={value:v[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(f),y.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",i.p=t?e:"https://"+e})(y.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,n.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=>{const n=s.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=r,e.ee=w.ee.get(e.agentIdentifier),e.exposed=g,(0,R.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.runtime.configured=!0)}var A=i(9908),x=i(1863),S=i(4261),_=i(1738);var O=i(1687),P=i(4234),k=i(5289),N=i(5270),j=i(7767),C=i(6389),D=i(7699);const L=new WeakSet;class I extends P.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,C.J)(()=>{(0,O.Ak)(e,this.featureName),t()}))}):(0,O.Ak)(e,t)}importAggregator(e,t,r={}){if(this.featAggregate)return;const n=async()=>{if(await this.deferred,this.#t(e),!(0,o.f)(e.info))return(0,u.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);let n;try{if((0,j.V)(e.init)){const{setupAgentSession:t}=await i.e(478).then(i.bind(i,8766));n=t(e)}}catch(e){(0,u.R)(20,e),this.ee.emit("internal-error",[e]),(0,A.p)(D.qh,[e],void 0,this.featureName,this.ee)}try{if(!this.#r(this.featureName,n,e.init))return(0,O.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:i}=await t();this.featAggregate=new i(e,r),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,u.R)(34,e),this.abortHandler?.(),(0,O.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1),this.ee&&this.ee.abort()}};p.RI?(0,k.GG)(()=>n(),!0):n()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,N.SR)(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!L.has(e)&&(L.add(e),!(0,o.f)(e.info))){const t=(0,n.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}T(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var M=i(6630);class B extends I{static featureName=M.T;constructor(e){var t;super(e,M.T),this.setupInspectionEvents(),t=e,(0,_.Y)(S.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,A.p)(S.Pl+S.Fw,[(0,x.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>i.e(478).then(i.bind(i,5839)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,R.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,k.sB)(t=>{e(t,"DOMContentLoaded")}),(0,k.GG)(t=>{e(t,"load")}),(0,k.Qr)(t=>{e(t,"navigate")}),this.ee.on(d.tS.UPDATE,(e,t)=>{(0,R.W)({type:"lifecycle",name:"session",data:t})})}}class H extends e.d{constructor(e){var t;(super(),p.gm)?(this.features={},(0,n.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(B),T(this,e,e.loaderType||"agent"),t=this,(0,_.Y)(S.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,_.U)(t,e,r,S.cD,n);(0,u.R)(40,typeof r)}else(0,u.R)(39,typeof e)},t),function(e){(0,_.Y)(S.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,u.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,A.p)(S.Pl+"setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,_.U)(e,"enduser.id",t,S.Dl,!0)},e)}(this),function(e){(0,_.Y)(S.nb,function(t){if("string"==typeof t||null===t)return(0,_.U)(e,"application.version",t,S.nb,!1);(0,u.R)(42,typeof t)},e)}(this),function(e){(0,_.Y)(S.d3,function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,_.Y)(S.Pv,function(t=!0){if("boolean"==typeof t){if((0,A.p)(S.Pl+S.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum()})}}else(0,u.R)(65,typeof t)},e)}(this),this.run()):(0,u.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return r.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),n=[...this.desiredFeatures];n.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),n.forEach(r=>{if(!e[r.featureName]&&r.featureName!==t.K7.pageViewEvent)return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,u.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,u.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,n.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var K=i(2843),W=i(782);class F extends I{static featureName=W.T;constructor(e){super(e,W.T),p.RI&&((0,K.u)(()=>(0,A.p)("docHidden",[(0,x.t)()],void 0,W.T,this.ee),!0),(0,K.G)(()=>(0,A.p)("winPagehide",[(0,x.t)()],void 0,W.T,this.ee)),this.importAggregator(e,()=>i.e(478).then(i.bind(i,9917))))}}var U=i(3969);class V extends I{static featureName=U.TZ;constructor(e){super(e,U.TZ),this.importAggregator(e,()=>i.e(478).then(i.bind(i,6555)))}}var z=i(6774),G=i(3878),Y=i(3304);class Z{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,Y.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function q(e){return J(e)?e:new Z(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function X(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(J(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return q(e.reason)}const r=q(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function Q(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new Z(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return J(e.error)?e.error:q(e)}function J(e){return e instanceof Error&&!!e.stack}function ee(e,r,n,i,s=(0,x.t)()){"string"==typeof e&&(e=new Error(e)),(0,A.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,A.p)("uaErr",[],void 0,t.K7.genericEvents,n.ee)}var te=i(5732),re=i(993),ne=i(3785);function ie(e,{customAttributes:t={},level:r=re.p_.INFO}={},n,i,s=(0,x.t)()){(0,ne.R)(n.ee,e,t,r,!1,i,s)}function se(e,r,n,i,s=(0,x.t)()){(0,A.p)(S.Pl+S.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function oe(e,r,n,i,s=(0,x.t)()){const{start:o,end:a,customAttributes:c}=r||{},d={customAttributes:c||{}};if("object"!=typeof d.customAttributes||"string"!=typeof e||0===e.length)return void(0,u.R)(57);const l=(e,t)=>null==e?t:"number"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=l(o,0),d.end=l(a,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,u.R)(57);else{if(d.duration=d.end-d.start,!(d.duration<0))return(0,A.p)(S.Pl+S.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,u.R)(58)}}function ae(e,r={},n,i,s=(0,x.t)()){(0,A.p)(S.Pl+S.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var ce=i(7508),de=i(9566);const ue=["name","id","type"],le=new Map([[se,"addPageAction"],[ie,"log"],[oe,"measure"],[ee,"noticeError"],[ae,"recordCustomEvent"]]),fe={experimental:(0,C.J)(()=>(0,u.R)(54,"newrelic.register")),disabled:(0,C.J)(()=>(0,u.R)(55)),invalidTarget:(0,C.J)(e=>(0,u.R)(48,e)),deregistered:(0,C.J)(()=>(0,u.R)(68))};function he(e){(0,_.Y)(S.eY,function(t){return pe(e,t)},e)}function pe(e,r){fe.experimental(),r||={},r.instance=(0,de.LA)(8),r.type=te.fQ.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,("object"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))&&(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents[0].entityGuid},type:te.fQ.BA};const n=(0,ce.Qr)(),i={};Object.prototype.hasOwnProperty.call(r,"attributes")||Object.defineProperty(r,"attributes",{get:()=>({...i,"source.id":r.id,"source.name":r.name,"source.type":r.type,"parent.type":r.parent?.type||te.fQ.BA,"parent.id":r.parent?.id})}),Object.entries(r.tags).forEach(([e,t])=>{ue.includes(e)||(i["source.".concat(e)]=t)});let s=()=>{};const o=e.runtime.registeredEntities,a=e=>{r.blocked=!0,s=e};function c(e){return"string"==typeof e&&!!e.trim()&&e.trim().length<501}e.init.api.register.enabled||a(fe.disabled),c(r.id)&&c(r.name)||a(()=>fe.invalidTarget(r));const d={addPageAction:(t,n={})=>p(se,[t,{...i,...n},e],r),deregister:()=>{f(),a(fe.deregistered)},log:(t,n={})=>p(ie,[t,{...n,customAttributes:{...i,...n.customAttributes||{}}},e],r),measure:(t,n={})=>p(oe,[t,{...n,customAttributes:{...i,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=>p(ee,[t,{...i,...n},e],r),recordCustomEvent:(t,n={})=>p(ae,[t,{...i,...n},e],r),setApplicationVersion:e=>h("application.version",e),setCustomAttribute:(e,t)=>h(e,t),setUserId:e=>h("enduser.id",e),metadata:{get customAttributes(){return i},target:r,timings:n}},l=()=>(r.blocked&&s(),r.blocked);function f(){if(n.reportedAt)return;n.reportedAt=(0,x.t)();const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart;d.recordCustomEvent("MicroFrontEndTiming",{assetUrl:n.asset,assetType:n.type,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,timeToRegister:n.registeredAt})}l()||(o.push(d),(0,K.G)(f));const h=(e,t)=>{l()||(i[e]=t)},p=(r,n,i)=>{if(l()&&r!==pe)return;const s=(0,x.t)(),o=le.get(r)||"unknown";(0,A.p)(U.xV,["API/register/".concat(o,"/called")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,u.R)(50,e)}};return d}class ge extends I{static featureName=z.T;constructor(e){var t;super(e,z.T),t=e,(0,_.Y)(S.o5,(e,r)=>ee(e,r,t),t),function(e){(0,_.Y)(S.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,_.Y)(S.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),he(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,A.p)("ierr",[q(t),(0,x.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),p.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,A.p)("err",[X(t),(0,x.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,G.jT)(!1,this.removeOnAbort?.signal)),p.gm.addEventListener("error",t=>{this.abortHandler&&(0,A.p)("err",[Q(t),(0,x.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,G.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=>i.e(478).then(i.bind(i,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var me=i(8990);let ve=1;function ye(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===p.gm?0:(0,me.I)(e,"nr@id",function(){return ve++})}function be(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,Y.A)(e).length}catch(e){return}}}var we=i(8139),Re=i(3434);const Ee={},Te=["open","send"];function Ae(e,t){var r=e||w.ee;const n=function(e){return(e||w.ee).get("xhr")}(r);if(void 0===p.gm.XMLHttpRequest)return n;if(Ee[n.debugId]++)return n;Ee[n.debugId]=1,(0,we.u)(r);var i=(0,Re.YM)(n),s=p.gm.XMLHttpRequest,o=p.gm.MutationObserver,a=p.gm.Promise,c=p.gm.setInterval,d="readystatechange",l=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],f=[],h=p.gm.XMLHttpRequest=function(e){const r=new s(e),o=n.context(r);o.targets=(0,te.$5)(t);try{n.emit("new-xhr",[r],o),r.addEventListener(d,(a=o,function(){var e=this;e.readyState>3&&!a.resolved&&(a.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,l,"fn-",R)}),(0,G.jT)(!1))}catch(e){(0,u.R)(15,e);try{n.emit("internal-error",[e])}catch(e){}}var a;return r};function g(e,t){i.inPlace(t,["onreadystatechange"],"fn-",R)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Te,"-xhr-",R),n.on("send-xhr-start",function(e,t){g(e,t),function(e){f.push(e),o&&(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on("open-xhr-start",g),o){var m=a&&a.resolve();if(!c&&!a){var v=1,y=document.createTextNode(v);new o(b).observe(y,{characterData:!0})}}else r.on("fn-end",function(e){e[0]&&e[0].type===d||b()});function b(){for(var e=0;e<f.length;e++)g(0,f[e]);f.length&&(f=[])}function R(e,t){return t}return n}var xe="fetch-",Se=xe+"body-",_e=["arrayBuffer","blob","json","text","formData"],Oe=p.gm.Request,Pe=p.gm.Response,ke="prototype";const Ne={};function je(e,t){const r=function(e){return(e||w.ee).get("fetch")}(e);if(!(Oe&&Pe&&p.gm.fetch))return r;if(Ne[r.debugId]++)return r;function n(e,n,i){var s=e[n];"function"==typeof s&&(e[n]=function(){var e=[...arguments];const n={},o=(0,te.$5)(t);var a;r.emit(i+"before-start",[e],n),n[w.P]&&n[w.P].dt&&(a=n[w.P].dt);var c=s.apply(this,e);return r.emit(i+"start",[e,a],c),c.then(function(e){return r.emit(i+"end",[null,e,o],c),e},function(e){throw r.emit(i+"end",[e,void 0,o],c),e})})}return Ne[r.debugId]=1,_e.forEach(e=>{n(Oe[ke],e,Se),n(Pe[ke],e,Se)}),n(p.gm,"fetch",xe),r.on(xe+"end",function(e,t,n){var i=this;if(i.targets=n||[void 0],t){var s=t.headers.get("content-length");null!==s&&(i.rxSize=s),r.emit(xe+"done",[null,t],i)}else r.emit(xe+"done",[e],i)}),r}var Ce=i(7485);class De{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var s=(0,de.ZF)(),o=(0,de.el)(),a=Date.now(),c={spanId:s,traceId:o,timestamp:a};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(c.traceContextParentHeader=this.generateTraceContextParentHeader(s,o),c.traceContextStateHeader=this.generateTraceContextStateHeader(s,a,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(c.newrelicHeader=this.generateTraceHeader(s,o,a,r,n,i)),c}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,s){if(!("function"==typeof p.gm?.btoa))return null;var o={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return s&&n!==s&&(o.d.tk=s),btoa((0,Y.A)(o))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,Ce.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.cors_use_tracecontext_headers}}var Le=i(9300),Ie=i(7295);function Me(e){return"string"==typeof e?e:e instanceof(0,n.dV)().o.REQ?e.url:p.gm?.URL&&e instanceof URL?e.href:void 0}var Be=["load","error","abort","timeout"],He=Be.length,Ke=(0,n.dV)().o.REQ,We=(0,n.dV)().o.XHR;const Fe="X-NewRelic-App-Data";class Ue extends I{static featureName=Le.T;constructor(e){super(e,Le.T),this.dt=new De(e),this.handler=(e,t,r,n)=>(0,A.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};p.gm?.performance?.getEntriesByType("resource").forEach(r=>{if(r.initiatorType in e&&0!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};Ve(n,r.name),this.handler("xhr",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}je(this.ee,e),Ae(this.ee,e),function(e,r,n,i){function s(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=R,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener("load",function(r){T(t,e)},(0,G.jT)(!1)),p.lR||e.addEventListener("progress",function(e){t.lastSize=e.loaded},(0,G.jT)(!1))}function o(e){this.params={method:e[0]},Ve(this,e[1]),this.metrics={}}function a(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader&&(r.setRequestHeader("newrelic",n.newrelicHeader),s=!0),n.traceContextParentHeader&&(r.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&r.setRequestHeader("tracestate",n.traceContextStateHeader),s=!0),s&&(this.dt=n)}}function c(e,t){var n=this.metrics,i=e[0],s=this;if(n&&i){var o=be(i);o&&(n.txSize=o)}this.startTime=(0,x.t)(),this.body=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"!==e.type||s.called===s.totalCbs&&(s.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof s.end)&&s.end(t)}catch(e){try{r.emit("internal-error",[e])}catch(e){}}};for(var a=0;a<He;a++)t.addEventListener(Be[a],this.listener,(0,G.jT)(!1))}function d(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function u(e,t){var r=""+ye(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function l(e,t){var r=""+ye(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function f(){this.endTime=(0,x.t)()}function h(e,t){t instanceof We&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function g(e,t){t instanceof We&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function m(e,t,r){t instanceof We&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,x.t)()))}function v(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,x.t)()-this.xhrCbStart,this.onload,t],t)}function y(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&p.RI&&(t=""+p.gm.location.href):e[0]&&e[0].url?t=e[0].url:p.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,Ce.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if(e[0]&&e[0].headers)a(e[0].headers,n)&&(this.dt=n);else{var s={};for(var o in r)s[o]=r[o];s.headers=new Headers(r.headers||{}),a(s.headers,n)&&(this.dt=n),e.length>1?e[1]=s:e.push(s)}}function a(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function b(e,t){this.params={},this.metrics={},this.startTime=(0,x.t)(),this.dt=t;let[r,n={}]=e;Ve(this,Me(r));const i=(""+(r&&r instanceof Ke&&r.method||n.method||"GET")).toUpperCase();this.params.method=i,this.body=n.body,this.txSize=be(n.body)||0}function w(e,t){if(this.endTime=(0,x.t)(),this.params||(this.params={}),(0,Ie.iW)(this.params))return;let r;this.params.status=t?t.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(r=+this.rxSize);const n={txSize:this.txSize,rxSize:r,duration:(0,x.t)()-this.startTime},i=[this.params,n,this.startTime,this.endTime,"fetch"];this.targets.forEach(e=>E(i,this,e))}function R(e){const t=this.params,r=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t<He;t++)e.removeEventListener(Be[t],this.listener,!1);if(t.aborted)return;if((0,Ie.iW)(t))return;r.duration=(0,x.t)()-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):T(this,e),r.cbTime=this.cbTime;const n=[t,r,this.startTime,this.endTime,"xhr"];this.targets.forEach(e=>E(n,this,e))}function E(e,r,i){n("xhr",[...e,i],r,t.K7.ajax)}function T(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?be(e.response):"text"===r||""===r||void 0===r?be(e.responseText):void 0}(n,e.lastSize);if(i&&(e.metrics.rxSize=i),e.sameOrigin&&n.getAllResponseHeaders().indexOf(Fe)>=0){var s=n.getResponseHeader(Fe);s&&((0,A.p)(U.rs,["Ajax/CrossApplicationTracing/Header/Seen"],void 0,t.K7.metrics,r),e.params.cat=s.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",s),r.on("open-xhr-start",o),r.on("open-xhr-end",a),r.on("send-xhr-start",c),r.on("xhr-cb-time",d),r.on("xhr-load-added",u),r.on("xhr-load-removed",l),r.on("xhr-resolved",f),r.on("addEventListener-end",h),r.on("removeEventListener-end",g),r.on("fn-end",v),r.on("fetch-before-start",y),r.on("fetch-start",b),r.on("fn-start",m),r.on("fetch-done",w)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>i.e(478).then(i.bind(i,3845)))}}function Ve(e,t){var r=(0,Ce.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}const ze={},Ge=["pushState","replaceState"];function Ye(e){const t=function(e){return(e||w.ee).get("history")}(e);return!p.RI||ze[t.debugId]++||(ze[t.debugId]=1,(0,Re.YM)(t).inPlace(window.history,Ge,"-")),t}var Ze=i(3738);function qe(e){(0,_.Y)(S.BL,function(r=Date.now()){const n=r-p.WN;n<0&&(0,u.R)(62,r),(0,A.p)(U.XG,[S.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:S.BL,start:r,origin:"nr"}),(0,A.p)(S.Pl+S.hG,[n,S.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:Xe,bD:$e,d3:Qe,Kp:Je,TZ:et,Lc:tt,uP:rt,Rz:nt}=Ze;class it extends I{static featureName=et;constructor(e){var r;super(e,et),r=e,(0,_.Y)(S.U2,function(e){if(!(e&&"object"==typeof e&&e.name&&e.start))return;const n={n:e.name,s:e.start-p.WN,e:(e.end||e.start)-p.WN,o:e.origin||"",t:"api"};n.s<0||n.e<0||n.e<n.s?(0,u.R)(61,{start:n.s,end:n.e}):(0,A.p)("bstApi",[n],void 0,t.K7.sessionTrace,r.ee)},r),qe(e);if(!(0,j.V)(e.init))return void this.deregisterDrain();const n=this.ee;let s;Ye(n),this.eventsEE=(0,we.u)(n),this.eventsEE.on(rt,function(e,t){this.bstStart=(0,x.t)()}),this.eventsEE.on(tt,function(e,r){(0,A.p)("bst",[e[0],r,this.bstStart,(0,x.t)()],void 0,t.K7.sessionTrace,n)}),n.on(nt+Qe,function(e){this.time=(0,x.t)(),this.startPath=location.pathname+location.hash}),n.on(nt+Je,function(e){(0,A.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,n)});try{s=new PerformanceObserver(e=>{const r=e.getEntries();(0,A.p)(Xe,[r],void 0,t.K7.sessionTrace,n)}),s.observe({type:$e,buffered:!0})}catch(e){}this.importAggregator(e,()=>i.e(478).then(i.bind(i,6974)),{resourceObserver:s})}}var st=i(733),ot=i(6344);class at extends I{static featureName=ot.TZ;#i;recorder;constructor(e){var r;let n;super(e,ot.TZ),r=e,(0,_.Y)(S.CH,function(){(0,A.p)(S.CH,[],void 0,t.K7.sessionReplay,r.ee)},r),function(e){(0,_.Y)(S.Tb,function(){(0,A.p)(S.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s="".concat(d.Wt).concat((0,st.Y)(e.info.licenseKey,e.info.applicationID));try{n=JSON.parse(localStorage.getItem(s))}catch(e){}(0,N.SR)(e.init)&&this.ee.on(S.CH,()=>this.#s()),this.#o(n)&&this.importRecorder().then(e=>{e.startRecording(ot.Qb.PRELOAD,n?.sessionReplayMode)}),this.importAggregator(this.agentRef,()=>i.e(478).then(i.bind(i,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,A.p)(ot.Vh,[e],void 0,this.featureName,this.ee))})}#o(e){return e&&(e.sessionReplayMode===d.g.FULL||e.sessionReplayMode===d.g.ERROR)||(0,N.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([i.e(478),i.e(249)]).then(i.bind(i,4866)).then(({Recorder:e})=>(this.recorder=new e(this),this.recorder)).catch(e=>{throw this.ee.emit("internal-error",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==d.g.FULL&&this.featAggregate.initializeRecording(d.g.FULL,!0,ot.Qb.API):this.importRecorder().then(()=>{this.recorder.startRecording(ot.Qb.API,d.g.FULL)}))}}var ct=i(3962);class dt extends I{static featureName=ct.TZ;constructor(e){if(super(e,ct.TZ),function(e){const r=e.ee.get("tracer");function n(){}(0,_.Y)(S.dT,function(e){return(new n).get("object"==typeof e?e:{})},e);const i=n.prototype={createTracer:function(n,i){var s={},o=this,a="function"==typeof i;return(0,A.p)(U.xV,["API/createTracer/called"],void 0,t.K7.metrics,e.ee),function(){if(r.emit((a?"":"no-")+"fn-start",[(0,x.t)(),o,a],s),a)try{return i.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw r.emit("fn-err",[arguments,this,t],s),t}finally{r.emit("fn-end",[(0,x.t)()],s)}}}};["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach(r=>{_.Y.apply(this,[r,function(){return(0,A.p)(S.hw+r,[performance.now(),...arguments],this,t.K7.softNav,e.ee),this},e,i])}),(0,_.Y)(S.PA,function(){(0,A.p)(S.hw+"routeName",[performance.now(),...arguments],void 0,t.K7.softNav,e.ee)},e)}(e),!p.RI||!(0,n.dV)().o.MO)return;const r=Ye(this.ee);try{this.removeOnAbort=new AbortController}catch(e){}ct.tC.forEach(e=>{(0,G.sp)(e,e=>{c(e)},!0,this.removeOnAbort?.signal)});const s=()=>(0,A.p)("newURL",[(0,x.t)(),""+window.location],void 0,this.featureName,this.ee);r.on("pushState-end",s),r.on("replaceState-end",s),(0,G.sp)(ct.OV,e=>{c(e),(0,A.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)},!0,this.removeOnAbort?.signal);let o=!1;const a=new((0,n.dV)().o.MO)((e,t)=>{o||(o=!0,requestAnimationFrame(()=>{(0,A.p)("newDom",[(0,x.t)()],void 0,this.featureName,this.ee),o=!1}))}),c=(0,C.s)(e=>{"loading"!==document.readyState&&((0,A.p)("newUIEvent",[e],void 0,this.featureName,this.ee),a.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0}))},100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),a.disconnect(),this.abortHandler=void 0},this.importAggregator(e,()=>i.e(478).then(i.bind(i,4393)),{domObserver:a})}}var ut=i(9119);const lt={},ft=new Set;function ht(e){return"string"==typeof e?{type:"string",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:"ArrayBuffer",size:e.byteLength}:e instanceof Blob?{type:"Blob",size:e.size}:e instanceof DataView?{type:"DataView",size:e.byteLength}:ArrayBuffer.isView(e)?{type:"TypedArray",size:e.byteLength}:{type:"unknown",size:0}}class pt{constructor(e,t){this.timestamp=(0,x.t)(),this.currentUrl=(0,ut.L)(window.location.href),this.socketId=(0,de.LA)(8),this.requestedUrl=(0,ut.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(","):t||"",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason="unknown",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class gt extends I{static featureName=a.TZ;constructor(e){super(e,a.TZ);const r=e.init.feature_flags.includes("websockets"),s=!e.init.feature_flags.includes("no_spv"),o=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,r,s];var c;let d;if(c=e,(0,_.Y)(S.hG,(e,t)=>se(e,t,c),c),function(e){(0,_.Y)(S.fF,(t,r)=>ae(t,r,e),e)}(e),qe(e),he(e),function(e){(0,_.Y)(S.V1,(t,r)=>oe(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=>{this.removeOnAbort.abort(),this.abortHandler=void 0},r){const u=function(e){if(!(0,n.dV)().o.WS)return e;const t=e.get("websockets");if(lt[t.debugId]++)return t;lt[t.debugId]=1,(0,K.G)(()=>{const e=(0,x.t)();ft.forEach(r=>{r.nrData.closedAt=e,r.nrData.closeCode=1001,r.nrData.closeReason="Page navigating away",r.nrData.closeWasClean=!1,r.nrData.openedAt&&(r.nrData.connectedDuration=e-r.nrData.openedAt),t.emit("ws",[r.nrData],r)})});class r extends WebSocket{static name="WebSocket";static toString(){return"function WebSocket() { [native code] }"}toString(){return"[object WebSocket]"}get[Symbol.toStringTag](){return r.name}#a(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new pt(e[0],e[1]),this.addEventListener("open",()=>{this.nrData.openedAt=(0,x.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),ft.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=ht(e.data);this.nrData.messageOrigin??=(0,ut.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??"").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?"".concat(this.nrData.messageTypes,",").concat(t):t)}),this.addEventListener("close",e=>{this.nrData.closedAt=(0,x.t)(),this.nrData.closeCode=e.code,e.reason&&(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,ft.delete(this),t.emit("ws",[this.nrData],this)})}addEventListener(e,t,...r){const n=this,i="function"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#a(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#a(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=ht(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??"").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?"".concat(this.nrData.sendTypes,",").concat(t):t)}try{return super.send(e)}catch(e){throw this.#a(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#a(e),e}}}return p.gm.WebSocket=r,t}(this.ee);u.on("ws",e=>{(0,A.p)("ws-complete",[e],void 0,this.featureName,this.ee)})}if(s&&p.gm.addEventListener("securitypolicyviolation",e=>{(0,A.p)("spv",[e],void 0,t.K7.genericEvents,this.ee)},(0,G.jT)(!1,this.removeOnAbort.signal)),p.RI){if(je(this.ee,e),Ae(this.ee,e),d=Ye(this.ee),e.init.user_actions.enabled){function l(t){const r=(0,Ce.D)(t);return e.beacons.includes(r.hostname+":"+r.port)}function f(){d.emit("navChange")}a.Zp.forEach(e=>(0,G.sp)(e,e=>(0,A.p)("ua",[e],void 0,this.featureName,this.ee),!0)),a.qN.forEach(e=>{const t=(0,C.s)(e=>{(0,A.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,G.sp)(e,t)}),p.gm.addEventListener("error",()=>{(0,A.p)("uaErr",[],void 0,t.K7.genericEvents,this.ee)},(0,G.jT)(!1,this.removeOnAbort.signal)),this.ee.on("open-xhr-start",(e,r)=>{l(e[1])||r.addEventListener("readystatechange",()=>{2===r.readyState&&(0,A.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)},(0,G.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on("fetch-start",e=>{e.length>=1&&!l(Me(e[0]))&&(0,A.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)}),d.on("pushState-end",f),d.on("replaceState-end",f),window.addEventListener("hashchange",f,(0,G.jT)(!0,this.removeOnAbort.signal)),window.addEventListener("popstate",f,(0,G.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled&&p.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{(0,A.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}o.some(e=>e)?this.importAggregator(e,()=>i.e(478).then(i.bind(i,8019))):this.deregisterDrain()}}var mt=i(2646);const vt=new Map;function yt(e,t,r,n,i=!0,s){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,u.R)(29);const o=function(e){return(e||w.ee).get("logger")}(e),a=(0,Re.YM)(o,void 0,s),c=new mt.y(w.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Re.Jt]||t[r];return vt.set(d,c),a.inPlace(t,[r],"wrap-logger-",()=>vt.get(d),void 0,!0),o}var bt=i(1910);class wt extends I{static featureName=re.TZ;constructor(e){var t;super(e,re.TZ),t=e,(0,_.Y)(S.$9,(e,r)=>ie(e,r,t),t),function(e){(0,_.Y)(S.Wb,(t,r,{customAttributes:n={},level:i=re.p_.INFO}={})=>{yt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),he(e);const r=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,bt.i)(p.gm.console[t]),yt(r,p.gm.console,t,{level:"log"===t?"info":t},void 0,e)}),this.ee.on("wrap-logger-end",function([e],t,n,i=[]){const{level:s,customAttributes:o,autoCaptured:a}=this;i.forEach(t=>{(0,ne.R)(r,e,o,s,a,t)})}),this.importAggregator(e,()=>i.e(478).then(i.bind(i,5288)))}}new H({features:[Ue,B,F,it,at,V,ge,gt,wt,dt],loaderType:"spa"})})()})();
</script> <script async src="//static.adsafeprotected.com/iasPET.1.js" ></script> <script async data-ot-ignore src="https://www.googletagmanager.com/gtm.js?id=GTM-5523ZCM" ></script> <script async data-ot-ignore src="https://www.googletagmanager.com/gtm.js?id=GTM-KSPX23J" ></script><script defer="" async="" src="https://connect.facebook.net/en_US/sdk.js#xfbml=1&amp;version=v18.0" data-ot-ignore="true"></script><link rel="modulepreload" href="/assets/entry.client-BnhDBGck.js"/><link rel="modulepreload" href="/assets/react-DL6dWp3l.js"/><link rel="modulepreload" href="/assets/react-dom-BE6BiQSL.js"/><link rel="modulepreload" href="/assets/jsx-runtime-BPeuaX5-.js"/><link rel="modulepreload" href="/assets/preload-helper-ZNWeky0v.js"/><link rel="modulepreload" href="/assets/root-DZg-TPQn.js"/><link rel="modulepreload" href="/assets/src-wFgDTrC1.js"/><link rel="modulepreload" href="/assets/errorBoundary-DLNfScNT.js"/><link rel="modulepreload" href="/assets/src-B1FWuNaO.js"/><link rel="modulepreload" href="/assets/src-OmcIKiOT.js"/><link rel="modulepreload" href="/assets/meta-Du6P5KIU.js"/><link rel="modulepreload" href="/assets/src-CYUtgRe8.js"/><link rel="modulepreload" href="/assets/src-i-txt5SG.js"/><link rel="modulepreload" href="/assets/src-D33KPzbn.js"/><link rel="modulepreload" href="/assets/src-ur0oqhPU.js"/><link rel="modulepreload" href="/assets/src-Dh0qGtyh.js"/><link rel="modulepreload" href="/assets/extends-C_2-xqiD.js"/><link rel="modulepreload" href="/assets/src-DA7Pplk9.js"/><link rel="modulepreload" href="/assets/index.es-sS4szeIp.js"/><link rel="modulepreload" href="/assets/esm-DYU-OuKx.js"/><link rel="modulepreload" href="/assets/src-BmYR0PPH2.js"/><link rel="modulepreload" href="/assets/src-DvbQaBsy2.js"/><link rel="modulepreload" href="/assets/_baseForOwn-CcT7yYSn.js"/><link rel="modulepreload" href="/assets/src-Bp3JjykZ.js"/><link rel="modulepreload" href="/assets/useLockBodyScroll-CFNaoMVC.js"/><link rel="modulepreload" href="/assets/useIsomorphicLayoutEffect-CImoiNQ0.js"/><link rel="modulepreload" href="/assets/striptags-BvwkZIy3.js"/><link rel="modulepreload" href="/assets/swiper-react-CTWCnLMV.js"/><link rel="modulepreload" href="/assets/src-DL63-KRa2.js"/><link rel="modulepreload" href="/assets/src-24TRix5o.js"/><link rel="modulepreload" href="/assets/src-C_BkJm2T.js"/><link rel="modulepreload" href="/assets/src-DBqdrzXP.js"/><link rel="modulepreload" href="/assets/src-DcauI7BP.js"/><link rel="modulepreload" href="/assets/src-uURKhZs-.js"/><link rel="modulepreload" href="/assets/toNumber-D-jhQxFw.js"/><link rel="modulepreload" href="/assets/src-D9RQELm1.js"/><link rel="modulepreload" href="/assets/src-DcUZOrUG.js"/><link rel="modulepreload" href="/assets/src-RvcSZewU.js"/><link rel="modulepreload" href="/assets/src-DQl9VMWY2.js"/><link rel="modulepreload" href="/assets/src-5VTiR5VE.js"/><link rel="modulepreload" href="/assets/keyword._slug-DPbzAmTt.js"/><link rel="modulepreload" href="/assets/keyword._slug-CzViPnDC.js"/><link rel="modulepreload" href="/assets/src-BiQj9_sZ.js"/><link rel="modulepreload" href="/assets/src-CM86lvNS2.js"/><link rel="modulepreload" href="/assets/src-CoLlCD2u.js"/><link rel="modulepreload" href="/assets/src-DNHXyWTN.js"/><link rel="modulepreload" href="/assets/src-CIU7cGum.js"/></head><body data-version="2.59.3" class="brand-gamedeveloper "><noscript><iframe title="gtm noscript 0" src="https://www.googletagmanager.com/ns.html?id=GTM-5523ZCM" height="0" width="0" style="display:none;visibility:hidden"></iframe><iframe title="gtm noscript 1" src="https://www.googletagmanager.com/ns.html?id=GTM-KSPX23J" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><div id="fb-root"></div><main data-theme="theme2" class="Provider"><div data-testid="ad_blocker" class="ads ad adsbox doubleclick ad-placement carbon-ads ad-banner ad-container" style="top:0;left:0;height:1px;width:1px;position:absolute"></div><div data-template="layout" class="Layout"><nav data-module="navigation" aria-label="navigation" class="Navigation"><div data-testid="header" class="Navigation-HeaderWrapper"><div class="FullScreenBackground Navigation-HeaderBackground"></div><div class="Navigation-Header"><div class="InformaBar" data-component="informa-bar"><div class="InformaBar-ContentSection InformaBar-ContentSection_hidden" data-testid="informa-bar-content-section"><div class="InformaBar-LeftSection" data-testid="informa-bar-left-section"><div>Together, we power an unparalleled network of 220+ online properties covering 10,000+ granular topics, serving an audience of 50+ million professionals with original, objective content from trusted sources. We help you gain critical insights and make more informed decisions across your business priorities.</div><div class="InformaBar-SubMenuWrapper"><a class="InformaBar-SubMenuItem" data-testid="informa-bar-sub-menu-item" href="https://www.informa.com/" title="Informa PLC" target="_blank" rel="noreferrer">Informa PLC</a><span class="InformaBar-Delimiter">|</span><a class="InformaBar-SubMenuItem" data-testid="informa-bar-sub-menu-item" href="https://www.informa.com/about-us/" title="ABOUT US" target="_blank" rel="noreferrer">ABOUT US</a><span class="InformaBar-Delimiter">|</span><a class="InformaBar-SubMenuItem" data-testid="informa-bar-sub-menu-item" href="https://www.informa.com/investors/" title="INVESTOR RELATIONS" target="_blank" rel="noreferrer">INVESTOR RELATIONS</a><span class="InformaBar-Delimiter">|</span><a class="InformaBar-SubMenuItem" data-testid="informa-bar-sub-menu-item" href="https://www.informa.com/talent/" title="TALENT" target="_blank" rel="noreferrer">TALENT</a></div></div><div class="InformaBar-RightSection" data-testid="informa-bar-right-section">This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC&#x27;s registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.</div></div><div class="InformaBar-LogoSection" data-testid="informa-bar-logo-section" role="button" tabindex="0" aria-label="Open Informa bar"><div class="InformaBar-LogoWrapper"><img class="InformaBar-Logo" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAekAAABqCAYAAACYnalVAAAACXBIWXMAAAsSAAALEgHS3X78AAAPZklEQVR4nO2d320bSRKHew0/HkDe4t41jkDcCMSNwNwIpI3AdATWRmA6AksRrAzcu8UIjoxgxffDQYzAh9mtvmsPKHJIVvVUz3wfQNgWrOHM9J9fV3V11Q/fvn0Le7gJIUxDCFUI4Ur+2zKE8BxCeJDP874LQPGMpQ9M5M/635d7HmoTQngKITyGEFbyeaIbAAAcz0siXYvzbQjh4sAVtyGEhfxf6A+1EM/k81bhqdYi2nci2gAA0IKmSI9lIj12Yl6LlYVVXTZ1+8/lMzJ6krUs7PDCAAAcoCnSqwOuzH0g1GUzkwWalTg3iV6YBX0GAGA3r5KfLs4Q6CC/e8d7Lo7oPfk9o0AH+a4PYrUDAMAOokjXFvA7hRf0ViwyKIOx7BVf014AAP6IIq1pzRBEVgZRoM/xngAAgCGvZLLWiOCNXMpxHfANAg0A4JxXRoI6peFdc278AQAAZOCVkaCOaTy3aMUfAACAMbVI/4OXPCiIwAcAKIRapP8dQvgPDTYIblpkkQMAACe8lgQmP4pQ/0jD9JockfcxBeiz9K00Ucn0hb8DAMAOXie5lDWF+pGX7Q5LK3ojwWh3B7KH0S8AAI7glVQoWsuv/Kjg+t4wGbvEKsnMvZwQIL0nAIAyMZnJIrnsuUJNYJI/tM/CR96LhY44AwAYkBbYeExqRocTXd9rEpm4pBbSz8o3di/XBQAAI9ICGzOpTBQ51qLeMmm7RdvVvaUwBgCAPalIP0v07Sb5WVuh3srvUtDfJ9reDfafAQAy8KrxFSuZ0O+Tnx0S6qX8DgLtk8ogqpu4AwCADDRFOoiFVLut34QQPoll3RTqjQj5z2JBP9FYbqmUb2xNewMA5OH1nm95kn3HuPdYi/HfQgj/pG2KQjtpCMfrAAAysU+kmzA5Q8CKBgDIxy53N/QLbUua2AMAgEwg0gAAAE45xt0N/2eXdfo8ECuz79se4xZH1p5w+0NLXupP3vvQkOe4SHUg8LZZQMgERHo/Y+msUxlo9Wd04Hc20ni1mD0wmbukStpzIu18deKNLpPJ6zHXwAW3TBtzxqH5Yi195iGpHpebShIexXs+dGSzb3NcOr9XLdstZSPvYNX4qJCmBYW/iB22PoZ2qfBO1kmFqC7QbuAfOnqOc4iLrTgRWdfUjuU64yQG/WaWfI6Z3Jtspb/cZhA+zXmu6znuWCbJfHDq4vwQ22Th9XDO4iuKdDNv97mcMpF3fQ838rFstLlyR+7DCus3wzrXcRKyKC7SljhYFx26CjX7yVIxGLFqWDCpa/GxRb+o7+Or0r2EI/tiJeP55kxhfol7ub62ZT2V61qMiY28P49iXSVzvPUivclZc8DQ3d2x4eZGAy1lJEUuYkfBDW7DOGnT3INxF3W7X8tnKQN1qNZ16ladHhhzXmMfKhGia+PvuU4WmRr95Ubu23JMXCRz3MzJto+18dWG5hxwe0z/Hmp0dyWrvT9CCB8yCHTKVZJ+FXSJi5+PTgS6Sd32v0v7ax+N80q0OFcy3j6KFZdzzGmQzhnWAh0ZSX85x9MUx8TnjGPiSr6zyzkufe4uBbrJlXh/HtpmgxyaSI87GGi7GMlKiqphOsTc8Z8Lmfwvk4E6dnA/FtxIH4/CrBHf0QUe5owPJ7iQp8mY6GLBGue43ELdxaLkFN5K+xzUgCGJdAzG6FKcU0bi+sSiPo+6Xf9VqAi8lT6pXUq0K8bSHs8OLZhTmDuaM65bLuorEcevDsZETqGeFSLOKXELdO8CbAgiHQuA5HZrtyF24r5aU5aM5d19KPw5oktz4eBeTmWcLII9jrNjiUL30dmzfN4jeLEN/nC2OBoZe4ziPPB7QeLc5HqfUPdZpMcy8X113ngjjukczcTgNEDXvCt0wdYncQ5ira4c961dghdd214XrBeGEd+TnswDLwp1n0V6JRNfCVyxP92aKNCl7nHu46ogofbsoTqVeQFxDRdJZcKxiLZ3QyTI1k5ftnWsuN7lUeuzSJfm+rA6K9wnomurL6Kwi0vnQl2Kh+oUSulX8yRAqsscAMdS8pZOLt41FzMU2PDDBdb0XoYg0JFLx1sglwV5qPrKqKCTDCnMce24SxfpiLQvsKZf5q6nLu6XuMLygB4yp1EPMkq1YOgZx7xxIa4OAsm+xyqN4Uusk4T5KTF1Za5AlXfk/4aecZnkNchNWgwnrejVpijOpJHz29qL8S4eZ0Sk/YFIf0+VycOwFGu9bTL8aZL+0HLA3sk7oLIW9IWbDBb1OqlKt1JYFMRrxAjsHOlG63d0i0j/xTYpvfZSnde4irK26I6JgPytxf/RPpZxr5x3/FAO24WxCB6dS1d4TAK85obHX0YyMRAZ64dNQwCa5JorjmGb3POuvl5ltBJnBiK9SapO5Sj5eSefucwfFu/sz3zrfa6CdYhl0qjHrLJi0gDL4JmfFN1B2pWyfs5Y/EC7ylHKVtpRa9+3kv5ktW9+znv3UC1t2ai3nS6Gx40kHdNkst2HZf9osk48LW0XqZX0r67EepuISdv5ZJwU47AU6zdKi/2xvOeuKswF6bsPRqcdfhqaSK+TTnvuSutGIiwteK8oHiWLtFWf2CYJIDSJx5Ms0kiuz0iv2IVIx/J8D4bbNzlE+l6hzKjlXLGLZTLPnYr1ovPXgupPtyEuFLQXNu+HEt19L9bpRAachivkTjqaBUOpkLSPaWECHaRf3Uh/0+aykOMraxkXlWKZxS74FEL4e5KB7BzuZOFtzVIW0VMFAXyS62yM7rlvNQuscvBP+y7S9+JW0Rhou6gHwheD67YqYdYSq0FmjVVgiZVAp9zIhKmN5+MrUSAmSp6qrljKnDFXfoaFUZ8IMsZ/SbYJtHg2XBj2sbDQo8ECveqzSL9JsvJYYjFxarqYrJ/fgspoH+99xr2rmVjtmlw69LKk1luubRArPiXpTi2wOKWwTfZELbAQntDj6n/abXzZZ5HOJU5PRtb0kCtjWbiNlpmTg1hZIV5c3useiXPE2vp/lPemySjDfVssLvqaOVBdD8g4poPFKnbIdaYthKgLV/GDgYtz1vECbit7zpMeiXNOLIKlrL0rTwaLi9BjQ0R1XCDSOjBZ6VEZRJTed3hEQ9sKGXV8ZnrVs6jc3JQ6V1i0eV8NEdW5BpHW4clg/3GoWAhQl6LyaGBNE/1fLqtC54ouzyGXBiLtFDqxDtoCtHZgvWjvhZN9rGxKnCvwFrZHNUYAkdajxChqj2iLtAfX7IOy9TQaeMxC6ZR6PM1iXxoOgEjrgUifT2UQ9eklmYb2feDyLpdSvW4UeekARBo8oW0drh0tnrRFGksacoMh0gGINHhCW3g87aNp34tmVjqANiDSHUCpSvBEn0X6WSx7reNlOSvGAQydiZzrTiu2Nau3BYtxiUiDJ7STG3jb+1spnwEfs09YJFikPhkntcAr+Uy6zo6GSIMntF243ibDlXIZS7J+lQki7YMoyFP5u0U96LNBpMETmoPEquLQOXCWHqA7xpJjYCp/FpE/HJEGyIe2a7pPxS0ArJjJR9OLlQ1EGrygvR/tUbywpAHyEK3mW69u7LYg0uAFzv0CgAZzEedelMNEpAEAoA9MJQ1w0ZZzE5KZAABAyYyliM3Xvgl0wJIGAICCqSTlrnYNejdgSQMAQIlMDBIEaaB6/BNLGgAASiMm8ukiOGwri4NHSUyTfiLftL4MkQYvkN4SANpQZRbojXzfYyLM2UCkwQucIQaANjxkEOiNfM9d13MTIg19xeO5a+3c5HgfYGjcGu9BLyVSXLv++8kg0tBXtDOYaaAt0ngfYEjUC+8PRs+7lAWAu0yFRHeDJzSjIodgSQMMiYXBs9ZBYO8958HHkoa+4jEloLZIU1wDhkK96L5Sfta15Pd2XToUSxo8oS06U2fPR35ygNOYK7+3tcwP7mt7I9LgCe0B400UNe/HY71sACtmitfdikAXEXiJSIMntEXakyVdKecVJmgMhsJMeftqVtLJCEQaPNFnd7f2vSDSMBQ0x86ytFgORBq8oenGHTlyeSPSAKehOYbvSmsDRBq8ob3KvXHyfNp7aog0DAXNqO4cSUpUF+SINHhDW6Q1xfFUbpT31Dh6BUNB89jiJtNetOpRS0QavPEolqIWFw72prWteTcpCwGM0RS8XMetsKSh92iL0G2HL6wySMKASAMcT65UwareO0QaPKItQlcdWtPaqQy/UFgD4CQsC3NEtLe2EGlwyYPsH2nShTVdLwzeKl8TKxrgdKzz56vPM4g0eEX7qMSVQWrBQ2hb0ZsSj5AAOMLSozZXTlj0J4g0eGWhHEAWZJWb69z0wsC9hkADnIfVkcyJlbcOkQavPBtYoiMROusAknoieKd8za1RqT4Az2jHX1jEp4xlXjGpvIdIg2csrOlLOeZlJdS1QH82uO6CgDEYIBZJezQXu2OZT8yC0hBp8IyFNR0SodZ2fd8aCfQGKxoGzFr50S+Vto4m1gIdEGkogFuDQRoSodYIJqvkWh8UrrWLOVY0DBiLDHvXZwr1PIdAB0QaCsEq2KPeQ/oomYhO+Y6JDPQ/DBKWRL5w7AoGjlXA5LW404/Zo76R+eKj1R50k9c5vgTgTOqB9F4GhgUX4qZeyOr4Ub7zqZFKcCp7UFP5WK+iN44KhAB0xUrGgvrxJhnDX8VbdyfftUo8V1PxlE0N6lq3ApGGUliI5XpteL8jST6inYDkFLalFacHMOTOcDspiFhrGgFbWeCfvZDH3Q0lMTfan/bInHKUAP/D4qSHFVuxvFUW2Ig0lMSzdP6+C/WvJC4B+I7nDjIGnorqAhuRhtLou1Aj0AC7qcfF0vm7UR+/iDSUSBRq7wP2GGoX2S8INMBeZk7d3mbjF5GGUolC/akHLbiWZ+GoFcB+4rj3JNRby/GLSEPp1Ps/PxuUtszFJxngBIkBtGPlSKiXckTLbPwi0tAHYorPkqzqjSwuyCYGcDxdC/VWcjeoRXG/BCINfSFGf74JIdw7fqaNBJdURukOAYbCSsZR7tiUpRgFWfLpI9LQN2KKzyjWXvau1ok4ExwGoEPco/41w1hfivdr2shEaErMOOZhP6z0Pbkn5RWdlgtF+72W4pqNYj2WiNBZB5nENhJMctdx/9bsl57G6bPys+WaeLXvO9eY9DrHBRljD+JNu1FOIfolSRl8DCpj5Ydv375pXAegFGayEp4YFMXYJHm/H3KutgHgO2bJ55R828tkgd2pYYJIw9CZJEUzQvLvQ8RVdSzCwf4ygE/qMV1/YqGMXaTj2M9YDiH8F/cmbyXaV5JLAAAAAElFTkSuQmCC" alt=""/></div><span class="InformaBar-IconWrapper InformaBar-IconWrapper_closed"><svg viewBox="0 0 320 512" aria-hidden="true" focusable="false" role="img" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="currentColor" height="100%"><path fill="#ffffff" d="M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z"></path></svg></span></div></div></div></div><div class="Navigation-SecondaryMenuWrapper"><div class="FullScreenBackground Navigation-SecondaryMenuBackground"></div><div class="Navigation-SecondaryMenu"><nav data-testid="SecondaryMenu" class="SecondaryMenu"><a class="SecondaryMenu-Link" rel="noreferrer" target="_blank" href="https://omdia.tech.informa.com/advance-your-business/media-and-entertainment/games-spotlight-service">Game Market Research</a><a class="SecondaryMenu-Link" rel="noreferrer" target="_blank" href="https://www.gdcvault.com/">Watch GDC Talks on GDC Vault</a><a class="SecondaryMenu-Link" rel="noreferrer" target="_blank" href="https://gdconf.com/">Attend or Exhibit at GDC</a><a class="SecondaryMenu-Link" rel="noreferrer" target="_blank" href="https://reg.gdconf.com/gamedeveloper-media-kit">Advertise With Game Developer</a></nav></div></div><div id="navigation-header" class="Navigation-NavBase Navigation-NavBase_isSticky"><div data-testid="navBase" class="NavBase"><div class="NavBase-Content"><div class="FullScreenBackground NavBase-SecondaryMenuBackground"></div><div class="NavBase-HeaderWrapper"><div class="NavBase-IconsWrapper"><button data-testid="navBase-megaMenuButton" class="NavBase-MegaMenuButton" aria-label="Open Mega menu"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Hamburger&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;16&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2016%2013&#x27;%3e%3crect%20id=&#x27;Rectangle_1690&#x27;%20data-name=&#x27;Rectangle%201690&#x27;%20width=&#x27;16&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0)&#x27;/%3e%3crect%20id=&#x27;Rectangle_1691&#x27;%20data-name=&#x27;Rectangle%201691&#x27;%20width=&#x27;13&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0%205)&#x27;/%3e%3crect%20id=&#x27;Rectangle_1692&#x27;%20data-name=&#x27;Rectangle%201692&#x27;%20width=&#x27;10&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0%2010)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Hamburger&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;16&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2016%2013&#x27;%3e%3crect%20id=&#x27;Rectangle_1690&#x27;%20data-name=&#x27;Rectangle%201690&#x27;%20width=&#x27;16&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0)&#x27;/%3e%3crect%20id=&#x27;Rectangle_1691&#x27;%20data-name=&#x27;Rectangle%201691&#x27;%20width=&#x27;13&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0%205)&#x27;/%3e%3crect%20id=&#x27;Rectangle_1692&#x27;%20data-name=&#x27;Rectangle%201692&#x27;%20width=&#x27;10&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0%2010)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Bars" class="NavBase-MegaMenuIcon NavBase-MegaMenuIcon_iconVariant_small NavBase-MegaMenuIcon_iconType_bars DefaultIcon"></span></button><button data-testid="SearchButtonDesktop" class="NavBase-SearchButtonDesktop" aria-label="Open Search"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;20&#x27;%20height=&#x27;20.004&#x27;%20viewBox=&#x27;0%200%2020%2020.004&#x27;%3e%3cpath%20id=&#x27;Search&#x27;%20d=&#x27;M1223.785,115.394,1228,119.61,1226.612,121l-4.215-4.218a8.891,8.891,0,1,1,1.389-1.392Zm-1.969-.731a6.9,6.9,0,1,0-.148.148Z&#x27;%20transform=&#x27;translate(-1208%20-101)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;20&#x27;%20height=&#x27;20.004&#x27;%20viewBox=&#x27;0%200%2020%2020.004&#x27;%3e%3cpath%20id=&#x27;Search&#x27;%20d=&#x27;M1223.785,115.394,1228,119.61,1226.612,121l-4.215-4.218a8.891,8.891,0,1,1,1.389-1.392Zm-1.969-.731a6.9,6.9,0,1,0-.148.148Z&#x27;%20transform=&#x27;translate(-1208%20-101)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Search" class="NavBase-SearchIcon NavBase-SearchIcon_iconVariant_large NavBase-SearchIcon_iconType_search DefaultIcon"></span></button><button data-testid="SearchButtonTablet" class="NavBase-SearchButtonTablet" aria-label="Open Search in MegaMenu"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;20&#x27;%20height=&#x27;20.004&#x27;%20viewBox=&#x27;0%200%2020%2020.004&#x27;%3e%3cpath%20id=&#x27;Search&#x27;%20d=&#x27;M1223.785,115.394,1228,119.61,1226.612,121l-4.215-4.218a8.891,8.891,0,1,1,1.389-1.392Zm-1.969-.731a6.9,6.9,0,1,0-.148.148Z&#x27;%20transform=&#x27;translate(-1208%20-101)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;20&#x27;%20height=&#x27;20.004&#x27;%20viewBox=&#x27;0%200%2020%2020.004&#x27;%3e%3cpath%20id=&#x27;Search&#x27;%20d=&#x27;M1223.785,115.394,1228,119.61,1226.612,121l-4.215-4.218a8.891,8.891,0,1,1,1.389-1.392Zm-1.969-.731a6.9,6.9,0,1,0-.148.148Z&#x27;%20transform=&#x27;translate(-1208%20-101)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Search" class="NavBase-SearchIcon NavBase-SearchIcon_iconVariant_small NavBase-SearchIcon_iconType_search DefaultIcon"></span></button></div><div class="NavBase-LogoWrapper"><button data-testid="navBase-LogoMegaMenuButton" class="NavBase-LogoMegaMenuButton" aria-label="Open Mega menu"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Hamburger&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;16&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2016%2013&#x27;%3e%3crect%20id=&#x27;Rectangle_1690&#x27;%20data-name=&#x27;Rectangle%201690&#x27;%20width=&#x27;16&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0)&#x27;/%3e%3crect%20id=&#x27;Rectangle_1691&#x27;%20data-name=&#x27;Rectangle%201691&#x27;%20width=&#x27;13&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0%205)&#x27;/%3e%3crect%20id=&#x27;Rectangle_1692&#x27;%20data-name=&#x27;Rectangle%201692&#x27;%20width=&#x27;10&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0%2010)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Hamburger&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;16&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2016%2013&#x27;%3e%3crect%20id=&#x27;Rectangle_1690&#x27;%20data-name=&#x27;Rectangle%201690&#x27;%20width=&#x27;16&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0)&#x27;/%3e%3crect%20id=&#x27;Rectangle_1691&#x27;%20data-name=&#x27;Rectangle%201691&#x27;%20width=&#x27;13&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0%205)&#x27;/%3e%3crect%20id=&#x27;Rectangle_1692&#x27;%20data-name=&#x27;Rectangle%201692&#x27;%20width=&#x27;10&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0%2010)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Bars" class="NavBase-LogoMegaMenuIcon NavBase-LogoMegaMenuIcon_iconVariant_small NavBase-LogoMegaMenuIcon_iconType_bars DefaultIcon"></span></button><a class="NavBase-Logo" href="/" target="_self" data-discover="true"><img data-testid="logo-image" data-component="image" class="NavBase-LogoImage" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt8d5417b628e6b04b/656f5ed8485fda040aba11a1/Game_Developer_Logo_RGB_1.png?width=476&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt8d5417b628e6b04b/656f5ed8485fda040aba11a1/Game_Developer_Logo_RGB_1.png?width=476&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Game Developer Logo" title="Game Developer Logo"/></a></div><div class="NavBase-RegisterWrapper"><div data-module="newsletter-signup-promo"><div class="NewsletterSignupPromo-Button NewsletterSignupPromo-Button_small NewsletterSignupButton"><a data-component="button" data-testid="headerSmallNewsletterButton" class="Button Button_size_small Button_variant_primaryFilled" rel="noreferrer nofollow" target="_blank" href="https://gd-resources.gamedeveloper.com/c/pubRD.mpl?secure=1&amp;sr=pp&amp;_t=pp:&amp;qf=w_gamf01&amp;ch=gdwebbutton" data-action-type="sign-up" data-name="subscribe-nav"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;12&#x27;%20viewBox=&#x27;0%200%2013%2012&#x27;%3e%3cpath%20id=&#x27;Path_2045&#x27;%20data-name=&#x27;Path%202045&#x27;%20d=&#x27;M1052.983,38h11.694a.625.625,0,0,1,.458.2.659.659,0,0,1,.195.471V49.333a.659.659,0,0,1-.195.471.625.625,0,0,1-.458.2h-11.694a.625.625,0,0,1-.458-.2.659.659,0,0,1-.195-.471V38.667a.659.659,0,0,1,.195-.471A.625.625,0,0,1,1052.983,38Zm11.041,2.825-5.145,4.733-5.243-4.748v7.856h10.388Zm-10.057-1.492,4.9,4.441,4.833-4.441Z&#x27;%20transform=&#x27;translate(-1052.33%20-38)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;12&#x27;%20viewBox=&#x27;0%200%2013%2012&#x27;%3e%3cpath%20id=&#x27;Path_2045&#x27;%20data-name=&#x27;Path%202045&#x27;%20d=&#x27;M1052.983,38h11.694a.625.625,0,0,1,.458.2.659.659,0,0,1,.195.471V49.333a.659.659,0,0,1-.195.471.625.625,0,0,1-.458.2h-11.694a.625.625,0,0,1-.458-.2.659.659,0,0,1-.195-.471V38.667a.659.659,0,0,1,.195-.471A.625.625,0,0,1,1052.983,38Zm11.041,2.825-5.145,4.733-5.243-4.748v7.856h10.388Zm-10.057-1.492,4.9,4.441,4.833-4.441Z&#x27;%20transform=&#x27;translate(-1052.33%20-38)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Email" class="Button-Icon Button-Icon_position_left DefaultIcon"></span><span class="Button-ContentWrapper">Newsletter Sign-Up</span></a></div><div class="NewsletterSignupPromo-Button NewsletterSignupPromo-Button_medium NewsletterSignupButton"><div data-component="social-share" class="SocialShare SocialShare_variant_layout Layout-SocialShare"><a rel="noreferrer" aria-label="RSS" class="Layout-SocialLink" href="/rss.xml" target="_self" data-discover="true"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20version=&#x27;1.1&#x27;%20id=&#x27;Layer_1&#x27;%20fill=&#x27;currentColor&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20xmlns:xlink=&#x27;http://www.w3.org/1999/xlink&#x27;%20x=&#x27;0px&#x27;%20y=&#x27;0px&#x27;%20viewBox=&#x27;0%200%20310%20310&#x27;%20style=&#x27;enable-background:new%200%200%20310%20310;&#x27;%20xml:space=&#x27;preserve&#x27;%3e%3cg%20id=&#x27;XMLID_788_&#x27;%3e%3cpath%20id=&#x27;XMLID_789_&#x27;%20d=&#x27;M90.244,264.828C90.244,240.11,70.139,220,45.427,220c-24.715,0-44.822,20.11-44.822,44.828%20c0,24.714,20.107,44.82,44.822,44.82C70.139,309.648,90.244,289.542,90.244,264.828z&#x27;/%3e%3cpath%20id=&#x27;XMLID_790_&#x27;%20d=&#x27;M5.648,169.43c35.961,0,69.782,14.066,95.231,39.605c25.45,25.583,39.467,59.648,39.467,95.92%20c0,2.762,2.238,5,5,5h57.486c2.762,0,5-2.238,5-5c0-111.952-90.699-203.031-202.185-203.031c-2.762,0-5,2.238-5,5v57.505%20C0.648,167.191,2.887,169.43,5.648,169.43z&#x27;/%3e%3cpath%20id=&#x27;XMLID_791_&#x27;%20d=&#x27;M5.726,0c-2.762,0-5,2.238-5,5v57.495c0,2.762,2.238,5,5,5c130.24,0,236.199,106.544,236.199,237.505%20c0,2.762,2.238,5,5,5h57.471c2.762,0,5-2.238,5-5C309.396,136.822,173.17,0,5.726,0z&#x27;/%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20version=&#x27;1.1&#x27;%20id=&#x27;Layer_1&#x27;%20fill=&#x27;currentColor&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20xmlns:xlink=&#x27;http://www.w3.org/1999/xlink&#x27;%20x=&#x27;0px&#x27;%20y=&#x27;0px&#x27;%20viewBox=&#x27;0%200%20310%20310&#x27;%20style=&#x27;enable-background:new%200%200%20310%20310;&#x27;%20xml:space=&#x27;preserve&#x27;%3e%3cg%20id=&#x27;XMLID_788_&#x27;%3e%3cpath%20id=&#x27;XMLID_789_&#x27;%20d=&#x27;M90.244,264.828C90.244,240.11,70.139,220,45.427,220c-24.715,0-44.822,20.11-44.822,44.828%20c0,24.714,20.107,44.82,44.822,44.82C70.139,309.648,90.244,289.542,90.244,264.828z&#x27;/%3e%3cpath%20id=&#x27;XMLID_790_&#x27;%20d=&#x27;M5.648,169.43c35.961,0,69.782,14.066,95.231,39.605c25.45,25.583,39.467,59.648,39.467,95.92%20c0,2.762,2.238,5,5,5h57.486c2.762,0,5-2.238,5-5c0-111.952-90.699-203.031-202.185-203.031c-2.762,0-5,2.238-5,5v57.505%20C0.648,167.191,2.887,169.43,5.648,169.43z&#x27;/%3e%3cpath%20id=&#x27;XMLID_791_&#x27;%20d=&#x27;M5.726,0c-2.762,0-5,2.238-5,5v57.495c0,2.762,2.238,5,5,5c130.24,0,236.199,106.544,236.199,237.505%20c0,2.762,2.238,5,5,5h57.471c2.762,0,5-2.238,5-5C309.396,136.822,173.17,0,5.726,0z&#x27;/%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="RSS" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_rss DefaultIcon"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Twitter" class="Layout-SocialLink" href="https://twitter.com/gamedevdotcom/"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Capa_1&#x27;%20enable-background=&#x27;new%200%200%201226.37%201226.37&#x27;%20viewBox=&#x27;0%200%201226.37%201226.37&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m727.348%20519.284%20446.727-519.284h-105.86l-387.893%20450.887-309.809-450.887h-357.328l468.492%20681.821-468.492%20544.549h105.866l409.625-476.152%20327.181%20476.152h357.328l-485.863-707.086zm-144.998%20168.544-47.468-67.894-377.686-540.24h162.604l304.797%20435.991%2047.468%2067.894%20396.2%20566.721h-162.604l-323.311-462.446z&#x27;/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Capa_1&#x27;%20enable-background=&#x27;new%200%200%201226.37%201226.37&#x27;%20viewBox=&#x27;0%200%201226.37%201226.37&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m727.348%20519.284%20446.727-519.284h-105.86l-387.893%20450.887-309.809-450.887h-357.328l468.492%20681.821-468.492%20544.549h105.866l409.625-476.152%20327.181%20476.152h357.328l-485.863-707.086zm-144.998%20168.544-47.468-67.894-377.686-540.24h162.604l304.797%20435.991%2047.468%2067.894%20396.2%20566.721h-162.604l-323.311-462.446z&#x27;/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Twitter" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_twitter DefaultIcon"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Linkedin" class="Layout-SocialLink" href="https://www.linkedin.com/company/gamedeveloperofficial"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20version=&#x27;1.1&#x27;%20id=&#x27;Capa_1&#x27;%20fill=&#x27;currentColor&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20xmlns:xlink=&#x27;http://www.w3.org/1999/xlink&#x27;%20x=&#x27;0px&#x27;%20y=&#x27;0px&#x27;%20viewBox=&#x27;0%200%20409.6%20409.6&#x27;%20style=&#x27;enable-background:new%200%200%20409.6%20409.6;&#x27;%20xml:space=&#x27;preserve&#x27;%3e%3cg%3e%3cg%3e%3cpath%20d=&#x27;M375.465,0H34.135C15.365,0,0,15.365,0,34.135V375.47c0,18.76,15.365,34.13,34.135,34.13h341.33%20c18.77,0,34.135-15.37,34.135-34.13V34.135C409.6,15.365,394.235,0,375.465,0z%20M375.465,375.47H34.135V34.135h341.33V375.47z&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3cg%3e%3crect%20x=&#x27;102.4&#x27;%20y=&#x27;170.65&#x27;%20width=&#x27;34.135&#x27;%20height=&#x27;136.535&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3cg%3e%3ccircle%20cx=&#x27;119.45&#x27;%20cy=&#x27;128&#x27;%20r=&#x27;25.6&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3cg%3e%3cpath%20d=&#x27;M238.935,170.665c-12.498,0-24.069,3.61-34.135,9.467v-8.049h-34.135V307.2H204.8v-68.27%20c0-18.852,15.283-34.13,34.135-34.13c18.852,0,34.13,15.278,34.13,34.13v68.27H307.2v-68.27%20C307.2,201.231,276.634,170.665,238.935,170.665z&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20version=&#x27;1.1&#x27;%20id=&#x27;Capa_1&#x27;%20fill=&#x27;currentColor&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20xmlns:xlink=&#x27;http://www.w3.org/1999/xlink&#x27;%20x=&#x27;0px&#x27;%20y=&#x27;0px&#x27;%20viewBox=&#x27;0%200%20409.6%20409.6&#x27;%20style=&#x27;enable-background:new%200%200%20409.6%20409.6;&#x27;%20xml:space=&#x27;preserve&#x27;%3e%3cg%3e%3cg%3e%3cpath%20d=&#x27;M375.465,0H34.135C15.365,0,0,15.365,0,34.135V375.47c0,18.76,15.365,34.13,34.135,34.13h341.33%20c18.77,0,34.135-15.37,34.135-34.13V34.135C409.6,15.365,394.235,0,375.465,0z%20M375.465,375.47H34.135V34.135h341.33V375.47z&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3cg%3e%3crect%20x=&#x27;102.4&#x27;%20y=&#x27;170.65&#x27;%20width=&#x27;34.135&#x27;%20height=&#x27;136.535&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3cg%3e%3ccircle%20cx=&#x27;119.45&#x27;%20cy=&#x27;128&#x27;%20r=&#x27;25.6&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3cg%3e%3cpath%20d=&#x27;M238.935,170.665c-12.498,0-24.069,3.61-34.135,9.467v-8.049h-34.135V307.2H204.8v-68.27%20c0-18.852,15.283-34.13,34.135-34.13c18.852,0,34.13,15.278,34.13,34.13v68.27H307.2v-68.27%20C307.2,201.231,276.634,170.665,238.935,170.665z&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Linkedin" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_linkedin DefaultIcon"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Facebook" class="Layout-SocialLink" href="https://www.facebook.com/GameDeveloperOfficial"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20version=&#x27;1.1&#x27;%20id=&#x27;Capa_1&#x27;%20fill=&#x27;currentColor&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20xmlns:xlink=&#x27;http://www.w3.org/1999/xlink&#x27;%20x=&#x27;0px&#x27;%20y=&#x27;0px&#x27;%20viewBox=&#x27;0%200%20409.6%20409.6&#x27;%20style=&#x27;enable-background:new%200%200%20409.6%20409.6;&#x27;%20xml:space=&#x27;preserve&#x27;%3e%3cg%3e%3cg%3e%3cpath%20d=&#x27;M375.465,0H34.135C15.365,0,0,15.365,0,34.135V375.47c0,18.76,15.365,34.13,34.135,34.13h341.33%20c18.77,0,34.135-15.37,34.135-34.13V34.135C409.6,15.365,394.235,0,375.465,0z%20M375.465,375.47h-136.53V238.93h85.33V204.8h-85.33%20v-34.135c0-28.283,22.932-51.2,51.2-51.2h34.13V85.33h-34.13c-47.119,0.005-85.335,38.195-85.335,85.335V204.8h-34.135v34.13%20H204.8v136.54H34.135V34.135h341.33V375.47z&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20version=&#x27;1.1&#x27;%20id=&#x27;Capa_1&#x27;%20fill=&#x27;currentColor&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20xmlns:xlink=&#x27;http://www.w3.org/1999/xlink&#x27;%20x=&#x27;0px&#x27;%20y=&#x27;0px&#x27;%20viewBox=&#x27;0%200%20409.6%20409.6&#x27;%20style=&#x27;enable-background:new%200%200%20409.6%20409.6;&#x27;%20xml:space=&#x27;preserve&#x27;%3e%3cg%3e%3cg%3e%3cpath%20d=&#x27;M375.465,0H34.135C15.365,0,0,15.365,0,34.135V375.47c0,18.76,15.365,34.13,34.135,34.13h341.33%20c18.77,0,34.135-15.37,34.135-34.13V34.135C409.6,15.365,394.235,0,375.465,0z%20M375.465,375.47h-136.53V238.93h85.33V204.8h-85.33%20v-34.135c0-28.283,22.932-51.2,51.2-51.2h34.13V85.33h-34.13c-47.119,0.005-85.335,38.195-85.335,85.335V204.8h-34.135v34.13%20H204.8v136.54H34.135V34.135h341.33V375.47z&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Facebook" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_facebook DefaultIcon"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Bluesky" class="Layout-SocialLink" href="https://bsky.app/profile/gamedeveloper.bsky.social"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3c?xml%20version=&#x27;1.0&#x27;%20encoding=&#x27;UTF-8&#x27;?%3e%3csvg%20width=&#x27;600&#x27;%20height=&#x27;530&#x27;%20version=&#x27;1.1&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m135.72%2044.03c66.496%2049.921%20138.02%20151.14%20164.28%20205.46%2026.262-54.316%2097.782-155.54%20164.28-205.46%2047.98-36.021%20125.72-63.892%20125.72%2024.795%200%2017.712-10.155%20148.79-16.111%20170.07-20.703%2073.984-96.144%2092.854-163.25%2081.433%20117.3%2019.964%20147.14%2086.092%2082.697%20152.22-122.39%20125.59-175.91-31.511-189.63-71.766-2.514-7.3797-3.6904-10.832-3.7077-7.8964-0.0174-2.9357-1.1937%200.51669-3.7077%207.8964-13.714%2040.255-67.233%20197.36-189.63%2071.766-64.444-66.128-34.605-132.26%2082.697-152.22-67.108%2011.421-142.55-7.4491-163.25-81.433-5.9562-21.282-16.111-152.36-16.111-170.07%200-88.687%2077.742-60.816%20125.72-24.795z&#x27;%20fill=&#x27;%23000000&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3c?xml%20version=&#x27;1.0&#x27;%20encoding=&#x27;UTF-8&#x27;?%3e%3csvg%20width=&#x27;600&#x27;%20height=&#x27;530&#x27;%20version=&#x27;1.1&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m135.72%2044.03c66.496%2049.921%20138.02%20151.14%20164.28%20205.46%2026.262-54.316%2097.782-155.54%20164.28-205.46%2047.98-36.021%20125.72-63.892%20125.72%2024.795%200%2017.712-10.155%20148.79-16.111%20170.07-20.703%2073.984-96.144%2092.854-163.25%2081.433%20117.3%2019.964%20147.14%2086.092%2082.697%20152.22-122.39%20125.59-175.91-31.511-189.63-71.766-2.514-7.3797-3.6904-10.832-3.7077-7.8964-0.0174-2.9357-1.1937%200.51669-3.7077%207.8964-13.714%2040.255-67.233%20197.36-189.63%2071.766-64.444-66.128-34.605-132.26%2082.697-152.22-67.108%2011.421-142.55-7.4491-163.25-81.433-5.9562-21.282-16.111-152.36-16.111-170.07%200-88.687%2077.742-60.816%20125.72-24.795z&#x27;%20fill=&#x27;%23000000&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Bluesky" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_bluesky DefaultIcon"></span></span></a><a target="_blank" rel="noreferrer" aria-label="GoogleNews" class="Layout-SocialLink" href="https://news.google.com/publications/CAAqBwgKML7GrQswy9HFAw?ceid=US:en&amp;oc=3&amp;hl=en-US&amp;gl=US"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Capa_1&#x27;%20enable-background=&#x27;new%200%200%20512.288%20512.288&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20512.288%20512.288&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cg%3e%3cpath%20d=&#x27;m512.288%20152.697-67.644-13.455v-123.579h-377v123.579l-67.644%2013.455%2052.644%20264.661v79.268h407v-79.268zm-52.644%20110.885v-61.956h-50.232l-8.037-40.402%2075.636%2015.045zm-362-217.919h317v87.612l-19.603-3.899-10.573-53.153-286.824%2057.052zm-62.368%20130.606%20325.621-64.77%2017.927%2090.127h-326.18v61.956zm394.368%20290.356h-347v-235h347z&#x27;/%3e%3cpath%20d=&#x27;m200.144%20436.625c48.248%200%2087.5-39.252%2087.5-87.5v-15h-87.5v30h55.516c-6.615%2024.454-28.998%2042.5-55.516%2042.5-31.706%200-57.5-25.794-57.5-57.5s25.794-57.5%2057.5-57.5c14.834%200%2028.917%205.632%2039.653%2015.86l20.692-21.722c-16.34-15.566-37.771-24.138-60.345-24.138-48.248%200-87.5%2039.252-87.5%2087.5s39.252%2087.5%2087.5%2087.5z&#x27;/%3e%3cpath%20d=&#x27;m317.644%20274.125h82v30h-82z&#x27;/%3e%3cpath%20d=&#x27;m317.644%20334.125h82v30h-82z&#x27;/%3e%3cpath%20d=&#x27;m317.644%20394.125h82v30h-82z&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Capa_1&#x27;%20enable-background=&#x27;new%200%200%20512.288%20512.288&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20512.288%20512.288&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cg%3e%3cpath%20d=&#x27;m512.288%20152.697-67.644-13.455v-123.579h-377v123.579l-67.644%2013.455%2052.644%20264.661v79.268h407v-79.268zm-52.644%20110.885v-61.956h-50.232l-8.037-40.402%2075.636%2015.045zm-362-217.919h317v87.612l-19.603-3.899-10.573-53.153-286.824%2057.052zm-62.368%20130.606%20325.621-64.77%2017.927%2090.127h-326.18v61.956zm394.368%20290.356h-347v-235h347z&#x27;/%3e%3cpath%20d=&#x27;m200.144%20436.625c48.248%200%2087.5-39.252%2087.5-87.5v-15h-87.5v30h55.516c-6.615%2024.454-28.998%2042.5-55.516%2042.5-31.706%200-57.5-25.794-57.5-57.5s25.794-57.5%2057.5-57.5c14.834%200%2028.917%205.632%2039.653%2015.86l20.692-21.722c-16.34-15.566-37.771-24.138-60.345-24.138-48.248%200-87.5%2039.252-87.5%2087.5s39.252%2087.5%2087.5%2087.5z&#x27;/%3e%3cpath%20d=&#x27;m317.644%20274.125h82v30h-82z&#x27;/%3e%3cpath%20d=&#x27;m317.644%20334.125h82v30h-82z&#x27;/%3e%3cpath%20d=&#x27;m317.644%20394.125h82v30h-82z&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="GoogleNews" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_googleNews DefaultIcon"></span></span></a></div><a data-component="button" data-testid="headerMediumNewsletterButton" class="Button Button_size_medium Button_variant_primaryFilled" rel="noreferrer nofollow" target="_blank" href="https://gd-resources.gamedeveloper.com/c/pubRD.mpl?secure=1&amp;sr=pp&amp;_t=pp:&amp;qf=w_gamf01&amp;ch=gdwebbutton" data-action-type="sign-up" data-name="subscribe-nav"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;12&#x27;%20viewBox=&#x27;0%200%2013%2012&#x27;%3e%3cpath%20id=&#x27;Path_2045&#x27;%20data-name=&#x27;Path%202045&#x27;%20d=&#x27;M1052.983,38h11.694a.625.625,0,0,1,.458.2.659.659,0,0,1,.195.471V49.333a.659.659,0,0,1-.195.471.625.625,0,0,1-.458.2h-11.694a.625.625,0,0,1-.458-.2.659.659,0,0,1-.195-.471V38.667a.659.659,0,0,1,.195-.471A.625.625,0,0,1,1052.983,38Zm11.041,2.825-5.145,4.733-5.243-4.748v7.856h10.388Zm-10.057-1.492,4.9,4.441,4.833-4.441Z&#x27;%20transform=&#x27;translate(-1052.33%20-38)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;12&#x27;%20viewBox=&#x27;0%200%2013%2012&#x27;%3e%3cpath%20id=&#x27;Path_2045&#x27;%20data-name=&#x27;Path%202045&#x27;%20d=&#x27;M1052.983,38h11.694a.625.625,0,0,1,.458.2.659.659,0,0,1,.195.471V49.333a.659.659,0,0,1-.195.471.625.625,0,0,1-.458.2h-11.694a.625.625,0,0,1-.458-.2.659.659,0,0,1-.195-.471V38.667a.659.659,0,0,1,.195-.471A.625.625,0,0,1,1052.983,38Zm11.041,2.825-5.145,4.733-5.243-4.748v7.856h10.388Zm-10.057-1.492,4.9,4.441,4.833-4.441Z&#x27;%20transform=&#x27;translate(-1052.33%20-38)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Email" class="Button-Icon Button-Icon_position_left DefaultIcon"></span><span class="Button-ContentWrapper">Newsletter Sign-Up</span></a></div></div><button data-testid="RegisterSearchButton" class="NavBase-RegisterSearchButton" aria-label="Open Search in MegaMenu"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;20&#x27;%20height=&#x27;20.004&#x27;%20viewBox=&#x27;0%200%2020%2020.004&#x27;%3e%3cpath%20id=&#x27;Search&#x27;%20d=&#x27;M1223.785,115.394,1228,119.61,1226.612,121l-4.215-4.218a8.891,8.891,0,1,1,1.389-1.392Zm-1.969-.731a6.9,6.9,0,1,0-.148.148Z&#x27;%20transform=&#x27;translate(-1208%20-101)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;20&#x27;%20height=&#x27;20.004&#x27;%20viewBox=&#x27;0%200%2020%2020.004&#x27;%3e%3cpath%20id=&#x27;Search&#x27;%20d=&#x27;M1223.785,115.394,1228,119.61,1226.612,121l-4.215-4.218a8.891,8.891,0,1,1,1.389-1.392Zm-1.969-.731a6.9,6.9,0,1,0-.148.148Z&#x27;%20transform=&#x27;translate(-1208%20-101)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Search" class="NavBase-SearchIcon NavBase-SearchIcon_iconVariant_large NavBase-SearchIcon_iconType_search DefaultIcon"></span></button></div></div><div class="NavBase-SearchWrapper"><div class="FullScreenBackground NavBase-SearchBackground"></div><button data-testid="SearchCloseButton" class="NavBase-SearchCloseButton" aria-label="Close Search"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;18&#x27;%20height=&#x27;18&#x27;%20viewBox=&#x27;0%200%2018%2018&#x27;%3e%3cpath%20id=&#x27;Icon_material-close&#x27;%20data-name=&#x27;Icon%20material-close&#x27;%20d=&#x27;M25.5,9.313,23.687,7.5,16.5,14.687,9.313,7.5,7.5,9.313,14.687,16.5,7.5,23.687,9.313,25.5,16.5,18.313,23.687,25.5,25.5,23.687,18.313,16.5Z&#x27;%20transform=&#x27;translate(-7.5%20-7.5)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;18&#x27;%20height=&#x27;18&#x27;%20viewBox=&#x27;0%200%2018%2018&#x27;%3e%3cpath%20id=&#x27;Icon_material-close&#x27;%20data-name=&#x27;Icon%20material-close&#x27;%20d=&#x27;M25.5,9.313,23.687,7.5,16.5,14.687,9.313,7.5,7.5,9.313,14.687,16.5,7.5,23.687,9.313,25.5,16.5,18.313,23.687,25.5,25.5,23.687,18.313,16.5Z&#x27;%20transform=&#x27;translate(-7.5%20-7.5)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Close" class="NavBase-SearchIcon NavBase-SearchIcon_iconVariant_medium NavBase-SearchIcon_iconType_close DefaultIcon"></span></button></div></div></div><div class="Navigation-MainMenu"><div data-testid="mainMenu"><div class="FullScreenBackground MainMenu-BackgroundSubmenu"></div><div class="FullScreenBackground MainMenu-BackgroundMenuItem"></div><div class="MainMenu-Content"><div class="MainMenu-MegaMenuButtonWrapper"><button data-testid="mainMenu-MegaMenuButton" aria-label="Open MegaMenu" class="MainMenu-MegaMenuButton"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Hamburger&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;16&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2016%2013&#x27;%3e%3crect%20id=&#x27;Rectangle_1690&#x27;%20data-name=&#x27;Rectangle%201690&#x27;%20width=&#x27;16&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0)&#x27;/%3e%3crect%20id=&#x27;Rectangle_1691&#x27;%20data-name=&#x27;Rectangle%201691&#x27;%20width=&#x27;13&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0%205)&#x27;/%3e%3crect%20id=&#x27;Rectangle_1692&#x27;%20data-name=&#x27;Rectangle%201692&#x27;%20width=&#x27;10&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0%2010)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Hamburger&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;16&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2016%2013&#x27;%3e%3crect%20id=&#x27;Rectangle_1690&#x27;%20data-name=&#x27;Rectangle%201690&#x27;%20width=&#x27;16&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0)&#x27;/%3e%3crect%20id=&#x27;Rectangle_1691&#x27;%20data-name=&#x27;Rectangle%201691&#x27;%20width=&#x27;13&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0%205)&#x27;/%3e%3crect%20id=&#x27;Rectangle_1692&#x27;%20data-name=&#x27;Rectangle%201692&#x27;%20width=&#x27;10&#x27;%20height=&#x27;3&#x27;%20transform=&#x27;translate(0%2010)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Bars" class="MainMenu-MegaMenuIcon DefaultIcon"></span></button></div><div class="MainMenu-ItemsWrapper" role="menu"><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of Trending"><span class="MainMenu-MainTitle">Trending<span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M11.467,11.76,19.5,19.8l8.032-8.035L30,14.234,19.5,24.76,9,14.234Z&#x27;%20transform=&#x27;translate(-9%20-11.76)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M11.467,11.76,19.5,19.8l8.032-8.035L30,14.234,19.5,24.76,9,14.234Z&#x27;%20transform=&#x27;translate(-9%20-11.76)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="ChevronDown" class="MainMenu-SubMenuIcon DefaultIcon"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/keyword/layoffs" target="_self" data-discover="true">▫️ Layoffs &amp; Studio Closures</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/program/gdc-festival-of-gaming" target="_self" data-discover="true">▫️ GDC 2026</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/keyword/generative-ai" target="_self" data-discover="true">▫️ Generative AI &amp; ML</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/keyword/lawsuits" target="_self" data-discover="true">▫️ Industry Lawsuits</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/keyword/game-engines-development-tools" target="_self" data-discover="true">▫️ Development Tools</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/keyword/culture" target="_self" data-discover="true">▫️ Culture &amp; Dev Communities</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/latest-interviews" target="_self" data-discover="true">Trending</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/latest-interviews" target="_self" data-discover="true"><span class="SubMenu-SeeMoreText">Top Stories</span><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="ChevronRight" class="SubMenu-SeeMoreIcon DefaultIcon"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/design/the-art-of-game-writing-in-non-narrative-games-ft-emma-kidwell-and-harrison-pink" target="_self" data-discover="true"><div class="ContentPreview-ImageContainer"><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt2dca4f307e4c7cd7/6a2af15f6b9ea71848a55b7d/narrativeinnonnarrative.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt2dca4f307e4c7cd7/6a2af15f6b9ea71848a55b7d/narrativeinnonnarrative.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt2dca4f307e4c7cd7/6a2af15f6b9ea71848a55b7d/narrativeinnonnarrative.png?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt2dca4f307e4c7cd7/6a2af15f6b9ea71848a55b7d/narrativeinnonnarrative.png?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt2dca4f307e4c7cd7/6a2af15f6b9ea71848a55b7d/narrativeinnonnarrative.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Headshots of Harrison Smith and Emma Kidwell next to the Game Developer Podcast logo." title="Headshots of Harrison Smith and Emma Kidwell next to the Game Developer Podcast logo."/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_design ContentPreview-Category" href="/design" target="_self" data-discover="true">Design</a><a class="ContentPreview-IconWrapper" title="Link to all podcast" aria-label="Redirect to All page" data-testid="content-preview-icon-link" href="/podcasts" target="_self" data-discover="true"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Layer_1&#x27;%20fill=&#x27;currentColor&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20100%20100&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m63.333%2023.333c0-7.363-5.97-13.333-13.333-13.333s-13.333%205.97-13.333%2013.333v20c0%207.364%205.97%2013.333%2013.333%2013.333s13.333-5.97%2013.333-13.333z&#x27;/%3e%3cpath%20d=&#x27;m70%2030v13.333c0%2011.045-8.955%2020-20%2020s-20-8.954-20-20v-13.333c-3.682%200-6.667%202.985-6.667%206.667v6.667c0%2014.726%2011.94%2026.666%2026.667%2026.666s26.667-11.94%2026.667-26.667v-6.667c0-3.681-2.985-6.666-6.667-6.666z&#x27;/%3e%3cpath%20d=&#x27;m60%2083.33v.003h-6.667v-6.666h-6.666v6.666h-6.667c-3.682%200-6.667%202.985-6.667%206.667l33.334-.003c0-3.682-2.985-6.667-6.667-6.667z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Layer_1&#x27;%20fill=&#x27;currentColor&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20100%20100&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m63.333%2023.333c0-7.363-5.97-13.333-13.333-13.333s-13.333%205.97-13.333%2013.333v20c0%207.364%205.97%2013.333%2013.333%2013.333s13.333-5.97%2013.333-13.333z&#x27;/%3e%3cpath%20d=&#x27;m70%2030v13.333c0%2011.045-8.955%2020-20%2020s-20-8.954-20-20v-13.333c-3.682%200-6.667%202.985-6.667%206.667v6.667c0%2014.726%2011.94%2026.666%2026.667%2026.666s26.667-11.94%2026.667-26.667v-6.667c0-3.681-2.985-6.666-6.667-6.666z&#x27;/%3e%3cpath%20d=&#x27;m60%2083.33v.003h-6.667v-6.666h-6.666v6.666h-6.667c-3.682%200-6.667%202.985-6.667%206.667l33.334-.003c0-3.682-2.985-6.667-6.667-6.667z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Microphone" class="ContentPreview-Icon DefaultIcon"></span></a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/design/the-art-of-game-writing-in-non-narrative-games-ft-emma-kidwell-and-harrison-pink" target="_self" data-discover="true">The art of game writing in 'non-narrative' games ft. Emma Kidwell and Harrison Pink</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/design/the-art-of-game-writing-in-non-narrative-games-ft-emma-kidwell-and-harrison-pink" target="_self" data-discover="true">The art of game writing in 'non-narrative' games ft. Emma Kidwell and Harrison Pink</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/podcast" target="_self" data-discover="true">Game Developer Podcast</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Jun 12, 2026</span></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/production/can-telltale-games-learn-from-its-past-mistakes-" target="_self" data-discover="true"><div class="ContentPreview-ImageContainer"><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf0f714f19df696a2/6a281f4db26880fd0d5b9dbc/wolf2featured.jpg?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf0f714f19df696a2/6a281f4db26880fd0d5b9dbc/wolf2featured.jpg?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf0f714f19df696a2/6a281f4db26880fd0d5b9dbc/wolf2featured.jpg?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf0f714f19df696a2/6a281f4db26880fd0d5b9dbc/wolf2featured.jpg?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf0f714f19df696a2/6a281f4db26880fd0d5b9dbc/wolf2featured.jpg?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Bigby from The Wolf Among Us 2." title="Bigby from The Wolf Among Us 2."/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_production ContentPreview-Category" href="/production" target="_self" data-discover="true">Production</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/production/can-telltale-games-learn-from-its-past-mistakes-" target="_self" data-discover="true">Telltale Games is back, but can it learn from its past mistakes?</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/production/can-telltale-games-learn-from-its-past-mistakes-" target="_self" data-discover="true">Telltale Games is back, but can it learn from its past mistakes?</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/bryant-francis" target="_self" data-discover="true">Bryant Francis</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Jun 9, 2026</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">9 Min Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of Latest News"><span class="MainMenu-MainTitle">Latest News<span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M11.467,11.76,19.5,19.8l8.032-8.035L30,14.234,19.5,24.76,9,14.234Z&#x27;%20transform=&#x27;translate(-9%20-11.76)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M11.467,11.76,19.5,19.8l8.032-8.035L30,14.234,19.5,24.76,9,14.234Z&#x27;%20transform=&#x27;translate(-9%20-11.76)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="ChevronDown" class="MainMenu-SubMenuIcon DefaultIcon"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/series/patch-notes-newsletter" target="_self" data-discover="true">▫️ Weekly News Highlights</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/series/news-trending-story-deep-dives-column" target="_self" data-discover="true">▫️ News Deep Dives</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/about-the-game-developer-collective" target="_self" data-discover="true">▫️ GD Collective Research</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/latest-news" target="_self" data-discover="true">Latest News</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/latest-news" target="_self" data-discover="true"><span class="SubMenu-SeeMoreText"></span><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="ChevronRight" class="SubMenu-SeeMoreIcon DefaultIcon"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/business/playstack-ceo-pledges-to-be-mindful-about-growth-after-majority-takeover" target="_self" data-discover="true"><div class="ContentPreview-ImageContainer"><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blta5d1b01a65890258/6a2c024e8ad5d773aa4e3c12/Playstack_Header.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blta5d1b01a65890258/6a2c024e8ad5d773aa4e3c12/Playstack_Header.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blta5d1b01a65890258/6a2c024e8ad5d773aa4e3c12/Playstack_Header.png?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blta5d1b01a65890258/6a2c024e8ad5d773aa4e3c12/Playstack_Header.png?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blta5d1b01a65890258/6a2c024e8ad5d773aa4e3c12/Playstack_Header.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Key artwork for Balatro" title="Key artwork for Balatro"/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_business ContentPreview-Category" href="/business" target="_self" data-discover="true">Business</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/business/playstack-ceo-pledges-to-be-mindful-about-growth-after-majority-takeover" target="_self" data-discover="true">Playstack CEO pledges to be 'mindful' about growth after majority takeover</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/business/playstack-ceo-pledges-to-be-mindful-about-growth-after-majority-takeover" target="_self" data-discover="true">Playstack CEO pledges to be 'mindful' about growth after majority takeover</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/chris-kerr" target="_self" data-discover="true">Chris Kerr</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Jun 12, 2026</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">5 Min Read</span></div></div></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/business/playstack-sold-xbox-announces-business-reset-and-is-generative-ai-poisoning-the-well-patch-notes-55" target="_self" data-discover="true"><div class="ContentPreview-ImageContainer"><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blte931168c8e706a74/6a2bd7aa0b6e4ed9b361b5ae/Patch_Notes_55_Header.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blte931168c8e706a74/6a2bd7aa0b6e4ed9b361b5ae/Patch_Notes_55_Header.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blte931168c8e706a74/6a2bd7aa0b6e4ed9b361b5ae/Patch_Notes_55_Header.png?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blte931168c8e706a74/6a2bd7aa0b6e4ed9b361b5ae/Patch_Notes_55_Header.png?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blte931168c8e706a74/6a2bd7aa0b6e4ed9b361b5ae/Patch_Notes_55_Header.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="The Patch Notes logo overlaid on pixel art of &#x27;Jimbo, the clown mascot from Balatro" title="The Patch Notes logo overlaid on pixel art of &#x27;Jimbo, the clown mascot from Balatro"/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_business ContentPreview-Category" href="/business" target="_self" data-discover="true">Business</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/business/playstack-sold-xbox-announces-business-reset-and-is-generative-ai-poisoning-the-well-patch-notes-55" target="_self" data-discover="true">Playstack sold, Xbox announces business 'reset,' and is generative AI poisoning the well? - Patch Notes #56</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/business/playstack-sold-xbox-announces-business-reset-and-is-generative-ai-poisoning-the-well-patch-notes-55" target="_self" data-discover="true">Playstack sold, Xbox announces business 'reset,' and is generative AI poisoning the well? - Patch Notes #56</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/chris-kerr" target="_self" data-discover="true">Chris Kerr</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Jun 12, 2026</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">4 Min Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of [GDC]"><span class="MainMenu-MainTitle">[GDC]<span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M11.467,11.76,19.5,19.8l8.032-8.035L30,14.234,19.5,24.76,9,14.234Z&#x27;%20transform=&#x27;translate(-9%20-11.76)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M11.467,11.76,19.5,19.8l8.032-8.035L30,14.234,19.5,24.76,9,14.234Z&#x27;%20transform=&#x27;translate(-9%20-11.76)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="ChevronDown" class="MainMenu-SubMenuIcon DefaultIcon"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/keyword/gdc-festival-of-gaming" target="_self" data-discover="true">▫️ Talks &amp; Interviews</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" rel="noreferrer" target="_blank" href="https://gdconf.com/news-insights/">▫️ GDC News</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/series/unlocking-the-vault-gdc-vault-highlights-game-dev-tips" target="_self" data-discover="true">▫️ GDC Vault: Editor Picks</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" rel="noreferrer" target="_blank" href="https://www.gdconf.com">▫️ Register for GDC</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" rel="noreferrer" target="_blank" href="https://www.gdcvault.com">▫️ GDC Vault: Full Library </a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/keyword/state-of-the-game-industry-report" target="_self" data-discover="true">▫️ Dev Surveys, Data, &amp; Insights</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/keyword/gdc-festival-of-gaming" target="_self" data-discover="true">[GDC]</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/keyword/gdc-festival-of-gaming" target="_self" data-discover="true"><span class="SubMenu-SeeMoreText">Learn More</span><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="ChevronRight" class="SubMenu-SeeMoreIcon DefaultIcon"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/design/crafting-clair-obscur-expedition-33-s-mournful-tale-ft-jennifer-svedeberg-yen" target="_self" data-discover="true"><div class="ContentPreview-ImageContainer"><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt4e2f3a3b0e90f3cf/6a187d5d7f1d275be20dc072/JenniferSvedebergYen.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt4e2f3a3b0e90f3cf/6a187d5d7f1d275be20dc072/JenniferSvedebergYen.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt4e2f3a3b0e90f3cf/6a187d5d7f1d275be20dc072/JenniferSvedebergYen.png?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt4e2f3a3b0e90f3cf/6a187d5d7f1d275be20dc072/JenniferSvedebergYen.png?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt4e2f3a3b0e90f3cf/6a187d5d7f1d275be20dc072/JenniferSvedebergYen.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="A photo of Jennifer Svedeberg-Yen accepting an award by the GAme Developer Podcast logo." title="A photo of Jennifer Svedeberg-Yen accepting an award by the GAme Developer Podcast logo."/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_design ContentPreview-Category" href="/design" target="_self" data-discover="true">Design</a><a class="ContentPreview-IconWrapper" title="Link to all podcast" aria-label="Redirect to All page" data-testid="content-preview-icon-link" href="/podcasts" target="_self" data-discover="true"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Layer_1&#x27;%20fill=&#x27;currentColor&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20100%20100&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m63.333%2023.333c0-7.363-5.97-13.333-13.333-13.333s-13.333%205.97-13.333%2013.333v20c0%207.364%205.97%2013.333%2013.333%2013.333s13.333-5.97%2013.333-13.333z&#x27;/%3e%3cpath%20d=&#x27;m70%2030v13.333c0%2011.045-8.955%2020-20%2020s-20-8.954-20-20v-13.333c-3.682%200-6.667%202.985-6.667%206.667v6.667c0%2014.726%2011.94%2026.666%2026.667%2026.666s26.667-11.94%2026.667-26.667v-6.667c0-3.681-2.985-6.666-6.667-6.666z&#x27;/%3e%3cpath%20d=&#x27;m60%2083.33v.003h-6.667v-6.666h-6.666v6.666h-6.667c-3.682%200-6.667%202.985-6.667%206.667l33.334-.003c0-3.682-2.985-6.667-6.667-6.667z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Layer_1&#x27;%20fill=&#x27;currentColor&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20100%20100&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m63.333%2023.333c0-7.363-5.97-13.333-13.333-13.333s-13.333%205.97-13.333%2013.333v20c0%207.364%205.97%2013.333%2013.333%2013.333s13.333-5.97%2013.333-13.333z&#x27;/%3e%3cpath%20d=&#x27;m70%2030v13.333c0%2011.045-8.955%2020-20%2020s-20-8.954-20-20v-13.333c-3.682%200-6.667%202.985-6.667%206.667v6.667c0%2014.726%2011.94%2026.666%2026.667%2026.666s26.667-11.94%2026.667-26.667v-6.667c0-3.681-2.985-6.666-6.667-6.666z&#x27;/%3e%3cpath%20d=&#x27;m60%2083.33v.003h-6.667v-6.666h-6.666v6.666h-6.667c-3.682%200-6.667%202.985-6.667%206.667l33.334-.003c0-3.682-2.985-6.667-6.667-6.667z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Microphone" class="ContentPreview-Icon DefaultIcon"></span></a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/design/crafting-clair-obscur-expedition-33-s-mournful-tale-ft-jennifer-svedeberg-yen" target="_self" data-discover="true">Crafting Clair Obscur: Expedition 33's mournful tale ft. Jennifer Svedberg-Yen</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/design/crafting-clair-obscur-expedition-33-s-mournful-tale-ft-jennifer-svedeberg-yen" target="_self" data-discover="true">Crafting Clair Obscur: Expedition 33's mournful tale ft. Jennifer Svedberg-Yen</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/podcast" target="_self" data-discover="true">Game Developer Podcast</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">May 29, 2026</span></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/production/the-secret-to-overwatch-s-revitalization-over-communicating-" target="_self" data-discover="true"><div class="ContentPreview-ImageContainer"><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt94bdb13fed33c8ed/69f252276bebffa781af87ee/ss_a9c53181f654194c16719cfcf083cc7ae93b01bb.1920x1080.jpg?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt94bdb13fed33c8ed/69f252276bebffa781af87ee/ss_a9c53181f654194c16719cfcf083cc7ae93b01bb.1920x1080.jpg?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt94bdb13fed33c8ed/69f252276bebffa781af87ee/ss_a9c53181f654194c16719cfcf083cc7ae93b01bb.1920x1080.jpg?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt94bdb13fed33c8ed/69f252276bebffa781af87ee/ss_a9c53181f654194c16719cfcf083cc7ae93b01bb.1920x1080.jpg?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt94bdb13fed33c8ed/69f252276bebffa781af87ee/ss_a9c53181f654194c16719cfcf083cc7ae93b01bb.1920x1080.jpg?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Colorful heroes from Overwatch fly across the battlefield" title="Colorful heroes from Overwatch fly across the battlefield"/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_production ContentPreview-Category" href="/production" target="_self" data-discover="true">Production</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/production/the-secret-to-overwatch-s-revitalization-over-communicating-" target="_self" data-discover="true">The secret to Overwatch's revitalization? Over-communicating.</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/production/the-secret-to-overwatch-s-revitalization-over-communicating-" target="_self" data-discover="true">The secret to Overwatch's revitalization? Over-communicating.</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/carli-velocci-" target="_self" data-discover="true">Carli Velocci</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Apr 29, 2026</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">6 Min Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-TitleWrapper"><a class="MainMenu-Title" href="/about-the-game-developer-podcast" target="_self" data-discover="true">Game Developer Podcast</a></div><div class="MainMenu-TitleWrapper"><a class="MainMenu-Title" href="/design" target="_self" data-discover="true">Game Design</a></div><div class="MainMenu-TitleWrapper"><a class="MainMenu-Title" href="/programming" target="_self" data-discover="true">Programming</a></div><div class="MainMenu-MenuItemWrapper"><div class="MainMenu-MenuItem" role="menuitem" tabindex="0" data-testid="openSubMenu" aria-label="Open Sub menu of More"><span class="MainMenu-MainTitle">More<span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M11.467,11.76,19.5,19.8l8.032-8.035L30,14.234,19.5,24.76,9,14.234Z&#x27;%20transform=&#x27;translate(-9%20-11.76)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;21&#x27;%20height=&#x27;13&#x27;%20viewBox=&#x27;0%200%2021%2013&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M11.467,11.76,19.5,19.8l8.032-8.035L30,14.234,19.5,24.76,9,14.234Z&#x27;%20transform=&#x27;translate(-9%20-11.76)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="ChevronDown" class="MainMenu-SubMenuIcon DefaultIcon"></span></span></div><div class="MainMenu-SubMenuWrapper"><div class="MainMenu-SubMenuContent"><div data-module="sub-menu" class="SubMenu MainMenu-SubMenu" role="presentation"><div class="SubMenu-Container"><div class="SubMenu-RelatedTopicsWrapper"><h4 class="SubMenu-RelatedTopics">Related Topics</h4><div class="SubMenu-CasualLinkWrapper" data-testid="related"><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/latest-interviews" target="_self" data-discover="true">▫️ Developer Interviews</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/latest-case-studies" target="_self" data-discover="true">▫️ Game Dev Deep Dives</a></li></ul><ul class="SubMenu-CasualLinkList"><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/keyword/postmortems" target="_self" data-discover="true">▫️ Video Game Postmortems</a></li><li class="SubMenu-CasualLinkItem"><a class="SubMenu-ItemLink" data-testid="sub-menu-item-link" href="/program/partner-perspective-unity" target="_self" data-discover="true">▫️ Partner Perspectives</a></li></ul></div></div><div class="SubMenu-RecentContentWrapper" data-testid="recent"><div class="SubMenu-RecentContentHeading"><h4 data-testid="recent-title" class="SubMenu-RecentText">Recent in <a class="SubMenu-RecentTopicTerm" href="/latest-interviews" target="_self" data-discover="true">More</a></h4><div data-testid="see-more" class="SubMenu-SeeMore"><a class="SubMenu-MoreContent" href="/latest-interviews" target="_self" data-discover="true"><span class="SubMenu-SeeMoreText">Read More</span><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="ChevronRight" class="SubMenu-SeeMoreIcon DefaultIcon"></span></a></div></div><div class="SubMenu-ContentWrapper"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/design/the-art-of-game-writing-in-non-narrative-games-ft-emma-kidwell-and-harrison-pink" target="_self" data-discover="true"><div class="ContentPreview-ImageContainer"><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt2dca4f307e4c7cd7/6a2af15f6b9ea71848a55b7d/narrativeinnonnarrative.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt2dca4f307e4c7cd7/6a2af15f6b9ea71848a55b7d/narrativeinnonnarrative.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt2dca4f307e4c7cd7/6a2af15f6b9ea71848a55b7d/narrativeinnonnarrative.png?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt2dca4f307e4c7cd7/6a2af15f6b9ea71848a55b7d/narrativeinnonnarrative.png?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt2dca4f307e4c7cd7/6a2af15f6b9ea71848a55b7d/narrativeinnonnarrative.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Headshots of Harrison Smith and Emma Kidwell next to the Game Developer Podcast logo." title="Headshots of Harrison Smith and Emma Kidwell next to the Game Developer Podcast logo."/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_design ContentPreview-Category" href="/design" target="_self" data-discover="true">Design</a><a class="ContentPreview-IconWrapper" title="Link to all podcast" aria-label="Redirect to All page" data-testid="content-preview-icon-link" href="/podcasts" target="_self" data-discover="true"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Layer_1&#x27;%20fill=&#x27;currentColor&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20100%20100&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m63.333%2023.333c0-7.363-5.97-13.333-13.333-13.333s-13.333%205.97-13.333%2013.333v20c0%207.364%205.97%2013.333%2013.333%2013.333s13.333-5.97%2013.333-13.333z&#x27;/%3e%3cpath%20d=&#x27;m70%2030v13.333c0%2011.045-8.955%2020-20%2020s-20-8.954-20-20v-13.333c-3.682%200-6.667%202.985-6.667%206.667v6.667c0%2014.726%2011.94%2026.666%2026.667%2026.666s26.667-11.94%2026.667-26.667v-6.667c0-3.681-2.985-6.666-6.667-6.666z&#x27;/%3e%3cpath%20d=&#x27;m60%2083.33v.003h-6.667v-6.666h-6.666v6.666h-6.667c-3.682%200-6.667%202.985-6.667%206.667l33.334-.003c0-3.682-2.985-6.667-6.667-6.667z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Layer_1&#x27;%20fill=&#x27;currentColor&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20100%20100&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m63.333%2023.333c0-7.363-5.97-13.333-13.333-13.333s-13.333%205.97-13.333%2013.333v20c0%207.364%205.97%2013.333%2013.333%2013.333s13.333-5.97%2013.333-13.333z&#x27;/%3e%3cpath%20d=&#x27;m70%2030v13.333c0%2011.045-8.955%2020-20%2020s-20-8.954-20-20v-13.333c-3.682%200-6.667%202.985-6.667%206.667v6.667c0%2014.726%2011.94%2026.666%2026.667%2026.666s26.667-11.94%2026.667-26.667v-6.667c0-3.681-2.985-6.666-6.667-6.666z&#x27;/%3e%3cpath%20d=&#x27;m60%2083.33v.003h-6.667v-6.666h-6.666v6.666h-6.667c-3.682%200-6.667%202.985-6.667%206.667l33.334-.003c0-3.682-2.985-6.667-6.667-6.667z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Microphone" class="ContentPreview-Icon DefaultIcon"></span></a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/design/the-art-of-game-writing-in-non-narrative-games-ft-emma-kidwell-and-harrison-pink" target="_self" data-discover="true">The art of game writing in 'non-narrative' games ft. Emma Kidwell and Harrison Pink</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/design/the-art-of-game-writing-in-non-narrative-games-ft-emma-kidwell-and-harrison-pink" target="_self" data-discover="true">The art of game writing in 'non-narrative' games ft. Emma Kidwell and Harrison Pink</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/podcast" target="_self" data-discover="true">Game Developer Podcast</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Jun 12, 2026</span></div></div></div></div><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/production/can-telltale-games-learn-from-its-past-mistakes-" target="_self" data-discover="true"><div class="ContentPreview-ImageContainer"><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf0f714f19df696a2/6a281f4db26880fd0d5b9dbc/wolf2featured.jpg?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf0f714f19df696a2/6a281f4db26880fd0d5b9dbc/wolf2featured.jpg?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf0f714f19df696a2/6a281f4db26880fd0d5b9dbc/wolf2featured.jpg?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf0f714f19df696a2/6a281f4db26880fd0d5b9dbc/wolf2featured.jpg?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf0f714f19df696a2/6a281f4db26880fd0d5b9dbc/wolf2featured.jpg?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Bigby from The Wolf Among Us 2." title="Bigby from The Wolf Among Us 2."/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_production ContentPreview-Category" href="/production" target="_self" data-discover="true">Production</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/production/can-telltale-games-learn-from-its-past-mistakes-" target="_self" data-discover="true">Telltale Games is back, but can it learn from its past mistakes?</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/production/can-telltale-games-learn-from-its-past-mistakes-" target="_self" data-discover="true">Telltale Games is back, but can it learn from its past mistakes?</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/bryant-francis" target="_self" data-discover="true">Bryant Francis</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Jun 9, 2026</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">9 Min Read</span></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="MainMenu-SearchButtonWrapper"><button data-testid="mainMenu-SearchButton" aria-label="Open Search" class="MainMenu-SearchButton"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;20&#x27;%20height=&#x27;20.004&#x27;%20viewBox=&#x27;0%200%2020%2020.004&#x27;%3e%3cpath%20id=&#x27;Search&#x27;%20d=&#x27;M1223.785,115.394,1228,119.61,1226.612,121l-4.215-4.218a8.891,8.891,0,1,1,1.389-1.392Zm-1.969-.731a6.9,6.9,0,1,0-.148.148Z&#x27;%20transform=&#x27;translate(-1208%20-101)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;20&#x27;%20height=&#x27;20.004&#x27;%20viewBox=&#x27;0%200%2020%2020.004&#x27;%3e%3cpath%20id=&#x27;Search&#x27;%20d=&#x27;M1223.785,115.394,1228,119.61,1226.612,121l-4.215-4.218a8.891,8.891,0,1,1,1.389-1.392Zm-1.969-.731a6.9,6.9,0,1,0-.148.148Z&#x27;%20transform=&#x27;translate(-1208%20-101)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Search" class="MainMenu-SearchButtonIcon DefaultIcon"></span></button></div></div><div class="MainMenu-SearchWrapper"><div class="FullScreenBackground MainMenu-SearchBackground MainMenu-SearchBackground_withSearchBar"></div><button data-testid="mainMenu-SearchCloseButton" class="MainMenu-SearchCloseButton" aria-label="Close Search"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;18&#x27;%20height=&#x27;18&#x27;%20viewBox=&#x27;0%200%2018%2018&#x27;%3e%3cpath%20id=&#x27;Icon_material-close&#x27;%20data-name=&#x27;Icon%20material-close&#x27;%20d=&#x27;M25.5,9.313,23.687,7.5,16.5,14.687,9.313,7.5,7.5,9.313,14.687,16.5,7.5,23.687,9.313,25.5,16.5,18.313,23.687,25.5,25.5,23.687,18.313,16.5Z&#x27;%20transform=&#x27;translate(-7.5%20-7.5)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;18&#x27;%20height=&#x27;18&#x27;%20viewBox=&#x27;0%200%2018%2018&#x27;%3e%3cpath%20id=&#x27;Icon_material-close&#x27;%20data-name=&#x27;Icon%20material-close&#x27;%20d=&#x27;M25.5,9.313,23.687,7.5,16.5,14.687,9.313,7.5,7.5,9.313,14.687,16.5,7.5,23.687,9.313,25.5,16.5,18.313,23.687,25.5,25.5,23.687,18.313,16.5Z&#x27;%20transform=&#x27;translate(-7.5%20-7.5)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Close" class="MainMenu-SearchCloseIcon DefaultIcon"></span></button></div></div></div></div></nav><section class="Layout-Section"><div id="iiris-identity" data-testid="iris-identity"></div><div data-template="keyword-list" class="KeywordList"><div data-template="list-content" class="ListContent"><div class="TwoColumnLayout"><div id="portal-root"></div><div class="TwoColumnLayout-Head"><div class="KeywordList-Head" data-testid="keyword-list-head"><ul data-component="breadcrumb" class="Breadcrumb"><li class="Breadcrumb-ListItem"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M11.467,11.76,19.5,19.8l8.032-8.035L30,14.234,19.5,24.76,9,14.234Z&#x27;%20transform=&#x27;translate(24.76%20-9)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M11.467,11.76,19.5,19.8l8.032-8.035L30,14.234,19.5,24.76,9,14.234Z&#x27;%20transform=&#x27;translate(24.76%20-9)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="ChevronLeft" class="Breadcrumb-DividerIcon Breadcrumb-PrevIcon DefaultIcon"></span><a class="Breadcrumb-GetText Breadcrumb-GetText_isNearLastItem" data-testid="breadcrumb-link" href="/" target="_self" data-discover="true">Home</a><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="ChevronRight" class="Breadcrumb-DividerIcon Breadcrumb-NextIcon DefaultIcon"></span></li><li class="Breadcrumb-ListItem"><a class="Breadcrumb-GetText Breadcrumb-GetText_isLastItem" data-testid="breadcrumb-link" href="/keyword/blogs" target="_self" data-discover="true">Blogs</a></li></ul><div data-module="category-header" class="CategoryHeader CategoryHeader_primaryTitle"><div class="CategoryHeader-TitleWrapper CategoryHeader-TitleWrapper_primaryTitle"><div class="CategoryHeader-TitleContent"><h1 class="CategoryHeader-Title CategoryHeader-Title_primary CategoryHeader-Title_underlined" data-testid="category-header-title">Blogs</h1></div></div><div class="CategoryHeader-DescriptionWrapper"><p class="CategoryHeader-Description" data-testid="category-header-description">Blogs</p></div></div></div></div><div class="TwoColumnLayout-Content"><div class="TwoColumnLayout-Body"><div class="ListContent-Body" data-testid="list-content-body"><div class="ListContent-Content ListContent-Content_latest"><div class="ListContent-ContentWrapper"><div class="ListContent-ContentContainer"><div class="ContentPreview ListContent-LatestItem" data-module="content-preview" data-variant="normal"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_normal ContentPreview-Wrapper_articleSize_big"><a data-testid="thumbnail" href="/business/doom-the-dark-ages-financial-fate-rests-on-a-parry-mechanic" target="_self" data-discover="true"><div class="ContentPreview-ImageContainer"><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt29a087a5ab600184/681a6e95092833652bb51a11/doomparyblogfeatured.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt29a087a5ab600184/681a6e95092833652bb51a11/doomparyblogfeatured.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt29a087a5ab600184/681a6e95092833652bb51a11/doomparyblogfeatured.png?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt29a087a5ab600184/681a6e95092833652bb51a11/doomparyblogfeatured.png?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt29a087a5ab600184/681a6e95092833652bb51a11/doomparyblogfeatured.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="The Doom Slayer stares at the camera." title="The Doom Slayer stares at the camera."/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_business ContentPreview-Category" href="/business" target="_self" data-discover="true">Business</a><div class="ContentCard"><div class="ContentCard-Body"><a class="ContentCard-Title ContentCard-Title_displayOption_default" data-testid="preview-default-title" href="/business/doom-the-dark-ages-financial-fate-rests-on-a-parry-mechanic" target="_self" data-discover="true">Doom: The Dark Ages' financial fate rests on a parry mechanic</a><a class="ContentCard-Title ContentCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/business/doom-the-dark-ages-financial-fate-rests-on-a-parry-mechanic" target="_self" data-discover="true">Doom: The Dark Ages' financial fate rests on a parry mechanic</a><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_normal" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/bryant-francis" target="_self" data-discover="true">Bryant Francis</a></div></div></div><div class="ContentCard-Footer"><span class="ContentCard-Date" data-testid="content-card-date">May 6, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div></div><div class="ContentPreview ListContent-LatestItem" data-module="content-preview" data-variant="normal"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_normal ContentPreview-Wrapper_articleSize_big"><a data-testid="thumbnail" href="/design/is-blue-prince-s-success-due-to-social-play-" target="_self" data-discover="true"><div class="ContentPreview-ImageContainer"><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt834e20e36d7a0649/68093db3086eb5cf261918f1/blue_prince_darkroom_photo.jpg?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt834e20e36d7a0649/68093db3086eb5cf261918f1/blue_prince_darkroom_photo.jpg?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt834e20e36d7a0649/68093db3086eb5cf261918f1/blue_prince_darkroom_photo.jpg?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt834e20e36d7a0649/68093db3086eb5cf261918f1/blue_prince_darkroom_photo.jpg?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt834e20e36d7a0649/68093db3086eb5cf261918f1/blue_prince_darkroom_photo.jpg?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="A character portrait next to a note and magnifying glass" title="A character portrait next to a note and magnifying glass"/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_design ContentPreview-Category" href="/design" target="_self" data-discover="true">Design</a><div class="ContentCard"><div class="ContentCard-Body"><a class="ContentCard-Title ContentCard-Title_displayOption_default" data-testid="preview-default-title" href="/design/is-blue-prince-s-success-due-to-social-play-" target="_self" data-discover="true">Is Blue Prince's success due to 'social play?'</a><a class="ContentCard-Title ContentCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/design/is-blue-prince-s-success-due-to-social-play-" target="_self" data-discover="true">Is Blue Prince's success due to 'social play?'</a><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_normal" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/danielle-riendeau" target="_self" data-discover="true">Danielle Riendeau</a></div></div></div><div class="ContentCard-Footer"><span class="ContentCard-Date" data-testid="content-card-date">Apr 25, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem ListContent-ContentItem_borderless" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: A  graphic with the word &quot;play&quot; in the center" class="ListPreview-ImageLink" href="/business/the-huge-hidden-web-game-market-no-one-talks-about-and-how-to-get-in-" target="_self" data-discover="true"><div title="A  graphic with the word &quot;play&quot; in the center" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltfc68bfff3fcbeb0f/67f69a4b5d57d86222e2643b/Image_-_Header.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltfc68bfff3fcbeb0f/67f69a4b5d57d86222e2643b/Image_-_Header.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="A  graphic with the word &quot;play&quot; in the center" title="A  graphic with the word &quot;play&quot; in the center"/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_business ListPreview-Keyword" href="/business" target="_self" data-discover="true">Business</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/business/the-huge-hidden-web-game-market-no-one-talks-about-and-how-to-get-in-" target="_self" data-discover="true">The huge, hidden web game market no one talks about (and how to get in)</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/business/the-huge-hidden-web-game-market-no-one-talks-about-and-how-to-get-in-" target="_self" data-discover="true">The huge, hidden web game market no one talks about (and how to get in)</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Apr 15, 2025</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Dmitry Kachmar" href="/author/dmitry-kachmar" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt120870265293d448/67f69a97f23d8a8aeb9c981d/Dmitry_Kachmar_Playgama_Headshot.png?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt120870265293d448/67f69a97f23d8a8aeb9c981d/Dmitry_Kachmar_Playgama_Headshot.png?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Dmitry Kachmar" title="Picture of Dmitry Kachmar"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/dmitry-kachmar" target="_self" data-discover="true">Dmitry Kachmar<!-- -->,</a><span class="Contributors-ContributorTitle" data-testid="contributor-title">Founder</span></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: A trophy." class="ListPreview-ImageLink" href="/business/it-s-time-for-gaming-awards-to-rethink-the-strategy-sim-category" target="_self" data-discover="true"><div title="A trophy." class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltcb7aec5e34adbf9d/67f69201e8087a34593ed473/trophyfeatured.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltcb7aec5e34adbf9d/67f69201e8087a34593ed473/trophyfeatured.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="A trophy." title="A trophy."/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_business ListPreview-Keyword" href="/business" target="_self" data-discover="true">Business</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/business/it-s-time-for-gaming-awards-to-rethink-the-strategy-sim-category" target="_self" data-discover="true">It's time for gaming awards to rethink the strategy/sim category</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/business/it-s-time-for-gaming-awards-to-rethink-the-strategy-sim-category" target="_self" data-discover="true">It's time for gaming awards to rethink the strategy/sim category</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Apr 9, 2025</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Greg Foertsch" href="/author/greg-foertsch" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt55cc1ac6d2ccc802/67f692d4239d84575c6596e1/BitReactor_Office-82.jpg?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt55cc1ac6d2ccc802/67f692d4239d84575c6596e1/BitReactor_Office-82.jpg?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Greg Foertsch" title="Picture of Greg Foertsch"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/greg-foertsch" target="_self" data-discover="true">Greg Foertsch<!-- -->,</a><span class="Contributors-ContributorTitle" data-testid="contributor-title">CEO</span></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/production/a-developer-s-guide-to-effective-localization-in-unreal-engine" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt0ef35b851dea1766/677da0a4316bc621d370b71c/Wizard_of_Legend_2.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt0ef35b851dea1766/677da0a4316bc621d370b71c/Wizard_of_Legend_2.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_production ListPreview-Keyword" href="/production" target="_self" data-discover="true">Production</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/production/a-developer-s-guide-to-effective-localization-in-unreal-engine" target="_self" data-discover="true">A developer's guide to effective localization in Unreal Engine</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/production/a-developer-s-guide-to-effective-localization-in-unreal-engine" target="_self" data-discover="true">A developer's guide to effective localization in Unreal Engine</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Jan 17, 2025</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Shayan Aminnezhad" href="/author/shayan-aminnezhad" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Shayan Aminnezhad" title="Picture of Shayan Aminnezhad"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/shayan-aminnezhad" target="_self" data-discover="true">Shayan Aminnezhad</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: underwater adventure images" class="ListPreview-ImageLink" href="/programming/save-the-saves" target="_self" data-discover="true"><div title="underwater adventure images" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd69a9f920f70b945/67881ec41c37bbbb7e2be55b/pingle_image.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd69a9f920f70b945/67881ec41c37bbbb7e2be55b/pingle_image.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="underwater adventure images" title="underwater adventure images"/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_programming ListPreview-Keyword" href="/programming" target="_self" data-discover="true">Programming</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/programming/save-the-saves" target="_self" data-discover="true">Converting saves, a cross platform journey</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/programming/save-the-saves" target="_self" data-discover="true">Save the saves</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Jan 15, 2025</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Oleksii Honcharov" href="/author/oleksii-honcharov" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Oleksii Honcharov" title="Picture of Oleksii Honcharov"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/oleksii-honcharov" target="_self" data-discover="true">Oleksii Honcharov</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/design/6-elements-of-visual-guidance" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltfe3db091b4851f10/677c3d5fe3dd24e4f8442198/pexels-monicore-134065.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltfe3db091b4851f10/677c3d5fe3dd24e4f8442198/pexels-monicore-134065.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_design ListPreview-Keyword" href="/design" target="_self" data-discover="true">Design</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/design/6-elements-of-visual-guidance" target="_self" data-discover="true">6 elements of visual guidance</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/design/6-elements-of-visual-guidance" target="_self" data-discover="true">6 elements of visual guidance</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Jan 13, 2025</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Liu Xinyan" href="/author/liu-xinyan" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Liu Xinyan" title="Picture of Liu Xinyan"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/liu-xinyan" target="_self" data-discover="true">Liu Xinyan</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/business/valve-stakes-its-claim-to-pc-gaming-handhelds-with-steamos-s-arrival-on-lenovo-legion-go-s" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt88d4318d528a1cfb/677ed50dbf2d061c2a702fc6/Lenovo_Legion.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt88d4318d528a1cfb/677ed50dbf2d061c2a702fc6/Lenovo_Legion.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_business ListPreview-Keyword" href="/business" target="_self" data-discover="true">Business</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/business/valve-stakes-its-claim-to-pc-gaming-handhelds-with-steamos-s-arrival-on-lenovo-legion-go-s" target="_self" data-discover="true">Valve stakes its claim to PC gaming handhelds with SteamOS’s arrival on Lenovo Legion Go S</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/business/valve-stakes-its-claim-to-pc-gaming-handhelds-with-steamos-s-arrival-on-lenovo-legion-go-s" target="_self" data-discover="true">Valve stakes its claim to PC gaming handhelds with SteamOS’s arrival on Lenovo Legion Go S</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Jan 9, 2025</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="James McWhirter" href="/author/james-mcwhirter" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf2b78e3136bc934a/65e0f3d8d12110040acc2c87/James_McWhirter_image_SL.png?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf2b78e3136bc934a/65e0f3d8d12110040acc2c87/James_McWhirter_image_SL.png?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of James McWhirter" title="Picture of James McWhirter"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/james-mcwhirter" target="_self" data-discover="true">James McWhirter<!-- -->,</a><span class="Contributors-ContributorTitle" data-testid="contributor-title">Senior Analyst, Games</span></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/design/prince-of-persia-s-accessibility-is-inaccessible-to-some" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt92f40eeb9737e88d/677c3300827b1fbe14ab18e8/Prince_of_Persia_Accessibility.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt92f40eeb9737e88d/677c3300827b1fbe14ab18e8/Prince_of_Persia_Accessibility.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_design ListPreview-Keyword" href="/design" target="_self" data-discover="true">Design</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/design/prince-of-persia-s-accessibility-is-inaccessible-to-some" target="_self" data-discover="true">Prince of Persia's accessibility is inaccessible to some</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/design/prince-of-persia-s-accessibility-is-inaccessible-to-some" target="_self" data-discover="true">Prince of Persia's accessibility is inaccessible to some</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Jan 8, 2025</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Josh Bycer" href="/author/josh-bycer" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt98434093b67825eb/650efd6139ff36eea344b067/bycerportrait.jpg?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt98434093b67825eb/650efd6139ff36eea344b067/bycerportrait.jpg?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Josh Bycer" title="Picture of Josh Bycer"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/josh-bycer" target="_self" data-discover="true">Josh Bycer<!-- -->,</a><span class="Contributors-ContributorTitle" data-testid="contributor-title">Blogger</span></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/design/how-balance-can-affect-difficulty" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc9b7dff95a53de60/66b0f657593f06af462b936f/RESIZE_GD_Blogs_Header_RESIZE.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc9b7dff95a53de60/66b0f657593f06af462b936f/RESIZE_GD_Blogs_Header_RESIZE.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_design ListPreview-Keyword" href="/design" target="_self" data-discover="true">Design</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/design/how-balance-can-affect-difficulty" target="_self" data-discover="true">How balance can affect difficulty</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/design/how-balance-can-affect-difficulty" target="_self" data-discover="true">How balance can affect difficulty</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Jan 7, 2025</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Arjun Wagle" href="/author/arjun-wagle" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Arjun Wagle" title="Picture of Arjun Wagle"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/arjun-wagle" target="_self" data-discover="true">Arjun Wagle</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/production/reflections-on-the-journey-of-publishing-everseeker-little-critters" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt5473164f35f05951/677c2a9b316bc66b9370b183/Everseeker_Little_Critters.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt5473164f35f05951/677c2a9b316bc66b9370b183/Everseeker_Little_Critters.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_production ListPreview-Keyword" href="/production" target="_self" data-discover="true">Production</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/production/reflections-on-the-journey-of-publishing-everseeker-little-critters" target="_self" data-discover="true">Reflections on the journey of publishing Everseeker: Little Critters</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/production/reflections-on-the-journey-of-publishing-everseeker-little-critters" target="_self" data-discover="true">Reflections on the journey of publishing Everseeker: Little Critters</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Jan 7, 2025</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink Contributors-AvatarLink_isMultiple" aria-label="João Victor Kaian" href="/author/joao-victor-kaian" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of João Victor Kaian" title="Picture of João Victor Kaian"/></a><a class="Contributors-AvatarLink Contributors-AvatarLink_isMultiple" aria-label="Buscariol Maiettini" href="/author/buscariol-maiettini" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Buscariol Maiettini" title="Picture of Buscariol Maiettini"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName Contributors-ContributorName_showComma" data-testid="contributor-name" href="/author/joao-victor-kaian" target="_self" data-discover="true">João Victor Kaian<!-- -->,</a><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/buscariol-maiettini" target="_self" data-discover="true">Buscariol Maiettini</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/extended-reality/enhancing-experiences-through-scent-technological-integration-across-virtual-environments-entertainment-and-therapeutic-applications" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc9b7dff95a53de60/66b0f657593f06af462b936f/RESIZE_GD_Blogs_Header_RESIZE.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc9b7dff95a53de60/66b0f657593f06af462b936f/RESIZE_GD_Blogs_Header_RESIZE.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_extendedReality ListPreview-Keyword" href="/game-platforms/extended-reality" target="_self" data-discover="true">Extended Reality</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/extended-reality/enhancing-experiences-through-scent-technological-integration-across-virtual-environments-entertainment-and-therapeutic-applications" target="_self" data-discover="true">Enhancing experiences through scent: Technological integration across virtual environments, entertainment, and therapeutic applications</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/extended-reality/enhancing-experiences-through-scent-technological-integration-across-virtual-environments-entertainment-and-therapeutic-applications" target="_self" data-discover="true">Enhancing experiences through scent: Technological integration across virtual environments, entertainment, and therapeutic applications</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Jan 6, 2025</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Prateek Polapally" href="/author/prateek-polapally" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Prateek Polapally" title="Picture of Prateek Polapally"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/prateek-polapally" target="_self" data-discover="true">Prateek Polapally</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem ListContent-ContentItem_borderless" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/business/reality-check-for-vr-omdia-forecasts-decline-as-apple-s-entry-fails-to-galvanize-market" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf82b50e29f603d48/676470f60879222a87db12d7/Apple_Vision_Pro.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf82b50e29f603d48/676470f60879222a87db12d7/Apple_Vision_Pro.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_business ListPreview-Keyword" href="/business" target="_self" data-discover="true">Business</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/business/reality-check-for-vr-omdia-forecasts-decline-as-apple-s-entry-fails-to-galvanize-market" target="_self" data-discover="true">Reality check for VR: Omdia forecasts decline as Apple’s entry fails to galvanize market</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/business/reality-check-for-vr-omdia-forecasts-decline-as-apple-s-entry-fails-to-galvanize-market" target="_self" data-discover="true">Reality check for VR: Omdia forecasts decline as Apple’s entry fails to galvanize market</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Dec 20, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="George Jijiashvili" href="/author/george-jijiashvili" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt8c4d643639302af6/65088a9fa2e641425e443627/George_Jijiashvili.jpg?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt8c4d643639302af6/65088a9fa2e641425e443627/George_Jijiashvili.jpg?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of George Jijiashvili" title="Picture of George Jijiashvili"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/george-jijiashvili" target="_self" data-discover="true">George Jijiashvili<!-- -->,</a><span class="Contributors-ContributorTitle" data-testid="contributor-title">Senior Principal Analyst, Games</span></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/art/death-to-all-zombies-crafting-weapons-for-zombie-state" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltcf09a2794423bf81/675c638e32c9f19ad93ac90c/image001.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltcf09a2794423bf81/675c638e32c9f19ad93ac90c/image001.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_art ListPreview-Keyword" href="/art" target="_self" data-discover="true">Art</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/art/death-to-all-zombies-crafting-weapons-for-zombie-state" target="_self" data-discover="true">Death to all zombies: crafting weapons for Zombie State</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/art/death-to-all-zombies-crafting-weapons-for-zombie-state" target="_self" data-discover="true">Death to all zombies: crafting weapons for Zombie State</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Dec 18, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Denis Pozdnyakov" href="/author/untitled" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Denis Pozdnyakov" title="Picture of Denis Pozdnyakov"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/untitled" target="_self" data-discover="true">Denis Pozdnyakov</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/design/game-developer-s-2024-wrap-up-10-must-read-featured-blogs" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt6c2266ea7220dd97/6765b68cbee97250a3ed6574/Game_Developer_Best_Featured_Blogs_2024.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt6c2266ea7220dd97/6765b68cbee97250a3ed6574/Game_Developer_Best_Featured_Blogs_2024.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_design ListPreview-Keyword" href="/design" target="_self" data-discover="true">Design</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/design/game-developer-s-2024-wrap-up-10-must-read-featured-blogs" target="_self" data-discover="true">Game Developer's 2024 Wrap-Up: 10 must-read Featured Blogs</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/design/game-developer-s-2024-wrap-up-10-must-read-featured-blogs" target="_self" data-discover="true">Game Developer's 2024 Wrap-Up: 10 must-read Featured Blogs</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Dec 17, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Holly Green" href="/author/holly-green" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltdec6f50070a70555/650f059f457d12263163b2ca/75258562_10220983058707614_8585122828469141504_n.jpg?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltdec6f50070a70555/650f059f457d12263163b2ca/75258562_10220983058707614_8585122828469141504_n.jpg?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Holly Green" title="Picture of Holly Green"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/holly-green" target="_self" data-discover="true">Holly Green<!-- -->,</a><span class="Contributors-ContributorTitle" data-testid="contributor-title">Community Editorial Coordinator</span></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/business/microsoft-is-not-ready-to-deprioritize-xbox-consoles" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt5964c2ff9d771f86/6758a9b10ebbee9e364afedc/TIAX.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt5964c2ff9d771f86/6758a9b10ebbee9e364afedc/TIAX.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_business ListPreview-Keyword" href="/business" target="_self" data-discover="true">Business</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/business/microsoft-is-not-ready-to-deprioritize-xbox-consoles" target="_self" data-discover="true">Microsoft is not ready to deprioritize Xbox consoles</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/business/microsoft-is-not-ready-to-deprioritize-xbox-consoles" target="_self" data-discover="true">Microsoft is not ready to deprioritize Xbox consoles</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Dec 13, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="James McWhirter" href="/author/james-mcwhirter" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf2b78e3136bc934a/65e0f3d8d12110040acc2c87/James_McWhirter_image_SL.png?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf2b78e3136bc934a/65e0f3d8d12110040acc2c87/James_McWhirter_image_SL.png?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of James McWhirter" title="Picture of James McWhirter"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/james-mcwhirter" target="_self" data-discover="true">James McWhirter<!-- -->,</a><span class="Contributors-ContributorTitle" data-testid="contributor-title">Senior Analyst, Games</span></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/design/how-to-create-a-fair-auto-aiming-system-in-a-robot-shooter-" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltbb6f9b28881c65e5/6753208a424b7db0d7b05210/image01.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltbb6f9b28881c65e5/6753208a424b7db0d7b05210/image01.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_design ListPreview-Keyword" href="/design" target="_self" data-discover="true">Design</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/design/how-to-create-a-fair-auto-aiming-system-in-a-robot-shooter-" target="_self" data-discover="true">How to create a 'fair' auto-aiming system in a robot shooter</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/design/how-to-create-a-fair-auto-aiming-system-in-a-robot-shooter-" target="_self" data-discover="true">How to create a 'fair' auto-aiming system in a robot shooter</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Dec 10, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Kirill	Sharikov" href="/author/kirill-sharikov" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Kirill	Sharikov" title="Picture of Kirill	Sharikov"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/kirill-sharikov" target="_self" data-discover="true">Kirill	Sharikov</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/programming/6-steps-to-a-successful-playtesting-process-for-an-indie-developer" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc1abc82bc4098a66/6751dd7c47226c7aa696d7e5/Pic1.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc1abc82bc4098a66/6751dd7c47226c7aa696d7e5/Pic1.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_programming ListPreview-Keyword" href="/programming" target="_self" data-discover="true">Programming</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/programming/6-steps-to-a-successful-playtesting-process-for-an-indie-developer" target="_self" data-discover="true">6 steps to a successful playtesting process for an indie developer</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/programming/6-steps-to-a-successful-playtesting-process-for-an-indie-developer" target="_self" data-discover="true">6 steps to a successful playtesting process for an indie developer</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Dec 9, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Maxim Kiselev" href="/author/maxim-kiselev" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Maxim Kiselev" title="Picture of Maxim Kiselev"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/maxim-kiselev" target="_self" data-discover="true">Maxim Kiselev</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/business/mastering-hybrid-casual-game-design-lessons-in-balancing-depth-and-accessibility" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt3a4e6e02a38d453d/675b21c5f38e1a9208bbbba4/header_image.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt3a4e6e02a38d453d/675b21c5f38e1a9208bbbba4/header_image.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_business ListPreview-Keyword" href="/business" target="_self" data-discover="true">Business</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/business/mastering-hybrid-casual-game-design-lessons-in-balancing-depth-and-accessibility" target="_self" data-discover="true">Mastering hybrid-casual game design: Lessons in balancing depth and accessibility</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/business/mastering-hybrid-casual-game-design-lessons-in-balancing-depth-and-accessibility" target="_self" data-discover="true">Mastering hybrid-casual game design: Lessons in balancing depth and accessibility</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Dec 6, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Anton Volnykh" href="/author/anton-volnykh" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Anton Volnykh" title="Picture of Anton Volnykh"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/anton-volnykh" target="_self" data-discover="true">Anton Volnykh</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/business/the-last-humble-bee-postmortem-staying-sane-in-solo-development" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltdfbed1bf39f8655c/674de2bbbeae623ba2080382/The_Last_Humble_Bee.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltdfbed1bf39f8655c/674de2bbbeae623ba2080382/The_Last_Humble_Bee.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_business ListPreview-Keyword" href="/business" target="_self" data-discover="true">Business</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/business/the-last-humble-bee-postmortem-staying-sane-in-solo-development" target="_self" data-discover="true">The Last Humble Bee postmortem: Staying sane in solo development</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/business/the-last-humble-bee-postmortem-staying-sane-in-solo-development" target="_self" data-discover="true">The Last Humble Bee postmortem: Staying sane in solo development</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Dec 5, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Jacob Weersing" href="/author/jacob-weersing" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Jacob Weersing" title="Picture of Jacob Weersing"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/jacob-weersing" target="_self" data-discover="true">Jacob Weersing<!-- -->,</a><span class="Contributors-ContributorTitle" data-testid="contributor-title">Blogger</span></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/business/gnarly-content-9-risks-for-horror-game-development" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt5f04c90e1430ce0a/674de0f2a5326dc6edc4ea7a/ENd_of_Ember.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt5f04c90e1430ce0a/674de0f2a5326dc6edc4ea7a/ENd_of_Ember.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_business ListPreview-Keyword" href="/business" target="_self" data-discover="true">Business</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/business/gnarly-content-9-risks-for-horror-game-development" target="_self" data-discover="true">Gnarly content: 9 risks for horror game development</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/business/gnarly-content-9-risks-for-horror-game-development" target="_self" data-discover="true">Gnarly content: 9 risks for horror game development</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Dec 4, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Chad Habel" href="/author/untitled" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Chad Habel" title="Picture of Chad Habel"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/untitled" target="_self" data-discover="true">Chad Habel</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/design/how-to-play-a-game-" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd928f16f09e68571/6749d48ed80094747c893c31/coverimage.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd928f16f09e68571/6749d48ed80094747c893c31/coverimage.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_design ListPreview-Keyword" href="/design" target="_self" data-discover="true">Design</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/design/how-to-play-a-game-" target="_self" data-discover="true">How to play a game if you want to learn about making one</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/design/how-to-play-a-game-" target="_self" data-discover="true">How to play a game if you want to learn about making one</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Dec 3, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Ishan Manjrekar" href="/author/untitled" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Ishan Manjrekar" title="Picture of Ishan Manjrekar"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/untitled" target="_self" data-discover="true">Ishan Manjrekar</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem ListContent-ContentItem_borderless" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: an icy landscape and giant dice" class="ListPreview-ImageLink" href="/marketing/the-art-of-balance-in-community-management" target="_self" data-discover="true"><div title="an icy landscape and giant dice" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc3c0575110392521/6749d30cd2ab322257f7c41a/Midjiwan_Community_Byline_Featured_Image.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc3c0575110392521/6749d30cd2ab322257f7c41a/Midjiwan_Community_Byline_Featured_Image.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="an icy landscape and giant dice" title="an icy landscape and giant dice"/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_marketing ListPreview-Keyword" href="/marketing" target="_self" data-discover="true">Marketing</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/marketing/the-art-of-balance-in-community-management" target="_self" data-discover="true">The art of balance in community management</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/marketing/the-art-of-balance-in-community-management" target="_self" data-discover="true">The art of balance in community management</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Dec 2, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Brenton Stockwell" href="/author/untitled" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Brenton Stockwell" title="Picture of Brenton Stockwell"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/untitled" target="_self" data-discover="true">Brenton Stockwell</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/production/survival-guide-to-develop-a-game-and-then-publish-it-on-steam-" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt0f223aa82c800eec/673f549ba3cfe714219a4409/Header_Everdark.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt0f223aa82c800eec/673f549ba3cfe714219a4409/Header_Everdark.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_production ListPreview-Keyword" href="/production" target="_self" data-discover="true">Production</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/production/survival-guide-to-develop-a-game-and-then-publish-it-on-steam-" target="_self" data-discover="true">Survival guide to developing a game and publishing it on Steam</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/production/survival-guide-to-develop-a-game-and-then-publish-it-on-steam-" target="_self" data-discover="true">Survival guide to developing a game and publishing it on Steam</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Nov 27, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Miguel Enjuto Ojanguren" href="/author/untitled" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Miguel Enjuto Ojanguren" title="Picture of Miguel Enjuto Ojanguren"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/untitled" target="_self" data-discover="true">Miguel Enjuto Ojanguren</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: game icons on a factory belt" class="ListPreview-ImageLink" href="/design/why-you-can-t-objectively-design-the-perfect-game" target="_self" data-discover="true"><div title="game icons on a factory belt" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt75aa64b424613e76/67460047a659b01f9c28af7d/synthetic_games.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt75aa64b424613e76/67460047a659b01f9c28af7d/synthetic_games.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="game icons on a factory belt" title="game icons on a factory belt"/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_design ListPreview-Keyword" href="/design" target="_self" data-discover="true">Design</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/design/why-you-can-t-objectively-design-the-perfect-game" target="_self" data-discover="true">Why you can't objectively build great games</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/design/why-you-can-t-objectively-design-the-perfect-game" target="_self" data-discover="true">Why you can't objectively build great games</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Nov 25, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Josh Bycer" href="/author/josh-bycer" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt98434093b67825eb/650efd6139ff36eea344b067/bycerportrait.jpg?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt98434093b67825eb/650efd6139ff36eea344b067/bycerportrait.jpg?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Josh Bycer" title="Picture of Josh Bycer"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/josh-bycer" target="_self" data-discover="true">Josh Bycer<!-- -->,</a><span class="Contributors-ContributorTitle" data-testid="contributor-title">Blogger</span></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/programming/how-wall-running-and-high-speed-movement-works-in-project-haste" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt592378c12ebcf88b/673f58f3a45977cf34f3d05a/Greg_(1).png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt592378c12ebcf88b/673f58f3a45977cf34f3d05a/Greg_(1).png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_programming ListPreview-Keyword" href="/programming" target="_self" data-discover="true">Programming</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/programming/how-wall-running-and-high-speed-movement-works-in-project-haste" target="_self" data-discover="true">How wall running and high-speed movement works in Project: Haste</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/programming/how-wall-running-and-high-speed-movement-works-in-project-haste" target="_self" data-discover="true">How wall running and high-speed movement works in Project: Haste</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Nov 22, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/production/10-lessons-learned-from-the-development-of-nikoderiko" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt5bc27479f52b6c81/673f870ce2b6b1c33987b30e/1.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt5bc27479f52b6c81/673f870ce2b6b1c33987b30e/1.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_production ListPreview-Keyword" href="/production" target="_self" data-discover="true">Production</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/production/10-lessons-learned-from-the-development-of-nikoderiko" target="_self" data-discover="true">10 lessons learned from the development of Nikoderiko</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/production/10-lessons-learned-from-the-development-of-nikoderiko" target="_self" data-discover="true">10 lessons learned from the development of Nikoderiko</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Nov 21, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Dmitry Smirnov" href="/author/dmitry-smirnov" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Dmitry Smirnov" title="Picture of Dmitry Smirnov"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/dmitry-smirnov" target="_self" data-discover="true">Dmitry Smirnov</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/audio/how-to-record-a-giant-mech-recording-sound-design-with-war-robots" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf525b41c67c3e7f5/673e52c60f3226cb6479b0b2/gdfb_fullsize_test.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf525b41c67c3e7f5/673e52c60f3226cb6479b0b2/gdfb_fullsize_test.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_audio ListPreview-Keyword" href="/audio" target="_self" data-discover="true">Audio</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/audio/how-to-record-a-giant-mech-recording-sound-design-with-war-robots" target="_self" data-discover="true">How to record a giant mech: Recording sound design with War Robots</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/audio/how-to-record-a-giant-mech-recording-sound-design-with-war-robots" target="_self" data-discover="true">How to record a giant mech: Recording sound design with War Robots</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Nov 20, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Ilya Viktorov" href="/author/ilya-viktorov" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Ilya Viktorov" title="Picture of Ilya Viktorov"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/ilya-viktorov" target="_self" data-discover="true">Ilya Viktorov</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/production/reviving-retro-the-art-and-science-of-recharging-atari-s-classic-games-for-modern-audiences" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltfcf53681e45b9768/673775407a0f437391091a2d/Hero_image.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltfcf53681e45b9768/673775407a0f437391091a2d/Hero_image.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_production ListPreview-Keyword" href="/production" target="_self" data-discover="true">Production</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/production/reviving-retro-the-art-and-science-of-recharging-atari-s-classic-games-for-modern-audiences" target="_self" data-discover="true">Reviving retro: the art and science of recharging Atari’s classic games for modern audiences</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/production/reviving-retro-the-art-and-science-of-recharging-atari-s-classic-games-for-modern-audiences" target="_self" data-discover="true">Reviving retro: the art and science of recharging Atari’s classic games for modern audiences</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Nov 18, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Augustas Vachauzas" href="/author/untitled" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Augustas Vachauzas" title="Picture of Augustas Vachauzas"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/untitled" target="_self" data-discover="true">Augustas Vachauzas</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/design/the-art-of-game-balance-evolution" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltdc3edf6006df457b/67324dcc234a34327e8ff50f/Scales.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltdc3edf6006df457b/67324dcc234a34327e8ff50f/Scales.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_design ListPreview-Keyword" href="/design" target="_self" data-discover="true">Design</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/design/the-art-of-game-balance-evolution" target="_self" data-discover="true">The art of game balance: evolution</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/design/the-art-of-game-balance-evolution" target="_self" data-discover="true">The art of game balance: evolution</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Nov 18, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Breno Azevedo" href="/author/breno-azevedo" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Breno Azevedo" title="Picture of Breno Azevedo"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/breno-azevedo" target="_self" data-discover="true">Breno Azevedo</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/production/i-designed-economies-for-150m-games-here-s-my-ultimate-handbook" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blte50972fdeed355f2/67323006df2e42a1b2b398a8/img1.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blte50972fdeed355f2/67323006df2e42a1b2b398a8/img1.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_production ListPreview-Keyword" href="/production" target="_self" data-discover="true">Production</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/production/i-designed-economies-for-150m-games-here-s-my-ultimate-handbook" target="_self" data-discover="true">I designed economies for $150M games: here's my ultimate handbook</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/production/i-designed-economies-for-150m-games-here-s-my-ultimate-handbook" target="_self" data-discover="true">I designed economies for $150M games: here's my ultimate handbook</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Nov 15, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Alex	Wiserax" href="/author/alex-wiserax" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Alex	Wiserax" title="Picture of Alex	Wiserax"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/alex-wiserax" target="_self" data-discover="true">Alex	Wiserax</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/design/bringing-improvisation-to-digital-games-with-genai" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc9b7dff95a53de60/66b0f657593f06af462b936f/RESIZE_GD_Blogs_Header_RESIZE.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc9b7dff95a53de60/66b0f657593f06af462b936f/RESIZE_GD_Blogs_Header_RESIZE.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_design ListPreview-Keyword" href="/design" target="_self" data-discover="true">Design</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/design/bringing-improvisation-to-digital-games-with-genai" target="_self" data-discover="true">Bringing improvisation to digital games with GenAI</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/design/bringing-improvisation-to-digital-games-with-genai" target="_self" data-discover="true">Bringing improvisation to digital games with GenAI</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Nov 14, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Michael Yichao" href="/author/-title" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Michael Yichao" title="Picture of Michael Yichao"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/-title" target="_self" data-discover="true">Michael Yichao</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/audio/reflections-on-my-score-for-tactical-breach-wizards" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt7eada1366ade2416/6734de4921914346f5dc7c6d/Tactical_Breach_Wizards.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt7eada1366ade2416/6734de4921914346f5dc7c6d/Tactical_Breach_Wizards.jpg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_audio ListPreview-Keyword" href="/audio" target="_self" data-discover="true">Audio</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/audio/reflections-on-my-score-for-tactical-breach-wizards" target="_self" data-discover="true">Reflections on my score for Tactical Breach Wizards</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/audio/reflections-on-my-score-for-tactical-breach-wizards" target="_self" data-discover="true">Reflections on my score for Tactical Breach Wizards</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Nov 13, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Robert Arzola" href="/author/-title" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Robert Arzola" title="Picture of Robert Arzola"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/-title" target="_self" data-discover="true">Robert Arzola</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/design/must-have-tools-and-libraries-for-indie-game-developers-in-2024" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltdf8a1a742cc4a912/673236419d70b8d5ad06deaa/AdobeStock_615906569.jpeg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltdf8a1a742cc4a912/673236419d70b8d5ad06deaa/AdobeStock_615906569.jpeg?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_design ListPreview-Keyword" href="/design" target="_self" data-discover="true">Design</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/design/must-have-tools-and-libraries-for-indie-game-developers-in-2024" target="_self" data-discover="true">Must-have tools and libraries for indie game developers in 2024</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/design/must-have-tools-and-libraries-for-indie-game-developers-in-2024" target="_self" data-discover="true">Must-have tools and libraries for indie game developers in 2024</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Nov 11, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Maxim Kiselev" href="/author/maxim-kiselev" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Maxim Kiselev" title="Picture of Maxim Kiselev"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/maxim-kiselev" target="_self" data-discover="true">Maxim Kiselev</a></div></div></div></div></div><div class="ContentPreview ListContent-ContentItem" data-module="content-preview" data-variant="small"><div class="ListPreview"><div class="ListPreview-Container"><div class="ListPreview-ImageWrapper"><a aria-label="Read more about: " class="ListPreview-ImageLink" href="/design/the-overdesign-trap-of-game-design" target="_self" data-discover="true"><div title="" class="ListPreview-ImageContainer"><img data-component="image" class="ListPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltcbd718b7be12d37c/6720fe5021f0d3bcd01b1459/Picture2.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltcbd718b7be12d37c/6720fe5021f0d3bcd01b1459/Picture2.png?width=300&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="" title=""/></div></a></div><div class="ListPreview-ContentWrapper"><div class="ListPreview-KeywordWrapper"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_design ListPreview-Keyword" href="/design" target="_self" data-discover="true">Design</a></div><div class="ListPreview-TitleWrapper"><a class="ListPreview-Title" data-testid="preview-default-title" href="/design/the-overdesign-trap-of-game-design" target="_self" data-discover="true">The overdesign trap of game design</a></div><div class="ListPreview-MobileTitleWrapper"><a class="ListPreview-Title" data-testid="preview-mobile-title" href="/design/the-overdesign-trap-of-game-design" target="_self" data-discover="true">The overdesign trap of game design</a></div><div class="ListPreview-Footer"><span class="ListPreview-Date" data-testid="list-preview-date">Nov 4, 2024</span><div data-module="card-time" class="CardTime"><span class="CardTime-SeparatorLine">|</span><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">1 Min Read</span></div></div></div></div></div><div class="ListPreview-ContributorsWrapper"><div class="Contributors Contributors_variant_slimline Contributors_cardVariant_small Contributors_hasAvatar" data-component="contributors"><div class="Contributors-AvatarWrapper"><a class="Contributors-AvatarLink" aria-label="Josh Bycer" href="/author/josh-bycer" target="_self" data-discover="true"><img aria-hidden="true" data-testid="contributor-avatar" data-component="image" class="Contributors-Avatar" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt98434093b67825eb/650efd6139ff36eea344b067/bycerportrait.jpg?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt98434093b67825eb/650efd6139ff36eea344b067/bycerportrait.jpg?width=100&amp;auto=webp&amp;quality=80&amp;disable=upscale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Picture of Josh Bycer" title="Picture of Josh Bycer"/></a></div><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/josh-bycer" target="_self" data-discover="true">Josh Bycer<!-- -->,</a><span class="Contributors-ContributorTitle" data-testid="contributor-title">Blogger</span></div></div></div></div></div><nav aria-label="Pagination Navigation" data-component="pagination" class="ListContent-Pagination"><ul class="Pagination-Wrapper"><li><a tabindex="-1" aria-label="Cannot go to Previous page" class="Pagination-Link Pagination-Link_disabled" href="/keyword/blogs" target="_self" data-discover="true"><span class="Pagination-PageWrapper"><span class="Pagination-ArrowIconWrapper Pagination-ArrowIconWrapper_disabled"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;11.959&#x27;%20height=&#x27;12&#x27;%20viewBox=&#x27;0%200%2011.959%2012&#x27;%3e%3cg%20id=&#x27;arrow_icon&#x27;%20data-name=&#x27;arrow%20icon&#x27;%20transform=&#x27;translate(11.959%2012)%20rotate(180)&#x27;%3e%3cpath%20id=&#x27;arrow_icon-2&#x27;%20data-name=&#x27;arrow%20icon&#x27;%20d=&#x27;M13431.958,1289l-6.358,6-1.531-1.512,4.017-3.472H13420v-2.033h7.979l-3.91-3.475,1.63-1.507Z&#x27;%20transform=&#x27;translate(-13419.999%20-1283)&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;11.959&#x27;%20height=&#x27;12&#x27;%20viewBox=&#x27;0%200%2011.959%2012&#x27;%3e%3cg%20id=&#x27;arrow_icon&#x27;%20data-name=&#x27;arrow%20icon&#x27;%20transform=&#x27;translate(11.959%2012)%20rotate(180)&#x27;%3e%3cpath%20id=&#x27;arrow_icon-2&#x27;%20data-name=&#x27;arrow%20icon&#x27;%20d=&#x27;M13431.958,1289l-6.358,6-1.531-1.512,4.017-3.472H13420v-2.033h7.979l-3.91-3.475,1.63-1.507Z&#x27;%20transform=&#x27;translate(-13419.999%20-1283)&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="ArrowLeft" class="Pagination-ArrowIcon Pagination-ArrowIcon_disabled DefaultIcon"></span></span><span data-testid="labelText" class="Pagination-Move">Previous</span></span></a></li><li><a tabindex="-1" aria-label="Current page, page 1" class="Pagination-PageNumber Pagination-PageNumber_current" href="/keyword/blogs" target="_self" data-discover="true">1</a></li><li><a tabindex="0" aria-label="Go to page 2" class="Pagination-PageNumber" href="/keyword/blogs?page=2" target="_self" data-discover="true">2</a></li><li><a tabindex="0" aria-label="Go to page 3" class="Pagination-PageNumber" href="/keyword/blogs?page=3" target="_self" data-discover="true">3</a></li><li><a tabindex="0" aria-label="Go to page 4" class="Pagination-PageNumber" href="/keyword/blogs?page=4" target="_self" data-discover="true">4</a></li><li><a tabindex="0" aria-label="Go to page 5" class="Pagination-PageNumber" href="/keyword/blogs?page=5" target="_self" data-discover="true">5</a></li><li class="Pagination-Dots">…</li><li><a tabindex="0" aria-label="Go to page 362" class="Pagination-PageNumber Pagination-PageNumber_desktop" href="/keyword/blogs?page=362" target="_self" data-discover="true">362</a></li><li><a tabindex="0" aria-label="Go to Next page 2" class="Pagination-Link" href="/keyword/blogs?page=2" target="_self" data-discover="true"><span class="Pagination-PageWrapper"><span data-testid="labelText" class="Pagination-Move">Next</span><span class="Pagination-ArrowIconWrapper"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;11.959&#x27;%20height=&#x27;12&#x27;%20viewBox=&#x27;0%200%2011.959%2012&#x27;%3e%3cg%20id=&#x27;arrow_icon&#x27;%20data-name=&#x27;arrow%20icon&#x27;%20transform=&#x27;translate(0%200)&#x27;%3e%3cpath%20id=&#x27;arrow_icon-2&#x27;%20data-name=&#x27;arrow%20icon&#x27;%20d=&#x27;M13431.958,1289l-6.358,6-1.531-1.512,4.017-3.472H13420v-2.033h7.979l-3.91-3.475,1.63-1.507Z&#x27;%20transform=&#x27;translate(-13419.999%20-1283)&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;11.959&#x27;%20height=&#x27;12&#x27;%20viewBox=&#x27;0%200%2011.959%2012&#x27;%3e%3cg%20id=&#x27;arrow_icon&#x27;%20data-name=&#x27;arrow%20icon&#x27;%20transform=&#x27;translate(0%200)&#x27;%3e%3cpath%20id=&#x27;arrow_icon-2&#x27;%20data-name=&#x27;arrow%20icon&#x27;%20d=&#x27;M13431.958,1289l-6.358,6-1.531-1.512,4.017-3.472H13420v-2.033h7.979l-3.91-3.475,1.63-1.507Z&#x27;%20transform=&#x27;translate(-13419.999%20-1283)&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="ArrowRight" class="Pagination-ArrowIcon DefaultIcon"></span></span></span></a></li></ul></nav></div></div><div class="TwoColumnLayout-Sidebar"><div class="Sidebar" data-module="sidebar"><div class="Sidebar-SidebarItem" data-testid="sidebar-item"><div data-module="content-cards" class="ContentCards ContentCards_sidebar"><div class="ContentCards-CardsWrapper ContentCards-CardsWrapper_column"><div class="ContentCards-Header ContentCards-Header_column" data-testid="content-cards-header"><h3 class="ContentCards-Title" data-testid="contentCardsTitle">Latest News</h3><a class="ContentCards-Link" data-testid="content-card-link" href="/latest-news" target="_self" data-discover="true"><span class="ContentCards-LinkText" data-testid="contentCardsBreadcrumbsLinkTitle">More News</span><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="ChevronRight" class="ContentCards-LinkIcon DefaultIcon"></span></a></div><div class="ContentCards-Content ContentCards-Content_column"><div class="ContentCards-ContentPreview ContentCards-ContentPreview_column" data-testid="content-preview-column"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/business/playstack-ceo-pledges-to-be-mindful-about-growth-after-majority-takeover" target="_self" data-discover="true"><div class="ContentPreview-ImageContainer"><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blta5d1b01a65890258/6a2c024e8ad5d773aa4e3c12/Playstack_Header.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blta5d1b01a65890258/6a2c024e8ad5d773aa4e3c12/Playstack_Header.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blta5d1b01a65890258/6a2c024e8ad5d773aa4e3c12/Playstack_Header.png?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blta5d1b01a65890258/6a2c024e8ad5d773aa4e3c12/Playstack_Header.png?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blta5d1b01a65890258/6a2c024e8ad5d773aa4e3c12/Playstack_Header.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Key artwork for Balatro" title="Key artwork for Balatro"/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_business ContentPreview-Category" href="/business" target="_self" data-discover="true">Business</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/business/playstack-ceo-pledges-to-be-mindful-about-growth-after-majority-takeover" target="_self" data-discover="true">Playstack CEO pledges to be 'mindful' about growth after majority takeover</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/business/playstack-ceo-pledges-to-be-mindful-about-growth-after-majority-takeover" target="_self" data-discover="true">Playstack CEO pledges to be 'mindful' about growth after majority takeover</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/chris-kerr" target="_self" data-discover="true">Chris Kerr</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Jun 12, 2026</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">5 Min Read</span></div></div></div></div></div></div></div></div></div></div></div><div class="Sidebar-SidebarItem" data-testid="sidebar-item"><div data-module="newsletter-signup-promo"><div class="SubscribeBanner SubscribeBanner_mode_dark SubscribeBanner_variant_horizontal_sidebar"><div class="SubscribeBanner-Wrapper"><div class="SubscribeBanner-Title" data-testid="subscribeBanner_title">Keep up with the latest News, Interviews, and Talk Coverage from GDC Festival of Gaming right here on Game Developer</div><div class="SubscribeBanner-Message" data-testid="subscribeBanner_message"></div><div class="SubscribeBanner-Button"><a data-component="button" data-testid="bannerNewsletterbutton" class="Button Button_size_medium Button_variant_secondaryFilled" data-action-type="sign-up" data-name="subscribe-banner" href="/keyword/gdc-festival-of-gaming" target="_self" data-discover="true"><span class="Button-ContentWrapper">READ ON</span></a></div></div></div></div></div><div class="Sidebar-SidebarItem" data-testid="sidebar-item"><div data-component="content-list" class="ContentList"><div class="ContentList-Header"><div class="ContentList-IconWrapper"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Layer_1&#x27;%20fill=&#x27;currentColor&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20100%20100&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m63.333%2023.333c0-7.363-5.97-13.333-13.333-13.333s-13.333%205.97-13.333%2013.333v20c0%207.364%205.97%2013.333%2013.333%2013.333s13.333-5.97%2013.333-13.333z&#x27;/%3e%3cpath%20d=&#x27;m70%2030v13.333c0%2011.045-8.955%2020-20%2020s-20-8.954-20-20v-13.333c-3.682%200-6.667%202.985-6.667%206.667v6.667c0%2014.726%2011.94%2026.666%2026.667%2026.666s26.667-11.94%2026.667-26.667v-6.667c0-3.681-2.985-6.666-6.667-6.666z&#x27;/%3e%3cpath%20d=&#x27;m60%2083.33v.003h-6.667v-6.666h-6.666v6.666h-6.667c-3.682%200-6.667%202.985-6.667%206.667l33.334-.003c0-3.682-2.985-6.667-6.667-6.667z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Layer_1&#x27;%20fill=&#x27;currentColor&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20100%20100&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m63.333%2023.333c0-7.363-5.97-13.333-13.333-13.333s-13.333%205.97-13.333%2013.333v20c0%207.364%205.97%2013.333%2013.333%2013.333s13.333-5.97%2013.333-13.333z&#x27;/%3e%3cpath%20d=&#x27;m70%2030v13.333c0%2011.045-8.955%2020-20%2020s-20-8.954-20-20v-13.333c-3.682%200-6.667%202.985-6.667%206.667v6.667c0%2014.726%2011.94%2026.666%2026.667%2026.666s26.667-11.94%2026.667-26.667v-6.667c0-3.681-2.985-6.666-6.667-6.666z&#x27;/%3e%3cpath%20d=&#x27;m60%2083.33v.003h-6.667v-6.666h-6.666v6.666h-6.667c-3.682%200-6.667%202.985-6.667%206.667l33.334-.003c0-3.682-2.985-6.667-6.667-6.667z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Microphone" class="ContentList-Icon DefaultIcon"></span></div><span class="ContentList-Title" data-testid="content-list-title">Latest Podcasts</span></div><ul class="ContentList-List"><li class="ContentList-ListItem"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_design ContentList-SponsoredContent" href="/design" target="_self" data-discover="true">Design</a><a data-testid="content-list-item-title" href="/design/the-art-of-game-writing-in-non-narrative-games-ft-emma-kidwell-and-harrison-pink" target="_self" data-discover="true"><p class="ContentList-ListItemTitle">The art of game writing in 'non-narrative' games ft. Emma Kidwell and Harrison Pink</p></a><span class="ContentList-ListItemDate" data-testid="content-list-item-date">Jun 12, 2026</span></li><li class="ContentList-ListItem"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_design ContentList-SponsoredContent" href="/design" target="_self" data-discover="true">Design</a><a data-testid="content-list-item-title" href="/design/crafting-clair-obscur-expedition-33-s-mournful-tale-ft-jennifer-svedeberg-yen" target="_self" data-discover="true"><p class="ContentList-ListItemTitle">Crafting Clair Obscur: Expedition 33's mournful tale ft. Jennifer Svedberg-Yen</p></a><span class="ContentList-ListItemDate" data-testid="content-list-item-date">May 29, 2026</span></li><li class="ContentList-ListItem"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_production ContentList-SponsoredContent" href="/production" target="_self" data-discover="true">Production</a><a data-testid="content-list-item-title" href="/production/stories-from-making-marvel-rivals" target="_self" data-discover="true"><p class="ContentList-ListItemTitle">Stories from making Marvel Rivals</p></a><span class="ContentList-ListItemDate" data-testid="content-list-item-date">May 15, 2026</span></li><li class="ContentList-ListItem"><a data-component="keyword" class="Keyword Keyword_variant_alternate Keyword_title_pc ContentList-SponsoredContent" href="/game-platforms/pc" target="_self" data-discover="true">PC</a><a data-testid="content-list-item-title" href="/pc/we-tested-the-steam-controller" target="_self" data-discover="true"><p class="ContentList-ListItemTitle">We tested the Steam Controller</p></a><span class="ContentList-ListItemDate" data-testid="content-list-item-date">May 1, 2026</span></li></ul><div class="ContentList-CTAButton"><a data-component="button" data-testid="button_a" class="Button Button_size_medium Button_variant_textLink" href="/keyword/game-developer-podcast" target="_self" data-discover="true"><span class="Button-ContentWrapper">See all</span><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="ChevronRight" class="Button-Icon Button-Icon_position_right DefaultIcon"></span></a></div></div></div><div class="Sidebar-SidebarItem" data-testid="sidebar-item"><div data-module="content-cards" class="ContentCards ContentCards_sidebar"><div class="ContentCards-CardsWrapper ContentCards-CardsWrapper_column"><div class="ContentCards-Header ContentCards-Header_column" data-testid="content-cards-header"><h3 class="ContentCards-Title" data-testid="contentCardsTitle">Game Developer Collective</h3><a class="ContentCards-Link" data-testid="content-card-link" href="/keyword/game-developer-collective" target="_self" data-discover="true"><span class="ContentCards-LinkText" data-testid="contentCardsBreadcrumbsLinkTitle">More</span><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="ChevronRight" class="ContentCards-LinkIcon DefaultIcon"></span></a></div><div class="ContentCards-Content ContentCards-Content_column"><div class="ContentCards-ContentPreview ContentCards-ContentPreview_column" data-testid="content-preview-column"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/business/games-that-sell-dlc-and-in-app-purchases-appear-to-benefit-most-from-subscription-services" target="_self" data-discover="true"><div class="ContentPreview-ImageContainer"><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt7a79424246931087/6967e30f40bb4580b53d61e0/rematchfeatured.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt7a79424246931087/6967e30f40bb4580b53d61e0/rematchfeatured.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt7a79424246931087/6967e30f40bb4580b53d61e0/rematchfeatured.png?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt7a79424246931087/6967e30f40bb4580b53d61e0/rematchfeatured.png?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt7a79424246931087/6967e30f40bb4580b53d61e0/rematchfeatured.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="A player character runs around with their arms extended in Rematch, other players stand behind them." title="A player character runs around with their arms extended in Rematch, other players stand behind them."/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_business ContentPreview-Category" href="/business" target="_self" data-discover="true">Business</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/business/games-that-sell-dlc-and-in-app-purchases-appear-to-benefit-most-from-subscription-services" target="_self" data-discover="true">Games that sell DLC and in-app purchases appear to benefit most from subscription services</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/business/games-that-sell-dlc-and-in-app-purchases-appear-to-benefit-most-from-subscription-services" target="_self" data-discover="true">Games that sell DLC and in-app purchases appear to benefit most from subscription services</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/bryant-francis" target="_self" data-discover="true">Bryant Francis</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Jan 27, 2026</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">3 Min Read</span></div></div></div></div></div></div></div><div class="ContentCards-ContentPreview ContentCards-ContentPreview_column" data-testid="content-preview-column"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/business/devs-are-more-worried-than-ever-that-generative-ai-will-lower-the-quality-of-games" target="_self" data-discover="true"><div class="ContentPreview-ImageContainer"><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc5a3580ea6a37cdc/689b76d8b5ca625122beeab9/frustrateddeveloperfeatured.jpg?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc5a3580ea6a37cdc/689b76d8b5ca625122beeab9/frustrateddeveloperfeatured.jpg?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc5a3580ea6a37cdc/689b76d8b5ca625122beeab9/frustrateddeveloperfeatured.jpg?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc5a3580ea6a37cdc/689b76d8b5ca625122beeab9/frustrateddeveloperfeatured.jpg?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc5a3580ea6a37cdc/689b76d8b5ca625122beeab9/frustrateddeveloperfeatured.jpg?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="An African American woman looks at a laptop in frustration." title="An African American woman looks at a laptop in frustration."/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_business ContentPreview-Category" href="/business" target="_self" data-discover="true">Business</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/business/devs-are-more-worried-than-ever-that-generative-ai-will-lower-the-quality-of-games" target="_self" data-discover="true">Devs are more worried than ever that generative AI will lower the quality of games</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/business/devs-are-more-worried-than-ever-that-generative-ai-will-lower-the-quality-of-games" target="_self" data-discover="true">Devs are more worried than ever that generative AI will lower the quality of games</a><div class="Contributors Contributors_variant_slimline VerticalCard-ContributorsWrapper" data-component="contributors"><div class="Contributors-InfoWrapper"><span class="Contributors-ByText" data-testid="by-text">by</span><a class="Contributors-ContributorName" data-testid="contributor-name" href="/author/bryant-francis" target="_self" data-discover="true">Bryant Francis</a></div></div></div><div class="VerticalCard-Footer"><span class="VerticalCard-Date" data-testid="vertical-card-date">Sep 16, 2025</span><div data-module="card-time" class="CardTime"><div data-component="article-read-time" class="ArticleReadTime ArticleReadTime_size_small CardTime-ReadTime"><span data-testid="article-read-time-text">4 Min Read</span></div></div></div></div></div></div></div></div></div></div></div><div class="Sidebar-SidebarItem" data-testid="sidebar-item"><div data-module="content-cards" class="ContentCards ContentCards_sidebar"><div class="ContentCards-CardsWrapper ContentCards-CardsWrapper_column"><div class="ContentCards-Header ContentCards-Header_column" data-testid="content-cards-header"><h3 class="ContentCards-Title" data-testid="contentCardsTitle">Game Design &amp; Marketing Highlights</h3><a class="ContentCards-Link" data-testid="content-card-link" href="/marketing" target="_self" data-discover="true"><span class="ContentCards-LinkText" data-testid="contentCardsBreadcrumbsLinkTitle">See More</span><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20fill=&#x27;currentColor&#x27;%20width=&#x27;13&#x27;%20height=&#x27;21&#x27;%20viewBox=&#x27;0%200%2013%2021&#x27;%3e%3cpath%20id=&#x27;Icon_material-keyboard-arrow-down&#x27;%20data-name=&#x27;Icon%20material-keyboard-arrow-down&#x27;%20d=&#x27;M2.467,13,10.5,4.965,18.533,13,21,10.526,10.5,0,0,10.526Z&#x27;%20transform=&#x27;translate(13)%20rotate(90)&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="ChevronRight" class="ContentCards-LinkIcon DefaultIcon"></span></a></div><div class="ContentCards-Content ContentCards-Content_column"><div class="ContentCards-ContentPreview ContentCards-ContentPreview_column" data-testid="content-preview-column"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/design/the-art-of-game-writing-in-non-narrative-games-ft-emma-kidwell-and-harrison-pink" target="_self" data-discover="true"><div class="ContentPreview-ImageContainer"><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt2dca4f307e4c7cd7/6a2af15f6b9ea71848a55b7d/narrativeinnonnarrative.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt2dca4f307e4c7cd7/6a2af15f6b9ea71848a55b7d/narrativeinnonnarrative.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt2dca4f307e4c7cd7/6a2af15f6b9ea71848a55b7d/narrativeinnonnarrative.png?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt2dca4f307e4c7cd7/6a2af15f6b9ea71848a55b7d/narrativeinnonnarrative.png?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt2dca4f307e4c7cd7/6a2af15f6b9ea71848a55b7d/narrativeinnonnarrative.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Headshots of Harrison Smith and Emma Kidwell next to the Game Developer Podcast logo." title="Headshots of Harrison Smith and Emma Kidwell next to the Game Developer Podcast logo."/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_design ContentPreview-Category" href="/design" target="_self" data-discover="true">Design</a><a class="ContentPreview-IconWrapper" title="Link to all podcast" aria-label="Redirect to All page" data-testid="content-preview-icon-link" href="/design/the-art-of-game-writing-in-non-narrative-games-ft-emma-kidwell-and-harrison-pink" target="_self" data-discover="true"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Layer_1&#x27;%20fill=&#x27;currentColor&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20100%20100&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m63.333%2023.333c0-7.363-5.97-13.333-13.333-13.333s-13.333%205.97-13.333%2013.333v20c0%207.364%205.97%2013.333%2013.333%2013.333s13.333-5.97%2013.333-13.333z&#x27;/%3e%3cpath%20d=&#x27;m70%2030v13.333c0%2011.045-8.955%2020-20%2020s-20-8.954-20-20v-13.333c-3.682%200-6.667%202.985-6.667%206.667v6.667c0%2014.726%2011.94%2026.666%2026.667%2026.666s26.667-11.94%2026.667-26.667v-6.667c0-3.681-2.985-6.666-6.667-6.666z&#x27;/%3e%3cpath%20d=&#x27;m60%2083.33v.003h-6.667v-6.666h-6.666v6.666h-6.667c-3.682%200-6.667%202.985-6.667%206.667l33.334-.003c0-3.682-2.985-6.667-6.667-6.667z&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Layer_1&#x27;%20fill=&#x27;currentColor&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20100%20100&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m63.333%2023.333c0-7.363-5.97-13.333-13.333-13.333s-13.333%205.97-13.333%2013.333v20c0%207.364%205.97%2013.333%2013.333%2013.333s13.333-5.97%2013.333-13.333z&#x27;/%3e%3cpath%20d=&#x27;m70%2030v13.333c0%2011.045-8.955%2020-20%2020s-20-8.954-20-20v-13.333c-3.682%200-6.667%202.985-6.667%206.667v6.667c0%2014.726%2011.94%2026.666%2026.667%2026.666s26.667-11.94%2026.667-26.667v-6.667c0-3.681-2.985-6.666-6.667-6.666z&#x27;/%3e%3cpath%20d=&#x27;m60%2083.33v.003h-6.667v-6.666h-6.666v6.666h-6.667c-3.682%200-6.667%202.985-6.667%206.667l33.334-.003c0-3.682-2.985-6.667-6.667-6.667z&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Microphone" class="ContentPreview-Icon DefaultIcon"></span></a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/design/the-art-of-game-writing-in-non-narrative-games-ft-emma-kidwell-and-harrison-pink" target="_self" data-discover="true">The art of game writing in 'non-narrative' games ft. Emma Kidwell and Harrison Pink</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/design/the-art-of-game-writing-in-non-narrative-games-ft-emma-kidwell-and-harrison-pink" target="_self" data-discover="true">The art of game writing in 'non-narrative' games ft. Emma Kidwell and Harrison Pink</a></div></div></div></div></div><div class="ContentCards-ContentPreview ContentCards-ContentPreview_column" data-testid="content-preview-column"><div class="ContentPreview" data-module="content-preview" data-variant="card-vertical"><div class="ContentPreview-Wrapper ContentPreview-Wrapper_variant_cardVertical"><a data-testid="thumbnail" href="/design/how-that-s-no-moon-s-crossfire-evolves-the-cover-based-shooter" target="_self" data-discover="true"><div class="ContentPreview-ImageContainer"><img data-testid="content-preview-image" data-component="image" class="ContentPreview-Image" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt6b8a441b807e8633/6a26d32b1bd48d52644e5bae/crossfire_characters.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt6b8a441b807e8633/6a26d32b1bd48d52644e5bae/crossfire_characters.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt6b8a441b807e8633/6a26d32b1bd48d52644e5bae/crossfire_characters.png?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt6b8a441b807e8633/6a26d32b1bd48d52644e5bae/crossfire_characters.png?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt6b8a441b807e8633/6a26d32b1bd48d52644e5bae/crossfire_characters.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="The lead characters in Crossfire" title="The lead characters in Crossfire"/></div></a><a data-component="keyword" class="Keyword Keyword_variant_standard Keyword_title_design ContentPreview-Category" href="/design" target="_self" data-discover="true">Design</a><div class="VerticalCard"><div class="VerticalCard-Body"><a class="VerticalCard-Title VerticalCard-Title_displayOption_default" data-testid="preview-default-title" href="/design/how-that-s-no-moon-s-crossfire-evolves-the-cover-based-shooter" target="_self" data-discover="true">How That's No Moon's Crossfire evolves the cover-based shooter</a><a class="VerticalCard-Title VerticalCard-Title_displayOption_mobile" data-testid="preview-mobile-title" href="/design/how-that-s-no-moon-s-crossfire-evolves-the-cover-based-shooter" target="_self" data-discover="true">How That's No Moon's Crossfire evolves the cover-based shooter</a></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="ListContent-NewsletterSignupPromo"><div data-module="newsletter-signup-promo"><div class="SubscribeBanner SubscribeBanner_mode_dark SubscribeBanner_variant_vertical"><div class="SubscribeBanner-Wrapper"><div class="SubscribeBanner-Title" data-testid="subscribeBanner_title">Daily news, dev blogs, and stories from Game Developer straight to your inbox</div><div class="SubscribeBanner-Message" data-testid="subscribeBanner_message"></div><div class="SubscribeBanner-Button"><a data-component="button" data-testid="bannerNewsletterbutton" class="Button Button_size_medium Button_variant_secondaryFilled" rel="noreferrer nofollow" target="_blank" href="https://gd-resources.gamedeveloper.com/free/w_gamf01/prgm.cgi" data-action-type="sign-up" data-name="subscribe-banner"><span class="Button-ContentWrapper">Stay Updated</span></a></div></div></div></div></div></div></div></section><footer data-module="footer" class="Footer Footer_length_2"><div class="Footer-Background"></div><div data-testid="logo" class="Footer-LogoContainer Footer-LogoContainer_length_2"><a href="/" target="_self" data-discover="true"><img title="Game Developer Logo" data-component="image" class="Footer-LogoImage Footer-LogoImage_length_2" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt8d5417b628e6b04b/656f5ed8485fda040aba11a1/Game_Developer_Logo_RGB_1.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt8d5417b628e6b04b/656f5ed8485fda040aba11a1/Game_Developer_Logo_RGB_1.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt8d5417b628e6b04b/656f5ed8485fda040aba11a1/Game_Developer_Logo_RGB_1.png?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt8d5417b628e6b04b/656f5ed8485fda040aba11a1/Game_Developer_Logo_RGB_1.png?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt8d5417b628e6b04b/656f5ed8485fda040aba11a1/Game_Developer_Logo_RGB_1.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Game Developer Logo"/></a></div><div data-testid="LinkSection" class="LinkSection LinkSection_length_2"><h5 class="LinkSection-Title" data-testid="link-section-title">More from GD</h5><div class="LinkSection-LinksWrapper"><a class="LinkSection-Link" target="_blank" rel="noreferrer" href="https://reg.gdconf.com/blog-submission">Blog with Game Developer</a><a class="LinkSection-Link" rel="noreferrer" href="/blogging-guidelines" target="_self" data-discover="true">Blogging Guidelines</a><a class="LinkSection-Link" rel="noreferrer" href="/podcasts" target="_self" data-discover="true">Game Developer Podcast</a><a class="LinkSection-Link" target="_blank" rel="noreferrer" href="/cdn-cgi/l/email-protection#533d3624201334323e36373625363f3c2336217d303c3e">Submit a Tip</a></div></div><div data-testid="LinkSection" class="LinkSection LinkSection_length_2"><h5 class="LinkSection-Title" data-testid="link-section-title">Connect</h5><div class="LinkSection-LinksWrapper"><a class="LinkSection-Link" rel="noreferrer" href="/author" target="_self" data-discover="true">About Us</a><a class="LinkSection-Link" target="_blank" rel="noreferrer" href="https://reg.gdconf.com/gamedeveloper-media-kit">Advertise With Game Developer</a><a class="LinkSection-Link" rel="noreferrer" href="/contact-game-developer" target="_self" data-discover="true">Contact Us</a></div></div><div data-testid="registration" class="Footer-RegistrationWrapper"><div class="RegistrationSection RegistrationSection_linkSectionLength_2"><h5 class="RegistrationSection-Title">Join Us</h5><div class="Layout-Register Layout-Register_variant_footer"></div><div class="Layout-NewsLetter Layout-NewsLetter_variant_footer"><div data-module="newsletter-signup-promo"><a data-component="button" data-testid="footerNewsletterButton" class="Button Button_size_medium Button_variant_primaryFilled" rel="noreferrer nofollow" target="_blank" href="https://gd-resources.gamedeveloper.com/c/pubRD.mpl?secure=1&amp;sr=pp&amp;_t=pp:&amp;qf=w_gamf01&amp;ch=gdwebbutton" data-action-type="sign-up" data-name="subscribe-footer"><span class="Button-ContentWrapper">Newsletter Sign-Up</span></a></div></div></div></div><div data-testid="social" class="SocialSection SocialSection_linkSectionLength_2"><h5 class="SocialSection-Title">Follow Us</h5><div data-component="social-share" class="SocialShare SocialShare_variant_layout"><a rel="noreferrer" aria-label="RSS" href="/rss.xml" target="_self" data-discover="true"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20version=&#x27;1.1&#x27;%20id=&#x27;Layer_1&#x27;%20fill=&#x27;currentColor&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20xmlns:xlink=&#x27;http://www.w3.org/1999/xlink&#x27;%20x=&#x27;0px&#x27;%20y=&#x27;0px&#x27;%20viewBox=&#x27;0%200%20310%20310&#x27;%20style=&#x27;enable-background:new%200%200%20310%20310;&#x27;%20xml:space=&#x27;preserve&#x27;%3e%3cg%20id=&#x27;XMLID_788_&#x27;%3e%3cpath%20id=&#x27;XMLID_789_&#x27;%20d=&#x27;M90.244,264.828C90.244,240.11,70.139,220,45.427,220c-24.715,0-44.822,20.11-44.822,44.828%20c0,24.714,20.107,44.82,44.822,44.82C70.139,309.648,90.244,289.542,90.244,264.828z&#x27;/%3e%3cpath%20id=&#x27;XMLID_790_&#x27;%20d=&#x27;M5.648,169.43c35.961,0,69.782,14.066,95.231,39.605c25.45,25.583,39.467,59.648,39.467,95.92%20c0,2.762,2.238,5,5,5h57.486c2.762,0,5-2.238,5-5c0-111.952-90.699-203.031-202.185-203.031c-2.762,0-5,2.238-5,5v57.505%20C0.648,167.191,2.887,169.43,5.648,169.43z&#x27;/%3e%3cpath%20id=&#x27;XMLID_791_&#x27;%20d=&#x27;M5.726,0c-2.762,0-5,2.238-5,5v57.495c0,2.762,2.238,5,5,5c130.24,0,236.199,106.544,236.199,237.505%20c0,2.762,2.238,5,5,5h57.471c2.762,0,5-2.238,5-5C309.396,136.822,173.17,0,5.726,0z&#x27;/%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20version=&#x27;1.1&#x27;%20id=&#x27;Layer_1&#x27;%20fill=&#x27;currentColor&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20xmlns:xlink=&#x27;http://www.w3.org/1999/xlink&#x27;%20x=&#x27;0px&#x27;%20y=&#x27;0px&#x27;%20viewBox=&#x27;0%200%20310%20310&#x27;%20style=&#x27;enable-background:new%200%200%20310%20310;&#x27;%20xml:space=&#x27;preserve&#x27;%3e%3cg%20id=&#x27;XMLID_788_&#x27;%3e%3cpath%20id=&#x27;XMLID_789_&#x27;%20d=&#x27;M90.244,264.828C90.244,240.11,70.139,220,45.427,220c-24.715,0-44.822,20.11-44.822,44.828%20c0,24.714,20.107,44.82,44.822,44.82C70.139,309.648,90.244,289.542,90.244,264.828z&#x27;/%3e%3cpath%20id=&#x27;XMLID_790_&#x27;%20d=&#x27;M5.648,169.43c35.961,0,69.782,14.066,95.231,39.605c25.45,25.583,39.467,59.648,39.467,95.92%20c0,2.762,2.238,5,5,5h57.486c2.762,0,5-2.238,5-5c0-111.952-90.699-203.031-202.185-203.031c-2.762,0-5,2.238-5,5v57.505%20C0.648,167.191,2.887,169.43,5.648,169.43z&#x27;/%3e%3cpath%20id=&#x27;XMLID_791_&#x27;%20d=&#x27;M5.726,0c-2.762,0-5,2.238-5,5v57.495c0,2.762,2.238,5,5,5c130.24,0,236.199,106.544,236.199,237.505%20c0,2.762,2.238,5,5,5h57.471c2.762,0,5-2.238,5-5C309.396,136.822,173.17,0,5.726,0z&#x27;/%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="RSS" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_rss DefaultIcon"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Twitter" href="https://twitter.com/gamedevdotcom/"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Capa_1&#x27;%20enable-background=&#x27;new%200%200%201226.37%201226.37&#x27;%20viewBox=&#x27;0%200%201226.37%201226.37&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m727.348%20519.284%20446.727-519.284h-105.86l-387.893%20450.887-309.809-450.887h-357.328l468.492%20681.821-468.492%20544.549h105.866l409.625-476.152%20327.181%20476.152h357.328l-485.863-707.086zm-144.998%20168.544-47.468-67.894-377.686-540.24h162.604l304.797%20435.991%2047.468%2067.894%20396.2%20566.721h-162.604l-323.311-462.446z&#x27;/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Capa_1&#x27;%20enable-background=&#x27;new%200%200%201226.37%201226.37&#x27;%20viewBox=&#x27;0%200%201226.37%201226.37&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m727.348%20519.284%20446.727-519.284h-105.86l-387.893%20450.887-309.809-450.887h-357.328l468.492%20681.821-468.492%20544.549h105.866l409.625-476.152%20327.181%20476.152h357.328l-485.863-707.086zm-144.998%20168.544-47.468-67.894-377.686-540.24h162.604l304.797%20435.991%2047.468%2067.894%20396.2%20566.721h-162.604l-323.311-462.446z&#x27;/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3cg/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Twitter" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_twitter DefaultIcon"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Linkedin" href="https://www.linkedin.com/company/gamedeveloperofficial"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20version=&#x27;1.1&#x27;%20id=&#x27;Capa_1&#x27;%20fill=&#x27;currentColor&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20xmlns:xlink=&#x27;http://www.w3.org/1999/xlink&#x27;%20x=&#x27;0px&#x27;%20y=&#x27;0px&#x27;%20viewBox=&#x27;0%200%20409.6%20409.6&#x27;%20style=&#x27;enable-background:new%200%200%20409.6%20409.6;&#x27;%20xml:space=&#x27;preserve&#x27;%3e%3cg%3e%3cg%3e%3cpath%20d=&#x27;M375.465,0H34.135C15.365,0,0,15.365,0,34.135V375.47c0,18.76,15.365,34.13,34.135,34.13h341.33%20c18.77,0,34.135-15.37,34.135-34.13V34.135C409.6,15.365,394.235,0,375.465,0z%20M375.465,375.47H34.135V34.135h341.33V375.47z&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3cg%3e%3crect%20x=&#x27;102.4&#x27;%20y=&#x27;170.65&#x27;%20width=&#x27;34.135&#x27;%20height=&#x27;136.535&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3cg%3e%3ccircle%20cx=&#x27;119.45&#x27;%20cy=&#x27;128&#x27;%20r=&#x27;25.6&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3cg%3e%3cpath%20d=&#x27;M238.935,170.665c-12.498,0-24.069,3.61-34.135,9.467v-8.049h-34.135V307.2H204.8v-68.27%20c0-18.852,15.283-34.13,34.135-34.13c18.852,0,34.13,15.278,34.13,34.13v68.27H307.2v-68.27%20C307.2,201.231,276.634,170.665,238.935,170.665z&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20version=&#x27;1.1&#x27;%20id=&#x27;Capa_1&#x27;%20fill=&#x27;currentColor&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20xmlns:xlink=&#x27;http://www.w3.org/1999/xlink&#x27;%20x=&#x27;0px&#x27;%20y=&#x27;0px&#x27;%20viewBox=&#x27;0%200%20409.6%20409.6&#x27;%20style=&#x27;enable-background:new%200%200%20409.6%20409.6;&#x27;%20xml:space=&#x27;preserve&#x27;%3e%3cg%3e%3cg%3e%3cpath%20d=&#x27;M375.465,0H34.135C15.365,0,0,15.365,0,34.135V375.47c0,18.76,15.365,34.13,34.135,34.13h341.33%20c18.77,0,34.135-15.37,34.135-34.13V34.135C409.6,15.365,394.235,0,375.465,0z%20M375.465,375.47H34.135V34.135h341.33V375.47z&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3cg%3e%3crect%20x=&#x27;102.4&#x27;%20y=&#x27;170.65&#x27;%20width=&#x27;34.135&#x27;%20height=&#x27;136.535&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3cg%3e%3ccircle%20cx=&#x27;119.45&#x27;%20cy=&#x27;128&#x27;%20r=&#x27;25.6&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3cg%3e%3cpath%20d=&#x27;M238.935,170.665c-12.498,0-24.069,3.61-34.135,9.467v-8.049h-34.135V307.2H204.8v-68.27%20c0-18.852,15.283-34.13,34.135-34.13c18.852,0,34.13,15.278,34.13,34.13v68.27H307.2v-68.27%20C307.2,201.231,276.634,170.665,238.935,170.665z&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Linkedin" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_linkedin DefaultIcon"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Facebook" href="https://www.facebook.com/GameDeveloperOfficial"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20version=&#x27;1.1&#x27;%20id=&#x27;Capa_1&#x27;%20fill=&#x27;currentColor&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20xmlns:xlink=&#x27;http://www.w3.org/1999/xlink&#x27;%20x=&#x27;0px&#x27;%20y=&#x27;0px&#x27;%20viewBox=&#x27;0%200%20409.6%20409.6&#x27;%20style=&#x27;enable-background:new%200%200%20409.6%20409.6;&#x27;%20xml:space=&#x27;preserve&#x27;%3e%3cg%3e%3cg%3e%3cpath%20d=&#x27;M375.465,0H34.135C15.365,0,0,15.365,0,34.135V375.47c0,18.76,15.365,34.13,34.135,34.13h341.33%20c18.77,0,34.135-15.37,34.135-34.13V34.135C409.6,15.365,394.235,0,375.465,0z%20M375.465,375.47h-136.53V238.93h85.33V204.8h-85.33%20v-34.135c0-28.283,22.932-51.2,51.2-51.2h34.13V85.33h-34.13c-47.119,0.005-85.335,38.195-85.335,85.335V204.8h-34.135v34.13%20H204.8v136.54H34.135V34.135h341.33V375.47z&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20version=&#x27;1.1&#x27;%20id=&#x27;Capa_1&#x27;%20fill=&#x27;currentColor&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%20xmlns:xlink=&#x27;http://www.w3.org/1999/xlink&#x27;%20x=&#x27;0px&#x27;%20y=&#x27;0px&#x27;%20viewBox=&#x27;0%200%20409.6%20409.6&#x27;%20style=&#x27;enable-background:new%200%200%20409.6%20409.6;&#x27;%20xml:space=&#x27;preserve&#x27;%3e%3cg%3e%3cg%3e%3cpath%20d=&#x27;M375.465,0H34.135C15.365,0,0,15.365,0,34.135V375.47c0,18.76,15.365,34.13,34.135,34.13h341.33%20c18.77,0,34.135-15.37,34.135-34.13V34.135C409.6,15.365,394.235,0,375.465,0z%20M375.465,375.47h-136.53V238.93h85.33V204.8h-85.33%20v-34.135c0-28.283,22.932-51.2,51.2-51.2h34.13V85.33h-34.13c-47.119,0.005-85.335,38.195-85.335,85.335V204.8h-34.135v34.13%20H204.8v136.54H34.135V34.135h341.33V375.47z&#x27;/%3e%3c/g%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Facebook" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_facebook DefaultIcon"></span></span></a><a target="_blank" rel="noreferrer" aria-label="Bluesky" href="https://bsky.app/profile/gamedeveloper.bsky.social"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3c?xml%20version=&#x27;1.0&#x27;%20encoding=&#x27;UTF-8&#x27;?%3e%3csvg%20width=&#x27;600&#x27;%20height=&#x27;530&#x27;%20version=&#x27;1.1&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m135.72%2044.03c66.496%2049.921%20138.02%20151.14%20164.28%20205.46%2026.262-54.316%2097.782-155.54%20164.28-205.46%2047.98-36.021%20125.72-63.892%20125.72%2024.795%200%2017.712-10.155%20148.79-16.111%20170.07-20.703%2073.984-96.144%2092.854-163.25%2081.433%20117.3%2019.964%20147.14%2086.092%2082.697%20152.22-122.39%20125.59-175.91-31.511-189.63-71.766-2.514-7.3797-3.6904-10.832-3.7077-7.8964-0.0174-2.9357-1.1937%200.51669-3.7077%207.8964-13.714%2040.255-67.233%20197.36-189.63%2071.766-64.444-66.128-34.605-132.26%2082.697-152.22-67.108%2011.421-142.55-7.4491-163.25-81.433-5.9562-21.282-16.111-152.36-16.111-170.07%200-88.687%2077.742-60.816%20125.72-24.795z&#x27;%20fill=&#x27;%23000000&#x27;/%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3c?xml%20version=&#x27;1.0&#x27;%20encoding=&#x27;UTF-8&#x27;?%3e%3csvg%20width=&#x27;600&#x27;%20height=&#x27;530&#x27;%20version=&#x27;1.1&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cpath%20d=&#x27;m135.72%2044.03c66.496%2049.921%20138.02%20151.14%20164.28%20205.46%2026.262-54.316%2097.782-155.54%20164.28-205.46%2047.98-36.021%20125.72-63.892%20125.72%2024.795%200%2017.712-10.155%20148.79-16.111%20170.07-20.703%2073.984-96.144%2092.854-163.25%2081.433%20117.3%2019.964%20147.14%2086.092%2082.697%20152.22-122.39%20125.59-175.91-31.511-189.63-71.766-2.514-7.3797-3.6904-10.832-3.7077-7.8964-0.0174-2.9357-1.1937%200.51669-3.7077%207.8964-13.714%2040.255-67.233%20197.36-189.63%2071.766-64.444-66.128-34.605-132.26%2082.697-152.22-67.108%2011.421-142.55-7.4491-163.25-81.433-5.9562-21.282-16.111-152.36-16.111-170.07%200-88.687%2077.742-60.816%20125.72-24.795z&#x27;%20fill=&#x27;%23000000&#x27;/%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="Bluesky" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_bluesky DefaultIcon"></span></span></a><a target="_blank" rel="noreferrer" aria-label="GoogleNews" href="https://news.google.com/publications/CAAqBwgKML7GrQswy9HFAw?ceid=US:en&amp;oc=3&amp;hl=en-US&amp;gl=US"><span class="SocialShare-IconWrapper SocialShare-IconWrapper_variant_layout"><span data-component="icon" style="mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Capa_1&#x27;%20enable-background=&#x27;new%200%200%20512.288%20512.288&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20512.288%20512.288&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cg%3e%3cpath%20d=&#x27;m512.288%20152.697-67.644-13.455v-123.579h-377v123.579l-67.644%2013.455%2052.644%20264.661v79.268h407v-79.268zm-52.644%20110.885v-61.956h-50.232l-8.037-40.402%2075.636%2015.045zm-362-217.919h317v87.612l-19.603-3.899-10.573-53.153-286.824%2057.052zm-62.368%20130.606%20325.621-64.77%2017.927%2090.127h-326.18v61.956zm394.368%20290.356h-347v-235h347z&#x27;/%3e%3cpath%20d=&#x27;m200.144%20436.625c48.248%200%2087.5-39.252%2087.5-87.5v-15h-87.5v30h55.516c-6.615%2024.454-28.998%2042.5-55.516%2042.5-31.706%200-57.5-25.794-57.5-57.5s25.794-57.5%2057.5-57.5c14.834%200%2028.917%205.632%2039.653%2015.86l20.692-21.722c-16.34-15.566-37.771-24.138-60.345-24.138-48.248%200-87.5%2039.252-87.5%2087.5s39.252%2087.5%2087.5%2087.5z&#x27;/%3e%3cpath%20d=&#x27;m317.644%20274.125h82v30h-82z&#x27;/%3e%3cpath%20d=&#x27;m317.644%20334.125h82v30h-82z&#x27;/%3e%3cpath%20d=&#x27;m317.644%20394.125h82v30h-82z&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);-webkit-mask-image:url(&quot;data:image/svg+xml,%3csvg%20id=&#x27;Capa_1&#x27;%20enable-background=&#x27;new%200%200%20512.288%20512.288&#x27;%20height=&#x27;512&#x27;%20viewBox=&#x27;0%200%20512.288%20512.288&#x27;%20width=&#x27;512&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cg%3e%3cpath%20d=&#x27;m512.288%20152.697-67.644-13.455v-123.579h-377v123.579l-67.644%2013.455%2052.644%20264.661v79.268h407v-79.268zm-52.644%20110.885v-61.956h-50.232l-8.037-40.402%2075.636%2015.045zm-362-217.919h317v87.612l-19.603-3.899-10.573-53.153-286.824%2057.052zm-62.368%20130.606%20325.621-64.77%2017.927%2090.127h-326.18v61.956zm394.368%20290.356h-347v-235h347z&#x27;/%3e%3cpath%20d=&#x27;m200.144%20436.625c48.248%200%2087.5-39.252%2087.5-87.5v-15h-87.5v30h55.516c-6.615%2024.454-28.998%2042.5-55.516%2042.5-31.706%200-57.5-25.794-57.5-57.5s25.794-57.5%2057.5-57.5c14.834%200%2028.917%205.632%2039.653%2015.86l20.692-21.722c-16.34-15.566-37.771-24.138-60.345-24.138-48.248%200-87.5%2039.252-87.5%2087.5s39.252%2087.5%2087.5%2087.5z&#x27;/%3e%3cpath%20d=&#x27;m317.644%20274.125h82v30h-82z&#x27;/%3e%3cpath%20d=&#x27;m317.644%20334.125h82v30h-82z&#x27;/%3e%3cpath%20d=&#x27;m317.644%20394.125h82v30h-82z&#x27;/%3e%3c/g%3e%3c/svg%3e&quot;);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain" data-name="GoogleNews" class="SocialShare-Icon SocialShare-Icon_variant_layout SocialShare-Icon_type_googleNews DefaultIcon"></span></span></a></div></div><div class="BrandSection"><div class="BrandSection-Background"></div><div data-testid="brands" class="BrandSection-LinksWrapper"><a class="BrandSection-Link" target="_blank" rel="noreferrer" aria-label="GDC Vault" title="Link to GDC Vault" href="https://www.gdcvault.com/"><img title="GDC Vault Logo" data-component="image" class="BrandSection-LinkImage" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt1363a10229efc062/656db9e79761ff040a595688/MicrosoftTeams-image_(3).png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt1363a10229efc062/656db9e79761ff040a595688/MicrosoftTeams-image_(3).png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt1363a10229efc062/656db9e79761ff040a595688/MicrosoftTeams-image_(3).png?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt1363a10229efc062/656db9e79761ff040a595688/MicrosoftTeams-image_(3).png?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt1363a10229efc062/656db9e79761ff040a595688/MicrosoftTeams-image_(3).png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="GDC Vault Logo"/></a><a class="BrandSection-Link" target="_blank" rel="noreferrer" aria-label="GDC" title="Link to GDC" href="https://www.gdconf.com"><img title="GDC" data-component="image" class="BrandSection-LinkImage" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt431090e6027a0c17/690cd59117b10612bd8935ff/GDC-white-new_logo.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt431090e6027a0c17/690cd59117b10612bd8935ff/GDC-white-new_logo.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt431090e6027a0c17/690cd59117b10612bd8935ff/GDC-white-new_logo.png?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt431090e6027a0c17/690cd59117b10612bd8935ff/GDC-white-new_logo.png?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt431090e6027a0c17/690cd59117b10612bd8935ff/GDC-white-new_logo.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="GDC"/></a><a class="BrandSection-Link" target="_blank" rel="noreferrer" aria-label="Omdia" title="Link to Omdia" href="https://www.omdia.com"><img title="Omdia" data-component="image" class="BrandSection-LinkImage" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt789019463bae70bf/6523eb443c9b45aa9da4f4b2/logo_omdia_white.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt789019463bae70bf/6523eb443c9b45aa9da4f4b2/logo_omdia_white.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt789019463bae70bf/6523eb443c9b45aa9da4f4b2/logo_omdia_white.png?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt789019463bae70bf/6523eb443c9b45aa9da4f4b2/logo_omdia_white.png?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt789019463bae70bf/6523eb443c9b45aa9da4f4b2/logo_omdia_white.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Omdia"/></a></div></div><div class="CopyrightsSection"><div class="CopyrightsSection-Background"></div><div data-testid="copyrights" class="CopyrightsSection-Wrapper"><a data-testid="businessUnit" class="CopyrightsSection-BusinessLink" rel="noreferrer" target="_blank" href="https://www.informa.com"><img title="Informa" data-component="image" class="CopyrightsSection-BusinessImage" data-src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt6a17e2ccd9083672/674edfd84301993a15a0e9e1/Informa_Logo_OneLine_Graduated_White_RGB.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" src="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt6a17e2ccd9083672/674edfd84301993a15a0e9e1/Informa_Logo_OneLine_Graduated_White_RGB.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale" srcSet="https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt6a17e2ccd9083672/674edfd84301993a15a0e9e1/Informa_Logo_OneLine_Graduated_White_RGB.png?width=744&amp;auto=webp&amp;quality=80&amp;disable=upscale 744w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt6a17e2ccd9083672/674edfd84301993a15a0e9e1/Informa_Logo_OneLine_Graduated_White_RGB.png?width=960&amp;auto=webp&amp;quality=80&amp;disable=upscale 960w, https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt6a17e2ccd9083672/674edfd84301993a15a0e9e1/Informa_Logo_OneLine_Graduated_White_RGB.png?width=1280&amp;auto=webp&amp;quality=80&amp;disable=upscale 1280w" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy" alt="Informa"/></a><div class="CopyrightsSection-TextWrapper"><p data-testid="copyrightText" class="CopyrightsSection-Text"><span class="CopyrightsSection-TextBlock"></span>Copyright © 2026 Informa. This website is owned and operated by Informa. Informa PLC&#x27;s registered office is 5 Howick Place, London SW1P 1WG.</p><div data-testid="copyrightLinks" class="CopyrightsSection-LinksWrapper CopyrightsSection-LinksWrapper_hasLinks"><a class="CopyrightsSection-Link" rel="noreferrer" target="_blank" href="https://www.informa.com/">Home<span class="CopyrightsSection-LinkSeparator">|</span></a><a class="CopyrightsSection-Link" rel="noreferrer" target="_blank" href="https://www.informa.com/generic-content/cookie-policy/">Cookie Policy<span class="CopyrightsSection-LinkSeparator">|</span></a><a class="CopyrightsSection-Link" rel="noreferrer" target="_blank" href="https://privacy.informa.com/policies/en/">Privacy<span class="CopyrightsSection-LinkSeparator">|</span></a><a class="CopyrightsSection-Link" rel="noreferrer" target="_blank" href="https://privacy.informa.com/policies/en/">Terms of Use</a></div></div></div><div class="PrivacyChoices"><button id="cpra_button" class="PrivacyChoices-Button" aria-label="Your Privacy Choices" disabled=""><img class="PrivacyChoices-Image" src="data:image/svg+xml,%3csvg%20width=&#x27;30&#x27;%20height=&#x27;14&#x27;%20viewBox=&#x27;0%200%2030%2014&#x27;%20fill=&#x27;none&#x27;%20xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3e%3cg%20clip-path=&#x27;url(%23clip0_4001_1792)&#x27;%3e%3cpath%20fill-rule=&#x27;evenodd&#x27;%20clip-rule=&#x27;evenodd&#x27;%20d=&#x27;M7.39998%2012.8H14.2L17.3%201.20001H7.39998C4.19998%201.20001%201.59998%203.80001%201.59998%207.00001C1.59998%2010.2%204.19998%2012.8%207.39998%2012.8Z&#x27;%20fill=&#x27;white&#x27;/%3e%3cpath%20fill-rule=&#x27;evenodd&#x27;%20clip-rule=&#x27;evenodd&#x27;%20d=&#x27;M22.6%200H7.40002C3.50002%200%200.400024%203.1%200.400024%207C0.400024%2010.9%203.50002%2014%207.40002%2014H22.6C26.5%2014%2029.6%2010.9%2029.6%207C29.6%203.1%2026.4%200%2022.6%200ZM1.60002%207C1.60002%203.8%204.20002%201.2%207.40002%201.2H17.3L14.2%2012.8H7.40002C4.20002%2012.8%201.60002%2010.2%201.60002%207Z&#x27;%20fill=&#x27;%230066FF&#x27;/%3e%3cpath%20d=&#x27;M24.6%203.99998C24.8%204.19998%2024.8%204.59998%2024.6%204.79998L22.5%206.99998L24.7%209.19998C24.9%209.39998%2024.9%209.79998%2024.7%209.99998C24.5%2010.2%2024.1%2010.2%2023.9%209.99998L21.7%207.79998L19.5%209.99998C19.3%2010.2%2018.9%2010.2%2018.7%209.99998C18.5%209.79998%2018.5%209.39998%2018.7%209.19998L20.8%206.99998L18.6%204.79998C18.4%204.59998%2018.4%204.19998%2018.6%203.99998C18.8%203.79998%2019.2%203.79998%2019.4%203.99998L21.6%206.19998L23.8%203.99998C24%203.79998%2024.4%203.79998%2024.6%203.99998Z&#x27;%20fill=&#x27;white&#x27;/%3e%3cpath%20d=&#x27;M12.7%204.10001C12.9%204.30001%2013%204.70001%2012.8%204.90001L8.6%209.80001C8.5%209.90001%208.4%2010%208.3%2010C8.1%2010.1%207.8%2010.1%207.6%209.90001L5.4%207.70001C5.2%207.50001%205.2%207.10001%205.4%206.90001C5.6%206.70001%206%206.70001%206.2%206.90001L8%208.60001L11.8%204.10001C12%203.90001%2012.4%203.90001%2012.7%204.10001Z&#x27;%20fill=&#x27;%230066FF&#x27;/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id=&#x27;clip0_4001_1792&#x27;%3e%3crect%20width=&#x27;30&#x27;%20height=&#x27;14&#x27;%20fill=&#x27;white&#x27;/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e" alt=""/><span class="PrivacyChoices-ButtonText">Your Privacy Choices</span></button></div></div></footer></div></main><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script>((storageKey2, restoreKey) => {
    if (!window.history.state || !window.history.state.key) {
      let key = Math.random().toString(32).slice(2);
      window.history.replaceState({ key }, "");
    }
    try {
      let positions = JSON.parse(sessionStorage.getItem(storageKey2) || "{}");
      let storedY = positions[restoreKey || window.history.state.key];
      if (typeof storedY === "number") {
        window.scrollTo(0, storedY);
      }
    } catch (error) {
      console.error(error);
      sessionStorage.removeItem(storageKey2);
    }
  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"lazy","manifestPath":"/__manifest"},"ssr":true,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());</script><script type="module" async="">;
import * as route0 from "/assets/root-DZg-TPQn.js";
import * as route1 from "/assets/keyword._slug-DPbzAmTt.js";
  window.__reactRouterManifest = {
  "entry": {
    "module": "/assets/entry.client-BnhDBGck.js",
    "imports": [
      "/assets/react-DL6dWp3l.js",
      "/assets/react-dom-BE6BiQSL.js",
      "/assets/jsx-runtime-BPeuaX5-.js",
      "/assets/preload-helper-ZNWeky0v.js"
    ],
    "css": []
  },
  "routes": {
    "root": {
      "id": "root",
      "path": "",
      "hasAction": false,
      "hasLoader": true,
      "hasClientAction": false,
      "hasClientLoader": false,
      "hasClientMiddleware": false,
      "hasErrorBoundary": true,
      "module": "/assets/root-DZg-TPQn.js",
      "imports": [
        "/assets/react-DL6dWp3l.js",
        "/assets/react-dom-BE6BiQSL.js",
        "/assets/jsx-runtime-BPeuaX5-.js",
        "/assets/preload-helper-ZNWeky0v.js",
        "/assets/src-wFgDTrC1.js",
        "/assets/errorBoundary-DLNfScNT.js",
        "/assets/src-B1FWuNaO.js",
        "/assets/src-OmcIKiOT.js",
        "/assets/meta-Du6P5KIU.js",
        "/assets/src-CYUtgRe8.js",
        "/assets/src-i-txt5SG.js",
        "/assets/src-D33KPzbn.js",
        "/assets/src-ur0oqhPU.js",
        "/assets/src-Dh0qGtyh.js",
        "/assets/extends-C_2-xqiD.js",
        "/assets/src-DA7Pplk9.js",
        "/assets/index.es-sS4szeIp.js",
        "/assets/esm-DYU-OuKx.js",
        "/assets/src-BmYR0PPH2.js",
        "/assets/src-DvbQaBsy2.js",
        "/assets/_baseForOwn-CcT7yYSn.js",
        "/assets/src-Bp3JjykZ.js",
        "/assets/useLockBodyScroll-CFNaoMVC.js",
        "/assets/useIsomorphicLayoutEffect-CImoiNQ0.js",
        "/assets/striptags-BvwkZIy3.js",
        "/assets/swiper-react-CTWCnLMV.js",
        "/assets/src-DL63-KRa2.js",
        "/assets/src-24TRix5o.js",
        "/assets/src-C_BkJm2T.js",
        "/assets/src-DBqdrzXP.js",
        "/assets/src-DcauI7BP.js",
        "/assets/src-uURKhZs-.js",
        "/assets/toNumber-D-jhQxFw.js",
        "/assets/src-D9RQELm1.js",
        "/assets/src-DcUZOrUG.js",
        "/assets/src-RvcSZewU.js",
        "/assets/src-DQl9VMWY2.js",
        "/assets/src-5VTiR5VE.js"
      ],
      "css": []
    },
    "routes/keyword.$slug": {
      "id": "routes/keyword.$slug",
      "parentId": "root",
      "path": "keyword/:slug",
      "hasAction": false,
      "hasLoader": true,
      "hasClientAction": false,
      "hasClientLoader": false,
      "hasClientMiddleware": false,
      "hasErrorBoundary": true,
      "module": "/assets/keyword._slug-DPbzAmTt.js",
      "imports": [
        "/assets/errorBoundary-DLNfScNT.js",
        "/assets/keyword._slug-CzViPnDC.js",
        "/assets/react-DL6dWp3l.js",
        "/assets/jsx-runtime-BPeuaX5-.js",
        "/assets/preload-helper-ZNWeky0v.js",
        "/assets/meta-Du6P5KIU.js",
        "/assets/src-i-txt5SG.js",
        "/assets/src-BiQj9_sZ.js",
        "/assets/src-BmYR0PPH2.js",
        "/assets/src-CM86lvNS2.js",
        "/assets/src-CoLlCD2u.js",
        "/assets/src-DA7Pplk9.js",
        "/assets/src-DL63-KRa2.js",
        "/assets/src-D33KPzbn.js",
        "/assets/src-C_BkJm2T.js",
        "/assets/src-DBqdrzXP.js",
        "/assets/src-DcauI7BP.js",
        "/assets/src-DNHXyWTN.js",
        "/assets/src-CIU7cGum.js",
        "/assets/src-Dh0qGtyh.js",
        "/assets/react-dom-BE6BiQSL.js",
        "/assets/src-DvbQaBsy2.js",
        "/assets/src-Bp3JjykZ.js",
        "/assets/useLockBodyScroll-CFNaoMVC.js",
        "/assets/src-DcUZOrUG.js",
        "/assets/src-DQl9VMWY2.js",
        "/assets/toNumber-D-jhQxFw.js",
        "/assets/src-D9RQELm1.js",
        "/assets/src-RvcSZewU.js",
        "/assets/index.es-sS4szeIp.js"
      ],
      "css": []
    },
    "routes/_index": {
      "id": "routes/_index",
      "parentId": "root",
      "index": true,
      "hasAction": false,
      "hasLoader": true,
      "hasClientAction": false,
      "hasClientLoader": false,
      "hasClientMiddleware": false,
      "hasErrorBoundary": true,
      "module": "/assets/_index-BdnwETCC.js",
      "imports": [
        "/assets/errorBoundary-DLNfScNT.js",
        "/assets/_index-BncBevRD.js",
        "/assets/react-DL6dWp3l.js",
        "/assets/jsx-runtime-BPeuaX5-.js",
        "/assets/preload-helper-ZNWeky0v.js",
        "/assets/src-DvbQaBsy2.js",
        "/assets/meta-Du6P5KIU.js",
        "/assets/src-i-txt5SG.js",
        "/assets/src-DL63-KRa2.js",
        "/assets/src-Bdkfb1_Y.js",
        "/assets/src-D33KPzbn.js",
        "/assets/src-wFgDTrC1.js",
        "/assets/src-DA7Pplk9.js",
        "/assets/src-Bp3JjykZ.js",
        "/assets/swiper-react-CTWCnLMV.js",
        "/assets/src-DcauI7BP.js",
        "/assets/src-DNHXyWTN.js",
        "/assets/src-DQl9VMWY2.js",
        "/assets/src-Dh0qGtyh.js",
        "/assets/extends-C_2-xqiD.js",
        "/assets/react-dom-BE6BiQSL.js",
        "/assets/toNumber-D-jhQxFw.js",
        "/assets/src-D9RQELm1.js",
        "/assets/src-DcUZOrUG.js",
        "/assets/src-RvcSZewU.js",
        "/assets/index.es-sS4szeIp.js"
      ],
      "css": []
    },
    "routes/$topic._index": {
      "id": "routes/$topic._index",
      "parentId": "root",
      "path": ":topic",
      "index": true,
      "hasAction": false,
      "hasLoader": true,
      "hasClientAction": false,
      "hasClientLoader": false,
      "hasClientMiddleware": false,
      "hasErrorBoundary": true,
      "module": "/assets/_topic._index-p2rc4C9Z.js",
      "imports": [
        "/assets/errorBoundary-DLNfScNT.js",
        "/assets/_topic._index-CWAo5n44.js",
        "/assets/react-DL6dWp3l.js",
        "/assets/jsx-runtime-BPeuaX5-.js",
        "/assets/preload-helper-ZNWeky0v.js",
        "/assets/src-DA7Pplk9.js",
        "/assets/src-BmYR0PPH2.js",
        "/assets/src-B1FWuNaO.js",
        "/assets/src-OmcIKiOT.js",
        "/assets/src-CC5TAmkP.js",
        "/assets/meta-Du6P5KIU.js",
        "/assets/src-i-txt5SG.js",
        "/assets/src-DL63-KRa2.js",
        "/assets/src-CM86lvNS2.js",
        "/assets/src-D33KPzbn.js",
        "/assets/src-Bdkfb1_Y.js",
        "/assets/src-BXTXGpvC.js",
        "/assets/src-C_BkJm2T.js",
        "/assets/src-ur0oqhPU.js",
        "/assets/src-CoLlCD2u.js",
        "/assets/src-Dh0qGtyh.js",
        "/assets/src-tm6OakCA.js",
        "/assets/string-Dofwl00L.js",
        "/assets/react-dom-BE6BiQSL.js",
        "/assets/src-DcauI7BP.js",
        "/assets/src-wFgDTrC1.js",
        "/assets/index.es-sS4szeIp.js",
        "/assets/esm-DYU-OuKx.js",
        "/assets/src-DvbQaBsy2.js",
        "/assets/_baseForOwn-CcT7yYSn.js",
        "/assets/src-Bp3JjykZ.js",
        "/assets/useLockBodyScroll-CFNaoMVC.js",
        "/assets/useIsomorphicLayoutEffect-CImoiNQ0.js",
        "/assets/striptags-BvwkZIy3.js",
        "/assets/swiper-react-CTWCnLMV.js",
        "/assets/src-24TRix5o.js",
        "/assets/src-DBqdrzXP.js",
        "/assets/src-uURKhZs-.js",
        "/assets/extends-C_2-xqiD.js",
        "/assets/toNumber-D-jhQxFw.js",
        "/assets/src-D9RQELm1.js",
        "/assets/src-DcUZOrUG.js",
        "/assets/src-RvcSZewU.js",
        "/assets/src-DQl9VMWY2.js",
        "/assets/src-5VTiR5VE.js",
        "/assets/dist-DQz6cYC1.js",
        "/assets/src-DLmM_06l.js",
        "/assets/src-CIU7cGum.js",
        "/assets/src-DNHXyWTN.js"
      ],
      "css": []
    }
  },
  "url": "/assets/manifest-999fdd7f.js",
  "version": "999fdd7f"
};
  window.__reactRouterRouteModules = {"root":route0,"routes/keyword.$slug":route1};

import("/assets/entry.client-BnhDBGck.js");</script><script defer="" src="https://www.instagram.com/embed.js"></script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_1721\":-5,\"_1722\":-5},\"loaderData\",{\"_3\":4,\"_888\":889},\"root\",{\"_5\":6,\"_7\":8,\"_9\":10,\"_11\":12,\"_13\":14,\"_15\":16,\"_22\":23,\"_24\":18,\"_25\":26,\"_53\":54,\"_67\":68,\"_69\":70,\"_93\":94,\"_552\":553,\"_554\":-7,\"_555\":556,\"_570\":571,\"_660\":661,\"_884\":885,\"_886\":887},\"href\",\"https://www.gamedeveloper.com/keyword/blogs\",\"brand\",\"gamedeveloper\",\"domainUrl\",\"https://www.gamedeveloper.com\",\"authenticationStatus\",\"anonymous\",\"siteName\",\"Game Developer\",\"authConfig\",{\"_17\":18,\"_19\":-7,\"_20\":-7,\"_21\":18},\"enabled\",false,\"authenticationConfigId\",\"standaloneRegistrationPage\",\"disableCaptcha\",\"favicons\",[],\"isDctsTurnOn\",\"cookieBanner\",{\"_27\":28,\"_29\":28,\"_30\":31,\"_50\":51,\"_52\":28},\"stub\",true,\"advancedConsentOverride\",\"settings\",{\"_32\":33,\"_34\":35,\"_36\":37,\"_38\":39,\"_40\":41,\"_42\":43,\"_44\":45,\"_46\":47,\"_48\":49},\"data-cfasync\",\"false\",\"data-local-sync\",\"allow-network-observable\",\"data-prompt\",\"1\",\"data-report-only\",\"off\",\"data-dismissed-view-state\",\"Closed\",\"data-tcf-ui-dismissed-view-state\",\"Collapsed\",\"data-ui-shadow-root\",\"open\",\"data-privacy-policy\",\"https://privacy.informa.com/\",\"src\",\"https://transcend-cdn.com/cm/ef49a3f1-d8c1-47d6-88fc-50e41130631f/airgap.js\",\"props\",{\"_32\":33,\"_34\":35,\"_36\":37,\"_38\":39,\"_40\":41,\"_42\":43,\"_44\":45,\"_46\":47,\"_48\":49},\"transcend\",\"ui\",{\"_7\":8,\"_55\":56,\"_57\":58},\"theme\",\"theme2\",\"font\",{\"_59\":60,\"_65\":66},\"primary\",{\"_61\":62,\"_63\":64},\"name\",\"Poppins\",\"url\",\"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900\u0026display=swap\",\"secondary\",{\"_61\":62,\"_63\":64},\"environment\",\"prod\",\"featureToggles\",{\"_71\":18,\"_72\":18,\"_73\":28,\"_74\":18,\"_75\":18,\"_76\":18,\"_77\":18,\"_78\":28,\"_79\":18,\"_80\":18,\"_81\":82,\"_83\":18,\"_84\":28,\"_85\":28,\"_86\":18,\"_87\":28,\"_88\":28,\"_89\":28,\"_90\":28,\"_91\":18,\"_92\":28},\"elnNewsletter\",\"elnWithoutNewsletter\",\"iirisAuthentication\",\"subBrand\",\"useSettingsRedirectAPIVersion1\",\"gatingEnabled\",\"iirisRecommendationDisabled\",\"iasPetEnabled\",\"bridgedMediaEnabled\",\"ecommerceEnabled\",\"iirisRecommendationVer\",\"version4\",\"weather3MonthForecastEnabled\",\"useContentApiVersion2\",\"cloudflareCachingEnabled\",\"oneTrustEnabled\",\"transcendEnabled\",\"disablePaymentServiceHealthCheck\",\"shouldUseNewsletterManagement\",\"useMassRedirectsEngine\",\"useTechInformaBar\",\"useNewEventResolver\",\"layout\",{\"_95\":96,\"_116\":117,\"_140\":141,\"_143\":144,\"_369\":370,\"_467\":468,\"_474\":475},\"socialLinks\",[97,101,104,107,110,113],{\"_98\":99,\"_63\":100},\"type\",\"RSS\",\"/rss.xml\",{\"_98\":102,\"_63\":103},\"Twitter\",\"https://twitter.com/gamedevdotcom/\",{\"_98\":105,\"_63\":106},\"Linkedin\",\"https://www.linkedin.com/company/gamedeveloperofficial\",{\"_98\":108,\"_63\":109},\"Facebook\",\"https://www.facebook.com/GameDeveloperOfficial\",{\"_98\":111,\"_63\":112},\"Bluesky\",\"https://bsky.app/profile/gamedeveloper.bsky.social\",{\"_98\":114,\"_63\":115},\"GoogleNews\",\"https://news.google.com/publications/CAAqBwgKML7GrQswy9HFAw?ceid=US:en\u0026oc=3\u0026hl=en-US\u0026gl=US\",\"informaBar\",{\"_17\":28,\"_118\":119,\"_137\":138},\"leftSection\",{\"_120\":121,\"_122\":123},\"description\",\"Together, we power an unparalleled network of 220+ online properties covering 10,000+ granular topics, serving an audience of 50+ million professionals with original, objective content from trusted sources. We help you gain critical insights and make more informed decisions across your business priorities.\",\"subMenu\",[124,128,131,134],{\"_125\":126,\"_63\":127},\"title\",\"Informa PLC\",\"https://www.informa.com/\",{\"_125\":129,\"_63\":130},\"ABOUT US\",\"https://www.informa.com/about-us/\",{\"_125\":132,\"_63\":133},\"INVESTOR RELATIONS\",\"https://www.informa.com/investors/\",{\"_125\":135,\"_63\":136},\"TALENT\",\"https://www.informa.com/talent/\",\"rightSection\",{\"_120\":139},\"This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.\",\"ittNetworkBar\",{\"_17\":18,\"_122\":142},[],\"nav\",{\"_145\":146,\"_355\":356},\"mainMenuItems\",[147,231,270,317,321,326,332],{\"_125\":148,\"_63\":149,\"_150\":151,\"_152\":149,\"_153\":28,\"_122\":154,\"_173\":174},\"Trending\",\"/latest-interviews\",\"seeAllLink\",\"Top Stories\",\"seeAllLinkUrl\",\"hasSubMenu\",[155,158,161,164,167,170],{\"_125\":156,\"_63\":157},\"▫️ Layoffs \u0026 Studio Closures\",\"/keyword/layoffs\",{\"_125\":159,\"_63\":160},\"▫️ GDC 2026\",\"/program/gdc-festival-of-gaming\",{\"_125\":162,\"_63\":163},\"▫️ Generative AI \u0026 ML\",\"/keyword/generative-ai\",{\"_125\":165,\"_63\":166},\"▫️ Industry Lawsuits\",\"/keyword/lawsuits\",{\"_125\":168,\"_63\":169},\"▫️ Development Tools\",\"/keyword/game-engines-development-tools\",{\"_125\":171,\"_63\":172},\"▫️ Culture \u0026 Dev Communities\",\"/keyword/culture\",\"recentContents\",[175,214],{\"_176\":177,\"_181\":182,\"_183\":182,\"_184\":185,\"_186\":187,\"_188\":189,\"_190\":191,\"_192\":193,\"_194\":195,\"_196\":197,\"_198\":199,\"_200\":201,\"_208\":209,\"_210\":211,\"_212\":213},\"thumbnail\",{\"_48\":178,\"_179\":180},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt2dca4f307e4c7cd7/6a2af15f6b9ea71848a55b7d/narrativeinnonnarrative.png\",\"alt\",\"Headshots of Harrison Smith and Emma Kidwell next to the Game Developer Podcast logo.\",\"articleName\",\"The art of game writing in 'non-narrative' games ft. Emma Kidwell and Harrison Pink\",\"mobileHeadline\",\"articleSummary\",\"This week senior editor Bryant Francis sits down with narrative designer Harrison Pink and game writer Emma Kidwell for a conversation about the craft of creating narrative content in games that don’t strictly have a narrative focus.\",\"articleUrl\",\"/design/the-art-of-game-writing-in-non-narrative-games-ft-emma-kidwell-and-harrison-pink\",\"listPageUrl\",\"/podcasts\",\"date\",\"Jun 12, 2026\",\"webinarStartTime\",\"\",\"categoryName\",\"Design\",\"categoryUrl\",\"/design\",\"contentType\",\"Podcast\",\"contributors\",[202],{\"_61\":203,\"_204\":205,\"_206\":207},\"Game Developer Podcast\",\"link\",\"/author/podcast\",\"avatar\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt370f6e834922acca/6894c20e3dfe74bc4ab30a63/ab6765630000ba8ac75ba80b4d9fa9b0cc090ce5.jpg\",\"timeRead\",0,\"variant\",\"card-vertical\",\"layoutVariant\",\"vertical\",{\"_176\":215,\"_181\":218,\"_183\":218,\"_184\":219,\"_186\":220,\"_188\":193,\"_190\":221,\"_192\":193,\"_194\":222,\"_196\":223,\"_198\":224,\"_200\":225,\"_208\":230,\"_210\":211,\"_212\":213},{\"_48\":216,\"_179\":217},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf0f714f19df696a2/6a281f4db26880fd0d5b9dbc/wolf2featured.jpg\",\"Bigby from The Wolf Among Us 2.\",\"Telltale Games is back, but can it learn from its past mistakes?\",\"Telltale Games was once the standard-bearer for interactive storytelling. Its new leaders want to reclaim that title in a more sustainable way.\",\"/production/can-telltale-games-learn-from-its-past-mistakes-\",\"Jun 9, 2026\",\"Production\",\"/production\",\"Article\",[226],{\"_61\":227,\"_204\":228,\"_206\":229},\"Bryant Francis\",\"/author/bryant-francis\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blta3f85503204169fc/696547b565f0535b7c308465/bryant2026headshot.png\",9,{\"_125\":232,\"_63\":233,\"_150\":193,\"_152\":233,\"_153\":28,\"_122\":234,\"_173\":244},\"Latest News\",\"/latest-news\",[235,238,241],{\"_125\":236,\"_63\":237},\"▫️ Weekly News Highlights\",\"/series/patch-notes-newsletter\",{\"_125\":239,\"_63\":240},\"▫️ News Deep Dives\",\"/series/news-trending-story-deep-dives-column\",{\"_125\":242,\"_63\":243},\"▫️ GD Collective Research\",\"/about-the-game-developer-collective\",[245,260],{\"_176\":246,\"_181\":249,\"_183\":249,\"_184\":250,\"_186\":251,\"_188\":193,\"_190\":191,\"_192\":193,\"_194\":252,\"_196\":253,\"_198\":224,\"_200\":254,\"_208\":259,\"_210\":211,\"_212\":213},{\"_48\":247,\"_179\":248},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blta5d1b01a65890258/6a2c024e8ad5d773aa4e3c12/Playstack_Header.png\",\"Key artwork for Balatro\",\"Playstack CEO pledges to be 'mindful' about growth after majority takeover\",\"The publisher also stressed that being sold to the owner of GameSpot and Fandom won't create a conflict of interest.\",\"/business/playstack-ceo-pledges-to-be-mindful-about-growth-after-majority-takeover\",\"Business\",\"/business\",[255],{\"_61\":256,\"_204\":257,\"_206\":258},\"Chris Kerr\",\"/author/chris-kerr\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt1c7a117d71555292/68df91e67f2d057e47bc3d18/Me.jpeg\",5,{\"_176\":261,\"_181\":264,\"_183\":264,\"_184\":265,\"_186\":266,\"_188\":193,\"_190\":191,\"_192\":193,\"_194\":252,\"_196\":253,\"_198\":224,\"_200\":267,\"_208\":269,\"_210\":211,\"_212\":213},{\"_48\":262,\"_179\":263},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blte931168c8e706a74/6a2bd7aa0b6e4ed9b361b5ae/Patch_Notes_55_Header.png\",\"The Patch Notes logo overlaid on pixel art of 'Jimbo, the clown mascot from Balatro\",\"Playstack sold, Xbox announces business 'reset,' and is generative AI poisoning the well? - Patch Notes #56\",\"Plus: Could an arbitration clause prevent families suing Roblox from taking the company to court?\",\"/business/playstack-sold-xbox-announces-business-reset-and-is-generative-ai-poisoning-the-well-patch-notes-55\",[268],{\"_61\":256,\"_204\":257,\"_206\":258},4,{\"_125\":271,\"_63\":272,\"_150\":273,\"_152\":272,\"_153\":28,\"_122\":274,\"_173\":292},\"[GDC]\",\"/keyword/gdc-festival-of-gaming\",\"Learn More\",[275,277,280,283,286,289],{\"_125\":276,\"_63\":272},\"▫️ Talks \u0026 Interviews\",{\"_125\":278,\"_63\":279},\"▫️ GDC News\",\"https://gdconf.com/news-insights/\",{\"_125\":281,\"_63\":282},\"▫️ GDC Vault: Editor Picks\",\"/series/unlocking-the-vault-gdc-vault-highlights-game-dev-tips\",{\"_125\":284,\"_63\":285},\"▫️ Register for GDC\",\"https://www.gdconf.com\",{\"_125\":287,\"_63\":288},\"▫️ GDC Vault: Full Library \",\"https://www.gdcvault.com\",{\"_125\":290,\"_63\":291},\"▫️ Dev Surveys, Data, \u0026 Insights\",\"/keyword/state-of-the-game-industry-report\",[293,303],{\"_176\":294,\"_181\":297,\"_183\":297,\"_184\":298,\"_186\":299,\"_188\":189,\"_190\":300,\"_192\":193,\"_194\":195,\"_196\":197,\"_198\":199,\"_200\":301,\"_208\":209,\"_210\":211,\"_212\":213},{\"_48\":295,\"_179\":296},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt4e2f3a3b0e90f3cf/6a187d5d7f1d275be20dc072/JenniferSvedebergYen.png\",\"A photo of Jennifer Svedeberg-Yen accepting an award by the GAme Developer Podcast logo.\",\"Crafting Clair Obscur: Expedition 33's mournful tale ft. Jennifer Svedberg-Yen\",\"This month, GDC Content Marketing Manager Beth Elderkin chats with Sandfall Interactive lead writer and localization producer Jenniver Svedberg-Yen about the creative decisions that went into Clair Obscur: Expedition 33.\",\"/design/crafting-clair-obscur-expedition-33-s-mournful-tale-ft-jennifer-svedeberg-yen\",\"May 29, 2026\",[302],{\"_61\":203,\"_204\":205,\"_206\":207},{\"_176\":304,\"_181\":307,\"_183\":307,\"_184\":308,\"_186\":309,\"_188\":193,\"_190\":310,\"_192\":193,\"_194\":222,\"_196\":223,\"_198\":224,\"_200\":311,\"_208\":316,\"_210\":211,\"_212\":213},{\"_48\":305,\"_179\":306},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt94bdb13fed33c8ed/69f252276bebffa781af87ee/ss_a9c53181f654194c16719cfcf083cc7ae93b01bb.1920x1080.jpg\",\"Colorful heroes from Overwatch fly across the battlefield\",\"The secret to Overwatch's revitalization? Over-communicating.\",\"'Our communication couldn't just be reactive or occasional. It really had to be continuous,' said game director Aaron Keller in a GDC 2026 talk.\",\"/production/the-secret-to-overwatch-s-revitalization-over-communicating-\",\"Apr 29, 2026\",[312],{\"_61\":313,\"_204\":314,\"_206\":315},\"Carli Velocci\",\"/author/carli-velocci-\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltcf27b05ef4edb53d/650f126ade5e9f4e9252e0e4/carli_pic_museum.jpeg\",6,{\"_125\":203,\"_63\":318,\"_150\":193,\"_152\":318,\"_153\":18,\"_122\":319,\"_173\":320},\"/about-the-game-developer-podcast\",[],[],{\"_125\":322,\"_63\":197,\"_150\":323,\"_152\":197,\"_153\":18,\"_122\":324,\"_173\":325},\"Game Design\",\"See All\",[],[],{\"_125\":327,\"_63\":328,\"_150\":329,\"_152\":328,\"_153\":18,\"_122\":330,\"_173\":331},\"Programming\",\"/programming\",\"Read More\",[],[],{\"_125\":333,\"_63\":149,\"_150\":329,\"_152\":149,\"_153\":28,\"_122\":334,\"_173\":346},\"More\",[335,337,340,343],{\"_125\":336,\"_63\":149},\"▫️ Developer Interviews\",{\"_125\":338,\"_63\":339},\"▫️ Game Dev Deep Dives\",\"/latest-case-studies\",{\"_125\":341,\"_63\":342},\"▫️ Video Game Postmortems\",\"/keyword/postmortems\",{\"_125\":344,\"_63\":345},\"▫️ Partner Perspectives\",\"https://www.gamedeveloper.com/program/partner-perspective-unity\",[347,351],{\"_176\":348,\"_181\":182,\"_183\":182,\"_184\":185,\"_186\":187,\"_188\":189,\"_190\":191,\"_192\":193,\"_194\":195,\"_196\":197,\"_198\":199,\"_200\":349,\"_208\":209,\"_210\":211,\"_212\":213},{\"_48\":178,\"_179\":180},[350],{\"_61\":203,\"_204\":205,\"_206\":207},{\"_176\":352,\"_181\":218,\"_183\":218,\"_184\":219,\"_186\":220,\"_188\":193,\"_190\":221,\"_192\":193,\"_194\":222,\"_196\":223,\"_198\":224,\"_200\":353,\"_208\":230,\"_210\":211,\"_212\":213},{\"_48\":216,\"_179\":217},[354],{\"_61\":227,\"_204\":228,\"_206\":229},\"secondaryMenu\",[357,360,363,366],{\"_125\":358,\"_63\":359},\"Game Market Research\",\"https://omdia.tech.informa.com/advance-your-business/media-and-entertainment/games-spotlight-service\",{\"_125\":361,\"_63\":362},\"Watch GDC Talks on GDC Vault\",\"https://www.gdcvault.com/\",{\"_125\":364,\"_63\":365},\"Attend or Exhibit at GDC\",\"https://gdconf.com/\",{\"_125\":367,\"_63\":368},\"Advertise With Game Developer\",\"https://reg.gdconf.com/gamedeveloper-media-kit\",\"megaMenu\",{\"_371\":372,\"_406\":407,\"_447\":448,\"_463\":464,\"_465\":193,\"_466\":193},\"largeMenu\",[373,381,386,394,396,398,400],{\"_125\":148,\"_63\":149,\"_122\":374,\"_150\":151,\"_152\":149},[375,376,377,378,379,380],{\"_125\":156,\"_63\":157},{\"_125\":159,\"_63\":160},{\"_125\":162,\"_63\":163},{\"_125\":165,\"_63\":166},{\"_125\":168,\"_63\":169},{\"_125\":171,\"_63\":172},{\"_125\":232,\"_63\":233,\"_122\":382,\"_150\":193,\"_152\":233},[383,384,385],{\"_125\":236,\"_63\":237},{\"_125\":239,\"_63\":240},{\"_125\":242,\"_63\":243},{\"_125\":271,\"_63\":272,\"_122\":387,\"_150\":273,\"_152\":272},[388,389,390,391,392,393],{\"_125\":276,\"_63\":272},{\"_125\":278,\"_63\":279},{\"_125\":281,\"_63\":282},{\"_125\":284,\"_63\":285},{\"_125\":287,\"_63\":288},{\"_125\":290,\"_63\":291},{\"_125\":203,\"_63\":318,\"_122\":395,\"_150\":193,\"_152\":318},[],{\"_125\":322,\"_63\":197,\"_122\":397,\"_150\":323,\"_152\":197},[],{\"_125\":327,\"_63\":328,\"_122\":399,\"_150\":329,\"_152\":328},[],{\"_125\":333,\"_63\":149,\"_122\":401,\"_150\":329,\"_152\":149},[402,403,404,405],{\"_125\":336,\"_63\":149},{\"_125\":338,\"_63\":339},{\"_125\":341,\"_63\":342},{\"_125\":344,\"_63\":345},\"smallMenu\",[408,428,439],{\"_125\":409,\"_63\":193,\"_122\":410},\"2026 Event Calendar\",[411,414,417,420,423,426],{\"_125\":412,\"_63\":413},\"Feb. 10 | DICE Summit\",\"https://www.gamedeveloper.com/keyword/dice-2025\",{\"_125\":415,\"_63\":416},\"Mar. 9 | GDC Festival of Gaming\",\"https://www.gamedeveloper.com/keyword/gdc-2025\",{\"_125\":418,\"_63\":419},\"Mar. 26 | PAX East\",\"/series/pax-east\",{\"_125\":421,\"_63\":422},\"Apr. 29 | Gamescom Latam\",\"https://www.gamedeveloper.com/keyword/-event-gamescom\",{\"_125\":424,\"_63\":425},\"Jun. 5 | Summer Game Fest\",\"https://www.gamedeveloper.com/keyword/summer-game-fest\",{\"_125\":427,\"_63\":422},\"Aug. 26 | Gamescom\",{\"_125\":429,\"_63\":193,\"_122\":430},\"More from Game Developer\",[431,433,436],{\"_125\":203,\"_63\":432},\"/program/game-developer-podcast\",{\"_125\":434,\"_63\":435},\"Resource Library\",\"/resources\",{\"_125\":437,\"_63\":438},\"Press Releases\",\"/press-release\",{\"_125\":440,\"_63\":193,\"_122\":441},\"Connect\",[442,445],{\"_125\":443,\"_63\":444},\"About Us\",\"https://www.gamedeveloper.com/author\",{\"_125\":446,\"_63\":368},\"Advertise With Us\",\"sideNavSections\",[449],{\"_125\":450,\"_63\":193,\"_122\":451,\"_150\":193,\"_152\":193},\"Keep in Touch\",[452,455,458,460],{\"_125\":453,\"_63\":454},\"Contact Us\",\"/contact-game-developer\",{\"_125\":456,\"_63\":457},\"Submit a News Tip\",\"mailto:tips@gamedeveloper.com\",{\"_125\":459,\"_63\":368},\"Media Partnerships\",{\"_125\":461,\"_63\":462},\"Report a Problem\",\"mailto:support@gamedeveloper.com\",\"socialSectionTitle\",\"Follow Us\",\"registrationSectionTitle\",\"registrationStatementText\",\"navBase\",{\"_469\":470},\"logo\",{\"_63\":471,\"_472\":473},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt8d5417b628e6b04b/656f5ed8485fda040aba11a1/Game_Developer_Logo_RGB_1.png\",\"altText\",\"Game Developer Logo\",\"footer\",{\"_469\":476,\"_477\":478,\"_512\":513,\"_528\":529},{\"_63\":471,\"_472\":473},\"linkSections\",[479,502],{\"_480\":481,\"_125\":501,\"_98\":37},\"links\",[482,490,495,497],{\"_483\":484,\"_487\":28,\"_125\":488,\"_63\":489},\"image\",{\"_472\":485,\"_63\":486},\"Placeholder image\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd1cdb5ad637f7f4e/651d415bd9bb870df1310c25/placeholder.png\",\"openInNewTab\",\"Blog with Game Developer\",\"https://reg.gdconf.com/blog-submission\",{\"_483\":491,\"_487\":28,\"_125\":493,\"_63\":494},{\"_472\":492,\"_63\":486},\"placeholder image\",\"Blogging Guidelines\",\"/blogging-guidelines\",{\"_483\":496,\"_487\":28,\"_125\":203,\"_63\":189},{\"_472\":492,\"_63\":486},{\"_483\":498,\"_487\":28,\"_125\":499,\"_63\":500},{\"_472\":492,\"_63\":486},\"Submit a Tip\",\"mailto:news@gamedeveloper.com\",\"More from GD\",{\"_480\":503,\"_125\":440,\"_98\":37},[504,508,510],{\"_483\":505,\"_487\":28,\"_125\":443,\"_63\":507},{\"_472\":506,\"_63\":486},\"placeholder\",\"/author\",{\"_483\":509,\"_487\":28,\"_125\":367,\"_63\":368},{\"_472\":506,\"_63\":486},{\"_483\":511,\"_487\":28,\"_125\":453,\"_63\":454},{\"_472\":506,\"_63\":486},\"brandLinks\",[514,519,523],{\"_483\":515,\"_487\":28,\"_125\":518,\"_63\":362},{\"_472\":516,\"_63\":517},\"GDC Vault Logo\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt1363a10229efc062/656db9e79761ff040a595688/MicrosoftTeams-image_(3).png\",\"GDC Vault\",{\"_483\":520,\"_487\":28,\"_125\":521,\"_63\":285},{\"_472\":521,\"_63\":522},\"GDC\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt431090e6027a0c17/690cd59117b10612bd8935ff/GDC-white-new_logo.png\",{\"_483\":524,\"_487\":28,\"_125\":525,\"_63\":527},{\"_472\":525,\"_63\":526},\"Omdia\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt789019463bae70bf/6523eb443c9b45aa9da4f4b2/logo_omdia_white.png\",\"https://www.omdia.com\",\"copyright\",{\"_530\":531,\"_480\":536,\"_125\":551},\"businessUnit\",{\"_63\":532,\"_61\":533,\"_534\":535},\"https://www.informa.com\",\"Informa\",\"logoUrl\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt6a17e2ccd9083672/674edfd84301993a15a0e9e1/Informa_Logo_OneLine_Graduated_White_RGB.png\",[537,540,544,548],{\"_483\":538,\"_487\":28,\"_125\":539,\"_63\":127},{\"_472\":539,\"_63\":127},\"Home\",{\"_483\":541,\"_487\":28,\"_125\":542,\"_63\":543},{\"_472\":542,\"_63\":543},\"Cookie Policy\",\"https://www.informa.com/generic-content/cookie-policy/\",{\"_483\":545,\"_487\":28,\"_125\":546,\"_63\":547},{\"_472\":546,\"_63\":547},\"Privacy\",\"https://privacy.informa.com/policies/en/\",{\"_483\":549,\"_487\":28,\"_125\":550,\"_63\":547},{\"_472\":550,\"_63\":547},\"Terms of Use\",\" Informa. This website is owned and operated by Informa. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG.\",\"newRelicJs\",\"window.NREUM||(NREUM={});NREUM.init={browser_consent_mode:{enabled:false},privacy:{cookies_enabled:true},distributed_tracing:{enabled:true},performance:{capture_measures:true},ajax:{deny_list:[\\\"bam.eu01.nr-data.net\\\"],capture_payloads:'none'}};\\n\\n;NREUM.loader_config={accountID:\\\"3936348\\\",trustKey:\\\"3288925\\\",agentID:\\\"538600205\\\",licenseKey:\\\"NRJS-26ae6a3b09493bbcc87\\\",applicationID:\\\"538600205\\\"};\\n;NREUM.info={beacon:\\\"bam.eu01.nr-data.net\\\",errorBeacon:\\\"bam.eu01.nr-data.net\\\",licenseKey:\\\"NRJS-26ae6a3b09493bbcc87\\\",applicationID:\\\"538600205\\\",sa:1};\\n;/*! For license information please see nr-loader-spa-1.316.0.min.js.LICENSE.txt */\\n(()=\u003e{var e,t,r={384:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{NT:()=\u003ea,Zm:()=\u003ec,bQ:()=\u003eu,dV:()=\u003ed,pV:()=\u003el});var n=r(6154),i=r(1863),s=r(944),o=r(1910);const a={beacon:\\\"bam.nr-data.net\\\",errorBeacon:\\\"bam.nr-data.net\\\"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic\u0026\u0026(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,o.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length\u0026\u0026(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:a.beacon,errorBeacon:a.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}},733:(e,t,r)=\u003e{\\\"use strict\\\";function n(e,t){return function(e){let t=2166136261;for(let r=0;r\u003ce.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t\u003e\u003e\u003e0).toString(16).padStart(8,\\\"0\\\")}(\\\"\\\".concat(String(e),\\\":\\\").concat(String(t)))}r.d(t,{Y:()=\u003en})},782:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{T:()=\u003en});const n=r(860).K7.pageViewTiming},860:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{$J:()=\u003eu,K7:()=\u003ec,P3:()=\u003ed,XX:()=\u003ei,Yy:()=\u003ea,df:()=\u003es,qY:()=\u003en,v4:()=\u003eo});const n=\\\"events\\\",i=\\\"jserrors\\\",s=\\\"browser/blobs\\\",o=\\\"rum\\\",a=\\\"browser/logs\\\",c={ajax:\\\"ajax\\\",genericEvents:\\\"generic_events\\\",jserrors:i,logging:\\\"logging\\\",metrics:\\\"metrics\\\",pageAction:\\\"page_action\\\",pageViewEvent:\\\"page_view_event\\\",pageViewTiming:\\\"page_view_timing\\\",sessionReplay:\\\"session_replay\\\",sessionTrace:\\\"session_trace\\\",softNav:\\\"soft_navigations\\\"},d={[c.pageViewEvent]:1,[c.pageViewTiming]:2,[c.metrics]:3,[c.jserrors]:4,[c.softNav]:5,[c.ajax]:6,[c.sessionTrace]:7,[c.sessionReplay]:8,[c.logging]:9,[c.genericEvents]:10},u={[c.pageViewEvent]:o,[c.pageViewTiming]:n,[c.ajax]:n,[c.softNav]:n,[c.metrics]:i,[c.jserrors]:i,[c.sessionTrace]:s,[c.sessionReplay]:s,[c.logging]:a,[c.genericEvents]:\\\"ins\\\"}},944:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{R:()=\u003ei});var n=r(3241);function i(e,t){\\\"function\\\"==typeof console.debug\u0026\u0026(console.debug(\\\"New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#\\\".concat(e),t),(0,n.W)({drained:null,type:\\\"data\\\",name:\\\"warn\\\",feature:\\\"warn\\\",data:{code:e,secondary:t}}))}},993:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{A$:()=\u003es,ET:()=\u003eo,TZ:()=\u003ea,p_:()=\u003ei});var n=r(860);const i={ERROR:\\\"ERROR\\\",WARN:\\\"WARN\\\",INFO:\\\"INFO\\\",DEBUG:\\\"DEBUG\\\",TRACE:\\\"TRACE\\\"},s={OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},o=\\\"log\\\",a=n.K7.logging},1687:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{Ak:()=\u003ea,Ze:()=\u003ed,x3:()=\u003ec});var n=r(3241),i=r(3606),s=r(860),o=r(2646);function a(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r\u0026\u0026(r.get(t)\u0026\u0026r.delete(t),l(e,t,!1),r.size\u0026\u0026u(e))}function d(e,t=\\\"feature\\\",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=\u003et.staged)\u0026\u0026(t.sort((e,t)=\u003ee[1].priority-t[1].priority),t.forEach(([t])=\u003e{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,a=i.i.handlers;if(s\u0026\u0026!s.aborted\u0026\u0026s.backlog\u0026\u0026a){if((0,n.W)({type:\\\"lifecycle\\\",name:\\\"drain\\\",feature:t}),r){const e=s.backlog[t],r=a[t];if(r){for(let t=0;e\u0026\u0026t\u003ce.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=\u003e{Object.values(t||{}).forEach(t=\u003e{t[0]?.on\u0026\u0026t[0].context()instanceof o.y\u0026\u0026!t[0].listeners(e).includes(t[1])\u0026\u0026t[0].on(e,t[1])})})}}s.isolatedBacklog||delete a[t],s.backlog[t]=null,s.emit(\\\"drain-\\\"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=\u003e{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],s=e[2];n.apply(i,s)}})}},1738:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{U:()=\u003ef,Y:()=\u003el});var n=r(3241),i=r(9908),s=r(1863),o=r(944),a=r(3969),c=r(8362),d=r(860),u=r(4261);function l(e,t,r,s){const l=s||r;!l||l[e]\u0026\u0026l[e]!==c.d.prototype[e]||(l[e]=function(){(0,i.p)(a.xV,[\\\"API/\\\"+e+\\\"/called\\\"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:\\\"data\\\",name:\\\"api\\\",feature:u.Pl+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,o.R)(23,e)}})}function f(e,t,r,n,o){const a=e.info;null===r?delete a.jsAttributes[t]:a.jsAttributes[t]=r,(o||null===r)\u0026\u0026(0,i.p)(u.Pl+n,[(0,s.t)(),t,r],void 0,\\\"session\\\",e.ee)}},1741:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{W:()=\u003es});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e(i.$9,e,t)}start(){return this.#e(i.d3)}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},1863:(e,t,r)=\u003e{\\\"use strict\\\";function n(){return Math.floor(performance.now())}r.d(t,{t:()=\u003en})},1910:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{i:()=\u003es});var n=r(944);const i=new Map;function s(...e){return e.every(e=\u003e{if(i.has(e))return i.get(e);const t=\\\"function\\\"==typeof e?e.toString():\\\"\\\",r=t.includes(\\\"[native code]\\\"),s=t.includes(\\\"nrWrapper\\\");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},2555:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{D:()=\u003ea,f:()=\u003eo});var n=r(384),i=r(8122);const s={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function o(e){try{return!!e.licenseKey\u0026\u0026!!e.errorBeacon\u0026\u0026!!e.applicationID}catch(e){return!1}}const a=e=\u003e(0,i.a)(e,s)},2614:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{BB:()=\u003es,Wt:()=\u003en,g:()=\u003ec,iL:()=\u003ea,tS:()=\u003eo,wk:()=\u003ei});const n=\\\"NRBA_SESSION::\\\",i=144e5,s=18e5,o={STARTED:\\\"session-started\\\",PAUSE:\\\"session-pause\\\",RESET:\\\"session-reset\\\",RESUME:\\\"session-resume\\\",UPDATE:\\\"session-update\\\"},a={SAME_TAB:\\\"same-tab\\\",CROSS_TAB:\\\"cross-tab\\\"},c={OFF:0,FULL:1,ERROR:2}},2646:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{y:()=\u003en});class n{constructor(e){this.contextId=e}}},2843:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{G:()=\u003es,u:()=\u003ei});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)(\\\"visibilitychange\\\",function(){if(t)return void(\\\"hidden\\\"===document.visibilityState\u0026\u0026e());e(document.visibilityState)},r,i)}function s(e,t,r){(0,n.sp)(\\\"pagehide\\\",e,t,r)}},3241:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{W:()=\u003es});var n=r(6154);const i=\\\"newrelic\\\";function s(e={}){try{n.gm.dispatchEvent(new CustomEvent(i,{detail:e}))}catch(e){}}},3304:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{A:()=\u003es});var n=r(7836);const i=()=\u003e{const e=new WeakSet;return(t,r)=\u003e{if(\\\"object\\\"==typeof r\u0026\u0026null!==r){if(e.has(r))return;e.add(r)}return r}};function s(e){try{return JSON.stringify(e,i())??\\\"\\\"}catch(e){try{n.ee.emit(\\\"internal-error\\\",[e])}catch(e){}return\\\"\\\"}}},3333:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{$v:()=\u003eu,TZ:()=\u003en,Xh:()=\u003ec,Zp:()=\u003ei,kd:()=\u003ed,mq:()=\u003ea,nf:()=\u003eo,qN:()=\u003es});const n=r(860).K7.genericEvents,i=[\\\"auxclick\\\",\\\"click\\\",\\\"copy\\\",\\\"keydown\\\",\\\"paste\\\",\\\"scrollend\\\"],s=[\\\"focus\\\",\\\"blur\\\"],o=4,a=1e3,c=2e3,d=[\\\"PageAction\\\",\\\"UserAction\\\",\\\"BrowserPerformance\\\"],u={RESOURCES:\\\"experimental.resources\\\",REGISTER:\\\"register\\\"}},3434:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{Jt:()=\u003eo,YM:()=\u003eu});var n=r(7836),i=r(5607),s=r(5732);const o=\\\"nr@original:\\\".concat(i.W),a=50;var c=Object.prototype.hasOwnProperty,d=!1;function u(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,o){r||(r=\\\"\\\");const a=\\\"-\\\"===r.charAt(0);for(let c=0;c\u003ct.length;c++){const d=t[c],u=e[d];f(u)||(e[d]=i(u,a?d+r:r,n,d,s,o))}},i.flag=o,i;function i(t,n,i,d,h,p){return f(t)?t:(n||(n=\\\"\\\"),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty\u0026\u0026Object.keys)try{return Object.keys(e).forEach(function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})}),t}catch(e){l([e],r)}for(var n in e)c.call(e,n)\u0026\u0026(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,c,f,g;let m,v;try{c=this,o=[...arguments],v=p?(0,s.$5)(r):[void 0],f=\\\"function\\\"==typeof i?i(o,c):i||{}}catch(t){l([t,\\\"\\\",[o,c,d],f],e)}u(n+\\\"start\\\",[o,c,d,v],f,h);const y=performance.now();let b;try{return g=t.apply(c,o),b=performance.now(),g}catch(e){throw b=performance.now(),u(n+\\\"err\\\",[o,c,e,v],f,h),m=e,m}finally{const e=b-y,t={start:y,end:b,duration:e,isLongTask:e\u003e=a,methodName:d,thrownError:m};t.isLongTask\u0026\u0026u(\\\"long-task\\\",[t,c,v],f,h),u(n+\\\"end\\\",[o,c,g,v],f,h)}}}function u(r,n,i,s){if(!d||t){var o=d;d=!0;try{e.emit(r,n,i,t,s)}catch(t){l([t,r,n,i],e)}d=o}}}function l(e,t){t||(t=n.ee);try{t.emit(\\\"internal-error\\\",e)}catch(e){}}function f(e){return!(e\u0026\u0026\\\"function\\\"==typeof e\u0026\u0026e.apply\u0026\u0026!e[o])}},3606:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{i:()=\u003es});var n=r(9908);s.on=o;var i=s.handlers={};function s(e,t,r,s){o(s||n.d,i,e,t,r)}function o(e,t,r,i,s){s||(s=\\\"feature\\\"),e||(e=n.d);var o=t[s]=t[s]||{};(o[r]=o[r]||[]).push([e,i])}},3738:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{He:()=\u003ei,Kp:()=\u003ea,Lc:()=\u003ed,Rz:()=\u003eu,TZ:()=\u003en,bD:()=\u003es,d3:()=\u003eo,jx:()=\u003el,sl:()=\u003ef,uP:()=\u003ec});const n=r(860).K7.sessionTrace,i=\\\"bstResource\\\",s=\\\"resource\\\",o=\\\"-start\\\",a=\\\"-end\\\",c=\\\"fn\\\"+o,d=\\\"fn\\\"+a,u=\\\"pushState\\\",l=1e3,f=3e4},3785:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{R:()=\u003ec,b:()=\u003ed});var n=r(9908),i=r(1863),s=r(860),o=r(3969),a=r(993);function c(e,t,r={},c=a.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(o.xV,[\\\"API/logging/\\\".concat(c.toLowerCase(),\\\"/called\\\")],void 0,s.K7.metrics,e),(0,n.p)(a.ET,[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return\\\"string\\\"==typeof e\u0026\u0026Object.values(a.p_).some(t=\u003et===e.toUpperCase().trim())}},3878:(e,t,r)=\u003e{\\\"use strict\\\";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=\u003es,jT:()=\u003en,sp:()=\u003ei})},3962:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{AM:()=\u003eo,O2:()=\u003el,OV:()=\u003es,Qu:()=\u003ef,TZ:()=\u003ec,ih:()=\u003eh,pP:()=\u003ea,t1:()=\u003eu,tC:()=\u003ei,wD:()=\u003ed});var n=r(860);const i=[\\\"click\\\",\\\"keydown\\\",\\\"submit\\\"],s=\\\"popstate\\\",o=\\\"api\\\",a=\\\"initialPageLoad\\\",c=n.K7.softNav,d=5e3,u=500,l={INITIAL_PAGE_LOAD:\\\"\\\",ROUTE_CHANGE:1,UNSPECIFIED:2},f={INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},h={IP:\\\"in progress\\\",PF:\\\"pending finish\\\",FIN:\\\"finished\\\",CAN:\\\"cancelled\\\"}},3969:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{TZ:()=\u003en,XG:()=\u003ea,rs:()=\u003ei,xV:()=\u003eo,z_:()=\u003es});const n=r(860).K7.metrics,i=\\\"sm\\\",s=\\\"cm\\\",o=\\\"storeSupportabilityMetrics\\\",a=\\\"storeEventMetrics\\\"},4234:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{W:()=\u003ei});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},4261:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{$9:()=\u003eu,BL:()=\u003ec,CH:()=\u003ep,Dl:()=\u003eR,Fw:()=\u003ew,PA:()=\u003ev,Pl:()=\u003en,Pv:()=\u003ex,Tb:()=\u003ef,U2:()=\u003eo,V1:()=\u003eA,Wb:()=\u003eT,bt:()=\u003eb,cD:()=\u003ey,d3:()=\u003eE,dT:()=\u003ed,eY:()=\u003eg,fF:()=\u003eh,hG:()=\u003es,hw:()=\u003ei,k6:()=\u003ea,nb:()=\u003em,o5:()=\u003el});const n=\\\"api-\\\",i=n+\\\"ixn-\\\",s=\\\"addPageAction\\\",o=\\\"addToTrace\\\",a=\\\"addRelease\\\",c=\\\"finished\\\",d=\\\"interaction\\\",u=\\\"log\\\",l=\\\"noticeError\\\",f=\\\"pauseReplay\\\",h=\\\"recordCustomEvent\\\",p=\\\"recordReplay\\\",g=\\\"register\\\",m=\\\"setApplicationVersion\\\",v=\\\"setCurrentRouteName\\\",y=\\\"setCustomAttribute\\\",b=\\\"setErrorHandler\\\",w=\\\"setPageViewName\\\",R=\\\"setUserId\\\",E=\\\"start\\\",T=\\\"wrapLogger\\\",A=\\\"measure\\\",x=\\\"consent\\\"},5270:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{Aw:()=\u003eo,SR:()=\u003es,rF:()=\u003ea});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO\u0026\u0026(0,i.V)(e)\u0026\u0026!0===e?.session_trace.enabled}function o(e){return!0===e?.session_replay.preload\u0026\u0026s(e)}function a(e,t){try{if(\\\"string\\\"==typeof t?.type){if(\\\"password\\\"===t.type.toLowerCase())return\\\"*\\\".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains(\\\"nr-unmask\\\"))return e}}catch(e){}return\\\"string\\\"==typeof e?e.replace(/[\\\\S]/g,\\\"*\\\"):\\\"*\\\".repeat(e?.length||0)}},5289:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{GG:()=\u003eo,Qr:()=\u003ec,sB:()=\u003ea});var n=r(3878),i=r(6389);function s(){return\\\"undefined\\\"==typeof document||\\\"complete\\\"===document.readyState}function o(e,t){if(s())return e();const r=(0,i.J)(e),o=setInterval(()=\u003e{s()\u0026\u0026(clearInterval(o),r())},500);(0,n.sp)(\\\"load\\\",r,t)}function a(e){if(s())return e();(0,n.DD)(\\\"DOMContentLoaded\\\",e)}function c(e){if(s())return e();(0,n.sp)(\\\"popstate\\\",e)}},5607:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{W:()=\u003en});const n=(0,r(9566).bz)()},5732:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{$5:()=\u003eu,B5:()=\u003ed,Ms:()=\u003es,Ux:()=\u003ea,YA:()=\u003ec,fQ:()=\u003ei,yx:()=\u003eo});var n=r(7508);const i={MFE:\\\"MFE\\\",BA:\\\"BA\\\"};function s(e,t){if(!e||!t?.init.api.register.enabled)return[];const r=t.runtime.registeredEntities;return r?.filter(t=\u003eString(t.metadata.target.id)===String(e)).map(e=\u003ee.metadata.target)||[]}function o(e,t){if(!e||!t?.init.api.register.enabled)return[];const r=t.runtime.registeredEntities;return r?.filter(t=\u003et.metadata.timings?.asset?.endsWith(e)).map(e=\u003ee.metadata.target)||[]}function a(e,t){if(!l(t))return{};const r=t.agentRef.runtime.appMetadata.agents[0].entityGuid;return e?e.attributes:{\\\"entity.guid\\\":r,appId:t.agentRef.info.applicationID}}function c(e,t){return d(e,t)?{\\\"child.id\\\":e.id,\\\"child.type\\\":e.type,...a(void 0,t)}:{}}function d(e,t){return!!e\u0026\u0026!!l(t)\u0026\u0026t.agentRef.init.api.register.duplicate_data_to_container}function u(e){if(!e?.init.api.register.enabled)return[void 0];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...o(r[i--],e))}catch(e){}return t.length||t.push(void 0),t}function l(e){return 2===e?.harvestEndpointVersion}},6154:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{OF:()=\u003ed,RI:()=\u003ei,WN:()=\u003ef,bv:()=\u003es,gm:()=\u003eo,lR:()=\u003el,m:()=\u003ec,mw:()=\u003ea,sb:()=\u003eu,zk:()=\u003eh});var n=r(1863);const i=\\\"undefined\\\"!=typeof window\u0026\u0026!!window.document,s=\\\"undefined\\\"!=typeof WorkerGlobalScope\u0026\u0026(\\\"undefined\\\"!=typeof self\u0026\u0026self instanceof WorkerGlobalScope\u0026\u0026self.navigator instanceof WorkerNavigator||\\\"undefined\\\"!=typeof globalThis\u0026\u0026globalThis instanceof WorkerGlobalScope\u0026\u0026globalThis.navigator instanceof WorkerNavigator),o=i?window:\\\"undefined\\\"!=typeof WorkerGlobalScope\u0026\u0026(\\\"undefined\\\"!=typeof self\u0026\u0026self instanceof WorkerGlobalScope\u0026\u0026self||\\\"undefined\\\"!=typeof globalThis\u0026\u0026globalThis instanceof WorkerGlobalScope\u0026\u0026globalThis),a=Boolean(\\\"hidden\\\"===o?.document?.visibilityState),c=\\\"\\\"+o?.location,d=/iPad|iPhone|iPod/.test(o.navigator?.userAgent),u=d\u0026\u0026\\\"undefined\\\"==typeof SharedWorker,l=(()=\u003e{const e=o.navigator?.userAgent?.match(/Firefox[/\\\\s](\\\\d+\\\\.\\\\d+)/);return Array.isArray(e)\u0026\u0026e.length\u003e=2?+e[1]:0})(),f=Date.now()-(0,n.t)(),h=()=\u003e{const e=o?.performance?.getEntriesByType?.(\\\"navigation\\\")?.[0];if(e\u0026\u0026e.responseStart\u003e0\u0026\u0026e.responseStart\u003co.performance.now())return e}},6344:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{BB:()=\u003eu,Qb:()=\u003el,TZ:()=\u003ei,Ug:()=\u003eo,Vh:()=\u003es,_s:()=\u003ea,bc:()=\u003ed,yP:()=\u003ec});var n=r(2614);const i=r(860).K7.sessionReplay,s=\\\"errorDuringReplay\\\",o=.12,a={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},c={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0},d={RESET:{message:\\\"Session was reset\\\",sm:\\\"Reset\\\"},IMPORT:{message:\\\"Recorder failed to import\\\",sm:\\\"Import\\\"},TOO_MANY:{message:\\\"429: Too Many Requests\\\",sm:\\\"Too-Many\\\"},TOO_BIG:{message:\\\"Payload was too large\\\",sm:\\\"Too-Big\\\"},CROSS_TAB:{message:\\\"Session Entity was set to OFF on another tab\\\",sm:\\\"Cross-Tab\\\"},ENTITLEMENTS:{message:\\\"Session Replay is not allowed and will not be started\\\",sm:\\\"Entitlement\\\"}},u=5e3,l={API:\\\"api\\\",RESUME:\\\"resume\\\",SWITCH_TO_FULL:\\\"switchToFull\\\",INITIALIZE:\\\"initialize\\\",PRELOAD:\\\"preload\\\"}},6389:(e,t,r)=\u003e{\\\"use strict\\\";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=\u003e{n\u0026\u0026void 0===i\u0026\u0026(e.apply(this,r),i=setTimeout(()=\u003e{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=\u003e{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=\u003e{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=\u003ei,s:()=\u003en})},6630:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{T:()=\u003en});const n=r(860).K7.pageViewEvent},6774:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{T:()=\u003en});const n=r(860).K7.jserrors},7295:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{Xv:()=\u003eo,gX:()=\u003ei,iW:()=\u003es});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if(\\\"*\\\"===n[0].hostname)return!1;for(var t=0;t\u003cn.length;t++){var r=n[t];if(r.hostname.test(e.hostname)\u0026\u0026r.pathname.test(e.pathname))return!1}return!0}function s(e){return void 0===e.hostname}function o(e){if(n=[],e\u0026\u0026e.length)for(var t=0;t\u003ce.length;t++){let r=e[t];if(!r)continue;if(\\\"*\\\"===r)return void(n=[{hostname:\\\"*\\\"}]);0===r.indexOf(\\\"http://\\\")?r=r.substring(7):0===r.indexOf(\\\"https://\\\")\u0026\u0026(r=r.substring(8));const i=r.indexOf(\\\"/\\\");let s,o;i\u003e0?(s=r.substring(0,i),o=r.substring(i)):(s=r,o=\\\"*\\\");let[c]=s.split(\\\":\\\");n.push({hostname:a(c),pathname:a(o,!0)})}}function a(e,t=!1){const r=e.replace(/[.+?^${}()|[\\\\]\\\\\\\\]/g,e=\u003e\\\"\\\\\\\\\\\"+e).replace(/\\\\*/g,\\\".*?\\\");return new RegExp((t?\\\"^\\\":\\\"\\\")+r+\\\"$\\\")}},7485:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{D:()=\u003ei});var n=r(6154);function i(e){if(0===(e||\\\"\\\").indexOf(\\\"data:\\\"))return{protocol:\\\"data\\\"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(\\\":\\\")),sameOrigin:t.protocol===n.gm?.location?.protocol\u0026\u0026t.host===n.gm?.location?.host};return r.port\u0026\u0026\\\"\\\"!==r.port||(\\\"http:\\\"===t.protocol\u0026\u0026(r.port=\\\"80\\\"),\\\"https:\\\"===t.protocol\u0026\u0026(r.port=\\\"443\\\")),r.pathname\u0026\u0026\\\"\\\"!==r.pathname?r.pathname.startsWith(\\\"/\\\")||(r.pathname=\\\"/\\\".concat(r.pathname)):r.pathname=\\\"/\\\",r}catch(e){return{}}}},7508:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{AZ:()=\u003eg,Qr:()=\u003eb,QL:()=\u003em});var n=r(6154),i=r(1863),s=r(9119),o=r(7866);class a{dom=new c;performance=new c;constructor(e){this.url=e}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}let d;try{d=g(m())[0]}catch(e){d=g(e)[0]}const u=e=\u003e\\\"script\\\"===e.initiatorType||[\\\"link\\\",\\\"fetch\\\"].includes(e.initiatorType)\u0026\u0026e.name.endsWith(\\\".js\\\"),l=new Map;let f=[];function h(e){return l.get(e)}function p(e){const t=h(e);if(t)return t;const r=new a(e);if(l.set(e,r),l.size\u003e1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver\u0026\u0026n.gm.document){new MutationObserver(e=\u003e{e.forEach(e=\u003e{e.addedNodes.forEach(e=\u003e{if(\\\"SCRIPT\\\"===e.nodeName\u0026\u0026e.src){const t=p((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=\u003e{t.dom.end=(0,i.t)()};[\\\"load\\\",\\\"error\\\"].forEach(t=\u003ee.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes(\\\"resource\\\")){new PerformanceObserver(e=\u003e{e.getEntries().filter(u).forEach(e=\u003e{const t=p((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e;const r=[];f.forEach(({test:t,addedAt:n},s)=\u003e{(t(e)||(0,i.t)()-n\u003e1e4)\u0026\u0026r.push(s)}),f=f.filter((e,t)=\u003e!r.includes(t))})}).observe({type:\\\"resource\\\",buffered:!0})}function g(e){if(!e||\\\"string\\\"!=typeof e)return[];const t=new Set,r=e.split(\\\"\\\\n\\\");for(const e of r){const r=e.match(o.cn)||e.match(o.hB)||e.match(o.fL);if(r\u0026\u0026r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\\\\(([^)]+\\\\.js):\\\\d+:\\\\d+\\\\)/)||e.match(/^\\\\s+at\\\\s+([^\\\\s(]+\\\\.js):\\\\d+:\\\\d+/);r\u0026\u0026r[1]\u0026\u0026t.add((0,s.L)(r[1]))}}return[...t]}function m(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function v(e,t){return(0,s.L)(e.name)===t}function y(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType}function b(){const e={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:\\\"unknown\\\"},t=m();if(!t)return e;const r=n.gm.performance?.getEntriesByType(\\\"navigation\\\")?.[0]?.name||\\\"\\\";try{const o=g(t),a=(o.length\u003e1?o.filter(e=\u003ed!==e):o)[0];if(!a)return e;if(r.includes(a))return e.asset=(0,s.L)(r),e.type=\\\"inline\\\",e;e.correlation=h(a);const c=e.correlation?.performance.value||performance.getEntriesByType(\\\"resource\\\").find(e=\u003ev(e,a));c?y(e,c):function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel=\\\"preload\\\"][as=\\\"script\\\"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1}(a)\u0026\u0026(e.asset=a,e.type=\\\"preload\\\",f.push({addedAt:(0,i.t)(),test:t=\u003e!!v(t,a)\u0026\u0026(y(e,t),!0)})),Object.defineProperty(e,\\\"scriptStart\\\",{get:()=\u003ee.correlation?.script.start||e.fetchEnd}),Object.defineProperty(e,\\\"scriptEnd\\\",{get:()=\u003ee.correlation?.script.end||e.registeredAt})}catch(e){}return e}},7699:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{It:()=\u003es,KC:()=\u003ea,No:()=\u003ei,qh:()=\u003eo});var n=r(860);const i=16e3,s=1e6,o=\\\"SESSION_ERROR\\\",a={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0}},7767:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{V:()=\u003ei});var n=r(6154);const i=e=\u003en.RI\u0026\u0026!0===e?.privacy.cookies_enabled},7836:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{P:()=\u003ea,ee:()=\u003ec});var n=r(384),i=r(8990),s=r(2646),o=r(5607);const a=\\\"nr@context:\\\".concat(o.W),c=function e(t,r){var n={},o={},u={},l=!1;try{l=16===r.length\u0026\u0026d.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i\u003cr.length;i++)r[i]===t\u0026\u0026r.splice(i,1)},emit:function(e,r,n,i,s){!1!==s\u0026\u0026(s=!0);if(c.aborted\u0026\u0026!i)return;t\u0026\u0026s\u0026\u0026t.emit(e,r,n);var a=h(n);g(e).forEach(e=\u003e{e.apply(a,r)});var d=v()[o[e]];d\u0026\u0026d.push([f,e,r,a]);return a},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||\\\"feature\\\",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=\u003e{o[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=\u003e{delete f.backlog[e]})},isBuffering:function(e){return!!v()[o[e]]},debugId:r,backlog:l?{}:t\u0026\u0026\\\"object\\\"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,\\\"aborted\\\",{get:()=\u003e{let e=f._aborted||!1;return e||(t\u0026\u0026(e=t.aborted),e)}}),f;function h(e){return e\u0026\u0026e instanceof s.y?e:e?(0,i.I)(e,a,()=\u003enew s.y(a)):new s.y(a)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,\\\"globalEE\\\"),d=(0,n.Zm)();d.ee||(d.ee=c)},7866:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{Nc:()=\u003es,cn:()=\u003ea,fL:()=\u003ei,h3:()=\u003en,hB:()=\u003eo});const n=/function (.+?)\\\\s*\\\\(/,i=/^\\\\s*at .+ \\\\(eval at \\\\S+ \\\\((?:(?:file|http|https):[^)]+)?\\\\)(?:, [^:]*:\\\\d+:\\\\d+)?\\\\)$/i,s=/^\\\\s*at Function code \\\\(Function code:\\\\d+:\\\\d+\\\\)\\\\s*/i,o=/^\\\\s*at (?:((?:\\\\[object object\\\\])?(?:[^(]*\\\\([^)]*\\\\))*[^()]*(?: \\\\[as \\\\S+\\\\])?) )?\\\\(?((?:file|http|https|chrome-extension):.*?)?:(\\\\d+)(?::(\\\\d+))?\\\\)?\\\\s*$/i,a=/^\\\\s*(?:([^@]*)(?:\\\\(.*?\\\\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\\\\d+)(?::(\\\\d+))?\\\\s*$/i},8122:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{a:()=\u003ei});var n=r(944);function i(e,t){try{if(!e||\\\"object\\\"!=typeof e)return(0,n.R)(3);if(!t||\\\"object\\\"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),s=0===Object.keys(r).length?e:r;for(let o in s)if(void 0!==e[o])try{if(null===e[o]){r[o]=null;continue}Array.isArray(e[o])\u0026\u0026Array.isArray(t[o])?r[o]=Array.from(new Set([...e[o],...t[o]])):e[o]instanceof Map||e[o]instanceof Set||e[o]instanceof Date||e[o]instanceof RegExp?r[o]=e[o]:\\\"object\\\"==typeof e[o]\u0026\u0026\\\"object\\\"==typeof t[o]?r[o]=i(e[o],t[o]):r[o]=e[o]}catch(e){r[o]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},8139:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{u:()=\u003ef});var n=r(7836),i=r(3434),s=r(8990),o=r(6154);const a={},c=o.gm.XMLHttpRequest,d=\\\"addEventListener\\\",u=\\\"removeEventListener\\\",l=\\\"nr@wrapped:\\\".concat(n.P);function f(e){var t=function(e){return(e||n.ee).get(\\\"events\\\")}(e);if(a[t.debugId]++)return t;a[t.debugId]=1;var r=(0,i.YM)(t,!0);function f(e){r.inPlace(e,[d,u],\\\"-\\\",p)}function p(e,t){return e[1]}return\\\"getPrototypeOf\\\"in Object\u0026\u0026(o.RI\u0026\u0026h(document,f),c\u0026\u0026h(c.prototype,f),h(o.gm,f)),t.on(d+\\\"-start\\\",function(e,t){var n=e[1];if(null!==n\u0026\u0026(\\\"function\\\"==typeof n||\\\"object\\\"==typeof n)\u0026\u0026\\\"newrelic\\\"!==e[0]){var i=(0,s.I)(n,l,function(){var e={object:function(){if(\\\"function\\\"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,\\\"fn-\\\",null,e.name||\\\"anonymous\\\"):n});this.wrapped=e[1]=i}}),t.on(u+\\\"-start\\\",function(e){e[1]=this.wrapped||e[1]}),t}function h(e,t,...r){let n=e;for(;\\\"object\\\"==typeof n\u0026\u0026!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n\u0026\u0026t(n,...r)}},8362:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{d:()=\u003es});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},8374:(e,t,r)=\u003e{r.nc=(()=\u003e{try{return document?.currentScript?.nonce}catch(e){}return\\\"\\\"})()},8990:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{I:()=\u003ei});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty\u0026\u0026Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},9119:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{L:()=\u003es});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,\\\"$1$2\\\"):e}},9300:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{T:()=\u003en,f:()=\u003ei});const n=r(860).K7.ajax,i=\\\"ajaxRequest.id\\\"},9324:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{AJ:()=\u003eo,F3:()=\u003ei,Xs:()=\u003es,Yq:()=\u003ea,xv:()=\u003en});const n=\\\"1.316.0\\\",i=\\\"PROD\\\",s=\\\"CDN\\\",o=\\\"@newrelic/rrweb\\\",a=\\\"1.1.0\\\"},9566:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{LA:()=\u003ea,ZF:()=\u003ec,bz:()=\u003eo,el:()=\u003ed});var n=r(6154);const i=\\\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\\\";function s(e,t){return e?15\u0026e[t]:16*Math.random()|0}function o(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e\u0026\u0026e.getRandomValues\u0026\u0026(t=e.getRandomValues(new Uint8Array(30))),i.split(\\\"\\\").map(e=\u003e\\\"x\\\"===e?s(t,r++).toString(16):\\\"y\\\"===e?(3\u0026s()|8).toString(16):e).join(\\\"\\\")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t\u0026\u0026t.getRandomValues\u0026\u0026(r=t.getRandomValues(new Uint8Array(e)));const o=[];for(var a=0;a\u003ce;a++)o.push(s(r,i++).toString(16));return o.join(\\\"\\\")}function c(){return a(16)}function d(){return a(32)}},9908:(e,t,r)=\u003e{\\\"use strict\\\";r.d(t,{d:()=\u003en,p:()=\u003ei});var n=r(7836).ee.get(\\\"handle\\\");function i(e,t,r,i,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var s=n[e]={exports:{}};return r[e](s,s.exports,i),s.exports}i.m=r,i.d=(e,t)=\u003e{for(var r in t)i.o(t,r)\u0026\u0026!i.o(e,r)\u0026\u0026Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=\u003ePromise.all(Object.keys(i.f).reduce((t,r)=\u003e(i.f[r](e,t),t),[])),i.u=e=\u003e({212:\\\"nr-spa-compressor\\\",249:\\\"nr-spa-recorder\\\",478:\\\"nr-spa\\\"}[e]+\\\"-1.316.0.min.js\\\"),i.o=(e,t)=\u003eObject.prototype.hasOwnProperty.call(e,t),e={},t=\\\"NRBA-1.316.0.PROD:\\\",i.l=(r,n,s,o)=\u003e{if(e[r])e[r].push(n);else{var a,c;if(void 0!==s)for(var d=document.getElementsByTagName(\\\"script\\\"),u=0;u\u003cd.length;u++){var l=d[u];if(l.getAttribute(\\\"src\\\")==r||l.getAttribute(\\\"data-webpack\\\")==t+s){a=l;break}}if(!a){c=!0;var f={478:\\\"sha512-/91tZUpAINW5VzLS+EdJpEe0gul6FJd2zTpGwLIhi/mqcTiQPUlhoJmX5zb4EPTwdGqun46DoGQPtDShDBw4bA==\\\",249:\\\"sha512-XqLQgD24Jrw2HFtuRDeuxMcY5WnEXG04tpC98UJOJlIfGqQst/lKUE+G++zwulwEzcM00bl5V0e1kKGq2Nxc1g==\\\",212:\\\"sha512-rOHSN/tvMjFe33yfRKMs44m3dZKgs9foEl0T2tdErrZKsAF8Oe5+OLJKgySrw3WwY4MgvuS4yWEr88MMv5LZaw==\\\"};(a=document.createElement(\\\"script\\\")).charset=\\\"utf-8\\\",i.nc\u0026\u0026a.setAttribute(\\\"nonce\\\",i.nc),a.setAttribute(\\\"data-webpack\\\",t+s),a.src=r,0!==a.src.indexOf(window.location.origin+\\\"/\\\")\u0026\u0026(a.crossOrigin=\\\"anonymous\\\"),f[o]\u0026\u0026(a.integrity=f[o])}e[r]=[n];var h=(t,n)=\u003e{a.onerror=a.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],a.parentNode\u0026\u0026a.parentNode.removeChild(a),i\u0026\u0026i.forEach(e=\u003ee(n)),t)return t(n)},p=setTimeout(h.bind(null,void 0,{type:\\\"timeout\\\",target:a}),12e4);a.onerror=h.bind(null,a.onerror),a.onload=h.bind(null,a.onload),c\u0026\u0026document.head.appendChild(a)}},i.r=e=\u003e{\\\"undefined\\\"!=typeof Symbol\u0026\u0026Symbol.toStringTag\u0026\u0026Object.defineProperty(e,Symbol.toStringTag,{value:\\\"Module\\\"}),Object.defineProperty(e,\\\"__esModule\\\",{value:!0})},i.p=\\\"https://js-agent.newrelic.com/\\\",(()=\u003e{var e={38:0,788:0};i.f.j=(t,r)=\u003e{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var s=new Promise((r,i)=\u003en=e[t]=[r,i]);r.push(n[2]=s);var o=i.p+i.u(t),a=new Error;i.l(o,r=\u003e{if(i.o(e,t)\u0026\u0026(0!==(n=e[t])\u0026\u0026(e[t]=void 0),n)){var s=r\u0026\u0026(\\\"load\\\"===r.type?\\\"missing\\\":r.type),o=r\u0026\u0026r.target\u0026\u0026r.target.src;a.message=\\\"Loading chunk \\\"+t+\\\" failed: (\\\"+s+\\\": \\\"+o+\\\")\\\",a.name=\\\"ChunkLoadError\\\",a.type=s,a.request=o,n[1](a)}},\\\"chunk-\\\"+t,t)}};var t=(t,r)=\u003e{var n,s,[o,a,c]=r,d=0;if(o.some(t=\u003e0!==e[t])){for(n in a)i.o(a,n)\u0026\u0026(i.m[n]=a[n]);if(c)c(i)}for(t\u0026\u0026t(r);d\u003co.length;d++)s=o[d],i.o(e,s)\u0026\u0026e[s]\u0026\u0026e[s][0](),e[s]=0},r=self[\\\"webpackChunk:NRBA-1.316.0.PROD\\\"]=self[\\\"webpackChunk:NRBA-1.316.0.PROD\\\"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=\u003e{\\\"use strict\\\";i(8374);var e=i(8362),t=i(860);const r=Object.values(t.K7);var n=i(384),s=i(1741);var o=i(2555),a=i(3333);const c=e=\u003e{if(!e||\\\"string\\\"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var d=i(2614),u=i(944),l=i(8122);const f=\\\"[data-nr-mask]\\\",h=e=\u003e(0,l.a)(e,(()=\u003e{const e={feature_flags:[],experimental:{register:!1,resources:!1},mask_selector:\\\"*\\\",block_selector:\\\"[data-nr-block]\\\",mask_input_options:{color:!1,date:!1,\\\"datetime-local\\\":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0},api:{register:{get enabled(){return e.feature_flags.includes(a.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(a.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:d.wk,inactiveMs:d.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){c(t)?e.mask_selector=\\\"\\\".concat(t,\\\",\\\").concat(f):\\\"\\\"===t||null===t?e.mask_selector=f:(0,u.R)(5,t)},get block_class(){return\\\"nr-block\\\"},get ignore_class(){return\\\"nr-ignore\\\"},get mask_text_class(){return\\\"nr-mask\\\"},get block_selector(){return e.block_selector},set block_selector(t){c(t)?e.block_selector+=\\\",\\\".concat(t):\\\"\\\"!==t\u0026\u0026(0,u.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t\u0026\u0026\\\"object\\\"==typeof t?e.mask_input_options={...t,password:!0}:(0,u.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:[\\\"id\\\",\\\"className\\\",\\\"tagName\\\",\\\"type\\\"]}}})());var p=i(6154),g=i(9324);let m=0;const v={buildEnv:g.F3,distMethod:g.Xs,version:g.xv,originTime:p.WN},y={consented:!1},b={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||y.consented},set consented(e){y.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,harvester:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++m}};var w=i(7836),R=i(3241);const E={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};function T(e,t={},r,a){let{init:c,info:d,loader_config:u,runtime:f={},exposed:g=!0}=t;if(!d){const e=(0,n.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=h(c||{}),e.loader_config=(m=u||{},(0,l.a)(m,E)),d.jsAttributes??={},p.bv\u0026\u0026(d.jsAttributes.isWorker=!0),e.info=(0,o.D)(d);const y=e.init;e.runtime??=(e=\u003e{const t=(0,l.a)(e,b),r=Object.keys(v).reduce((e,t)=\u003e(e[t]={value:v[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(f),y.proxy.assets\u0026\u0026(e=\u003e{const t=e.startsWith(\\\"http\\\");e+=\\\"/\\\",i.p=t?e:\\\"https://\\\"+e})(y.proxy.assets),e.runtime.configured||(Object.defineProperty(e,\\\"beacons\\\",{get:()=\u003e[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,\\\"denyList\\\",{get:()=\u003e[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,n.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=\u003e{const n=s.W.prototype[r];if(\\\"function\\\"!=typeof n||\\\"constructor\\\"===n)return;let i=t[r];e[r]\u0026\u0026!1!==e.exposed\u0026\u0026\\\"micro-agent\\\"!==e.runtime?.loaderType\u0026\u0026(t[r]=(...t)=\u003e{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=r,e.ee=w.ee.get(e.agentIdentifier),e.exposed=g,(0,R.W)({drained:!!e.runtime.activatedFeatures,type:\\\"lifecycle\\\",name:\\\"initialize\\\",feature:void 0,data:e.config}),e.runtime.configured=!0)}var A=i(9908),x=i(1863),S=i(4261),_=i(1738);var O=i(1687),P=i(4234),k=i(5289),N=i(5270),j=i(7767),C=i(6389),D=i(7699);const L=new WeakSet;class I extends P.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=\u003e{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=\u003e{this.ee.on(\\\"manual-start-all\\\",(0,C.J)(()=\u003e{(0,O.Ak)(e,this.featureName),t()}))}):(0,O.Ak)(e,t)}importAggregator(e,t,r={}){if(this.featAggregate)return;const n=async()=\u003e{if(await this.deferred,this.#t(e),!(0,o.f)(e.info))return(0,u.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);let n;try{if((0,j.V)(e.init)){const{setupAgentSession:t}=await i.e(478).then(i.bind(i,8766));n=t(e)}}catch(e){(0,u.R)(20,e),this.ee.emit(\\\"internal-error\\\",[e]),(0,A.p)(D.qh,[e],void 0,this.featureName,this.ee)}try{if(!this.#r(this.featureName,n,e.init))return(0,O.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:i}=await t();this.featAggregate=new i(e,r),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,u.R)(34,e),this.abortHandler?.(),(0,O.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1),this.ee\u0026\u0026this.ee.abort()}};p.RI?(0,k.GG)(()=\u003en(),!0):n()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,N.SR)(n)\u0026\u0026!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!L.has(e)\u0026\u0026(L.add(e),!(0,o.f)(e.info))){const t=(0,n.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}T(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var M=i(6630);class B extends I{static featureName=M.T;constructor(e){var t;super(e,M.T),this.setupInspectionEvents(),t=e,(0,_.Y)(S.Fw,function(e,r){\\\"string\\\"==typeof e\u0026\u0026(\\\"/\\\"!==e.charAt(0)\u0026\u0026(e=\\\"/\\\"+e),t.runtime.customTransaction=(r||\\\"http://custom.transaction\\\")+e,(0,A.p)(S.Pl+S.Fw,[(0,x.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=\u003ei.e(478).then(i.bind(i,5839)))}setupInspectionEvents(){const e=(e,t)=\u003e{e\u0026\u0026(0,R.W)({timeStamp:e.timeStamp,loaded:\\\"complete\\\"===e.target.readyState,type:\\\"window\\\",name:t,data:e.target.location+\\\"\\\"})};(0,k.sB)(t=\u003e{e(t,\\\"DOMContentLoaded\\\")}),(0,k.GG)(t=\u003e{e(t,\\\"load\\\")}),(0,k.Qr)(t=\u003e{e(t,\\\"navigate\\\")}),this.ee.on(d.tS.UPDATE,(e,t)=\u003e{(0,R.W)({type:\\\"lifecycle\\\",name:\\\"session\\\",data:t})})}}class H extends e.d{constructor(e){var t;(super(),p.gm)?(this.features={},(0,n.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(B),T(this,e,e.loaderType||\\\"agent\\\"),t=this,(0,_.Y)(S.cD,function(e,r,n=!1){if(\\\"string\\\"==typeof e){if([\\\"string\\\",\\\"number\\\",\\\"boolean\\\"].includes(typeof r)||null===r)return(0,_.U)(t,e,r,S.cD,n);(0,u.R)(40,typeof r)}else(0,u.R)(39,typeof e)},t),function(e){(0,_.Y)(S.Dl,function(t,r=!1){if(\\\"string\\\"!=typeof t\u0026\u0026null!==t)return void(0,u.R)(41,typeof t);const n=e.info.jsAttributes[\\\"enduser.id\\\"];r\u0026\u0026null!=n\u0026\u0026n!==t?(0,A.p)(S.Pl+\\\"setUserIdAndResetSession\\\",[t],void 0,\\\"session\\\",e.ee):(0,_.U)(e,\\\"enduser.id\\\",t,S.Dl,!0)},e)}(this),function(e){(0,_.Y)(S.nb,function(t){if(\\\"string\\\"==typeof t||null===t)return(0,_.U)(e,\\\"application.version\\\",t,S.nb,!1);(0,u.R)(42,typeof t)},e)}(this),function(e){(0,_.Y)(S.d3,function(){e.ee.emit(\\\"manual-start-all\\\")},e)}(this),function(e){(0,_.Y)(S.Pv,function(t=!0){if(\\\"boolean\\\"==typeof t){if((0,A.p)(S.Pl+S.Pv,[t],void 0,\\\"session\\\",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=\u003e{const r=t.featAggregate;e\u0026\u0026!r.sentRum\u0026\u0026r.sendRum()})}}else(0,u.R)(65,typeof t)},e)}(this),this.run()):(0,u.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return r.forEach(r=\u003e{t[r]=!!e[r]?.enabled}),t}(this.init),n=[...this.desiredFeatures];n.sort((e,r)=\u003et.P3[e.featureName]-t.P3[r.featureName]),n.forEach(r=\u003e{if(!e[r.featureName]\u0026\u0026r.featureName!==t.K7.pageViewEvent)return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=\u003e!(e in this.features));n.length\u003e0\u0026\u0026(0,u.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,u.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,n.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var K=i(2843),W=i(782);class F extends I{static featureName=W.T;constructor(e){super(e,W.T),p.RI\u0026\u0026((0,K.u)(()=\u003e(0,A.p)(\\\"docHidden\\\",[(0,x.t)()],void 0,W.T,this.ee),!0),(0,K.G)(()=\u003e(0,A.p)(\\\"winPagehide\\\",[(0,x.t)()],void 0,W.T,this.ee)),this.importAggregator(e,()=\u003ei.e(478).then(i.bind(i,9917))))}}var U=i(3969);class V extends I{static featureName=U.TZ;constructor(e){super(e,U.TZ),this.importAggregator(e,()=\u003ei.e(478).then(i.bind(i,6555)))}}var z=i(6774),G=i(3878),Y=i(3304);class Z{constructor(e,t,r,n,i){this.name=\\\"UncaughtError\\\",this.message=\\\"string\\\"==typeof e?e:(0,Y.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function q(e){return J(e)?e:new Z(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function X(e){const t=\\\"Unhandled Promise Rejection: \\\";if(!e?.reason)return;if(J(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return q(e.reason)}const r=q(e.reason);return(r.message||\\\"\\\").startsWith(t)||(r.message=t+r.message),r}function Q(e){if(e.error instanceof SyntaxError\u0026\u0026!/:\\\\d+$/.test(e.error.stack?.trim())){const t=new Z(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return J(e.error)?e.error:q(e)}function J(e){return e instanceof Error\u0026\u0026!!e.stack}function ee(e,r,n,i,s=(0,x.t)()){\\\"string\\\"==typeof e\u0026\u0026(e=new Error(e)),(0,A.p)(\\\"err\\\",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,A.p)(\\\"uaErr\\\",[],void 0,t.K7.genericEvents,n.ee)}var te=i(5732),re=i(993),ne=i(3785);function ie(e,{customAttributes:t={},level:r=re.p_.INFO}={},n,i,s=(0,x.t)()){(0,ne.R)(n.ee,e,t,r,!1,i,s)}function se(e,r,n,i,s=(0,x.t)()){(0,A.p)(S.Pl+S.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function oe(e,r,n,i,s=(0,x.t)()){const{start:o,end:a,customAttributes:c}=r||{},d={customAttributes:c||{}};if(\\\"object\\\"!=typeof d.customAttributes||\\\"string\\\"!=typeof e||0===e.length)return void(0,u.R)(57);const l=(e,t)=\u003enull==e?t:\\\"number\\\"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=l(o,0),d.end=l(a,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,u.R)(57);else{if(d.duration=d.end-d.start,!(d.duration\u003c0))return(0,A.p)(S.Pl+S.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,u.R)(58)}}function ae(e,r={},n,i,s=(0,x.t)()){(0,A.p)(S.Pl+S.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var ce=i(7508),de=i(9566);const ue=[\\\"name\\\",\\\"id\\\",\\\"type\\\"],le=new Map([[se,\\\"addPageAction\\\"],[ie,\\\"log\\\"],[oe,\\\"measure\\\"],[ee,\\\"noticeError\\\"],[ae,\\\"recordCustomEvent\\\"]]),fe={experimental:(0,C.J)(()=\u003e(0,u.R)(54,\\\"newrelic.register\\\")),disabled:(0,C.J)(()=\u003e(0,u.R)(55)),invalidTarget:(0,C.J)(e=\u003e(0,u.R)(48,e)),deregistered:(0,C.J)(()=\u003e(0,u.R)(68))};function he(e){(0,_.Y)(S.eY,function(t){return pe(e,t)},e)}function pe(e,r){fe.experimental(),r||={},r.instance=(0,de.LA)(8),r.type=te.fQ.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,(\\\"object\\\"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))\u0026\u0026(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents[0].entityGuid},type:te.fQ.BA};const n=(0,ce.Qr)(),i={};Object.prototype.hasOwnProperty.call(r,\\\"attributes\\\")||Object.defineProperty(r,\\\"attributes\\\",{get:()=\u003e({...i,\\\"source.id\\\":r.id,\\\"source.name\\\":r.name,\\\"source.type\\\":r.type,\\\"parent.type\\\":r.parent?.type||te.fQ.BA,\\\"parent.id\\\":r.parent?.id})}),Object.entries(r.tags).forEach(([e,t])=\u003e{ue.includes(e)||(i[\\\"source.\\\".concat(e)]=t)});let s=()=\u003e{};const o=e.runtime.registeredEntities,a=e=\u003e{r.blocked=!0,s=e};function c(e){return\\\"string\\\"==typeof e\u0026\u0026!!e.trim()\u0026\u0026e.trim().length\u003c501}e.init.api.register.enabled||a(fe.disabled),c(r.id)\u0026\u0026c(r.name)||a(()=\u003efe.invalidTarget(r));const d={addPageAction:(t,n={})=\u003ep(se,[t,{...i,...n},e],r),deregister:()=\u003e{f(),a(fe.deregistered)},log:(t,n={})=\u003ep(ie,[t,{...n,customAttributes:{...i,...n.customAttributes||{}}},e],r),measure:(t,n={})=\u003ep(oe,[t,{...n,customAttributes:{...i,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=\u003ep(ee,[t,{...i,...n},e],r),recordCustomEvent:(t,n={})=\u003ep(ae,[t,{...i,...n},e],r),setApplicationVersion:e=\u003eh(\\\"application.version\\\",e),setCustomAttribute:(e,t)=\u003eh(e,t),setUserId:e=\u003eh(\\\"enduser.id\\\",e),metadata:{get customAttributes(){return i},target:r,timings:n}},l=()=\u003e(r.blocked\u0026\u0026s(),r.blocked);function f(){if(n.reportedAt)return;n.reportedAt=(0,x.t)();const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart;d.recordCustomEvent(\\\"MicroFrontEndTiming\\\",{assetUrl:n.asset,assetType:n.type,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,timeToRegister:n.registeredAt})}l()||(o.push(d),(0,K.G)(f));const h=(e,t)=\u003e{l()||(i[e]=t)},p=(r,n,i)=\u003e{if(l()\u0026\u0026r!==pe)return;const s=(0,x.t)(),o=le.get(r)||\\\"unknown\\\";(0,A.p)(U.xV,[\\\"API/register/\\\".concat(o,\\\"/called\\\")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,u.R)(50,e)}};return d}class ge extends I{static featureName=z.T;constructor(e){var t;super(e,z.T),t=e,(0,_.Y)(S.o5,(e,r)=\u003eee(e,r,t),t),function(e){(0,_.Y)(S.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,_.Y)(S.k6,function(e,r){++t\u003e10||(this.runtime.releaseIds[e.slice(-200)]=(\\\"\\\"+r).slice(-200))},e)}(e),he(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on(\\\"internal-error\\\",(t,r)=\u003e{this.abortHandler\u0026\u0026(0,A.p)(\\\"ierr\\\",[q(t),(0,x.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),p.gm.addEventListener(\\\"unhandledrejection\\\",t=\u003e{this.abortHandler\u0026\u0026(0,A.p)(\\\"err\\\",[X(t),(0,x.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,G.jT)(!1,this.removeOnAbort?.signal)),p.gm.addEventListener(\\\"error\\\",t=\u003e{this.abortHandler\u0026\u0026(0,A.p)(\\\"err\\\",[Q(t),(0,x.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,G.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=\u003ei.e(478).then(i.bind(i,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var me=i(8990);let ve=1;function ye(e){const t=typeof e;return!e||\\\"object\\\"!==t\u0026\u0026\\\"function\\\"!==t?-1:e===p.gm?0:(0,me.I)(e,\\\"nr@id\\\",function(){return ve++})}function be(e){if(\\\"string\\\"==typeof e\u0026\u0026e.length)return e.length;if(\\\"object\\\"==typeof e){if(\\\"undefined\\\"!=typeof ArrayBuffer\u0026\u0026e instanceof ArrayBuffer\u0026\u0026e.byteLength)return e.byteLength;if(\\\"undefined\\\"!=typeof Blob\u0026\u0026e instanceof Blob\u0026\u0026e.size)return e.size;if(!(\\\"undefined\\\"!=typeof FormData\u0026\u0026e instanceof FormData))try{return(0,Y.A)(e).length}catch(e){return}}}var we=i(8139),Re=i(3434);const Ee={},Te=[\\\"open\\\",\\\"send\\\"];function Ae(e,t){var r=e||w.ee;const n=function(e){return(e||w.ee).get(\\\"xhr\\\")}(r);if(void 0===p.gm.XMLHttpRequest)return n;if(Ee[n.debugId]++)return n;Ee[n.debugId]=1,(0,we.u)(r);var i=(0,Re.YM)(n),s=p.gm.XMLHttpRequest,o=p.gm.MutationObserver,a=p.gm.Promise,c=p.gm.setInterval,d=\\\"readystatechange\\\",l=[\\\"onload\\\",\\\"onerror\\\",\\\"onabort\\\",\\\"onloadstart\\\",\\\"onloadend\\\",\\\"onprogress\\\",\\\"ontimeout\\\"],f=[],h=p.gm.XMLHttpRequest=function(e){const r=new s(e),o=n.context(r);o.targets=(0,te.$5)(t);try{n.emit(\\\"new-xhr\\\",[r],o),r.addEventListener(d,(a=o,function(){var e=this;e.readyState\u003e3\u0026\u0026!a.resolved\u0026\u0026(a.resolved=!0,n.emit(\\\"xhr-resolved\\\",[],e)),i.inPlace(e,l,\\\"fn-\\\",R)}),(0,G.jT)(!1))}catch(e){(0,u.R)(15,e);try{n.emit(\\\"internal-error\\\",[e])}catch(e){}}var a;return r};function g(e,t){i.inPlace(t,[\\\"onreadystatechange\\\"],\\\"fn-\\\",R)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Te,\\\"-xhr-\\\",R),n.on(\\\"send-xhr-start\\\",function(e,t){g(e,t),function(e){f.push(e),o\u0026\u0026(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on(\\\"open-xhr-start\\\",g),o){var m=a\u0026\u0026a.resolve();if(!c\u0026\u0026!a){var v=1,y=document.createTextNode(v);new o(b).observe(y,{characterData:!0})}}else r.on(\\\"fn-end\\\",function(e){e[0]\u0026\u0026e[0].type===d||b()});function b(){for(var e=0;e\u003cf.length;e++)g(0,f[e]);f.length\u0026\u0026(f=[])}function R(e,t){return t}return n}var xe=\\\"fetch-\\\",Se=xe+\\\"body-\\\",_e=[\\\"arrayBuffer\\\",\\\"blob\\\",\\\"json\\\",\\\"text\\\",\\\"formData\\\"],Oe=p.gm.Request,Pe=p.gm.Response,ke=\\\"prototype\\\";const Ne={};function je(e,t){const r=function(e){return(e||w.ee).get(\\\"fetch\\\")}(e);if(!(Oe\u0026\u0026Pe\u0026\u0026p.gm.fetch))return r;if(Ne[r.debugId]++)return r;function n(e,n,i){var s=e[n];\\\"function\\\"==typeof s\u0026\u0026(e[n]=function(){var e=[...arguments];const n={},o=(0,te.$5)(t);var a;r.emit(i+\\\"before-start\\\",[e],n),n[w.P]\u0026\u0026n[w.P].dt\u0026\u0026(a=n[w.P].dt);var c=s.apply(this,e);return r.emit(i+\\\"start\\\",[e,a],c),c.then(function(e){return r.emit(i+\\\"end\\\",[null,e,o],c),e},function(e){throw r.emit(i+\\\"end\\\",[e,void 0,o],c),e})})}return Ne[r.debugId]=1,_e.forEach(e=\u003e{n(Oe[ke],e,Se),n(Pe[ke],e,Se)}),n(p.gm,\\\"fetch\\\",xe),r.on(xe+\\\"end\\\",function(e,t,n){var i=this;if(i.targets=n||[void 0],t){var s=t.headers.get(\\\"content-length\\\");null!==s\u0026\u0026(i.rxSize=s),r.emit(xe+\\\"done\\\",[null,t],i)}else r.emit(xe+\\\"done\\\",[e],i)}),r}var Ce=i(7485);class De{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||\\\"\\\").toString()||null,n=(t.agentID||\\\"\\\").toString()||null,i=(t.trustKey||\\\"\\\").toString()||null;if(!r||!n)return null;var s=(0,de.ZF)(),o=(0,de.el)(),a=Date.now(),c={spanId:s,traceId:o,timestamp:a};return(e.sameOrigin||this.isAllowedOrigin(e)\u0026\u0026this.useTraceContextHeadersForCors())\u0026\u0026(c.traceContextParentHeader=this.generateTraceContextParentHeader(s,o),c.traceContextStateHeader=this.generateTraceContextStateHeader(s,a,r,n,i)),(e.sameOrigin\u0026\u0026!this.excludeNewrelicHeader()||!e.sameOrigin\u0026\u0026this.isAllowedOrigin(e)\u0026\u0026this.useNewrelicHeaderForCors())\u0026\u0026(c.newrelicHeader=this.generateTraceHeader(s,o,a,r,n,i)),c}generateTraceContextParentHeader(e,t){return\\\"00-\\\"+t+\\\"-\\\"+e+\\\"-01\\\"}generateTraceContextStateHeader(e,t,r,n,i){return i+\\\"@nr=0-1-\\\"+r+\\\"-\\\"+n+\\\"-\\\"+e+\\\"----\\\"+t}generateTraceHeader(e,t,r,n,i,s){if(!(\\\"function\\\"==typeof p.gm?.btoa))return null;var o={v:[0,1],d:{ty:\\\"Browser\\\",ac:n,ap:i,id:e,tr:t,ti:r}};return s\u0026\u0026n!==s\u0026\u0026(o.d.tk=s),btoa((0,Y.A)(o))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled\u0026\u0026this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n\u003cr.allowed_origins.length;n++){var i=(0,Ce.D)(r.allowed_origins[n]);if(e.hostname===i.hostname\u0026\u0026e.protocol===i.protocol\u0026\u0026e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e\u0026\u0026!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e\u0026\u0026!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e\u0026\u0026!!e.cors_use_tracecontext_headers}}var Le=i(9300),Ie=i(7295);function Me(e){return\\\"string\\\"==typeof e?e:e instanceof(0,n.dV)().o.REQ?e.url:p.gm?.URL\u0026\u0026e instanceof URL?e.href:void 0}var Be=[\\\"load\\\",\\\"error\\\",\\\"abort\\\",\\\"timeout\\\"],He=Be.length,Ke=(0,n.dV)().o.REQ,We=(0,n.dV)().o.XHR;const Fe=\\\"X-NewRelic-App-Data\\\";class Ue extends I{static featureName=Le.T;constructor(e){super(e,Le.T),this.dt=new De(e),this.handler=(e,t,r,n)=\u003e(0,A.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:\\\"xhr\\\",fetch:\\\"fetch\\\",beacon:\\\"beacon\\\"};p.gm?.performance?.getEntriesByType(\\\"resource\\\").forEach(r=\u003e{if(r.initiatorType in e\u0026\u00260!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};Ve(n,r.name),this.handler(\\\"xhr\\\",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}je(this.ee,e),Ae(this.ee,e),function(e,r,n,i){function s(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=R,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener(\\\"load\\\",function(r){T(t,e)},(0,G.jT)(!1)),p.lR||e.addEventListener(\\\"progress\\\",function(e){t.lastSize=e.loaded},(0,G.jT)(!1))}function o(e){this.params={method:e[0]},Ve(this,e[1]),this.metrics={}}function a(t,r){e.loader_config.xpid\u0026\u0026this.sameOrigin\u0026\u0026r.setRequestHeader(\\\"X-NewRelic-ID\\\",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader\u0026\u0026(r.setRequestHeader(\\\"newrelic\\\",n.newrelicHeader),s=!0),n.traceContextParentHeader\u0026\u0026(r.setRequestHeader(\\\"traceparent\\\",n.traceContextParentHeader),n.traceContextStateHeader\u0026\u0026r.setRequestHeader(\\\"tracestate\\\",n.traceContextStateHeader),s=!0),s\u0026\u0026(this.dt=n)}}function c(e,t){var n=this.metrics,i=e[0],s=this;if(n\u0026\u0026i){var o=be(i);o\u0026\u0026(n.txSize=o)}this.startTime=(0,x.t)(),this.body=i,this.listener=function(e){try{\\\"abort\\\"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),(\\\"load\\\"!==e.type||s.called===s.totalCbs\u0026\u0026(s.onloadCalled||\\\"function\\\"!=typeof t.onload)\u0026\u0026\\\"function\\\"==typeof s.end)\u0026\u0026s.end(t)}catch(e){try{r.emit(\\\"internal-error\\\",[e])}catch(e){}}};for(var a=0;a\u003cHe;a++)t.addEventListener(Be[a],this.listener,(0,G.jT)(!1))}function d(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled\u0026\u0026\\\"function\\\"==typeof r.onload||\\\"function\\\"!=typeof this.end||this.end(r)}function u(e,t){var r=\\\"\\\"+ye(e)+!!t;this.xhrGuids\u0026\u0026!this.xhrGuids[r]\u0026\u0026(this.xhrGuids[r]=!0,this.totalCbs+=1)}function l(e,t){var r=\\\"\\\"+ye(e)+!!t;this.xhrGuids\u0026\u0026this.xhrGuids[r]\u0026\u0026(delete this.xhrGuids[r],this.totalCbs-=1)}function f(){this.endTime=(0,x.t)()}function h(e,t){t instanceof We\u0026\u0026\\\"load\\\"===e[0]\u0026\u0026r.emit(\\\"xhr-load-added\\\",[e[1],e[2]],t)}function g(e,t){t instanceof We\u0026\u0026\\\"load\\\"===e[0]\u0026\u0026r.emit(\\\"xhr-load-removed\\\",[e[1],e[2]],t)}function m(e,t,r){t instanceof We\u0026\u0026(\\\"onload\\\"===r\u0026\u0026(this.onload=!0),(\\\"load\\\"===(e[0]\u0026\u0026e[0].type)||this.onload)\u0026\u0026(this.xhrCbStart=(0,x.t)()))}function v(e,t){this.xhrCbStart\u0026\u0026r.emit(\\\"xhr-cb-time\\\",[(0,x.t)()-this.xhrCbStart,this.onload,t],t)}function y(e){var t,r=e[1]||{};if(\\\"string\\\"==typeof e[0]?0===(t=e[0]).length\u0026\u0026p.RI\u0026\u0026(t=\\\"\\\"+p.gm.location.href):e[0]\u0026\u0026e[0].url?t=e[0].url:p.gm?.URL\u0026\u0026e[0]\u0026\u0026e[0]instanceof URL?t=e[0].href:\\\"function\\\"==typeof e[0].toString\u0026\u0026(t=e[0].toString()),\\\"string\\\"==typeof t\u0026\u00260!==t.length){t\u0026\u0026(this.parsedOrigin=(0,Ce.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n\u0026\u0026(n.newrelicHeader||n.traceContextParentHeader))if(e[0]\u0026\u0026e[0].headers)a(e[0].headers,n)\u0026\u0026(this.dt=n);else{var s={};for(var o in r)s[o]=r[o];s.headers=new Headers(r.headers||{}),a(s.headers,n)\u0026\u0026(this.dt=n),e.length\u003e1?e[1]=s:e.push(s)}}function a(e,t){var r=!1;return t.newrelicHeader\u0026\u0026(e.set(\\\"newrelic\\\",t.newrelicHeader),r=!0),t.traceContextParentHeader\u0026\u0026(e.set(\\\"traceparent\\\",t.traceContextParentHeader),t.traceContextStateHeader\u0026\u0026e.set(\\\"tracestate\\\",t.traceContextStateHeader),r=!0),r}}function b(e,t){this.params={},this.metrics={},this.startTime=(0,x.t)(),this.dt=t;let[r,n={}]=e;Ve(this,Me(r));const i=(\\\"\\\"+(r\u0026\u0026r instanceof Ke\u0026\u0026r.method||n.method||\\\"GET\\\")).toUpperCase();this.params.method=i,this.body=n.body,this.txSize=be(n.body)||0}function w(e,t){if(this.endTime=(0,x.t)(),this.params||(this.params={}),(0,Ie.iW)(this.params))return;let r;this.params.status=t?t.status:0,\\\"string\\\"==typeof this.rxSize\u0026\u0026this.rxSize.length\u003e0\u0026\u0026(r=+this.rxSize);const n={txSize:this.txSize,rxSize:r,duration:(0,x.t)()-this.startTime},i=[this.params,n,this.startTime,this.endTime,\\\"fetch\\\"];this.targets.forEach(e=\u003eE(i,this,e))}function R(e){const t=this.params,r=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t\u003cHe;t++)e.removeEventListener(Be[t],this.listener,!1);if(t.aborted)return;if((0,Ie.iW)(t))return;r.duration=(0,x.t)()-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status\u0026\u0026(t.status=0):T(this,e),r.cbTime=this.cbTime;const n=[t,r,this.startTime,this.endTime,\\\"xhr\\\"];this.targets.forEach(e=\u003eE(n,this,e))}function E(e,r,i){n(\\\"xhr\\\",[...e,i],r,t.K7.ajax)}function T(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return\\\"json\\\"===r\u0026\u0026null!==t?t:\\\"arraybuffer\\\"===r||\\\"blob\\\"===r||\\\"json\\\"===r?be(e.response):\\\"text\\\"===r||\\\"\\\"===r||void 0===r?be(e.responseText):void 0}(n,e.lastSize);if(i\u0026\u0026(e.metrics.rxSize=i),e.sameOrigin\u0026\u0026n.getAllResponseHeaders().indexOf(Fe)\u003e=0){var s=n.getResponseHeader(Fe);s\u0026\u0026((0,A.p)(U.rs,[\\\"Ajax/CrossApplicationTracing/Header/Seen\\\"],void 0,t.K7.metrics,r),e.params.cat=s.split(\\\", \\\").pop())}e.loadCaptureCalled=!0}r.on(\\\"new-xhr\\\",s),r.on(\\\"open-xhr-start\\\",o),r.on(\\\"open-xhr-end\\\",a),r.on(\\\"send-xhr-start\\\",c),r.on(\\\"xhr-cb-time\\\",d),r.on(\\\"xhr-load-added\\\",u),r.on(\\\"xhr-load-removed\\\",l),r.on(\\\"xhr-resolved\\\",f),r.on(\\\"addEventListener-end\\\",h),r.on(\\\"removeEventListener-end\\\",g),r.on(\\\"fn-end\\\",v),r.on(\\\"fetch-before-start\\\",y),r.on(\\\"fetch-start\\\",b),r.on(\\\"fn-start\\\",m),r.on(\\\"fetch-done\\\",w)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=\u003ei.e(478).then(i.bind(i,3845)))}}function Ve(e,t){var r=(0,Ce.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+\\\":\\\"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}const ze={},Ge=[\\\"pushState\\\",\\\"replaceState\\\"];function Ye(e){const t=function(e){return(e||w.ee).get(\\\"history\\\")}(e);return!p.RI||ze[t.debugId]++||(ze[t.debugId]=1,(0,Re.YM)(t).inPlace(window.history,Ge,\\\"-\\\")),t}var Ze=i(3738);function qe(e){(0,_.Y)(S.BL,function(r=Date.now()){const n=r-p.WN;n\u003c0\u0026\u0026(0,u.R)(62,r),(0,A.p)(U.XG,[S.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:S.BL,start:r,origin:\\\"nr\\\"}),(0,A.p)(S.Pl+S.hG,[n,S.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:Xe,bD:$e,d3:Qe,Kp:Je,TZ:et,Lc:tt,uP:rt,Rz:nt}=Ze;class it extends I{static featureName=et;constructor(e){var r;super(e,et),r=e,(0,_.Y)(S.U2,function(e){if(!(e\u0026\u0026\\\"object\\\"==typeof e\u0026\u0026e.name\u0026\u0026e.start))return;const n={n:e.name,s:e.start-p.WN,e:(e.end||e.start)-p.WN,o:e.origin||\\\"\\\",t:\\\"api\\\"};n.s\u003c0||n.e\u003c0||n.e\u003cn.s?(0,u.R)(61,{start:n.s,end:n.e}):(0,A.p)(\\\"bstApi\\\",[n],void 0,t.K7.sessionTrace,r.ee)},r),qe(e);if(!(0,j.V)(e.init))return void this.deregisterDrain();const n=this.ee;let s;Ye(n),this.eventsEE=(0,we.u)(n),this.eventsEE.on(rt,function(e,t){this.bstStart=(0,x.t)()}),this.eventsEE.on(tt,function(e,r){(0,A.p)(\\\"bst\\\",[e[0],r,this.bstStart,(0,x.t)()],void 0,t.K7.sessionTrace,n)}),n.on(nt+Qe,function(e){this.time=(0,x.t)(),this.startPath=location.pathname+location.hash}),n.on(nt+Je,function(e){(0,A.p)(\\\"bstHist\\\",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,n)});try{s=new PerformanceObserver(e=\u003e{const r=e.getEntries();(0,A.p)(Xe,[r],void 0,t.K7.sessionTrace,n)}),s.observe({type:$e,buffered:!0})}catch(e){}this.importAggregator(e,()=\u003ei.e(478).then(i.bind(i,6974)),{resourceObserver:s})}}var st=i(733),ot=i(6344);class at extends I{static featureName=ot.TZ;#i;recorder;constructor(e){var r;let n;super(e,ot.TZ),r=e,(0,_.Y)(S.CH,function(){(0,A.p)(S.CH,[],void 0,t.K7.sessionReplay,r.ee)},r),function(e){(0,_.Y)(S.Tb,function(){(0,A.p)(S.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s=\\\"\\\".concat(d.Wt).concat((0,st.Y)(e.info.licenseKey,e.info.applicationID));try{n=JSON.parse(localStorage.getItem(s))}catch(e){}(0,N.SR)(e.init)\u0026\u0026this.ee.on(S.CH,()=\u003ethis.#s()),this.#o(n)\u0026\u0026this.importRecorder().then(e=\u003e{e.startRecording(ot.Qb.PRELOAD,n?.sessionReplayMode)}),this.importAggregator(this.agentRef,()=\u003ei.e(478).then(i.bind(i,6167)),this),this.ee.on(\\\"err\\\",e=\u003e{this.blocked||this.agentRef.runtime.isRecording\u0026\u0026(this.errorNoticed=!0,(0,A.p)(ot.Vh,[e],void 0,this.featureName,this.ee))})}#o(e){return e\u0026\u0026(e.sessionReplayMode===d.g.FULL||e.sessionReplayMode===d.g.ERROR)||(0,N.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([i.e(478),i.e(249)]).then(i.bind(i,4866)).then(({Recorder:e})=\u003e(this.recorder=new e(this),this.recorder)).catch(e=\u003e{throw this.ee.emit(\\\"internal-error\\\",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==d.g.FULL\u0026\u0026this.featAggregate.initializeRecording(d.g.FULL,!0,ot.Qb.API):this.importRecorder().then(()=\u003e{this.recorder.startRecording(ot.Qb.API,d.g.FULL)}))}}var ct=i(3962);class dt extends I{static featureName=ct.TZ;constructor(e){if(super(e,ct.TZ),function(e){const r=e.ee.get(\\\"tracer\\\");function n(){}(0,_.Y)(S.dT,function(e){return(new n).get(\\\"object\\\"==typeof e?e:{})},e);const i=n.prototype={createTracer:function(n,i){var s={},o=this,a=\\\"function\\\"==typeof i;return(0,A.p)(U.xV,[\\\"API/createTracer/called\\\"],void 0,t.K7.metrics,e.ee),function(){if(r.emit((a?\\\"\\\":\\\"no-\\\")+\\\"fn-start\\\",[(0,x.t)(),o,a],s),a)try{return i.apply(this,arguments)}catch(e){const t=\\\"string\\\"==typeof e?new Error(e):e;throw r.emit(\\\"fn-err\\\",[arguments,this,t],s),t}finally{r.emit(\\\"fn-end\\\",[(0,x.t)()],s)}}}};[\\\"actionText\\\",\\\"setName\\\",\\\"setAttribute\\\",\\\"save\\\",\\\"ignore\\\",\\\"onEnd\\\",\\\"getContext\\\",\\\"end\\\",\\\"get\\\"].forEach(r=\u003e{_.Y.apply(this,[r,function(){return(0,A.p)(S.hw+r,[performance.now(),...arguments],this,t.K7.softNav,e.ee),this},e,i])}),(0,_.Y)(S.PA,function(){(0,A.p)(S.hw+\\\"routeName\\\",[performance.now(),...arguments],void 0,t.K7.softNav,e.ee)},e)}(e),!p.RI||!(0,n.dV)().o.MO)return;const r=Ye(this.ee);try{this.removeOnAbort=new AbortController}catch(e){}ct.tC.forEach(e=\u003e{(0,G.sp)(e,e=\u003e{c(e)},!0,this.removeOnAbort?.signal)});const s=()=\u003e(0,A.p)(\\\"newURL\\\",[(0,x.t)(),\\\"\\\"+window.location],void 0,this.featureName,this.ee);r.on(\\\"pushState-end\\\",s),r.on(\\\"replaceState-end\\\",s),(0,G.sp)(ct.OV,e=\u003e{c(e),(0,A.p)(\\\"newURL\\\",[e.timeStamp,\\\"\\\"+window.location],void 0,this.featureName,this.ee)},!0,this.removeOnAbort?.signal);let o=!1;const a=new((0,n.dV)().o.MO)((e,t)=\u003e{o||(o=!0,requestAnimationFrame(()=\u003e{(0,A.p)(\\\"newDom\\\",[(0,x.t)()],void 0,this.featureName,this.ee),o=!1}))}),c=(0,C.s)(e=\u003e{\\\"loading\\\"!==document.readyState\u0026\u0026((0,A.p)(\\\"newUIEvent\\\",[e],void 0,this.featureName,this.ee),a.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0}))},100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),a.disconnect(),this.abortHandler=void 0},this.importAggregator(e,()=\u003ei.e(478).then(i.bind(i,4393)),{domObserver:a})}}var ut=i(9119);const lt={},ft=new Set;function ht(e){return\\\"string\\\"==typeof e?{type:\\\"string\\\",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:\\\"ArrayBuffer\\\",size:e.byteLength}:e instanceof Blob?{type:\\\"Blob\\\",size:e.size}:e instanceof DataView?{type:\\\"DataView\\\",size:e.byteLength}:ArrayBuffer.isView(e)?{type:\\\"TypedArray\\\",size:e.byteLength}:{type:\\\"unknown\\\",size:0}}class pt{constructor(e,t){this.timestamp=(0,x.t)(),this.currentUrl=(0,ut.L)(window.location.href),this.socketId=(0,de.LA)(8),this.requestedUrl=(0,ut.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(\\\",\\\"):t||\\\"\\\",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason=\\\"unknown\\\",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class gt extends I{static featureName=a.TZ;constructor(e){super(e,a.TZ);const r=e.init.feature_flags.includes(\\\"websockets\\\"),s=!e.init.feature_flags.includes(\\\"no_spv\\\"),o=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,r,s];var c;let d;if(c=e,(0,_.Y)(S.hG,(e,t)=\u003ese(e,t,c),c),function(e){(0,_.Y)(S.fF,(t,r)=\u003eae(t,r,e),e)}(e),qe(e),he(e),function(e){(0,_.Y)(S.V1,(t,r)=\u003eoe(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=\u003e{this.removeOnAbort.abort(),this.abortHandler=void 0},r){const u=function(e){if(!(0,n.dV)().o.WS)return e;const t=e.get(\\\"websockets\\\");if(lt[t.debugId]++)return t;lt[t.debugId]=1,(0,K.G)(()=\u003e{const e=(0,x.t)();ft.forEach(r=\u003e{r.nrData.closedAt=e,r.nrData.closeCode=1001,r.nrData.closeReason=\\\"Page navigating away\\\",r.nrData.closeWasClean=!1,r.nrData.openedAt\u0026\u0026(r.nrData.connectedDuration=e-r.nrData.openedAt),t.emit(\\\"ws\\\",[r.nrData],r)})});class r extends WebSocket{static name=\\\"WebSocket\\\";static toString(){return\\\"function WebSocket() { [native code] }\\\"}toString(){return\\\"[object WebSocket]\\\"}get[Symbol.toStringTag](){return r.name}#a(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new pt(e[0],e[1]),this.addEventListener(\\\"open\\\",()=\u003e{this.nrData.openedAt=(0,x.t)(),[\\\"protocol\\\",\\\"extensions\\\",\\\"binaryType\\\"].forEach(e=\u003e{this.nrData[e]=this[e]}),ft.add(this)}),this.addEventListener(\\\"message\\\",e=\u003e{const{type:t,size:r}=ht(e.data);this.nrData.messageOrigin??=(0,ut.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??\\\"\\\").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?\\\"\\\".concat(this.nrData.messageTypes,\\\",\\\").concat(t):t)}),this.addEventListener(\\\"close\\\",e=\u003e{this.nrData.closedAt=(0,x.t)(),this.nrData.closeCode=e.code,e.reason\u0026\u0026(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,ft.delete(this),t.emit(\\\"ws\\\",[this.nrData],this)})}addEventListener(e,t,...r){const n=this,i=\\\"function\\\"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#a(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#a(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=ht(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??\\\"\\\").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?\\\"\\\".concat(this.nrData.sendTypes,\\\",\\\").concat(t):t)}try{return super.send(e)}catch(e){throw this.#a(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#a(e),e}}}return p.gm.WebSocket=r,t}(this.ee);u.on(\\\"ws\\\",e=\u003e{(0,A.p)(\\\"ws-complete\\\",[e],void 0,this.featureName,this.ee)})}if(s\u0026\u0026p.gm.addEventListener(\\\"securitypolicyviolation\\\",e=\u003e{(0,A.p)(\\\"spv\\\",[e],void 0,t.K7.genericEvents,this.ee)},(0,G.jT)(!1,this.removeOnAbort.signal)),p.RI){if(je(this.ee,e),Ae(this.ee,e),d=Ye(this.ee),e.init.user_actions.enabled){function l(t){const r=(0,Ce.D)(t);return e.beacons.includes(r.hostname+\\\":\\\"+r.port)}function f(){d.emit(\\\"navChange\\\")}a.Zp.forEach(e=\u003e(0,G.sp)(e,e=\u003e(0,A.p)(\\\"ua\\\",[e],void 0,this.featureName,this.ee),!0)),a.qN.forEach(e=\u003e{const t=(0,C.s)(e=\u003e{(0,A.p)(\\\"ua\\\",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,G.sp)(e,t)}),p.gm.addEventListener(\\\"error\\\",()=\u003e{(0,A.p)(\\\"uaErr\\\",[],void 0,t.K7.genericEvents,this.ee)},(0,G.jT)(!1,this.removeOnAbort.signal)),this.ee.on(\\\"open-xhr-start\\\",(e,r)=\u003e{l(e[1])||r.addEventListener(\\\"readystatechange\\\",()=\u003e{2===r.readyState\u0026\u0026(0,A.p)(\\\"uaXhr\\\",[],void 0,t.K7.genericEvents,this.ee)},(0,G.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on(\\\"fetch-start\\\",e=\u003e{e.length\u003e=1\u0026\u0026!l(Me(e[0]))\u0026\u0026(0,A.p)(\\\"uaXhr\\\",[],void 0,t.K7.genericEvents,this.ee)}),d.on(\\\"pushState-end\\\",f),d.on(\\\"replaceState-end\\\",f),window.addEventListener(\\\"hashchange\\\",f,(0,G.jT)(!0,this.removeOnAbort.signal)),window.addEventListener(\\\"popstate\\\",f,(0,G.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled\u0026\u0026p.gm.PerformanceObserver?.supportedEntryTypes.includes(\\\"resource\\\")){new PerformanceObserver(e=\u003e{e.getEntries().forEach(e=\u003e{(0,A.p)(\\\"browserPerformance.resource\\\",[e],void 0,this.featureName,this.ee)})}).observe({type:\\\"resource\\\",buffered:!0})}}o.some(e=\u003ee)?this.importAggregator(e,()=\u003ei.e(478).then(i.bind(i,8019))):this.deregisterDrain()}}var mt=i(2646);const vt=new Map;function yt(e,t,r,n,i=!0,s){if(\\\"object\\\"!=typeof t||!t||\\\"string\\\"!=typeof r||!r||\\\"function\\\"!=typeof t[r])return(0,u.R)(29);const o=function(e){return(e||w.ee).get(\\\"logger\\\")}(e),a=(0,Re.YM)(o,void 0,s),c=new mt.y(w.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Re.Jt]||t[r];return vt.set(d,c),a.inPlace(t,[r],\\\"wrap-logger-\\\",()=\u003evt.get(d),void 0,!0),o}var bt=i(1910);class wt extends I{static featureName=re.TZ;constructor(e){var t;super(e,re.TZ),t=e,(0,_.Y)(S.$9,(e,r)=\u003eie(e,r,t),t),function(e){(0,_.Y)(S.Wb,(t,r,{customAttributes:n={},level:i=re.p_.INFO}={})=\u003e{yt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),he(e);const r=this.ee;[\\\"log\\\",\\\"error\\\",\\\"warn\\\",\\\"info\\\",\\\"debug\\\",\\\"trace\\\"].forEach(t=\u003e{(0,bt.i)(p.gm.console[t]),yt(r,p.gm.console,t,{level:\\\"log\\\"===t?\\\"info\\\":t},void 0,e)}),this.ee.on(\\\"wrap-logger-end\\\",function([e],t,n,i=[]){const{level:s,customAttributes:o,autoCaptured:a}=this;i.forEach(t=\u003e{(0,ne.R)(r,e,o,s,a,t)})}),this.importAggregator(e,()=\u003ei.e(478).then(i.bind(i,5288)))}}new H({features:[Ue,B,F,it,at,V,ge,gt,wt,dt],loaderType:\\\"spa\\\"})})()})();\\n\",\"google\",\"testAutomationFlags\",{\"_557\":18,\"_558\":18,\"_559\":18,\"_560\":18,\"_561\":18,\"_562\":18,\"_563\":18,\"_564\":18,\"_565\":18,\"_21\":18,\"_566\":18,\"_567\":193,\"_568\":193,\"_569\":18},\"disableAds\",\"disableIirisAuth\",\"disableWelcomeAd\",\"disableBigskyAd\",\"disableIirisRecommend\",\"disableDcts\",\"disableWeatherWidget\",\"disableCashGrainWidget\",\"disableCommoditiesWidget\",\"disableCookieBanner\",\"overrideBrandStyling\",\"overrideThemeStyling\",\"extendedBreakpointsEnabled\",\"configState\",{\"_57\":58,\"_55\":56,\"_572\":573,\"_582\":8,\"_13\":14,\"_583\":193,\"_584\":-7,\"_585\":-7,\"_586\":-7,\"_483\":587,\"_593\":594,\"_596\":597,\"_601\":602,\"_607\":-7,\"_608\":609,\"_642\":643,\"_656\":-7,\"_657\":658},\"oneInforma\",{\"_574\":575,\"_576\":577,\"_578\":579,\"_580\":581},\"primaryColorPalette\",\"mint\",\"secondaryColorPalette\",\"saffronxindigo\",\"endorsementLevel\",\"full-endorsement\",\"personality\",\"soft\",\"uiBrand\",\"optimizelyUrl\",\"colors\",\"isMarketsDivision\",\"iirisTarget\",{\"_7\":588,\"_589\":590,\"_591\":193,\"_592\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltba62518415cda0e2/652fe6ddbc479f8697ef691f/default-cubic.png\",\"contributor\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd407cb100c7b5f81/650f1838250230f99e1ddc78/Game_Developer_G_Logo_RGB.jpg\",\"openGraphImage\",\"openGraphLogoOverlay\",\"media\",{\"_595\":193},\"brightcoveAccountId\",\"newsletterSignupPromo\",{\"_598\":599,\"_600\":-7},\"unbounceURL\",\"https://gd-resources.gamedeveloper.com/free/w_gamf01/prgm.cgi\",\"elnConfig\",\"newsletterCta\",{\"_603\":604,\"_605\":606},\"newsletterTitle\",\"Newsletter Sign-Up\",\"newsletterUrl\",\"https://gd-resources.gamedeveloper.com/c/pubRD.mpl?secure=1\u0026sr=pp\u0026_t=pp:\u0026qf=w_gamf01\u0026ch=gdwebbutton\",\"nextgen\",\"iirisRecommendation\",{\"_93\":610,\"_611\":18,\"_612\":18,\"_613\":18,\"_7\":-7,\"_614\":615,\"_616\":-7,\"_617\":269,\"_618\":619,\"_620\":621,\"_622\":623,\"_624\":625,\"_626\":209,\"_125\":627,\"_628\":18,\"_629\":630,\"_631\":632,\"_198\":-7,\"_633\":634,\"_635\":636,\"_637\":638},\"combined\",\"disabled\",\"disableSidebar\",\"disableArticleFooter\",\"brandFamily\",\"entertainment\",\"by\",\"count\",\"division\",\"it\",\"itemAge\",12,\"recipe\",\"related-items\",\"redirectMode\",\"_blank\",\"sponsoredCount\",\"You May Also Like\",\"showSponsored\",\"sponsoredTag\",\"Sponsored Content\",\"sponsoredTitle\",\"Sponsored\",\"articleFooter\",{\"_617\":269,\"_622\":623,\"_620\":621,\"_626\":209,\"_198\":-7},\"sidebar\",{\"_617\":269,\"_622\":623,\"_620\":621,\"_626\":209,\"_198\":-7},\"authorPrefix\",{\"_639\":616,\"_640\":641},\"content\",\"sponsored\",\"Brought to you by\",\"connectMeConfig\",{\"_644\":645,\"_646\":28,\"_647\":28,\"_648\":649,\"_650\":651,\"_652\":653,\"_654\":655},\"eventId\",\"9E89FC22DE131DDBF1AD6DFEDC03EB48\",\"externalConsent\",\"expressAccess\",\"expressType\",\"stage\",\"sandboxBaseUrl\",\"https://sandbox.connectmeinforma.com\",\"fallbackUrl\",\"https://webinar.connectmeinforma.com\",\"seamlessRegistrationEndpoint\",\"/{event_id}/agenda/viewer/{session_id}\",\"excludedPaidProductIdsForConsent\",\"newsletterManagementMeta\",{\"_659\":-5},\"newsletter_management\",\"brandConfig\",{\"_662\":68,\"_25\":663,\"_666\":667,\"_792\":793,\"_797\":798,\"_642\":800,\"_801\":802,\"_13\":14,\"_809\":14,\"_810\":10,\"_811\":812,\"_813\":814,\"_595\":193,\"_822\":823,\"_831\":832,\"_53\":835,\"_836\":837,\"_842\":843,\"_528\":551,\"_608\":847,\"_875\":876,\"_879\":880},\"irisEnvironment\",{\"_664\":52,\"_52\":665},\"active\",{\"_27\":28,\"_29\":28,\"_30\":31},\"ads\",{\"_668\":28,\"_669\":18,\"_670\":671,\"_672\":673,\"_676\":677,\"_678\":679,\"_680\":681,\"_790\":18,\"_791\":28},\"autoSelectPos\",\"destroyEmpty\",\"throttling\",120,\"loadingConfig\",{\"_674\":675},\"base\",300,\"networkId\",3834,\"parentAdUnit\",\"gamasutra.home\",\"enabledAds\",[682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789],\"728_1v\",\"728_2v\",\"728_3v\",\"728_4v\",\"728_5v\",\"728_6v\",\"728_7v\",\"728_8v\",\"728_9v\",\"728_10v\",\"728_11v\",\"slide_728_1v\",\"300_1v\",\"300_2v\",\"300_3v\",\"300_4v\",\"300_5v\",\"300_6v\",\"300_7v\",\"300_8v\",\"300_9v\",\"300_10v\",\"300_1v_microlist\",\"slide_300_1v\",\"300_1v_article\",\"300_2v_article\",\"300_3v_article\",\"native_featured_1v\",\"native_latestleft_1v\",\"native_latestleft_2v\",\"native_latestleft_3v\",\"native_latestleft_4v\",\"native_latestleft_5v\",\"native_latestleft_6v\",\"native_latestleft_7v\",\"native_latestleft_8v\",\"native_latestleft_9v\",\"native_latestleft_10v\",\"native_latestright_1v\",\"native_latestright_2v\",\"native_latestright_3v\",\"native_latestright_4v\",\"native_latestright_5v\",\"native_latestright_6v\",\"native_latestright_7v\",\"native_latestright_8v\",\"native_latestright_9v\",\"native_latestright_10v\",\"native_related_1v\",\"native_related_2v\",\"native_related_3v\",\"native_related_4v\",\"native_related_5v\",\"native_related_6v\",\"native_related_7v\",\"native_related_8v\",\"native_related_9v\",\"native_related_10v\",\"native_1v\",\"native_2v\",\"native_right_1v\",\"native_right_2v\",\"native_right_3v\",\"native_right_4v\",\"native_right_5v\",\"native_right_6v\",\"native_right_7v\",\"native_right_8v\",\"native_right_9v\",\"native_right_10v\",\"native_vertical_1v\",\"native_vertical_2v\",\"native_vertical_3v\",\"native_vertical_4v\",\"native_vertical_5v\",\"native_vertical_6v\",\"native_vertical_7v\",\"native_vertical_8v\",\"native_vertical_9v\",\"native_vertical_10v\",\"native_grid_1v\",\"native_grid_2v\",\"native_grid_3v\",\"native_grid_4v\",\"native_topic_1v\",\"native_topic_2v\",\"native_topic_3v\",\"native_topicright_1v\",\"native_topicright_2v\",\"native_topicright_3v\",\"resource_v\",\"bigsky_v\",\"floor_v\",\"adhesion_v\",\"wallpaper_v\",\"video_v\",\"oop_v\",\"sponsoredlogo_weather_1v\",\"sponsoredlogo_commodities_1v\",\"logo_1v\",\"reveal_1v\",\"slide_interstitial_1v\",\"slide_interstitial_2v\",\"slide_interstitial_3v\",\"slide_interstitial_4v\",\"slide_interstitial_5v\",\"chatbox_1v\",\"welcome_v\",\"checkClientIP\",\"welcAdOff\",\"iirisAudienceProfileConfig\",{\"_68\":794},{\"_795\":18,\"_63\":796},\"useLegacyIrisEndpoint\",\"/v3/audience/registration/{profileId}/{configId}\",\"iirisBaseUrl\",{\"_68\":799},\"https://api.iiris.com\",{\"_68\":643},\"newRelicEnvConfiguration\",{\"_803\":804,\"_805\":806,\"_807\":808},\"accountId\",\"TSS-SCM_Prod-1D8HF23EQFV80\",\"apiKey\",\"eu01xx8a36195d1e12f7ee86fdb984a6FFFFNRAL\",\"newrelicEndpoint\",\"https://insights-collector.eu01.nr-data.net\",\"siteFullName\",\"siteUrl\",\"authentication\",{},\"unbounce\",{\"_815\":816,\"_817\":818,\"_819\":820,\"_68\":821},\"local\",{\"_63\":599},\"preview\",{\"_63\":599},\"staging\",{\"_63\":599},{\"_63\":599},\"oneTrust\",{\"_815\":824,\"_817\":827,\"_819\":828,\"_68\":830},{\"_825\":826},\"siteId\",\"8aaa0413-1bf0-4c5f-b2b7-20f59225831b-test\",{\"_825\":193},{\"_825\":829},\"8aaa0413-1bf0-4c5f-b2b7-20f59225831b\",{\"_825\":829},\"gtmIds\",{\"_59\":833,\"_65\":834},\"GTM-5523ZCM\",\"GTM-KSPX23J\",{\"_7\":8,\"_55\":56,\"_57\":58},\"socialUrls\",[838,839,841],{\"_98\":105,\"_63\":106},{\"_98\":108,\"_63\":840},\"https://www.facebook.com/GameDeveloperOfficial/\",{\"_98\":102,\"_63\":103},\"newsletterSignupPromoContent\",{\"_125\":844,\"_845\":846},\"Newsletter sign up title\",\"message\",\"Newsletter sign up message\",{\"_848\":849,\"_618\":619,\"_614\":615,\"_850\":851,\"_852\":853,\"_854\":855,\"_856\":193,\"_857\":858,\"_859\":860,\"_861\":862,\"_863\":864,\"_865\":866,\"_867\":213,\"_868\":193,\"_869\":870,\"_871\":866,\"_872\":851,\"_873\":855,\"_624\":874,\"_622\":623},\"id\",\"widget-1697807002233\",\"entityTagBackground\",\"#000000\",\"dateFormat\",\"Mmm DD, YYYY\",\"showBy\",\"yes\",\"showTime\",\"borderRadius\",\"0\",\"imageWidth\",\"324\",\"imageHeight\",\"182\",\"dateTimeBgcolor\",\"#ff0000\",\"dateTimeFontColor\",\"#ffffff\",\"imagePosition\",\"dropShadow\",\"dateTimeFontsize\",\"12\",\"entityTagBorderColor\",\"borderColor\",\"showdate\",\"new\",\"newrelic\",{\"_877\":878},\"guid\",\"MzkzNjM0OHxCUk9XU0VSfEFQUExJQ0FUSU9OfDUzODYwMDIwNQ\",\"transactionTrackerEnvConfig\",{\"_881\":882,\"_883\":33},\"newsletterTrackingEnabled\",\"true\",\"siteRegistrationTrackingEnabled\",\"releaseVersion\",\"2.59.3\",\"ruid\",\"q1osgc659c\",\"routes/keyword.$slug\",{\"_890\":891,\"_1689\":1690,\"_1694\":1695,\"_1709\":1710,\"_886\":1720},\"template\",{\"_125\":892,\"_120\":892,\"_893\":894,\"_899\":900,\"_905\":906,\"_1458\":1459,\"_1684\":1685},\"Blogs\",\"breadcrumbs\",[895,897],{\"_63\":896,\"_125\":539},\"/\",{\"_63\":898,\"_125\":892},\"/keyword/blogs\",\"pagination\",{\"_901\":902,\"_903\":904},\"totalCount\",362,\"currentPage\",1,\"contents\",[907,935,953,971,989,1005,1022,1037,1055,1072,1087,1104,1120,1137,1154,1171,1184,1199,1214,1229,1244,1258,1272,1289,1303,1317,1329,1344,1361,1375,1389,1404,1418,1432,1445],{\"_198\":224,\"_176\":908,\"_200\":911,\"_181\":915,\"_183\":915,\"_186\":916,\"_917\":918,\"_188\":193,\"_190\":919,\"_192\":193,\"_184\":920,\"_921\":193,\"_210\":922,\"_194\":252,\"_196\":253,\"_208\":904,\"_923\":18,\"_924\":925,\"_929\":930,\"_933\":934},{\"_48\":909,\"_179\":910},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt29a087a5ab600184/681a6e95092833652bb51a11/doomparyblogfeatured.png\",\"The Doom Slayer stares at the camera.\",[912],{\"_61\":227,\"_204\":228,\"_206\":229,\"_913\":914},\"role\",\"Senior Editor\",\"Doom: The Dark Ages' financial fate rests on a parry mechanic\",\"/business/doom-the-dark-ages-financial-fate-rests-on-a-parry-mechanic\",\"linkAttrs\",{},\"May 6, 2025\",\"Rip and tear and press 'L2' until it is done.\",\"articleBodyJsonSummary\",\"normal\",\"hasActivePaidProduct\",\"paidGating\",{\"_926\":18,\"_927\":928},\"paidContent\",\"paidProductTaxonomy\",[],\"sponsorshipGatingGroup\",{\"_931\":18,\"_932\":18},\"sponsorshipGatingSponsorFlag\",\"sponsorshipGatingGateRegFlag\",\"articleSize\",\"big\",{\"_198\":224,\"_176\":936,\"_200\":939,\"_181\":945,\"_183\":945,\"_186\":946,\"_917\":947,\"_188\":193,\"_190\":948,\"_192\":193,\"_184\":949,\"_921\":193,\"_210\":922,\"_194\":195,\"_196\":197,\"_208\":904,\"_923\":18,\"_924\":950,\"_929\":952,\"_933\":934},{\"_48\":937,\"_179\":938},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt834e20e36d7a0649/68093db3086eb5cf261918f1/blue_prince_darkroom_photo.jpg\",\"A character portrait next to a note and magnifying glass\",[940],{\"_61\":941,\"_204\":942,\"_206\":943,\"_913\":944},\"Danielle Riendeau\",\"/author/danielle-riendeau\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt722812705eb8ab24/650f013b8f61917d4dd58a8c/DRPFP.jpg\",\"Editor-in-Chief\",\"Is Blue Prince's success due to 'social play?'\",\"/design/is-blue-prince-s-success-due-to-social-play-\",{},\"Apr 25, 2025\",\"The mystery/adventure hybrid about building rooms in a strange manor has plenty of buzz, and offers great unofficial 'co-op' play.\",{\"_926\":18,\"_927\":951},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":954,\"_200\":957,\"_181\":963,\"_183\":963,\"_186\":964,\"_917\":965,\"_188\":193,\"_190\":966,\"_192\":193,\"_184\":967,\"_921\":193,\"_210\":922,\"_194\":252,\"_196\":253,\"_208\":904,\"_923\":18,\"_924\":968,\"_929\":970,\"_933\":934},{\"_48\":955,\"_179\":956},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltfc68bfff3fcbeb0f/67f69a4b5d57d86222e2643b/Image_-_Header.png\",\"A  graphic with the word \\\"play\\\" in the center\",[958],{\"_61\":959,\"_204\":960,\"_206\":961,\"_913\":962},\"Dmitry Kachmar\",\"/author/dmitry-kachmar\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt120870265293d448/67f69a97f23d8a8aeb9c981d/Dmitry_Kachmar_Playgama_Headshot.png\",\"Founder\",\"The huge, hidden web game market no one talks about (and how to get in)\",\"/business/the-huge-hidden-web-game-market-no-one-talks-about-and-how-to-get-in-\",{},\"Apr 15, 2025\",\"There's a hidden market of customers who want to play games on the web.\",{\"_926\":18,\"_927\":969},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":972,\"_200\":975,\"_181\":981,\"_183\":981,\"_186\":982,\"_917\":983,\"_188\":193,\"_190\":984,\"_192\":193,\"_184\":985,\"_921\":193,\"_210\":922,\"_194\":252,\"_196\":253,\"_208\":904,\"_923\":18,\"_924\":986,\"_929\":988,\"_933\":934},{\"_48\":973,\"_179\":974},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltcb7aec5e34adbf9d/67f69201e8087a34593ed473/trophyfeatured.png\",\"A trophy.\",[976],{\"_61\":977,\"_204\":978,\"_206\":979,\"_913\":980},\"Greg Foertsch\",\"/author/greg-foertsch\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt55cc1ac6d2ccc802/67f692d4239d84575c6596e1/BitReactor_Office-82.jpg\",\"CEO\",\"It's time for gaming awards to rethink the strategy/sim category\",\"/business/it-s-time-for-gaming-awards-to-rethink-the-strategy-sim-category\",{},\"Apr 9, 2025\",\"A plea to rethink how strategy and simulation awards are handed out.\",{\"_926\":18,\"_927\":987},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":990,\"_200\":992,\"_181\":997,\"_183\":997,\"_186\":998,\"_917\":999,\"_188\":193,\"_190\":1000,\"_192\":193,\"_184\":1001,\"_921\":193,\"_210\":922,\"_194\":222,\"_196\":223,\"_208\":904,\"_923\":18,\"_924\":1002,\"_929\":1004,\"_933\":934},{\"_48\":991,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt0ef35b851dea1766/677da0a4316bc621d370b71c/Wizard_of_Legend_2.jpg\",[993],{\"_61\":994,\"_204\":995,\"_206\":996,\"_913\":193},\"Shayan Aminnezhad\",\"/author/shayan-aminnezhad\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd709c2f6ad0896cd/66df238c1ceec85b3ae644da/Game_Developer_G_Logo_RGB.webp\",\"A developer's guide to effective localization in Unreal Engine\",\"/production/a-developer-s-guide-to-effective-localization-in-unreal-engine\",{},\"Jan 17, 2025\",\"This article shares insights based on the development of Wizard of Legend 2, detailing the complexities encountered in Unreal Engine localization.\",{\"_926\":18,\"_927\":1003},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1006,\"_200\":1009,\"_181\":1013,\"_183\":1014,\"_186\":1015,\"_917\":1016,\"_188\":193,\"_190\":1017,\"_192\":193,\"_184\":1018,\"_921\":193,\"_210\":922,\"_194\":327,\"_196\":328,\"_208\":904,\"_923\":18,\"_924\":1019,\"_929\":1021,\"_933\":934},{\"_48\":1007,\"_179\":1008},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd69a9f920f70b945/67881ec41c37bbbb7e2be55b/pingle_image.png\",\"underwater adventure images\",[1010],{\"_61\":1011,\"_204\":1012,\"_206\":996,\"_913\":193},\"Oleksii Honcharov\",\"/author/oleksii-honcharov\",\"Converting saves, a cross platform journey\",\"Save the saves\",\"/programming/save-the-saves\",{},\"Jan 15, 2025\",\"In this article about console porting, we'll discuss specifically the solutions we found to translate the save system.\",{\"_926\":18,\"_927\":1020},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1023,\"_200\":1025,\"_181\":1029,\"_183\":1029,\"_186\":1030,\"_917\":1031,\"_188\":193,\"_190\":1032,\"_192\":193,\"_184\":1033,\"_921\":193,\"_210\":922,\"_194\":195,\"_196\":197,\"_208\":904,\"_923\":18,\"_924\":1034,\"_929\":1036,\"_933\":934},{\"_48\":1024,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltfe3db091b4851f10/677c3d5fe3dd24e4f8442198/pexels-monicore-134065.jpg\",[1026],{\"_61\":1027,\"_204\":1028,\"_206\":996,\"_913\":193},\"Liu Xinyan\",\"/author/liu-xinyan\",\"6 elements of visual guidance\",\"/design/6-elements-of-visual-guidance\",{},\"Jan 13, 2025\",\"Visual guidance is a crucial aspect of game environment that helps players navigate and interact with the world effectively. \",{\"_926\":18,\"_927\":1035},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1038,\"_200\":1040,\"_181\":1046,\"_183\":1047,\"_186\":1048,\"_917\":1049,\"_188\":193,\"_190\":1050,\"_192\":193,\"_184\":1051,\"_921\":193,\"_210\":922,\"_194\":252,\"_196\":253,\"_208\":904,\"_923\":18,\"_924\":1052,\"_929\":1054,\"_933\":934},{\"_48\":1039,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt88d4318d528a1cfb/677ed50dbf2d061c2a702fc6/Lenovo_Legion.png\",[1041],{\"_61\":1042,\"_204\":1043,\"_206\":1044,\"_913\":1045},\"James McWhirter\",\"/author/james-mcwhirter\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf2b78e3136bc934a/65e0f3d8d12110040acc2c87/James_McWhirter_image_SL.png\",\"Senior Analyst, Games\",\"Valve stakes its claim to PC gaming handhelds with SteamOS’s arrival on Lenovo Legion Go S\",\"Valve stakes its claim to PC gaming handhelds with SteamOS’s arrival on Lenovo Legion Go S \",\"/business/valve-stakes-its-claim-to-pc-gaming-handhelds-with-steamos-s-arrival-on-lenovo-legion-go-s\",{},\"Jan 9, 2025\",\"Valve’s collaboration with hardware manufacturers and chipset makers strengthens SteamOS’s position in the PC gaming handheld space.\",{\"_926\":18,\"_927\":1053},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1056,\"_200\":1058,\"_181\":1064,\"_183\":1064,\"_186\":1065,\"_917\":1066,\"_188\":193,\"_190\":1067,\"_192\":193,\"_184\":1068,\"_921\":193,\"_210\":922,\"_194\":195,\"_196\":197,\"_208\":904,\"_923\":18,\"_924\":1069,\"_929\":1071,\"_933\":934},{\"_48\":1057,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt92f40eeb9737e88d/677c3300827b1fbe14ab18e8/Prince_of_Persia_Accessibility.jpg\",[1059],{\"_61\":1060,\"_204\":1061,\"_206\":1062,\"_913\":1063},\"Josh Bycer\",\"/author/josh-bycer\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt98434093b67825eb/650efd6139ff36eea344b067/bycerportrait.jpg\",\"Blogger\",\"Prince of Persia's accessibility is inaccessible to some\",\"/design/prince-of-persia-s-accessibility-is-inaccessible-to-some\",{},\"Jan 8, 2025\",\"When accessibility becomes commoditized.\",{\"_926\":18,\"_927\":1070},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1073,\"_200\":1075,\"_181\":1079,\"_183\":1079,\"_186\":1080,\"_917\":1081,\"_188\":193,\"_190\":1082,\"_192\":193,\"_184\":1083,\"_921\":193,\"_210\":922,\"_194\":195,\"_196\":197,\"_208\":904,\"_923\":18,\"_924\":1084,\"_929\":1086,\"_933\":934},{\"_48\":1074,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc9b7dff95a53de60/66b0f657593f06af462b936f/RESIZE_GD_Blogs_Header_RESIZE.png\",[1076],{\"_61\":1077,\"_204\":1078,\"_206\":996,\"_913\":193},\"Arjun Wagle\",\"/author/arjun-wagle\",\"How balance can affect difficulty\",\"/design/how-balance-can-affect-difficulty\",{},\"Jan 7, 2025\",\"Using game balancing to affect the difficulty of games.\",{\"_926\":18,\"_927\":1085},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1088,\"_200\":1090,\"_181\":1097,\"_183\":1097,\"_186\":1098,\"_917\":1099,\"_188\":193,\"_190\":1082,\"_192\":193,\"_184\":1100,\"_921\":193,\"_210\":922,\"_194\":222,\"_196\":223,\"_208\":904,\"_923\":18,\"_924\":1101,\"_929\":1103,\"_933\":934},{\"_48\":1089,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt5473164f35f05951/677c2a9b316bc66b9370b183/Everseeker_Little_Critters.jpg\",[1091,1094],{\"_61\":1092,\"_204\":1093,\"_206\":996,\"_913\":193},\"João Victor Kaian\",\"/author/joao-victor-kaian\",{\"_61\":1095,\"_204\":1096,\"_206\":996,\"_913\":193},\"Buscariol Maiettini\",\"/author/buscariol-maiettini\",\"Reflections on the journey of publishing Everseeker: Little Critters\",\"/production/reflections-on-the-journey-of-publishing-everseeker-little-critters\",{},\"Sharing my journey of creating and publishing my first game, Everseeker: Little Critters, with insights on development, Steam integration, and indie marketing.\",{\"_926\":18,\"_927\":1102},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1105,\"_200\":1106,\"_181\":1110,\"_183\":1110,\"_186\":1111,\"_917\":1112,\"_188\":193,\"_190\":1113,\"_192\":193,\"_184\":1114,\"_921\":193,\"_210\":922,\"_194\":1115,\"_196\":1116,\"_208\":904,\"_923\":18,\"_924\":1117,\"_929\":1119,\"_933\":934},{\"_48\":1074,\"_179\":193},[1107],{\"_61\":1108,\"_204\":1109,\"_206\":996,\"_913\":193},\"Prateek Polapally\",\"/author/prateek-polapally\",\"Enhancing experiences through scent: Technological integration across virtual environments, entertainment, and therapeutic applications\",\"/extended-reality/enhancing-experiences-through-scent-technological-integration-across-virtual-environments-entertainment-and-therapeutic-applications\",{},\"Jan 6, 2025\",\"Enhancing experiences through scent.\",\"Extended Reality\",\"/game-platforms/extended-reality\",{\"_926\":18,\"_927\":1118},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1121,\"_200\":1123,\"_181\":1129,\"_183\":1129,\"_186\":1130,\"_917\":1131,\"_188\":193,\"_190\":1132,\"_192\":193,\"_184\":1133,\"_921\":193,\"_210\":922,\"_194\":252,\"_196\":253,\"_208\":904,\"_923\":18,\"_924\":1134,\"_929\":1136,\"_933\":934},{\"_48\":1122,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf82b50e29f603d48/676470f60879222a87db12d7/Apple_Vision_Pro.jpg\",[1124],{\"_61\":1125,\"_204\":1126,\"_206\":1127,\"_913\":1128},\"George Jijiashvili\",\"/author/george-jijiashvili\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt8c4d643639302af6/65088a9fa2e641425e443627/George_Jijiashvili.jpg\",\"Senior Principal Analyst, Games\",\"Reality check for VR: Omdia forecasts decline as Apple’s entry fails to galvanize market\",\"/business/reality-check-for-vr-omdia-forecasts-decline-as-apple-s-entry-fails-to-galvanize-market\",{},\"Dec 20, 2024\",\"Omdia analyst examines key challenges facing the consumer VR market today and shares insights on its future trajectory.\",{\"_926\":18,\"_927\":1135},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1138,\"_200\":1140,\"_181\":1144,\"_183\":1144,\"_186\":1145,\"_917\":1146,\"_188\":193,\"_190\":1147,\"_192\":193,\"_184\":1148,\"_921\":193,\"_210\":922,\"_194\":1149,\"_196\":1150,\"_208\":904,\"_923\":18,\"_924\":1151,\"_929\":1153,\"_933\":934},{\"_48\":1139,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltcf09a2794423bf81/675c638e32c9f19ad93ac90c/image001.png\",[1141],{\"_61\":1142,\"_204\":1143,\"_206\":996,\"_913\":193},\"Denis Pozdnyakov\",\"/author/untitled\",\"Death to all zombies: crafting weapons for Zombie State\",\"/art/death-to-all-zombies-crafting-weapons-for-zombie-state\",{},\"Dec 18, 2024\",\"The technical and creative journey to create a wordless story for each gun design and foster an emotional attachment to each weapon.\",\"Art\",\"/art\",{\"_926\":18,\"_927\":1152},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1155,\"_200\":1157,\"_181\":1163,\"_183\":1163,\"_186\":1164,\"_917\":1165,\"_188\":193,\"_190\":1166,\"_192\":193,\"_184\":1167,\"_921\":193,\"_210\":922,\"_194\":195,\"_196\":197,\"_208\":904,\"_923\":18,\"_924\":1168,\"_929\":1170,\"_933\":934},{\"_48\":1156,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt6c2266ea7220dd97/6765b68cbee97250a3ed6574/Game_Developer_Best_Featured_Blogs_2024.png\",[1158],{\"_61\":1159,\"_204\":1160,\"_206\":1161,\"_913\":1162},\"Holly Green\",\"/author/holly-green\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltdec6f50070a70555/650f059f457d12263163b2ca/75258562_10220983058707614_8585122828469141504_n.jpg\",\"Community Editorial Coordinator\",\"Game Developer's 2024 Wrap-Up: 10 must-read Featured Blogs\",\"/design/game-developer-s-2024-wrap-up-10-must-read-featured-blogs\",{},\"Dec 17, 2024\",\"Read the most significant featured blogs of the year. \",{\"_926\":18,\"_927\":1169},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1172,\"_200\":1174,\"_181\":1176,\"_183\":1176,\"_186\":1177,\"_917\":1178,\"_188\":193,\"_190\":1179,\"_192\":193,\"_184\":1180,\"_921\":193,\"_210\":922,\"_194\":252,\"_196\":253,\"_208\":904,\"_923\":18,\"_924\":1181,\"_929\":1183,\"_933\":934},{\"_48\":1173,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt5964c2ff9d771f86/6758a9b10ebbee9e364afedc/TIAX.jpg\",[1175],{\"_61\":1042,\"_204\":1043,\"_206\":1044,\"_913\":1045},\"Microsoft is not ready to deprioritize Xbox consoles\",\"/business/microsoft-is-not-ready-to-deprioritize-xbox-consoles\",{},\"Dec 13, 2024\",\"While Microsoft's new global marketing campaign reaffirms a shift in their strategy to attract Xbox users off-console, \\nquestions are raised over the company's readiness in the cloud, mobile, PC, and handheld segments.\",{\"_926\":18,\"_927\":1182},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1185,\"_200\":1187,\"_181\":1191,\"_183\":1191,\"_186\":1192,\"_917\":1193,\"_188\":193,\"_190\":1194,\"_192\":193,\"_184\":1195,\"_921\":193,\"_210\":922,\"_194\":195,\"_196\":197,\"_208\":904,\"_923\":18,\"_924\":1196,\"_929\":1198,\"_933\":934},{\"_48\":1186,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltbb6f9b28881c65e5/6753208a424b7db0d7b05210/image01.jpg\",[1188],{\"_61\":1189,\"_204\":1190,\"_206\":996,\"_913\":193},\"Kirill\\tSharikov\",\"/author/kirill-sharikov\",\"How to create a 'fair' auto-aiming system in a robot shooter\",\"/design/how-to-create-a-fair-auto-aiming-system-in-a-robot-shooter-\",{},\"Dec 10, 2024\",\"Overhauling the algorithm and the introduction of a single mathematical formula to determine target priority has made our auto-aim settings more transparent and predictable for all players–and to great feedback.\",{\"_926\":18,\"_927\":1197},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1200,\"_200\":1202,\"_181\":1206,\"_183\":1206,\"_186\":1207,\"_917\":1208,\"_188\":193,\"_190\":1209,\"_192\":193,\"_184\":1210,\"_921\":193,\"_210\":922,\"_194\":327,\"_196\":328,\"_208\":904,\"_923\":18,\"_924\":1211,\"_929\":1213,\"_933\":934},{\"_48\":1201,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc1abc82bc4098a66/6751dd7c47226c7aa696d7e5/Pic1.jpg\",[1203],{\"_61\":1204,\"_204\":1205,\"_206\":996,\"_913\":193},\"Maxim Kiselev\",\"/author/maxim-kiselev\",\"6 steps to a successful playtesting process for an indie developer\",\"/programming/6-steps-to-a-successful-playtesting-process-for-an-indie-developer\",{},\"Dec 9, 2024\",\"Maxim Kiselev, an indie game developer best known as the co-creator of HighFleet, outlined the playtesting roadmap for indie developers.\\n\",{\"_926\":18,\"_927\":1212},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1215,\"_200\":1217,\"_181\":1221,\"_183\":1221,\"_186\":1222,\"_917\":1223,\"_188\":193,\"_190\":1224,\"_192\":193,\"_184\":1225,\"_921\":193,\"_210\":922,\"_194\":252,\"_196\":253,\"_208\":904,\"_923\":18,\"_924\":1226,\"_929\":1228,\"_933\":934},{\"_48\":1216,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt3a4e6e02a38d453d/675b21c5f38e1a9208bbbba4/header_image.png\",[1218],{\"_61\":1219,\"_204\":1220,\"_206\":996,\"_913\":193},\"Anton Volnykh\",\"/author/anton-volnykh\",\"Mastering hybrid-casual game design: Lessons in balancing depth and accessibility\",\"/business/mastering-hybrid-casual-game-design-lessons-in-balancing-depth-and-accessibility\",{},\"Dec 6, 2024\",\"SayGames Chief Publishing Officer Anton Volnykh shares tips on creating engaging gameplay and thoughtful introduction of monetisation. \\n\",{\"_926\":18,\"_927\":1227},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1230,\"_200\":1232,\"_181\":1236,\"_183\":1236,\"_186\":1237,\"_917\":1238,\"_188\":193,\"_190\":1239,\"_192\":193,\"_184\":1240,\"_921\":193,\"_210\":922,\"_194\":252,\"_196\":253,\"_208\":904,\"_923\":18,\"_924\":1241,\"_929\":1243,\"_933\":934},{\"_48\":1231,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltdfbed1bf39f8655c/674de2bbbeae623ba2080382/The_Last_Humble_Bee.jpg\",[1233],{\"_61\":1234,\"_204\":1235,\"_206\":996,\"_913\":1063},\"Jacob Weersing\",\"/author/jacob-weersing\",\"The Last Humble Bee postmortem: Staying sane in solo development\",\"/business/the-last-humble-bee-postmortem-staying-sane-in-solo-development\",{},\"Dec 5, 2024\",\"This is a postmortem for my second game release, and I share lessons learned for staying sane in independent solo game development.\",{\"_926\":18,\"_927\":1242},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1245,\"_200\":1247,\"_181\":1250,\"_183\":1250,\"_186\":1251,\"_917\":1252,\"_188\":193,\"_190\":1253,\"_192\":193,\"_184\":1254,\"_921\":193,\"_210\":922,\"_194\":252,\"_196\":253,\"_208\":904,\"_923\":18,\"_924\":1255,\"_929\":1257,\"_933\":934},{\"_48\":1246,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt5f04c90e1430ce0a/674de0f2a5326dc6edc4ea7a/ENd_of_Ember.jpg\",[1248],{\"_61\":1249,\"_204\":1143,\"_206\":996,\"_913\":193},\"Chad Habel\",\"Gnarly content: 9 risks for horror game development\",\"/business/gnarly-content-9-risks-for-horror-game-development\",{},\"Dec 4, 2024\",\"This blog explores some of the risks of horror game development and how to address them.\",{\"_926\":18,\"_927\":1256},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1259,\"_200\":1261,\"_181\":1264,\"_183\":1264,\"_186\":1265,\"_917\":1266,\"_188\":193,\"_190\":1267,\"_192\":193,\"_184\":1268,\"_921\":193,\"_210\":922,\"_194\":195,\"_196\":197,\"_208\":904,\"_923\":18,\"_924\":1269,\"_929\":1271,\"_933\":934},{\"_48\":1260,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltd928f16f09e68571/6749d48ed80094747c893c31/coverimage.jpg\",[1262],{\"_61\":1263,\"_204\":1143,\"_206\":996,\"_913\":193},\"Ishan Manjrekar\",\"How to play a game if you want to learn about making one\",\"/design/how-to-play-a-game-\",{},\"Dec 3, 2024\",\"Starting game design journey by playing games with a critical eye. Experience games, record your thoughts, research opinions, and reflect to improve your skills.\\n\",{\"_926\":18,\"_927\":1270},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1273,\"_200\":1276,\"_181\":1279,\"_183\":1279,\"_186\":1280,\"_917\":1281,\"_188\":193,\"_190\":1282,\"_192\":193,\"_184\":1283,\"_921\":193,\"_210\":922,\"_194\":1284,\"_196\":1285,\"_208\":904,\"_923\":18,\"_924\":1286,\"_929\":1288,\"_933\":934},{\"_48\":1274,\"_179\":1275},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc3c0575110392521/6749d30cd2ab322257f7c41a/Midjiwan_Community_Byline_Featured_Image.png\",\"an icy landscape and giant dice\",[1277],{\"_61\":1278,\"_204\":1143,\"_206\":996,\"_913\":193},\"Brenton Stockwell\",\"The art of balance in community management\",\"/marketing/the-art-of-balance-in-community-management\",{},\"Dec 2, 2024\",\"Midjiwan's community manager explains how studios can strike a balance between fan input and preserving the team's creative vision.\",\"Marketing\",\"/marketing\",{\"_926\":18,\"_927\":1287},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1290,\"_200\":1292,\"_181\":1295,\"_183\":1295,\"_186\":1296,\"_917\":1297,\"_188\":193,\"_190\":1298,\"_192\":193,\"_184\":1299,\"_921\":193,\"_210\":922,\"_194\":222,\"_196\":223,\"_208\":904,\"_923\":18,\"_924\":1300,\"_929\":1302,\"_933\":934},{\"_48\":1291,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt0f223aa82c800eec/673f549ba3cfe714219a4409/Header_Everdark.jpg\",[1293],{\"_61\":1294,\"_204\":1143,\"_206\":996,\"_913\":193},\"Miguel Enjuto Ojanguren\",\"Survival guide to developing a game and publishing it on Steam\",\"/production/survival-guide-to-develop-a-game-and-then-publish-it-on-steam-\",{},\"Nov 27, 2024\",\"What seemed like just a technical challenge turned into a journey that included design, production, marketing and all the other aspects of the industry that make a good idea become a finished and published project. \",{\"_926\":18,\"_927\":1301},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1304,\"_200\":1307,\"_181\":1309,\"_183\":1309,\"_186\":1310,\"_917\":1311,\"_188\":193,\"_190\":1312,\"_192\":193,\"_184\":1313,\"_921\":193,\"_210\":922,\"_194\":195,\"_196\":197,\"_208\":904,\"_923\":18,\"_924\":1314,\"_929\":1316,\"_933\":934},{\"_48\":1305,\"_179\":1306},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt75aa64b424613e76/67460047a659b01f9c28af7d/synthetic_games.png\",\"game icons on a factory belt\",[1308],{\"_61\":1060,\"_204\":1061,\"_206\":1062,\"_913\":1063},\"Why you can't objectively build great games\",\"/design/why-you-can-t-objectively-design-the-perfect-game\",{},\"Nov 25, 2024\",\"Developers are always trying to find that winning formula for the perfect game, but it takes more than analytics to build an amazing game.\",{\"_926\":18,\"_927\":1315},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1318,\"_200\":1320,\"_181\":1321,\"_183\":1321,\"_186\":1322,\"_917\":1323,\"_188\":193,\"_190\":1324,\"_192\":193,\"_184\":1325,\"_921\":193,\"_210\":922,\"_194\":327,\"_196\":328,\"_208\":904,\"_923\":18,\"_924\":1326,\"_929\":1328,\"_933\":934},{\"_48\":1319,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt592378c12ebcf88b/673f58f3a45977cf34f3d05a/Greg_(1).png\",[],\"How wall running and high-speed movement works in Project: Haste\",\"/programming/how-wall-running-and-high-speed-movement-works-in-project-haste\",{},\"Nov 22, 2024\",\"A walkthrough of the movement system's core design values and how they were programmed and implemented. \",{\"_926\":18,\"_927\":1327},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1330,\"_200\":1332,\"_181\":1336,\"_183\":1336,\"_186\":1337,\"_917\":1338,\"_188\":193,\"_190\":1339,\"_192\":193,\"_184\":1340,\"_921\":193,\"_210\":922,\"_194\":222,\"_196\":223,\"_208\":904,\"_923\":18,\"_924\":1341,\"_929\":1343,\"_933\":934},{\"_48\":1331,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt5bc27479f52b6c81/673f870ce2b6b1c33987b30e/1.png\",[1333],{\"_61\":1334,\"_204\":1335,\"_206\":996,\"_913\":193},\"Dmitry Smirnov\",\"/author/dmitry-smirnov\",\"10 lessons learned from the development of Nikoderiko\",\"/production/10-lessons-learned-from-the-development-of-nikoderiko\",{},\"Nov 21, 2024\",\"The piece dives into everything from optimizing for weaker platforms to why clear outsourcing guidelines are a lifesaver, with practical takeaways for devs.\",{\"_926\":18,\"_927\":1342},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1345,\"_200\":1347,\"_181\":1351,\"_183\":1351,\"_186\":1352,\"_917\":1353,\"_188\":193,\"_190\":1354,\"_192\":193,\"_184\":1355,\"_921\":193,\"_210\":922,\"_194\":1356,\"_196\":1357,\"_208\":904,\"_923\":18,\"_924\":1358,\"_929\":1360,\"_933\":934},{\"_48\":1346,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltf525b41c67c3e7f5/673e52c60f3226cb6479b0b2/gdfb_fullsize_test.png\",[1348],{\"_61\":1349,\"_204\":1350,\"_206\":996,\"_913\":193},\"Ilya Viktorov\",\"/author/ilya-viktorov\",\"How to record a giant mech: Recording sound design with War Robots\",\"/audio/how-to-record-a-giant-mech-recording-sound-design-with-war-robots\",{},\"Nov 20, 2024\",\"We explain the sound recording and design process based on our years of experience with War Robots: processes that work and fails to avoid! \",\"Audio\",\"/audio\",{\"_926\":18,\"_927\":1359},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1362,\"_200\":1364,\"_181\":1367,\"_183\":1367,\"_186\":1368,\"_917\":1369,\"_188\":193,\"_190\":1370,\"_192\":193,\"_184\":1371,\"_921\":193,\"_210\":922,\"_194\":222,\"_196\":223,\"_208\":904,\"_923\":18,\"_924\":1372,\"_929\":1374,\"_933\":934},{\"_48\":1363,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltfcf53681e45b9768/673775407a0f437391091a2d/Hero_image.png\",[1365],{\"_61\":1366,\"_204\":1143,\"_206\":996,\"_913\":193},\"Augustas Vachauzas\",\"Reviving retro: the art and science of recharging Atari’s classic games for modern audiences\",\"/production/reviving-retro-the-art-and-science-of-recharging-atari-s-classic-games-for-modern-audiences\",{},\"Nov 18, 2024\",\"SneakyBox lead game designer, Augustas Vachauzas, outlines the challenges and solutions in remastering classic Atari games for modern audiences.\",{\"_926\":18,\"_927\":1373},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1376,\"_200\":1378,\"_181\":1382,\"_183\":1382,\"_186\":1383,\"_917\":1384,\"_188\":193,\"_190\":1370,\"_192\":193,\"_184\":1385,\"_921\":193,\"_210\":922,\"_194\":195,\"_196\":197,\"_208\":904,\"_923\":18,\"_924\":1386,\"_929\":1388,\"_933\":934},{\"_48\":1377,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltdc3edf6006df457b/67324dcc234a34327e8ff50f/Scales.png\",[1379],{\"_61\":1380,\"_204\":1381,\"_206\":996,\"_913\":193},\"Breno Azevedo\",\"/author/breno-azevedo\",\"The art of game balance: evolution\",\"/design/the-art-of-game-balance-evolution\",{},\"First of a three-part series on combat-focused game balance design, exploring its evolution and showcasing successful case studies.\",{\"_926\":18,\"_927\":1387},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1390,\"_200\":1392,\"_181\":1396,\"_183\":1396,\"_186\":1397,\"_917\":1398,\"_188\":193,\"_190\":1399,\"_192\":193,\"_184\":1400,\"_921\":193,\"_210\":922,\"_194\":222,\"_196\":223,\"_208\":904,\"_923\":18,\"_924\":1401,\"_929\":1403,\"_933\":934},{\"_48\":1391,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blte50972fdeed355f2/67323006df2e42a1b2b398a8/img1.png\",[1393],{\"_61\":1394,\"_204\":1395,\"_206\":996,\"_913\":193},\"Alex\\tWiserax\",\"/author/alex-wiserax\",\"I designed economies for $150M games: here's my ultimate handbook\",\"/production/i-designed-economies-for-150m-games-here-s-my-ultimate-handbook\",{},\"Nov 15, 2024\",\"After 5 years designing game economies generating $150M+, I've compiled my knowledge into a detailed 7-chapter guide on game economy, balance, and monetization.\\n\",{\"_926\":18,\"_927\":1402},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1405,\"_200\":1406,\"_181\":1410,\"_183\":1410,\"_186\":1411,\"_917\":1412,\"_188\":193,\"_190\":1413,\"_192\":193,\"_184\":1414,\"_921\":193,\"_210\":922,\"_194\":195,\"_196\":197,\"_208\":904,\"_923\":18,\"_924\":1415,\"_929\":1417,\"_933\":934},{\"_48\":1074,\"_179\":193},[1407],{\"_61\":1408,\"_204\":1409,\"_206\":996,\"_913\":193},\"Michael Yichao\",\"/author/-title\",\"Bringing improvisation to digital games with GenAI\",\"/design/bringing-improvisation-to-digital-games-with-genai\",{},\"Nov 14, 2024\",\"Jam \u0026 Tea Studios is bringing improvisation to digital games with Generative AI.\",{\"_926\":18,\"_927\":1416},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1419,\"_200\":1421,\"_181\":1424,\"_183\":1424,\"_186\":1425,\"_917\":1426,\"_188\":193,\"_190\":1427,\"_192\":193,\"_184\":1428,\"_921\":193,\"_210\":922,\"_194\":1356,\"_196\":1357,\"_208\":904,\"_923\":18,\"_924\":1429,\"_929\":1431,\"_933\":934},{\"_48\":1420,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt7eada1366ade2416/6734de4921914346f5dc7c6d/Tactical_Breach_Wizards.jpg\",[1422],{\"_61\":1423,\"_204\":1409,\"_206\":996,\"_913\":193},\"Robert Arzola\",\"Reflections on my score for Tactical Breach Wizards\",\"/audio/reflections-on-my-score-for-tactical-breach-wizards\",{},\"Nov 13, 2024\",\"Here's an inside look at the creative process, inspirations, experiences, and challenges behind the score for Tactical Breach Wizards.\",{\"_926\":18,\"_927\":1430},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1433,\"_200\":1435,\"_181\":1437,\"_183\":1437,\"_186\":1438,\"_917\":1439,\"_188\":193,\"_190\":1440,\"_192\":193,\"_184\":1441,\"_921\":193,\"_210\":922,\"_194\":195,\"_196\":197,\"_208\":904,\"_923\":18,\"_924\":1442,\"_929\":1444,\"_933\":934},{\"_48\":1434,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltdf8a1a742cc4a912/673236419d70b8d5ad06deaa/AdobeStock_615906569.jpeg\",[1436],{\"_61\":1204,\"_204\":1205,\"_206\":996,\"_913\":193},\"Must-have tools and libraries for indie game developers in 2024\",\"/design/must-have-tools-and-libraries-for-indie-game-developers-in-2024\",{},\"Nov 11, 2024\",\"Thanks to the constant development of technology and an ever-growing set of powerful tools, indie developers can create games that rival those made by big studios. If you're an indie developer looking to take your project to the next level, here's your essential toolkit for 2024.\\n\",{\"_926\":18,\"_927\":1443},[],{\"_931\":18,\"_932\":18},{\"_198\":224,\"_176\":1446,\"_200\":1448,\"_181\":1450,\"_183\":1450,\"_186\":1451,\"_917\":1452,\"_188\":193,\"_190\":1453,\"_192\":193,\"_184\":1454,\"_921\":193,\"_210\":922,\"_194\":195,\"_196\":197,\"_208\":904,\"_923\":18,\"_924\":1455,\"_929\":1457,\"_933\":934},{\"_48\":1447,\"_179\":193},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltcbd718b7be12d37c/6720fe5021f0d3bcd01b1459/Picture2.png\",[1449],{\"_61\":1060,\"_204\":1061,\"_206\":1062,\"_913\":1063},\"The overdesign trap of game design\",\"/design/the-overdesign-trap-of-game-design\",{},\"Nov 4, 2024\",\"Why over-designing your game can lead to an unfocused mess.\\n\",{\"_926\":18,\"_927\":1456},[],{\"_931\":18,\"_932\":18},\"sidebarModules\",[1460,1504,1518,1567,1617],{\"_98\":1461,\"_1462\":1463,\"_1464\":1465},\"module_content_cards\",\"uid\",\"blt1fc59bb4e562c242\",\"data\",{\"_1466\":28,\"_125\":232,\"_1467\":232,\"_210\":1468,\"_905\":1469,\"_1494\":1495,\"_1496\":1495,\"_1497\":-7,\"_1498\":1499,\"_204\":1500,\"_1503\":635},\"isDynamicContent\",\"moduleLabel\",\"column\",[1470,1481,1485],{\"_98\":1471,\"_1464\":1472},\"contentPreview\",{\"_198\":224,\"_210\":211,\"_176\":1473,\"_181\":249,\"_183\":249,\"_186\":251,\"_188\":251,\"_917\":1474,\"_190\":191,\"_192\":193,\"_194\":252,\"_196\":253,\"_200\":1475,\"_208\":259,\"_924\":1478,\"_923\":18,\"_929\":1480},{\"_48\":247,\"_179\":248},{},[1476],{\"_61\":256,\"_204\":257,\"_206\":258,\"_913\":1477},\"Senior Editor, News\",{\"_926\":18,\"_927\":1479},[],{\"_931\":18,\"_932\":18},{\"_98\":1482,\"_1464\":1483},\"ad\",{\"_1484\":752},\"pos\",{\"_98\":1471,\"_1464\":1486},{\"_198\":224,\"_210\":211,\"_176\":1487,\"_181\":264,\"_183\":264,\"_186\":266,\"_188\":266,\"_917\":1488,\"_190\":191,\"_192\":193,\"_194\":252,\"_196\":253,\"_200\":1489,\"_208\":269,\"_924\":1491,\"_923\":18,\"_929\":1493},{\"_48\":262,\"_179\":263},{},[1490],{\"_61\":256,\"_204\":257,\"_206\":258,\"_913\":1477},{\"_926\":18,\"_927\":1492},[],{\"_931\":18,\"_932\":18},\"dateDisplay\",\"show\",\"contributorDisplay\",\"displayAd\",\"settingOption\",\"dynamic\",{\"_5\":233,\"_1501\":1502},\"label\",\"More News\",\"moduleLocation\",{\"_98\":1505,\"_1462\":1506,\"_1464\":1507},\"module_newsletter_promo\",\"blt5927fa665b4acf51\",{\"_125\":1508,\"_845\":193,\"_1509\":1506,\"_1510\":1511,\"_1512\":1513,\"_210\":1514,\"_1515\":1516,\"_1517\":18,\"_1503\":635},\"Keep up with the latest News, Interviews, and Talk Coverage from GDC Festival of Gaming right here on Game Developer\",\"newsletterId\",\"buttonText\",\"READ ON\",\"buttonUrl\",\"https://www.gamedeveloper.com/keyword/gdc-festival-of-gaming\",\"horizontal\",\"mode\",\"dark\",\"isOnHomepage\",{\"_98\":1519,\"_1462\":1520,\"_1464\":1521},\"module_link_list\",\"bltce104cc694e153f5\",{\"_1466\":28,\"_1522\":1523,\"_1524\":1525,\"_1526\":1527,\"_1528\":193,\"_1529\":1530,\"_487\":18,\"_1535\":1536},\"listOption\",\"Dynamic\",\"listTitle\",\"Latest Podcasts\",\"icon\",\"Microphone\",\"externalFeed\",\"ctaButton\",{\"_1531\":1532,\"_1533\":1534},\"ctaButtonLink\",\"/keyword/game-developer-podcast\",\"ctaButtonText\",\"See all\",\"articles\",[1537,1546,1551,1558],{\"_198\":199,\"_125\":182,\"_63\":187,\"_1538\":18,\"_1539\":209,\"_1540\":1541,\"_1542\":193,\"_192\":193,\"_640\":18,\"_194\":195,\"_196\":197,\"_924\":1543,\"_923\":18,\"_929\":1545},\"isExternalLink\",\"readTime\",\"publishedDate\",\"2026-06-12T14:15:00.000Z\",\"eventDate\",{\"_926\":18,\"_927\":1544},[],{\"_931\":18,\"_932\":18},{\"_198\":199,\"_125\":297,\"_63\":299,\"_1538\":18,\"_1539\":209,\"_1540\":1547,\"_1542\":193,\"_192\":193,\"_640\":18,\"_194\":195,\"_196\":197,\"_924\":1548,\"_923\":18,\"_929\":1550},\"2026-05-29T15:00:00.000Z\",{\"_926\":18,\"_927\":1549},[],{\"_931\":18,\"_932\":18},{\"_198\":199,\"_125\":1552,\"_63\":1553,\"_1538\":18,\"_1539\":209,\"_1540\":1554,\"_1542\":193,\"_192\":193,\"_640\":18,\"_194\":222,\"_196\":223,\"_924\":1555,\"_923\":18,\"_929\":1557},\"Stories from making Marvel Rivals\",\"/production/stories-from-making-marvel-rivals\",\"2026-05-15T14:30:00.000Z\",{\"_926\":18,\"_927\":1556},[],{\"_931\":18,\"_932\":18},{\"_198\":199,\"_125\":1559,\"_63\":1560,\"_1538\":18,\"_1539\":209,\"_1540\":1561,\"_1542\":193,\"_192\":193,\"_640\":18,\"_194\":1562,\"_196\":1563,\"_924\":1564,\"_923\":18,\"_929\":1566},\"We tested the Steam Controller\",\"/pc/we-tested-the-steam-controller\",\"2026-05-01T14:35:00.000Z\",\"PC\",\"/game-platforms/pc\",{\"_926\":18,\"_927\":1565},[],{\"_931\":18,\"_932\":18},{\"_98\":1461,\"_1462\":1568,\"_1464\":1569},\"blt829b30bf540d67ab\",{\"_1466\":28,\"_125\":148,\"_1467\":1570,\"_210\":1468,\"_905\":1571,\"_1494\":1495,\"_1496\":1495,\"_1497\":-7,\"_1498\":1499,\"_204\":1615,\"_1503\":635},\"Game Developer Collective\",[1572,1587,1601],{\"_98\":1471,\"_1464\":1573},{\"_198\":224,\"_210\":211,\"_176\":1574,\"_181\":1577,\"_183\":1577,\"_186\":1578,\"_188\":1578,\"_917\":1579,\"_190\":1580,\"_192\":193,\"_194\":252,\"_196\":253,\"_200\":1581,\"_208\":1583,\"_924\":1584,\"_923\":18,\"_929\":1586},{\"_48\":1575,\"_179\":1576},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt7a79424246931087/6967e30f40bb4580b53d61e0/rematchfeatured.png\",\"A player character runs around with their arms extended in Rematch, other players stand behind them.\",\"Games that sell DLC and in-app purchases appear to benefit most from subscription services\",\"/business/games-that-sell-dlc-and-in-app-purchases-appear-to-benefit-most-from-subscription-services\",{},\"Jan 27, 2026\",[1582],{\"_61\":227,\"_204\":228,\"_206\":229,\"_913\":914},3,{\"_926\":18,\"_927\":1585},[],{\"_931\":18,\"_932\":18},{\"_98\":1471,\"_1464\":1588},{\"_198\":224,\"_210\":211,\"_176\":1589,\"_181\":1592,\"_183\":1592,\"_186\":1593,\"_188\":1593,\"_917\":1594,\"_190\":1595,\"_192\":193,\"_194\":252,\"_196\":253,\"_200\":1596,\"_208\":269,\"_924\":1598,\"_923\":18,\"_929\":1600},{\"_48\":1590,\"_179\":1591},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltc5a3580ea6a37cdc/689b76d8b5ca625122beeab9/frustrateddeveloperfeatured.jpg\",\"An African American woman looks at a laptop in frustration.\",\"Devs are more worried than ever that generative AI will lower the quality of games\",\"/business/devs-are-more-worried-than-ever-that-generative-ai-will-lower-the-quality-of-games\",{},\"Sep 16, 2025\",[1597],{\"_61\":227,\"_204\":228,\"_206\":229,\"_913\":914},{\"_926\":18,\"_927\":1599},[],{\"_931\":18,\"_932\":18},{\"_98\":1471,\"_1464\":1602},{\"_198\":224,\"_210\":211,\"_176\":1603,\"_181\":1606,\"_183\":1606,\"_186\":1607,\"_188\":1607,\"_917\":1608,\"_190\":1609,\"_192\":193,\"_194\":252,\"_196\":253,\"_200\":1610,\"_208\":259,\"_924\":1612,\"_923\":18,\"_929\":1614},{\"_48\":1604,\"_179\":1605},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt6f01525d72f5b1c3/687669d83f53364453f30bf2/blameinvestorsfeatured.jpg\",\"A man in a suit hides his face as eight hands point at him in blame.\",\"Are 'unreasonable investor expectations' the cause of poor video game market conditions?\",\"/business/are-unreasonable-investor-expectations-the-cause-of-poor-video-game-market-conditions-\",{},\"Jul 15, 2025\",[1611],{\"_61\":227,\"_204\":228,\"_206\":229,\"_913\":914},{\"_926\":18,\"_927\":1613},[],{\"_931\":18,\"_932\":18},{\"_5\":1616,\"_1501\":333},\"/keyword/game-developer-collective\",{\"_98\":1461,\"_1462\":1618,\"_1464\":1619},\"blt8c92597b7c5c40d7\",{\"_1466\":28,\"_125\":1620,\"_1467\":1620,\"_210\":1468,\"_905\":1621,\"_1494\":1681,\"_1496\":1681,\"_1497\":-7,\"_1498\":1499,\"_204\":1682,\"_1503\":635},\"Game Design \u0026 Marketing Highlights\",[1622,1631,1648,1666],{\"_98\":1471,\"_1464\":1623},{\"_198\":199,\"_210\":211,\"_176\":1624,\"_181\":182,\"_183\":182,\"_186\":187,\"_188\":187,\"_917\":1625,\"_190\":191,\"_192\":193,\"_194\":195,\"_196\":197,\"_200\":1626,\"_208\":209,\"_924\":1628,\"_923\":18,\"_929\":1630},{\"_48\":178,\"_179\":180},{},[1627],{\"_61\":203,\"_204\":205,\"_206\":207,\"_913\":193},{\"_926\":18,\"_927\":1629},[],{\"_931\":18,\"_932\":18},{\"_98\":1471,\"_1464\":1632},{\"_198\":224,\"_210\":211,\"_176\":1633,\"_181\":1636,\"_183\":1636,\"_186\":1637,\"_188\":1637,\"_917\":1638,\"_190\":1639,\"_192\":193,\"_194\":195,\"_196\":197,\"_200\":1640,\"_208\":316,\"_924\":1645,\"_923\":18,\"_929\":1647},{\"_48\":1634,\"_179\":1635},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt6b8a441b807e8633/6a26d32b1bd48d52644e5bae/crossfire_characters.png\",\"The lead characters in Crossfire\",\"How That's No Moon's Crossfire evolves the cover-based shooter\",\"/design/how-that-s-no-moon-s-crossfire-evolves-the-cover-based-shooter\",{},\"Jun 8, 2026\",[1641],{\"_61\":1642,\"_204\":1643,\"_206\":996,\"_913\":1644},\"Alessandro Fillari\",\"/author/alessandro-fillari\",\"Contributor\",{\"_926\":18,\"_927\":1646},[],{\"_931\":18,\"_932\":18},{\"_98\":1471,\"_1464\":1649},{\"_198\":224,\"_210\":211,\"_176\":1650,\"_181\":1653,\"_183\":1653,\"_186\":1654,\"_188\":1654,\"_917\":1655,\"_190\":1656,\"_192\":193,\"_194\":195,\"_196\":197,\"_200\":1657,\"_208\":269,\"_924\":1663,\"_923\":18,\"_929\":1665},{\"_48\":1651,\"_179\":1652},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt7fe1e05e1cb8300d/6a0f34efbd84f52505259af3/20260413173659_1.jpg\",\"The Wingman device from Replaced up close\",\"How the Replaced devs fixed display bloat with a stylish gadget\",\"/design/replaced-wingman\",{},\"Jun 4, 2026\",[1658],{\"_61\":1659,\"_204\":1660,\"_206\":1661,\"_913\":1662},\"Diego Argüello\",\"/author/diego-arguello\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt347a0e7bce060c71/682356963510b060418447c4/pic.jpg\",\"Contributing Editor, News\",{\"_926\":18,\"_927\":1664},[],{\"_931\":18,\"_932\":18},{\"_98\":1471,\"_1464\":1667},{\"_198\":224,\"_210\":211,\"_176\":1668,\"_181\":1671,\"_183\":1672,\"_186\":1673,\"_188\":1673,\"_917\":1674,\"_190\":1675,\"_192\":193,\"_194\":252,\"_196\":253,\"_200\":1676,\"_208\":904,\"_924\":1678,\"_923\":18,\"_929\":1680},{\"_48\":1669,\"_179\":1670},\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/blt9c88d6bf2ba5b008/6a2042782928e13c6b7b3c18/Team17_Header.png\",\"The Team17 logo overlaid on a screenshot from Worms Armageddon \",\"Update: Team17 has laid off members of its marketing and communications department\",\"Team17 has laid off members of its marketing and communications department\",\"/business/team17-has-laid-off-members-of-its-marketing-and-communications-department\",{},\"Jun 3, 2026\",[1677],{\"_61\":256,\"_204\":257,\"_206\":258,\"_913\":1477},{\"_926\":18,\"_927\":1679},[],{\"_931\":18,\"_932\":18},\"hide\",{\"_5\":1285,\"_1501\":1683},\"See More\",\"newsletterSignUpPromo\",{\"_125\":1686,\"_845\":193,\"_1509\":1687,\"_1510\":1688,\"_1512\":599,\"_210\":213,\"_1515\":1516},\"Daily news, dev blogs, and stories from Game Developer straight to your inbox\",\"blt3618a0e49d9eaf7a\",\"Stay Updated\",\"metadata\",{\"_1462\":1691,\"_1692\":1693},\"bltd66f4c5b110bcfbd\",\"aid\",\"663656\",\"schema\",[1696],{\"_1697\":1698,\"_1699\":1700,\"_1701\":1702},\"@context\",\"https://schema.org\",\"@type\",\"BreadcrumbList\",\"itemListElement\",[1703,1707],{\"_1699\":1704,\"_1705\":904,\"_61\":539,\"_1706\":10},\"ListItem\",\"position\",\"item\",{\"_1699\":1704,\"_1705\":1708,\"_61\":892,\"_1706\":6},2,\"seo\",{\"_1711\":6,\"_1712\":1713,\"_1714\":1715,\"_1716\":18,\"_1717\":1718,\"_13\":14,\"_1719\":-7},\"canonicalUrl\",\"metaDescription\",\"Explore the latest news and expert commentary on Blogs, brought to you by the editors of Game Developer\",\"metaTitle\",\"Blogs recent news | Game Developer\",\"noIndex\",\"imageUrl\",\"https://eu-images.contentstack.com/v3/assets/blt740a130ae3c5d529/bltba62518415cda0e2/652fe6ddbc479f8697ef691f/default-cubic.png?disable=upscale\u0026width=1200\u0026height=630\u0026fit=crop\",\"mediaLinks\",\"7aiy4mp3ujc\",\"actionData\",\"errors\"]\n");</script><!--$--><script>window.__reactRouterContext.streamController.close();</script><!--/$--><!--/$--></body></html>