CINXE.COM

Game Dev – Outfit7 – Medium

<!DOCTYPE html><html xmlns:cc="http://creativecommons.org/ns#"><head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# medium-com: http://ogp.me/ns/fb/medium-com#"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=contain"><title>Game Dev – Outfit7 – Medium</title><link rel="canonical" href="https://medium.com/outfit7/game-dev/home"><meta name="robots" content="index,follow"><meta name="title" content="Game Dev – Outfit7 – Medium"><meta name="referrer" content="unsafe-url"><meta name="description" content="Game Development Articles. The inside scoop on development, engineering &amp; tech innovation @ Outfit7."><meta name="theme-color" content="#000000"><meta property="og:title" content="Game Dev – Outfit7 – Medium"><meta property="twitter:title" content="Game Dev – Outfit7 – Medium"><meta property="og:url" content="https://medium.com/outfit7/game-dev/home"><meta property="og:image" content="https://cdn-images-1.medium.com/max/1200/1*dCIQWfMya9g57UUL2ZzrJQ.png"><meta property="fb:app_id" content="542599432471018"><meta property="og:description" content="Game Development Articles. The inside scoop on development, engineering &amp; tech innovation @ Outfit7."><meta name="twitter:description" content="Game Development Articles. The inside scoop on development, engineering &amp; tech innovation @ Outfit7."><meta name="twitter:image:src" content="https://cdn-images-1.medium.com/max/1200/1*dCIQWfMya9g57UUL2ZzrJQ.png"><meta property="og:type" content="medium-com:collection"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@Medium"><meta property="og:site_name" content="Medium"><meta name="twitter:app:name:iphone" content="Medium"><meta name="twitter:app:id:iphone" content="828256236"><meta name="twitter:app:url:iphone" content="medium://outfit7/game-dev/home"><meta property="al:ios:app_name" content="Medium"><meta property="al:ios:app_store_id" content="828256236"><meta property="al:android:package" content="com.medium.reader"><meta property="al:android:app_name" content="Medium"><meta property="al:ios:url" content="medium://outfit7/game-dev/home"><meta property="al:android:url" content="medium://outfit7/game-dev/home"><meta property="al:web:url" content="https://medium.com/outfit7/game-dev/home"><link rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml" /><link rel="alternate" href="android-app://com.medium.reader/https/medium.com/outfit7/game-dev/home" /><link rel="stylesheet" href="https://cdn-static-1.medium.com/_/fp/css/main-branding-base.W9J-2zkF03j8TkriAGn1Tg.12.css"><script>!function(n,e){var t,o,i,c=[],f={passive:!0,capture:!0},r=new Date,a="pointerup",u="pointercancel";function p(n,c){t||(t=c,o=n,i=new Date,w(e),s())}function s(){o>=0&&o<i-r&&(c.forEach(function(n){n(o,t)}),c=[])}function l(t){if(t.cancelable){var o=(t.timeStamp>1e12?new Date:performance.now())-t.timeStamp;"pointerdown"==t.type?function(t,o){function i(){p(t,o),r()}function c(){r()}function r(){e(a,i,f),e(u,c,f)}n(a,i,f),n(u,c,f)}(o,t):p(o,t)}}function w(n){["click","mousedown","keydown","touchstart","pointerdown"].forEach(function(e){n(e,l,f)})}w(n),self.perfMetrics=self.perfMetrics||{},self.perfMetrics.onFirstInputDelay=function(n){c.push(n),s()}}(addEventListener,removeEventListener);</script><script>document.domain = document.domain;</script><script>if (window.top !== window.self) window.location = 'about:blank';var OB_startTime = new Date().getTime(); var OB_loadErrors = []; function _onerror(e) { OB_loadErrors.push(e) }; if (document.addEventListener) document.addEventListener("error", _onerror, true); else if (document.attachEvent) document.attachEvent("onerror", _onerror); function _asyncScript(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("script"); s.type = "text/javascript"; s.async = true; s.src = u; f.parentNode.insertBefore(s, f);}function _asyncStyles(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("link"); s.rel = "stylesheet"; s.href = u; f.parentNode.insertBefore(s, f); return s}(new Image()).src = "/_/stat?event=pixel.load&origin=" + encodeURIComponent(location.origin);</script><script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga("create", "G-7JY7T788PK", "auto", {"allowLinker": true, "legacyCookieDomain": window.location.hostname});ga("send", "pageview");</script><script async src="https://www.google-analytics.com/analytics.js"></script><script>(function () {var height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; document.write("<style>section.section-image--fullBleed.is-backgrounded {padding-top: " + Math.round(1.1 * height) + "px;}section.section-image--fullScreen.is-backgrounded, section.section-image--coverFade.is-backgrounded {min-height: " + height + "px; padding-top: " + Math.round(0.5 * height) + "px;}.u-height100vh {height: " + height + "px !important;}.u-height110vh {height: " + Math.round(1.1 * height) + "px !important;}.u-minHeight100vh {min-height: " + height + "px !important;}.u-maxHeight100vh {max-height: " + height + "px !important;}section.section-image--coverFade {height: " + height + "px;}.section-aspectRatioViewportPlaceholder, .section-aspectRatioViewportCropPlaceholder {max-height: " + height + "px;}.section-aspectRatioViewportBottomSpacer, .section-aspectRatioViewportBottomPlaceholder {max-height: " + Math.round(0.5 * height) + "px;}.zoomable:before {top: " + (-1 * height) + "px; left: " + (-1 * width) + "px; padding: " + height + "px " + width + "px;}</style>");})()</script><!--[if lt IE 9]><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.12.js"></script><![endif]--><link rel="icon" href="https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19" class="js-favicon"><link rel="apple-touch-icon" sizes="152x152" href="https://cdn-images-1.medium.com/fit/c/304/304/1*dCIQWfMya9g57UUL2ZzrJQ.png"><link rel="apple-touch-icon" sizes="120x120" href="https://cdn-images-1.medium.com/fit/c/240/240/1*dCIQWfMya9g57UUL2ZzrJQ.png"><link rel="apple-touch-icon" sizes="76x76" href="https://cdn-images-1.medium.com/fit/c/152/152/1*dCIQWfMya9g57UUL2ZzrJQ.png"><link rel="apple-touch-icon" sizes="60x60" href="https://cdn-images-1.medium.com/fit/c/120/120/1*dCIQWfMya9g57UUL2ZzrJQ.png"><link rel="mask-icon" href="https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg" color="#171717"></head><body itemscope class=" browser-ie os-windows v-unbound v-glyph v-glyph--m2-unbound-source-serif-pro is-noJs"><script>document.body.className = document.body.className.replace(/(^|\s)is-noJs(\s|$)/, "$1is-js$2")</script><div class="site-main" id="container"><div class="butterBar butterBar--error"></div><div class="surface"><div id="prerendered" class="screenContent"><div class="metabar u-clearfix u-boxShadow4px12pxBlackLighter u-textColorTransparentWhiteDarker js-metabar"><div class="branch-journeys-top"></div><div class="js-metabarMiddle metabar-inner u-marginAuto u-maxWidth1032 u-flexCenter u-justifyContentSpaceBetween u-height65 u-xs-height56 u-paddingHorizontal20"><div class="metabar-block u-flex1 u-flexCenter"><div class="js-metabarLogoLeft"><a href="https://medium.com/" data-log-event="home" class="siteNav-logo u-fillBlack u-flex0 u-flexCenter u-paddingTop0"><span class="svgIcon svgIcon--wordmarkMedium svgIcon--120x26px u-flex"><svg class="svgIcon-use" width="120" height="26" ><path d="M29.57 1.404l.036-.008V1.12h-7.27l-6.75 15.979-6.75-15.98H1.003v.278l.035.008c1.327.302 2 .752 2 2.374v18.993c0 1.623-.676 2.073-2.003 2.374L1 25.153v.279h5.315v-.278l-.035-.008c-1.327-.302-2-.751-2-2.374V4.88l8.67 20.552h.492l8.924-21.125V23.24c-.114 1.282-.782 1.677-1.983 1.95l-.036.009v.275h9.259V25.2l-.036-.008c-1.203-.274-1.886-.67-2-1.95l-.006-19.464h.006c0-1.622.674-2.072 2-2.374zm4.23 12.582c.15-3.412 1.367-5.875 3.41-5.918.629.01 1.157.219 1.568.62.872.852 1.282 2.634 1.219 5.298h-6.198zm-.092.962h10.85v-.046c-.03-2.61-.78-4.64-2.228-6.033-1.25-1.204-3.103-1.867-5.048-1.867h-.043c-1.01 0-2.248.246-3.13.693a7.316 7.316 0 00-2.623 2.086c-1.185 1.479-1.903 3.477-2.078 5.724a13.717 13.717 0 00-.04.755c-.004.195-.005.39-.001.587.117 5.087 2.846 9.153 7.692 9.153 4.254 0 6.73-3.132 7.348-7.336l-.312-.11c-1.085 2.259-3.034 3.628-5.252 3.461-3.028-.228-5.347-3.32-5.137-7.066m23.122 6.893c-.356.85-1.099 1.319-2.094 1.319-.995 0-1.905-.689-2.552-1.939-.694-1.342-1.06-3.24-1.06-5.487 0-4.678 1.445-7.704 3.68-7.704.937 0 1.674.468 2.026 1.284v12.527zm7.198 3.335c-1.327-.316-2-.787-2-2.492V0l-8.062 2.392v.293l.05-.004c1.111-.09 1.866.064 2.304.472.343.32.51.809.51 1.498v3.11C56.033 7.25 55.088 7 53.94 7c-2.326 0-4.453.987-5.986 2.779-1.599 1.867-2.444 4.42-2.444 7.38 0 5.287 2.584 8.84 6.43 8.84 2.25 0 4.06-1.242 4.888-3.336v2.811h7.233v-.29l-.035-.008zM70.94 3.085c0-1.65-1.236-2.896-2.875-2.896-1.632 0-2.908 1.272-2.908 2.896 0 1.624 1.278 2.896 2.908 2.896 1.64 0 2.875-1.245 2.875-2.896zm1.903 22.092c-1.327-.316-2-.787-2-2.492h-.006V7.055l-7.234 2.092v.284l.043.004c1.566.14 1.994.683 1.994 2.525v13.515h7.24v-.29l-.037-.008zm18.536 0c-1.327-.316-2-.787-2-2.492V7.055L82.49 9.078v.285l.04.004c1.28.136 1.65.71 1.65 2.56v9.88c-.426.85-1.227 1.356-2.196 1.39-1.573 0-2.439-1.07-2.439-3.012V7.055l-7.234 2.092v.284l.044.004c1.565.14 1.994.683 1.994 2.525v8.362a9.443 9.443 0 00.15 1.741l.13.57C75.243 24.845 76.848 26 79.362 26c2.129 0 3.996-1.328 4.818-3.405v2.885h7.233v-.291l-.034-.012zm28.102.298v-.291l-.035-.009c-1.44-.334-2.001-.964-2.001-2.248V12.295C117.445 8.98 115.597 7 112.5 7c-2.257 0-4.16 1.314-4.893 3.36-.582-2.168-2.257-3.36-4.734-3.36-2.175 0-3.88 1.156-4.612 3.11V7.056l-7.233 2.006v.286l.043.004c1.547.138 1.994.697 1.994 2.492v13.631h6.75v-.29l-.037-.01c-1.148-.271-1.519-.767-1.519-2.04V10.95c.304-.715.917-1.562 2.127-1.562 1.504 0 2.266 1.05 2.266 3.116v12.972h6.751v-.29l-.035-.01c-1.149-.271-1.52-.767-1.52-2.04V12.294a7.107 7.107 0 00-.095-1.21c.322-.777.97-1.696 2.23-1.696 1.524 0 2.265 1.02 2.265 3.116v12.972h7.233z"/></svg></span><span class="u-textScreenReader">Homepage</span></a></div><div class="u-paddingLeft10 u-sm-show r-paddingRight10"><a href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com/outfit7%3F~feature=LoMobileNavBar&~channel=ShowCollectionHome&~stage=m2">Open in app</a></div></div><div class="metabar-block u-flex0 u-flexCenter"><div class="u-flexCenter u-height65 u-xs-height56"><div class="buttonSet buttonSet--wide u-lineHeightInherit"><a class="button button--primary button--chromeless u-accentColor--buttonNormal is-inSiteNavBar u-xs-hide js-signInButton" href="https://medium.com/m/signin?redirect=https%3A%2F%2Fmedium.com%2Foutfit7%2Fgame-dev%2Fhome&amp;source=--------------------------nav_reg&amp;operation=login" data-action="sign-in-prompt" data-redirect="https://medium.com/outfit7/game-dev/home" data-action-source="--------------------------nav_reg">Sign in</a><a class="button button--primary button--withChrome u-accentColor--buttonNormal is-inSiteNavBar js-signUpButton" href="https://medium.com/m/signin?redirect=https%3A%2F%2Fmedium.com%2Foutfit7%2Fgame-dev%2Fhome&amp;source=--------------------------nav_reg&amp;operation=register" data-action="sign-up-prompt" data-redirect="https://medium.com/outfit7/game-dev/home" data-action-source="--------------------------nav_reg">Get started</a></div></div></div></div><div class="u-tintBgColor u-tintSpectrum " ><div class="metabar-inner u-marginAuto u-maxWidth1032 u-paddingHorizontal20 js-metabarBottom"><nav role="navigation" class="metabar-block metabar-block--below u-flexCenter u-overflowHidden u-height54"><div class="u-flexCenter u-overflowHidden"><div class="u-marginRight40"><a href="https://medium.com/outfit7?source=logo-lo_03f97156ccc4---6ec626d5ad62" class="u-flexCenter js-collectionLogoOrName"><img height="36" width="36" src="https://cdn-images-1.medium.com/letterbox/72/72/50/50/1*nTxl_7KgWQYo8PfVROUK_A.png?source=logoAvatar-lo_03f97156ccc4---6ec626d5ad62" alt="Outfit7" /></a></div><div class="u-overflowHidden u-xs-hide"><ul class="u-textAlignLeft u-noWrap u-overflowX u-height80 u-marginTop40 js-collectionNavItems"><li class="metabar-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0 u-xs-paddingTop10"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/outfit7/latest">All</a></li><li class="metabar-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0 u-xs-paddingTop10"><a class="link link--darker link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/outfit7/game-dev/home">Game Dev</a></li><li class="metabar-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0 u-xs-paddingTop10"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/outfit7/qa/home">QA</a></li><li class="metabar-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0 u-xs-paddingTop10"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/outfit7/the-outfit7-tech-blog-13e11ddd19e7">About</a></li><span class="u-borderLeft1 u-baseColor--borderLight"></span><li class="metabar-navItem js-collectionNavItem is-external u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0 u-xs-paddingTop10"><a class="link link--darkenOnHover u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://outfit7.com/careers/jobs?field=technology&amp;utm_source=social&amp;utm_medium=medium&amp;utm_campaign=tech-jobs" rel="nofollow noopener" target="_blank">Jobs</a></li></ul></div></div></nav></div></div></div><div class="metabar metabar--spacer js-metabarSpacer u-tintBgColor u-height119 u-xs-height110"></div><h1 class="u-maxWidth1000 u-marginAuto u-paddingTop10 u-paddingLeft20 u-paddingRight20 u-alignMiddle u-height110 u-fontSize50 u-textColorDark u-contentSansRegular u-noWrapWithEllipsis u-xs-fontSize40 u-xs-height100 u-xs-textAlignCenter">Game Dev</h1><div class="u-widthFull u-borderBottomLighter"></div><div class="u-marginBottom40 js-categoryStream"><div class="streamItem streamItem--section js-streamItem"><section class="u-marginTop30 u-xs-margin0 u-marginBottom15 u-maxWidth1032 u-sm-paddingLeft20 u-sm-paddingRight20 u-borderBox u-marginAuto"><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight15 u-size8of12" data-source="collection_category---4------0-----------------------" data-post-id="ba5d97a4c1c2" data-index="0"><div class="u-lineHeightBase postItem u-marginRight3"><a href="https://medium.com/outfit7/outfit7s-art-pipeline-ba5d97a4c1c2?source=collection_category---4------0-----------------------" data-action="open-post" data-action-value="https://medium.com/outfit7/outfit7s-art-pipeline-ba5d97a4c1c2?source=collection_category---4------0-----------------------" class="u-block u-xs-height170 u-height350 u-width100pct u-floatLeft u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/2000/0*YchegUssBmvcXiBp&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Outfit7’s Art Pipeline</span></a></div></div><div class="col u-xs-marginBottom10 u-paddingLeft9 u-paddingRight12 u-paddingTop0 u-sm-paddingTop20 u-paddingBottom25 u-size4of12 u-xs-size12of12 u-marginBottom30"><a class="" href="https://medium.com/outfit7/outfit7s-art-pipeline-ba5d97a4c1c2?source=collection_category---4------0-----------------------" data-action-source="collection_category---4------0-----------------------" data-post-id="ba5d97a4c1c2"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp4 u-fontSize30 u-size12of12 u-xs-size12of12 u-xs-fontSize24">Outfit7’s Art Pipeline</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">TL;DR: We’re taking a look at Outfit7’s art pipeline and how we transitioned from a proprietary system to the commercial solution — and a…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@samy.benrabah" data-action="show-user-card" data-action-value="1357db1365fb" data-action-type="hover" data-user-id="1357db1365fb" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*0bdDD8vd7YgYyqhLHCMoJQ.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Samy Ben Rabah"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@samy.benrabah" data-action="show-user-card" data-action-value="1357db1365fb" data-action-type="hover" data-user-id="1357db1365fb" dir="auto">Samy Ben Rabah</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-08-22T07:15:16.814Z">Aug 21, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="1 min read"></span></div></div></div></div></div></div><div class="row u-marginTop15 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_category---4------1-----------------------" data-post-id="ce93b31b61bd" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://medium.com/outfit7/creating-a-custom-animation-system-for-unity-ce93b31b61bd?source=collection_category---4------1-----------------------" data-action="open-post" data-action-value="https://medium.com/outfit7/creating-a-custom-animation-system-for-unity-ce93b31b61bd?source=collection_category---4------1-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*TbmS5EonHW_ICYg3&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Creating a custom animation system for Unity</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/outfit7/creating-a-custom-animation-system-for-unity-ce93b31b61bd?source=collection_category---4------1-----------------------" data-action-source="collection_category---4------1-----------------------" data-post-id="ce93b31b61bd"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Creating a custom animation system for Unity</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">TL;DR: Making a custom animation system to reduce the size of assets by 50% and solving all the problems that come with it.</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@blaz.tomazic" data-action="show-user-card" data-action-value="5d16f8c96c79" data-action-type="hover" data-user-id="5d16f8c96c79" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*o7nAdO_BYV_0AkMg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Blaž Tomažič"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@blaz.tomazic" data-action="show-user-card" data-action-value="5d16f8c96c79" data-action-type="hover" data-user-id="5d16f8c96c79" dir="auto">Blaž Tomažič</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-07-10T08:52:39.704Z">Jul 10, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="16 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_category---4------2-----------------------" data-post-id="14b640e2757b" data-index="2"><div class="u-lineHeightBase postItem"><a href="https://medium.com/outfit7/building-the-ultimate-mobile-game-engine-starlite-14b640e2757b?source=collection_category---4------2-----------------------" data-action="open-post" data-action-value="https://medium.com/outfit7/building-the-ultimate-mobile-game-engine-starlite-14b640e2757b?source=collection_category---4------2-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*d9Zk7nRSza7P9wnjEbMOXQ.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Building the Ultimate Mobile Game Engine: Starlite</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/outfit7/building-the-ultimate-mobile-game-engine-starlite-14b640e2757b?source=collection_category---4------2-----------------------" data-action-source="collection_category---4------2-----------------------" data-post-id="14b640e2757b"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Building the Ultimate Mobile Game Engine: Starlite</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">The making of our game engine, Starlite, why we did it, and the impressive results.</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@crt.kristl" data-action="show-user-card" data-action-value="b9d3e3fbf665" data-action-type="hover" data-user-id="b9d3e3fbf665" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*52vDhSjGYB9cVy6U" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Črt Kristl"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@crt.kristl" data-action="show-user-card" data-action-value="b9d3e3fbf665" data-action-type="hover" data-user-id="b9d3e3fbf665" dir="auto">Črt Kristl</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-06-01T08:14:11.723Z">Jun 1, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="1 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_category---4------3-----------------------" data-post-id="1e5c4a50b6c8" data-index="3"><div class="u-lineHeightBase postItem"><a href="https://medium.com/outfit7/kicking-the-habit-jenkins-detox-in-production-1e5c4a50b6c8?source=collection_category---4------3-----------------------" data-action="open-post" data-action-value="https://medium.com/outfit7/kicking-the-habit-jenkins-detox-in-production-1e5c4a50b6c8?source=collection_category---4------3-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*JQsjnND9Wcgtk2nE&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Kicking the habit: Jenkins detox in production</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/outfit7/kicking-the-habit-jenkins-detox-in-production-1e5c4a50b6c8?source=collection_category---4------3-----------------------" data-action-source="collection_category---4------3-----------------------" data-post-id="1e5c4a50b6c8"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Kicking the habit: Jenkins detox in production</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Moving the O7 game build system into the cloud opened up new possibilities for individual game development teams around scaling…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@matic.miklavcic" data-action="show-user-card" data-action-value="1b04d7f0fde6" data-action-type="hover" data-user-id="1b04d7f0fde6" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*PhI0qcA7b7tgksQB.jpg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Matic Miklavčič"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@matic.miklavcic" data-action="show-user-card" data-action-value="1b04d7f0fde6" data-action-type="hover" data-user-id="1b04d7f0fde6" dir="auto">Matic Miklavčič</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-03-02T09:27:55.154Z">Mar 2, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="11 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop15 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_category---4------4-----------------------" data-post-id="2c6b53a39bf" data-index="4"><div class="u-lineHeightBase postItem"><a href="https://medium.com/outfit7/improving-loading-times-in-talking-tom-hero-dash-2c6b53a39bf?source=collection_category---4------4-----------------------" data-action="open-post" data-action-value="https://medium.com/outfit7/improving-loading-times-in-talking-tom-hero-dash-2c6b53a39bf?source=collection_category---4------4-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*vqgnEWlq1N7Wqa_l&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Improving Loading Times in Talking Tom Hero Dash</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/outfit7/improving-loading-times-in-talking-tom-hero-dash-2c6b53a39bf?source=collection_category---4------4-----------------------" data-action-source="collection_category---4------4-----------------------" data-post-id="2c6b53a39bf"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Improving Loading Times in Talking Tom Hero Dash</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">By combining our experiences in game development, the team at Outfit7 were able to decrease the game load times in Talking Tom Hero…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@tomaz.treven" data-action="show-user-card" data-action-value="6e0aea09a013" data-action-type="hover" data-user-id="6e0aea09a013" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*X1R5AmakN-sHmvzT0UwC0Q.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Tomaz Treven"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@tomaz.treven" data-action="show-user-card" data-action-value="6e0aea09a013" data-action-type="hover" data-user-id="6e0aea09a013" dir="auto">Tomaz Treven</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2022-11-22T11:08:40.640Z">Nov 22, 2022</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="10 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_category---4------5-----------------------" data-post-id="46cf06181893" data-index="5"><div class="u-lineHeightBase postItem"><a href="https://medium.com/outfit7/the-my-talking-angela-2-hair-system-46cf06181893?source=collection_category---4------5-----------------------" data-action="open-post" data-action-value="https://medium.com/outfit7/the-my-talking-angela-2-hair-system-46cf06181893?source=collection_category---4------5-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*QeoWDJ4qQhrCS_Ei&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">The My Talking Angela 2 Hair System</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/outfit7/the-my-talking-angela-2-hair-system-46cf06181893?source=collection_category---4------5-----------------------" data-action-source="collection_category---4------5-----------------------" data-post-id="46cf06181893"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">The My Talking Angela 2 Hair System</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">The making of an easy-to-configure hair system for our hit game, including what it took to make it, and how everything came together.</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@aleksander.gregorka" data-action="show-user-card" data-action-value="565c34edb417" data-action-type="hover" data-user-id="565c34edb417" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*cAYUfjr9zj796olrnlP1eg.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Aleksander Gregorka"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@aleksander.gregorka" data-action="show-user-card" data-action-value="565c34edb417" data-action-type="hover" data-user-id="565c34edb417" dir="auto">Aleksander Gregorka</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2022-11-16T16:19:34.780Z">Nov 16, 2022</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="13 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_category---4------6-----------------------" data-post-id="13e11ddd19e7" data-index="6"><div class="u-lineHeightBase postItem"><a href="https://medium.com/outfit7/the-outfit7-tech-blog-13e11ddd19e7?source=collection_category---4------6-----------------------" data-action="open-post" data-action-value="https://medium.com/outfit7/the-outfit7-tech-blog-13e11ddd19e7?source=collection_category---4------6-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*rviJN0y367MrE2fx&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">The Outfit7 Tech Blog</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/outfit7/the-outfit7-tech-blog-13e11ddd19e7?source=collection_category---4------6-----------------------" data-action-source="collection_category---4------6-----------------------" data-post-id="13e11ddd19e7"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">The Outfit7 Tech Blog</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Hello, world! That line’s been printed to console by every programmer at least once in their lifetime. And it’s also an appropriate way to…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@jon.premik" data-action="show-user-card" data-action-value="83a93acabf8c" data-action-type="hover" data-user-id="83a93acabf8c" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*IL2ob1GA8JYVBtWVim8kwg.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Jon Premik"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@jon.premik" data-action="show-user-card" data-action-value="83a93acabf8c" data-action-type="hover" data-user-id="83a93acabf8c" dir="auto">Jon Premik</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2022-11-09T14:03:43.118Z">Nov 9, 2022</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="1 min read"></span></div></div></div></div></div></div></div></section></div></div><style class="js-collectionStyle"> .u-accentColor--borderLight {border-color: #858484 !important;} .u-accentColor--borderNormal {border-color: #858484 !important;} .u-accentColor--borderDark {border-color: #737171 !important;} .u-accentColor--iconLight .svgIcon,.u-accentColor--iconLight.svgIcon {fill: #858484 !important;} .u-accentColor--iconNormal .svgIcon,.u-accentColor--iconNormal.svgIcon {fill: #858484 !important;} .u-accentColor--iconDark .svgIcon,.u-accentColor--iconDark.svgIcon {fill: #737171 !important;} .u-accentColor--textNormal {color: #737171 !important;} .u-accentColor--hoverTextNormal:hover {color: #737171 !important;} .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #696868 !important;} .u-accentColor--textDark {color: #696868 !important;} .u-accentColor--backgroundLight {background-color: #858484 !important;} .u-accentColor--backgroundNormal {background-color: #858484 !important;} .u-accentColor--backgroundDark {background-color: #737171 !important;} .u-accentColor--buttonDark {border-color: #737171 !important; color: #696868 !important;} .u-accentColor--buttonDark:hover {border-color: #696868 !important;} .u-accentColor--buttonDark .icon:before,.u-accentColor--buttonDark .svgIcon{color: #737171 !important; fill: #737171 !important;} .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #858484 !important; color: #737171 !important;} .u-accentColor--buttonNormal:hover {border-color: #737171 !important;} .u-accentColor--buttonNormal .icon:before,.u-accentColor--buttonNormal .svgIcon{color: #858484 !important; fill: #858484 !important;} .u-accentColor--buttonNormal.button--filled .icon:before,.u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-accentColor--buttonDark.button--filled,.u-accentColor--buttonDark.button--withChrome.is-active,.u-accentColor--fillWhenActive.is-active {background-color: #737171 !important; border-color: #737171 !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: #858484 !important; border-color: #858484 !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .postArticle.is-withAccentColors .markup--user,.postArticle.is-withAccentColors .markup--query {color: #737171 !important;}.u-tintBgColor {background-color: rgba(17, 17, 17, 1) !important;}.u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(17, 17, 17, 1) 0%, rgba(17, 17, 17, 0) 100%) !important;}.u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(17, 17, 17, 0) 0%, rgba(17, 17, 17, 1) 100%) !important;} .u-tintSpectrum .u-baseColor--borderLight {border-color: #939292 !important;} .u-tintSpectrum .u-baseColor--borderNormal {border-color: #BDBBBB !important;} .u-tintSpectrum .u-baseColor--borderDark {border-color: #E5E2E2 !important;} .u-tintSpectrum .u-baseColor--iconLight .svgIcon,.u-tintSpectrum .u-baseColor--iconLight.svgIcon {fill: #939292 !important;} .u-tintSpectrum .u-baseColor--iconNormal .svgIcon,.u-tintSpectrum .u-baseColor--iconNormal.svgIcon {fill: #BDBBBB !important;} .u-tintSpectrum .u-baseColor--iconDark .svgIcon,.u-tintSpectrum .u-baseColor--iconDark.svgIcon {fill: #E5E2E2 !important;} .u-tintSpectrum .u-baseColor--textNormal {color: #BDBBBB !important;} .u-tintSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--textDark {color: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--textDarker {color: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--backgroundLight {background-color: #939292 !important;} .u-tintSpectrum .u-baseColor--backgroundNormal {background-color: #BDBBBB !important;} .u-tintSpectrum .u-baseColor--backgroundDark {background-color: #E5E2E2 !important;} .u-tintSpectrum .u-baseColor--buttonLight {border-color: #939292 !important; color: #939292 !important;} .u-tintSpectrum .u-baseColor--buttonLight:hover {border-color: #939292 !important;} .u-tintSpectrum .u-baseColor--buttonLight .icon:before,.u-tintSpectrum .u-baseColor--buttonLight .svgIcon {color: #939292 !important; fill: #939292 !important;} .u-tintSpectrum .u-baseColor--buttonDark {border-color: #E5E2E2 !important; color: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--buttonDark:hover {border-color: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--buttonDark .icon:before,.u-tintSpectrum .u-baseColor--buttonDark .svgIcon {color: #E5E2E2 !important; fill: #E5E2E2 !important;} .u-tintSpectrum .u-baseColor--buttonNormal {border-color: #BDBBBB !important; color: #BDBBBB !important;} .u-tintSpectrum .u-baseColor--buttonNormal:hover {border-color: #E5E2E2 !important;} .u-tintSpectrum .u-baseColor--buttonNormal .icon:before,.u-tintSpectrum .u-baseColor--buttonNormal .svgIcon {color: #BDBBBB !important; fill: #BDBBBB !important;} .u-tintSpectrum .u-baseColor--buttonDark.button--filled,.u-tintSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: #E5E2E2 !important; border-color: #E5E2E2 !important; color: rgba(17, 17, 17, 1) !important; fill: rgba(17, 17, 17, 1) !important;} .u-tintSpectrum .u-baseColor--buttonNormal.button--filled,.u-tintSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: #BDBBBB !important; border-color: #BDBBBB !important; color: rgba(17, 17, 17, 1) !important; fill: rgba(17, 17, 17, 1) !important;} .u-tintSpectrum .u-baseColor--link {color: #BDBBBB !important;} .u-tintSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--link.link--darken:hover,.u-tintSpectrum .u-baseColor--link.link--darken:focus,.u-tintSpectrum .u-baseColor--link.link--darken:active {color: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--link.link--dark {color: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-tintSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-tintSpectrum .u-baseColor--link.link--dark.link--darken:active {color: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--link.link--darker {color: #F8F5F5 !important;} .u-tintSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: #939292;} .u-tintSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: #939292;} .u-tintSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: #939292;} .u-tintSpectrum .ui-h1,.u-tintSpectrum .ui-h2,.u-tintSpectrum .ui-h3,.u-tintSpectrum .ui-h4,.u-tintSpectrum .ui-brand1,.u-tintSpectrum .ui-brand2,.u-tintSpectrum .ui-captionStrong {color: #F8F5F5 !important; fill: #F8F5F5 !important;} .u-tintSpectrum .ui-body,.u-tintSpectrum .ui-caps {color: #F8F5F5 !important; fill: #F8F5F5 !important;} .u-tintSpectrum .ui-summary,.u-tintSpectrum .ui-caption {color: #939292 !important; fill: #939292 !important;} .u-tintSpectrum .u-accentColor--borderLight {border-color: #939292 !important;} .u-tintSpectrum .u-accentColor--borderNormal {border-color: #BDBBBB !important;} .u-tintSpectrum .u-accentColor--borderDark {border-color: #E5E2E2 !important;} .u-tintSpectrum .u-accentColor--iconLight .svgIcon,.u-tintSpectrum .u-accentColor--iconLight.svgIcon {fill: #939292 !important;} .u-tintSpectrum .u-accentColor--iconNormal .svgIcon,.u-tintSpectrum .u-accentColor--iconNormal.svgIcon {fill: #BDBBBB !important;} .u-tintSpectrum .u-accentColor--iconDark .svgIcon,.u-tintSpectrum .u-accentColor--iconDark.svgIcon {fill: #E5E2E2 !important;} .u-tintSpectrum .u-accentColor--textNormal {color: #BDBBBB !important;} .u-tintSpectrum .u-accentColor--hoverTextNormal:hover {color: #BDBBBB !important;} .u-tintSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #F8F5F5 !important;} .u-tintSpectrum .u-accentColor--textDark {color: #F8F5F5 !important;} .u-tintSpectrum .u-accentColor--backgroundLight {background-color: #939292 !important;} .u-tintSpectrum .u-accentColor--backgroundNormal {background-color: #BDBBBB !important;} .u-tintSpectrum .u-accentColor--backgroundDark {background-color: #E5E2E2 !important;} .u-tintSpectrum .u-accentColor--buttonDark {border-color: #E5E2E2 !important; color: #F8F5F5 !important;} .u-tintSpectrum .u-accentColor--buttonDark:hover {border-color: #F8F5F5 !important;} .u-tintSpectrum .u-accentColor--buttonDark .icon:before,.u-tintSpectrum .u-accentColor--buttonDark .svgIcon{color: #E5E2E2 !important; fill: #E5E2E2 !important;} .u-tintSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #BDBBBB !important; color: #BDBBBB !important;} .u-tintSpectrum .u-accentColor--buttonNormal:hover {border-color: #E5E2E2 !important;} .u-tintSpectrum .u-accentColor--buttonNormal .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal .svgIcon{color: #BDBBBB !important; fill: #BDBBBB !important;} .u-tintSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(17, 17, 17, 1) !important; fill: rgba(17, 17, 17, 1) !important;} .u-tintSpectrum .u-accentColor--buttonDark.button--filled,.u-tintSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-tintSpectrum .u-accentColor--fillWhenActive.is-active {background-color: #E5E2E2 !important; border-color: #E5E2E2 !important; color: rgba(17, 17, 17, 1) !important; fill: rgba(17, 17, 17, 1) !important;} .u-tintSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-tintSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: #BDBBBB !important; border-color: #BDBBBB !important; color: rgba(17, 17, 17, 1) !important; fill: rgba(17, 17, 17, 1) !important;} .u-tintSpectrum .postArticle.is-withAccentColors .markup--user,.u-tintSpectrum .postArticle.is-withAccentColors .markup--query {color: #BDBBBB !important;} .u-accentColor--highlightFaint {background-color: rgba(243, 240, 239, 1) !important;} .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(225, 223, 222, 1) !important;} .postArticle.is-withAccentColors .markup--quote.is-other {background-color: rgba(243, 240, 239, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(243, 240, 239, 1), rgba(243, 240, 239, 1));} .postArticle.is-withAccentColors .markup--quote.is-me {background-color: rgba(233, 231, 230, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(233, 231, 230, 1), rgba(233, 231, 230, 1));} .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: rgba(225, 223, 222, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(225, 223, 222, 1), rgba(225, 223, 222, 1));} .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: rgba(225, 223, 222, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(225, 223, 222, 1), rgba(225, 223, 222, 1));} .postArticle.is-withAccentColors .markup--highlight {background-color: rgba(225, 223, 222, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(225, 223, 222, 1), rgba(225, 223, 222, 1));}</style><style class="js-collectionStyleConstant">.u-imageBgColor {background-color: rgba(0, 0, 0, 0.24705882352941178);} .u-imageSpectrum .u-baseColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-baseColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-baseColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--iconLight .svgIcon,.u-imageSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--iconNormal .svgIcon,.u-imageSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--iconDark .svgIcon,.u-imageSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textDark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textDarker {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-baseColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important; color: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-baseColor--buttonLight .icon:before,.u-imageSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonDark .icon:before,.u-imageSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonNormal .icon:before,.u-imageSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonDark.button--filled,.u-imageSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-baseColor--buttonNormal.button--filled,.u-imageSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-baseColor--link {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--darken:active {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--dark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--darker {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .ui-h1,.u-imageSpectrum .ui-h2,.u-imageSpectrum .ui-h3,.u-imageSpectrum .ui-h4,.u-imageSpectrum .ui-brand1,.u-imageSpectrum .ui-brand2,.u-imageSpectrum .ui-captionStrong {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .ui-body,.u-imageSpectrum .ui-caps {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .ui-summary,.u-imageSpectrum .ui-caption {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-accentColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-accentColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-accentColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--iconLight .svgIcon,.u-imageSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-accentColor--iconNormal .svgIcon,.u-imageSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--iconDark .svgIcon,.u-imageSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--textDark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-accentColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark .icon:before,.u-imageSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-accentColor--buttonDark.button--filled,.u-imageSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-imageSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-imageSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .postArticle.is-withAccentColors .markup--user,.u-imageSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--highlightFaint {background-color: rgba(255, 255, 255, 0.2) !important;} .u-imageSpectrum .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(255, 255, 255, 0.6) !important;} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: rgba(255, 255, 255, 0.2) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: rgba(255, 255, 255, 0.4) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.4));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));}.u-resetSpectrum .u-tintBgColor {background-color: rgba(255, 255, 255, 1) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 100%) !important;} .u-resetSpectrum .u-baseColor--borderLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--borderNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--borderDark {border-color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--iconLight .svgIcon,.u-resetSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--iconNormal .svgIcon,.u-resetSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--iconDark .svgIcon,.u-resetSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textNormal {color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textDark {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textDarker {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--backgroundLight {background-color: rgba(0, 0, 0, 0.09803921568627451) !important;} .u-resetSpectrum .u-baseColor--backgroundNormal {background-color: rgba(0, 0, 0, 0.2) !important;} .u-resetSpectrum .u-baseColor--backgroundDark {background-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight .icon:before,.u-resetSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonDark {border-color: rgba(0, 0, 0, 0.6) !important; color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--buttonDark .icon:before,.u-resetSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important; color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonNormal .icon:before,.u-resetSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(0, 0, 0, 0.4980392156862745) !important; fill: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonDark.button--filled,.u-resetSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2980392156862745) !important; border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-baseColor--buttonNormal.button--filled,.u-resetSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2) !important; border-color: rgba(0, 0, 0, 0.2) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-baseColor--link {color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--darken:active {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--dark {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--link.link--darker {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .ui-h1,.u-resetSpectrum .ui-h2,.u-resetSpectrum .ui-h3,.u-resetSpectrum .ui-h4,.u-resetSpectrum .ui-brand1,.u-resetSpectrum .ui-brand2,.u-resetSpectrum .ui-captionStrong {color: rgba(0, 0, 0, 0.8) !important; fill: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .ui-body,.u-resetSpectrum .ui-caps {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .ui-summary,.u-resetSpectrum .ui-caption {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-accentColor--borderLight {border-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--borderNormal {border-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--borderDark {border-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--iconLight .svgIcon,.u-resetSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--iconNormal .svgIcon,.u-resetSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--iconDark .svgIcon,.u-resetSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--textNormal {color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--textDark {color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundLight {background-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundNormal {background-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundDark {background-color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark {border-color: rgba(17, 128, 14, 1) !important; color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark .icon:before,.u-resetSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(15, 115, 12, 1) !important; fill: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(26, 137, 23, 1) !important; color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(17, 128, 14, 1) !important; fill: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark.button--filled,.u-resetSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-resetSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(15, 115, 12, 1) !important; border-color: rgba(15, 115, 12, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-resetSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: rgba(17, 128, 14, 1) !important; border-color: rgba(17, 128, 14, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .postArticle.is-withAccentColors .markup--user,.u-resetSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(17, 128, 14, 1) !important;}</style><div class="container u-maxWidth1072 u-hide"><div class="u-marginTop10 u-paddingTop10 u-paddingBottom30 u-borderTopLighter"><div class="linkSet u-clearfix"><div class="u-floatRight u-textColorNormal u-baseColor--textNormal u-xs-floatLeft"><a class="button button--chromeless u-baseColor--buttonNormal u-marginLeft15 u-lineHeight35 u-xs-block u-xs-marginLeft0" href="https://medium.com/outfit7/about" title="About Outfit7" aria-label="About Outfit7">About Outfit7</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/outfit7/latest" title="Latest Stories for Outfit7" aria-label="Latest Stories for Outfit7">Latest Stories</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/outfit7/archive" title="Archive for Outfit7" aria-label="Archive for Outfit7">Archive</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/about">About Medium</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f">Terms</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9">Privacy</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/business">Teams</a></div></div></div></div></div></div></div><div class="loadingBar"></div><script>// <![CDATA[ window["obvInit"] = function (opt_embedded) {window["obvInit"]["embedded"] = opt_embedded; window["obvInit"]["ready"] = true;} // ]]></script><script>// <![CDATA[ var GLOBALS = {"audioUrl":"https://d1fcbxp97j4nb2.cloudfront.net","baseUrl":"https://medium.com","buildLabel":"20241122-2326-root","currentUser":{"userId":"lo_03f97156ccc4","isVerified":false,"subscriberEmail":"","hasPastMemberships":false,"isEnrolledInHightower":false,"isEligibleForHightower":true,"hightowerLastLockedAt":0,"isWriterProgramEnrolled":true,"isWriterProgramInvited":false,"isWriterProgramOptedOut":false,"writerProgramVersion":0,"writerProgramEnrolledAt":0,"friendLinkOnboarding":0,"hasAdditionalUnlocks":false,"hasApiAccess":false,"writerProgramDistributionSettingOptedIn":false,"isSuspended":false,"collectionOnboardingSeen":0,"atsQualifiedAt":0},"currentUserHasUnverifiedEmail":false,"isAuthenticated":false,"isCurrentUserVerified":false,"miroUrl":"https://cdn-images-1.medium.com","moduleUrls":{"base":"https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.jgL7zdhxfcJMjkJjEjB6xg.12.js","common-async":"https://cdn-static-1.medium.com/_/fp/gen-js/main-common-async.bundle.fULbttUzdHyewyAazMUYXw.12.js","hightower":"https://cdn-static-1.medium.com/_/fp/gen-js/main-hightower.bundle.NQoDXJuDHPBqR63_AdMDaA.12.js","home-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-home-screens.bundle.m76-07Q1DcEMKgEwzJjhDA.12.js","misc-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-misc-screens.bundle.2CLT5j6rDReEhG2bjr3NdA.12.js","notes":"https://cdn-static-1.medium.com/_/fp/gen-js/main-notes.bundle.yrGWoeoBrJB7GBGv--gr1g.12.js","payments":"https://cdn-static-1.medium.com/_/fp/gen-js/main-payments.bundle.Cc_nfCICljMx7aW6-Pr_9w.12.js","posters":"https://cdn-static-1.medium.com/_/fp/gen-js/main-posters.bundle.QCX6B3q-KqcSv8hiUNsQ9Q.12.js","power-readers":"https://cdn-static-1.medium.com/_/fp/gen-js/main-power-readers.bundle.nxgYPC9-BrhdicIoMMuzoA.12.js","pubs":"https://cdn-static-1.medium.com/_/fp/gen-js/main-pubs.bundle.SOwTEi0SkdYAS9MQpioQXw.12.js","stats":"https://cdn-static-1.medium.com/_/fp/gen-js/main-stats.bundle.hA1c7rerc_dk3N05UG54qQ.12.js"},"previewConfig":{"weightThreshold":1,"weightImageParagraph":0.51,"weightIframeParagraph":0.8,"weightTextParagraph":0.08,"weightEmptyParagraph":0,"weightP":0.003,"weightH":0.005,"weightBq":0.003,"minPTextLength":60,"truncateBoundaryChars":20,"detectTitle":true,"detectTitleLevThreshold":0.15},"productName":"Medium","supportsEdit":false,"termsUrl":"//policy.medium.com/medium-terms-of-service-9db0094a1e0f","textshotHost":"textshot.textshot-production.svc.cluster.local","transactionId":"1732392245913:c3b12ec3d636","useragent":{"browser":"ie","family":"ie","os":"windows","version":7,"supportsDesktopEdit":false,"supportsInteract":false,"supportsView":true,"isMobile":false,"isTablet":false,"isNative":false,"supportsFileAPI":false,"isTier1":false,"clientVersion":"","clientChannel":"","supportsRealScrollEvents":false,"supportsVhUnits":false,"ruinsViewportSections":false,"supportsHtml5Video":false,"supportsMagicUnderlines":false,"isWebView":false,"isFacebookWebView":false,"supportsProgressiveMedia":false,"supportsPromotedPosts":true,"isBot":false,"isNativeIphone":false,"supportsCssVariables":false,"supportsVideoSections":true,"emojiSupportLevel":1,"isSearchBot":false,"isSyndicationBot":false,"isNativeAndroid":false,"isNativeIos":false,"isSeoAuditBot":false,"isInternalApp":false,"supportsApplePay":false,"supportsScrollableMetabar":false},"variants":{"allow_access":true,"allow_signup":true,"allow_test_auth":"disallow","android_enable_editor_new_publishing_flow":true,"android_enable_friend_links_creation":true,"android_enable_friend_links_postpage_banners":true,"android_enable_image_sharer":true,"android_enable_lists_v2":true,"android_enable_syntax_highlight":true,"android_enable_topic_portals":true,"android_rating_prompt_stories_read_threshold":2,"android_two_hour_refresh":true,"available_annual_plan":"2c754bcc2995","available_annual_premium_plan":"4a442ace1476","available_monthly_plan":"60e220181034","available_monthly_premium_plan":"12a660186432","browsable_stream_config_bucket":"curated-topics","can_receive_tips_v0":true,"can_send_tips_v0":true,"coronavirus_topic_recirc":true,"disable_partner_program_enrollment":true,"enable_abandoned_cart_promotion_email":true,"enable_android_dynamic_aspirational_paywall":true,"enable_android_dynamic_programming_paywall":true,"enable_android_miro_v2":true,"enable_android_offline_reading":true,"enable_android_verified_author":true,"enable_app_flirty_thirty":true,"enable_apple_sign_in":true,"enable_apple_webhook":true,"enable_aurora_pub_follower_page":true,"enable_author_cards":true,"enable_author_cards_byline":true,"enable_auto_follow_on_subscribe":true,"enable_automod":true,"enable_bayesian_average_pub_search":true,"enable_bg_post_post":true,"enable_billing_frequency_on_step2":"group_1","enable_boost_nia_v01":true,"enable_braintree_apple_pay":true,"enable_braintree_client":true,"enable_braintree_google_pay":true,"enable_braintree_integration":true,"enable_braintree_paypal":true,"enable_braintree_trial_membership":true,"enable_braintree_webhook":true,"enable_branch_io":true,"enable_cache_less_following_feed":true,"enable_configure_pronouns":true,"enable_conversion_model_v2":"group_2","enable_conversion_ranker_v2":"control","enable_creator_welcome_email":true,"enable_deprecate_legacy_providers_v3":true,"enable_diversification_rex":true,"enable_entities_to_follow_v2":true,"enable_eventstats_event_processing":true,"enable_explicit_signals":true,"enable_explicit_signals_updated_post_previews":true,"enable_footer_app_buttons":true,"enable_google_one_tap":true,"enable_google_webhook":true,"enable_group_gifting":true,"enable_iceland_forced_android":true,"enable_import":true,"enable_intrinsic_automatic_actions":true,"enable_ios_autorefresh":true,"enable_ios_dynamic_paywall_aspiriational":true,"enable_ios_dynamic_paywall_programming":true,"enable_ios_easy_resubscribe":true,"enable_ios_offline_reading":true,"enable_legacy_feed_in_iceland":true,"enable_lite_archive_page":true,"enable_lite_continue_this_thread":true,"enable_lite_homepage":true,"enable_lite_response_markup":true,"enable_lite_server_upstream_deadlines":true,"enable_lo_homepage":"control","enable_maim_the_meter":true,"enable_marketing_emails":true,"enable_mastodon_avatar_upload":true,"enable_mastodon_for_members":true,"enable_mastodon_for_members_username_selection":true,"enable_medium2_kbfd":true,"enable_members_only_audio":true,"enable_ml_rank_rex_anno":true,"enable_moc_load_processor_all_recs_surfaces":true,"enable_moc_load_processor_c":true,"enable_moc_load_processor_first_story":true,"enable_new_manage_membership_flow":true,"enable_new_stripe_customers":true,"enable_newsletter_lo_flow_custom_domains":true,"enable_pill_based_home_feed":true,"enable_post_bottom_responses":true,"enable_post_bottom_responses_input":true,"enable_pp_country_expansion":true,"enable_pp_v4":true,"enable_pre_pp_v4":true,"enable_premium_tier":true,"enable_premium_tier_badge":true,"enable_publication_hierarchy_web":true,"enable_ranker_v10":"control","enable_recaptcha_enterprise":true,"enable_recirc_model":true,"enable_recommended_publishers_query":true,"enable_rex_aggregator_v2":true,"enable_rex_new_push_notification_endpoint":true,"enable_rex_reading_history":true,"enable_rito_upstream_deadlines":true,"enable_seamless_social_sharing":true,"enable_see_pronouns":true,"enable_sharer_create_post_share_key":true,"enable_sharer_validate_post_share_key":true,"enable_simplified_digest_v2_b":true,"enable_speechify_ios":true,"enable_speechify_widget":true,"enable_sprig":true,"enable_starspace":true,"enable_susi_redesign_android":true,"enable_susi_redesign_ios":true,"enable_switch_plan_premium_tier":true,"enable_tag_recs":true,"enable_tick_landing_page":true,"enable_tipping_v0_android":true,"enable_tipping_v0_ios":true,"enable_tribute_landing_page":true,"enable_update_explore_wtf":true,"enable_update_topic_portals_wtf":true,"enable_updated_pub_recs_ui":true,"enable_verifications_service":true,"glyph_font_set":"m2-unbound-source-serif-pro","goliath_externalsearch_enable_comment_deindexation":true,"ios_display_paywall_after_onboarding":true,"ios_enable_friend_links_creation":true,"ios_enable_friend_links_postpage_banners":true,"ios_enable_home_post_menu":true,"ios_enable_lock_responses":true,"ios_enable_verified_book_author":true,"ios_iceland_nux":true,"ios_in_app_free_trial":true,"ios_remove_twitter_onboarding_step":true,"ios_social_share_sheet":true,"limit_post_referrers":true,"limit_user_follows":true,"mobile_custom_app_icon":true,"num_post_bottom_responses_to_show":"3","onboarding_tags_from_top_views":true,"reader_fair_distribution_non_qp":true,"redefined_top_posts":true,"reengagement_notification_duration":3,"rex_generator_max_candidates":1000,"signin_services":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple","signup_services":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple","skip_fs_cache_user_vals":true},"xsrfToken":"","iosAppId":"828256236","supportEmail":"yourfriends@medium.com","fp":{"/icons/monogram-mask.svg":"https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg","/icons/favicon-medium-editor.ico":"https://cdn-static-1.medium.com/_/fp/icons/favicon-medium-editor.PiakrZWB7Yb80quUVQWM6g.12.ico"},"authBaseUrl":"https://medium.com","imageUploadSizeMb":25,"isAuthDomainRequest":true,"algoliaApiEndpoint":"https://MQ57UUUQZ2-dsn.algolia.net","algoliaAppId":"MQ57UUUQZ2","algoliaSearchOnlyApiKey":"394474ced050e3911ae2249ecc774921","iosAppStoreUrl":"https://itunes.apple.com/app/medium-everyones-stories/id828256236?pt=698524&mt=8","iosAppLinkBaseUrl":"medium:","algoliaIndexPrefix":"medium_","androidPlayStoreUrl":"https://play.google.com/store/apps/details?id=com.medium.reader","googleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","androidPackage":"com.medium.reader","androidPlayStoreMarketScheme":"market://details?id=com.medium.reader","googleAuthUri":"https://accounts.google.com/o/oauth2/auth","androidScheme":"medium","layoutData":{"useDynamicScripts":false,"googleAnalyticsTrackingCode":"G-7JY7T788PK","jsShivUrl":"https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.12.js","useDynamicCss":false,"faviconUrl":"https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19","faviconImageId":"5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19","fontSets":[{"id":8,"url":"https://glyph.medium.com/css/e/sr/latin/e/ssr/latin/e/ssb/latin/m2-unbound-source-serif-pro.css"},{"id":11,"url":"https://glyph.medium.com/css/m2-unbound-source-serif-pro.css"},{"id":9,"url":"https://glyph.medium.com/css/mkt.css"}],"glyphUrl":"https://glyph.medium.com"},"authBaseUrlRev":"moc.muidem//:sptth","stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","archiveUploadSizeMb":100,"previewConfig2":{"weightThreshold":1,"weightImageParagraph":0.05,"raiseImage":true,"enforceHeaderHierarchy":true,"isImageInsetRight":true},"isAmp":false,"iosScheme":"medium","facebook":{"key":"542599432471018","namespace":"medium-com","scope":{"default":["public_profile","email"],"connect":["public_profile","email"],"login":["public_profile","email"],"share":["public_profile","email"]}},"memberContentTopicId":"13d7efd82fb2","audioContentTopicId":"3792abbd134","isDoNotAuth":false,"buggle":{"videoUrl":"https://cdn-videos-1.medium.com","audioUrl":"https://cdn-audio-1.medium.com"},"referrerType":5,"partnerProgramEmail":"partnerprogram@medium.com","recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","countryCode":"SG","bypassMeter":false,"branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","paypal":{"clientMode":"production","oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com/redeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"}},"collectionConfig":{"mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"]},"bypassMeterWithShareKey":false,"recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","cdcMessaging":[{"text":"For more information on the novel coronavirus and Covid-19, visit ","href":"","type":"text","start":0,"end":0},{"text":"cdc.gov","href":"https://www.cdc.gov/coronavirus/2019-nCoV","type":"link","start":66,"end":73},{"text":".","href":"","type":"text","start":0,"end":0}],"braintree":{"merchantId":"m56f8fqpf7ngnrd4"},"diagnostics":{},"domain":"medium.com"} // ]]></script><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.jgL7zdhxfcJMjkJjEjB6xg.12.js" async></script><script>// <![CDATA[ window["obvInit"]({"references":{"Collection":{"6ec626d5ad62":{"id":"6ec626d5ad62","name":"Outfit7","slug":"outfit7","tags":["TECHNOLOGY","ENGINEERING","SOFTWARE DEVELOPMENT","GAME DEVELOPMENT","PROGRAMMING"],"creatorId":"ebaddf6e1f2a","description":"The inside scoop on development, engineering & tech innovation @ Outfit7.","shortDescription":"The inside scoop on development, engineering & tech…","image":{"imageId":"1*dCIQWfMya9g57UUL2ZzrJQ.png","filter":"","backgroundSize":"","originalWidth":10952,"originalHeight":10952,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":53,"activeAt":1727352998013},"virtuals":{"permissions":{"canPublish":false,"canPublishAll":false,"canRepublish":false,"canRemove":false,"canManageAll":false,"canSubmit":false,"canEditPosts":false,"canAddWriters":false,"canViewStats":false,"canSendNewsletter":false,"canViewLockedPosts":false,"canViewCloaked":false,"canEditOwnPosts":false,"canBeAssignedAuthor":false,"canEnrollInHightower":false,"canLockPostsForMediumMembers":false,"canLockOwnPostsForMediumMembers":false,"canViewNewsletterV2Stats":false,"canCreateNewsletterV3":false},"isSubscribed":false,"isEnrolledInHightower":false,"isEligibleForHightower":false,"isSubscribedToCollectionEmails":false,"isMuted":false,"canToggleEmail":false,"isWriter":false},"logo":{"imageId":"1*nTxl_7KgWQYo8PfVROUK_A.png","filter":"","backgroundSize":"","originalWidth":4566,"originalHeight":4566,"strategy":"resample","height":0,"width":0},"facebookPageName":"outfit7","collectionMastheadId":"ee5d0b65bfc","sections":[{"type":2,"collectionHeaderMetadata":{"title":"The inside scoop on development, engineering & tech innovation","description":"","backgroundImage":{"id":"1*lduq8q-DAzZbQ9GtDcLBvw.png","originalWidth":5857,"originalHeight":998,"focusPercentX":53.57142857142857,"focusPercentY":95.83333333333333},"logoImage":{"id":"1*rsxLbtYH2VSNPlCVkyXhSw@2x.png","originalWidth":2062,"originalHeight":277,"alt":"Outfit7"},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":2,"number":1,"postIds":[]}},{"type":1,"postListMetadata":{"source":2,"layout":4,"number":3,"postIds":[],"sectionHeader":"Stories worth reading"}},{"type":1,"postListMetadata":{"source":3,"layout":2,"number":10,"postIds":["46cf06181893","1e5c4a50b6c8","c5fa1610d786","ce93b31b61bd","876685f9ed1","66e045b2da0"]}}],"tintColor":"#FF111111","lightText":true,"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF858484","point":0},{"color":"#FF7C7B7B","point":0.1},{"color":"#FF737171","point":0.2},{"color":"#FF696868","point":0.3},{"color":"#FF5F5E5E","point":0.4},{"color":"#FF555454","point":0.5},{"color":"#FF4A4949","point":0.6},{"color":"#FF3F3E3E","point":0.7},{"color":"#FF343333","point":0.8},{"color":"#FF272727","point":0.9},{"color":"#FF1A1A1A","point":1}],"backgroundColor":"#FFFFFFFF"},"tintBackgroundSpectrum":{"colorPoints":[{"color":"#FF111111","point":0},{"color":"#FF313131","point":0.1},{"color":"#FF4D4C4C","point":0.2},{"color":"#FF666565","point":0.3},{"color":"#FF7D7C7C","point":0.4},{"color":"#FF939292","point":0.5},{"color":"#FFA9A7A7","point":0.6},{"color":"#FFBDBBBB","point":0.7},{"color":"#FFD2CFCF","point":0.8},{"color":"#FFE5E2E2","point":0.9},{"color":"#FFF8F5F5","point":1}],"backgroundColor":"#FF111111"},"highlightSpectrum":{"colorPoints":[{"color":"#FFF5F2F1","point":0},{"color":"#FFF3F0EF","point":0.1},{"color":"#FFF1EEEE","point":0.2},{"color":"#FFEFECEC","point":0.3},{"color":"#FFEDEAEA","point":0.4},{"color":"#FFEBE8E8","point":0.5},{"color":"#FFE9E7E6","point":0.6},{"color":"#FFE7E5E4","point":0.7},{"color":"#FFE5E3E2","point":0.8},{"color":"#FFE3E1E0","point":0.9},{"color":"#FFE1DFDE","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FF9E9C9C","point":0},{"color":"#FFA6A5A4","point":0.1},{"color":"#FFAFADAD","point":0.2},{"color":"#FFB7B6B5","point":0.3},{"color":"#FFC0BEBD","point":0.4},{"color":"#FFC8C6C6","point":0.5},{"color":"#FFD0CECE","point":0.6},{"color":"#FFD9D6D6","point":0.7},{"color":"#FFE1DEDD","point":0.8},{"color":"#FFE9E6E5","point":0.9},{"color":"#FFF0EEED","point":1}],"backgroundColor":"#FF000000"}},"navItems":[{"type":8,"title":"All","url":"https://medium.com/outfit7/latest"},{"type":4,"title":"Game Dev","url":"https://medium.com/outfit7/game-dev/home","topicId":"d7f7473196df","source":"topicId"},{"type":4,"title":"QA","url":"https://medium.com/outfit7/qa/home","topicId":"29a5e7ebfcfc","source":"topicId"},{"type":2,"title":"About","postId":"13e11ddd19e7","url":"https://medium.com/outfit7/the-outfit7-tech-blog-13e11ddd19e7","source":"postId"},{"type":3,"title":"Jobs","url":"https://outfit7.com/careers/jobs?field=technology&utm_source=social&utm_medium=medium&utm_campaign=tech-jobs"}],"colorBehavior":2,"collectionFeatures":[30],"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"title":"The inside scoop on development, engineering & tech innovation","description":"","backgroundImage":{"id":"1*lduq8q-DAzZbQ9GtDcLBvw.png","originalWidth":5857,"originalHeight":998,"focusPercentX":53.57142857142857,"focusPercentY":95.83333333333333},"logoImage":{"id":"1*rsxLbtYH2VSNPlCVkyXhSw@2x.png","originalWidth":2062,"originalHeight":277,"alt":"Outfit7"},"alignment":2,"layout":5},"subscriberCount":53,"tagline":"Our playground, your game.","instagramUsername":"outfit7","isOptedIntoAurora":false,"isCurationAllowedByDefault":false,"polarisCoverImage":{"imageId":"1*GJaVmaUaWCbCnxCoWDGxpw.png","filter":"","backgroundSize":"","originalWidth":1500,"originalHeight":749,"strategy":"resample","height":0,"width":0},"type":"Collection"}},"User":{"1357db1365fb":{"userId":"1357db1365fb","name":"Samy Ben Rabah","username":"samy.benrabah","createdAt":1692618560293,"imageId":"1*0bdDD8vd7YgYyqhLHCMoJQ.png","backgroundImageId":"","bio":"Pipeline developer at Outfit7","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[29],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-gb","type":"User"},"5d16f8c96c79":{"userId":"5d16f8c96c79","name":"Blaž Tomažič","username":"blaz.tomazic","createdAt":1688381785699,"imageId":"0*o7nAdO_BYV_0AkMg","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[29],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en","type":"User"},"b9d3e3fbf665":{"userId":"b9d3e3fbf665","name":"Črt Kristl","username":"crt.kristl","createdAt":1685362589171,"imageId":"0*52vDhSjGYB9cVy6U","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-gb","type":"User"},"1b04d7f0fde6":{"userId":"1b04d7f0fde6","name":"Matic Miklavčič","username":"matic.miklavcic","createdAt":1550061764787,"imageId":"0*PhI0qcA7b7tgksQB.jpg","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[2,33],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"6e0aea09a013":{"userId":"6e0aea09a013","name":"Tomaz Treven","username":"tomaz.treven","createdAt":1668683298916,"imageId":"1*X1R5AmakN-sHmvzT0UwC0Q.png","backgroundImageId":"","bio":"","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[30,33],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-gb","type":"User"},"565c34edb417":{"userId":"565c34edb417","name":"Aleksander Gregorka","username":"aleksander.gregorka","createdAt":1668504942978,"imageId":"1*cAYUfjr9zj796olrnlP1eg.png","backgroundImageId":"","bio":"Senior Software Engineer, Game Developer, Maker of Things.","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[2],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"},"83a93acabf8c":{"userId":"83a93acabf8c","name":"Jon Premik","username":"jon.premik","createdAt":1553612603109,"imageId":"1*IL2ob1GA8JYVBtWVim8kwg.jpeg","backgroundImageId":"","bio":"Senior Backend Engineer. Director of Technology. Tech Enthusiast. Proud dad. Dog person. Food & Travel.","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"hasCompletedProfile":false,"userDismissableFlags":[8,21,29,2],"hasSeenIcelandOnboarding":false,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-gb","type":"User"}},"Post":{"ba5d97a4c1c2":{"id":"ba5d97a4c1c2","versionId":"fc5017080d32","creatorId":"1357db1365fb","homeCollectionId":"6ec626d5ad62","title":"Outfit7’s Art Pipeline","detectedLanguage":"en","latestVersion":"fc5017080d32","latestPublishedVersion":"fc5017080d32","hasUnpublishedEdits":false,"latestRev":747,"createdAt":1692620773276,"updatedAt":1728415035745,"acceptedAt":0,"firstPublishedAt":1692688516814,"latestPublishedAt":1728411987119,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"TL;DR: We’re taking a look at Outfit7’s art pipeline and how we transitioned from a proprietary system to the commercial solution — and a…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*YchegUssBmvcXiBp","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":838,"strategy":"resample","height":0,"width":0},"wordCount":48,"imageCount":1,"readingTime":0.38113207547169814,"subtitle":"TL;DR: We’re taking a look at Outfit7’s art pipeline and how we transitioned from a proprietary system to the commercial solution — and a…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":9,"isBookmarked":false,"tags":[{"slug":"pipeline","name":"Pipeline","postCount":4620,"metadata":{"postCount":4620,"coverImage":{"id":"0*MDcmfqL3SNlsCl8c.png","originalWidth":1154,"originalHeight":572,"isFeatured":true}},"type":"Tag"},{"slug":"shotgrid","name":"Shotgrid","postCount":1,"metadata":{"postCount":1,"coverImage":{"id":"0*YchegUssBmvcXiBp","originalWidth":1600,"originalHeight":838,"isFeatured":true}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":2697461,"metadata":{"postCount":2697461,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"},{"slug":"game-development","name":"Game Development","postCount":54841,"metadata":{"postCount":54841,"coverImage":{"id":"1*xjDqIUWkbWUcK5EGdRMJrA.png","originalWidth":1920,"originalHeight":1080}},"type":"Tag"},{"slug":"animation","name":"Animation","postCount":27598,"metadata":{"postCount":27598,"coverImage":{"id":"1*ae5yz8vxTp95Vlg9H7Xvqg.jpeg","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"focusPercentX":49,"focusPercentY":30}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://outfit7.com/blog/tech/outfit7s-art-pipeline?utm_source=social&utm_medium=medium&utm_campaign=o7-art-pipeline","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1728411987646},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":71,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"outfit7s-art-pipeline","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"outfit7s-art-pipeline-ba5d97a4c1c2","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*YchegUssBmvcXiBp","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"Outfit7’s Art Pipeline","alignment":1},{"name":"previewSubtitle","type":13,"text":"TL;DR: We’re taking a look at Outfit7’s art pipeline and how we transitioned…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"TL;DR: We’re taking a look at Outfit7’s art pipeline and how we transitioned from a proprietary system to the commercial solution — and a…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"0c38","type":3,"text":"Outfit7’s Art Pipeline","markups":[]},{"name":"2927","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*YchegUssBmvcXiBp","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"9269","type":1,"text":"This article is now available on the Outfit7 Tech Blog!","markups":[{"type":1,"start":0,"end":55}]},{"name":"8b13","type":1,"text":"We’ve moved this content to our website’s official Outfit7 Tech Blog.\nYou can now find the full article here.","markups":[{"type":3,"start":104,"end":108,"href":"https://outfit7.com/blog/tech/outfit7s-art-pipeline?utm_source=social&utm_medium=medium&utm_campaign=o7-art-pipeline","title":"","rel":"","anchorType":0},{"type":1,"start":51,"end":68}]},{"name":"27af","type":1,"text":"Visit our new blog for more tech insights, mobile game development tips, and software engineering stories!","markups":[]}],"sections":[{"name":"0819","startIndex":0}]},"isFullContent":true,"subtitle":"TL;DR: We’re taking a look at Outfit7’s art pipeline and how we transitioned from a proprietary system to the commercial solution — and a…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":true,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"ce93b31b61bd":{"id":"ce93b31b61bd","versionId":"8b1be5fa05be","creatorId":"5d16f8c96c79","homeCollectionId":"6ec626d5ad62","title":"Creating a custom animation system for Unity","detectedLanguage":"en","latestVersion":"8b1be5fa05be","latestPublishedVersion":"8b1be5fa05be","hasUnpublishedEdits":false,"latestRev":1452,"createdAt":1688707151758,"updatedAt":1689554691229,"acceptedAt":0,"firstPublishedAt":1688979159704,"latestPublishedAt":1688979159704,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"TL;DR: Making a custom animation system to reduce the size of assets by 50% and solving all the problems that come with it.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*TbmS5EonHW_ICYg3","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":838,"strategy":"resample","height":0,"width":0},"wordCount":3845,"imageCount":14,"readingTime":15.95943396226415,"subtitle":"TL;DR: Making a custom animation system to reduce the size of assets by 50% and solving all the problems that come with it.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":13,"isBookmarked":false,"tags":[{"slug":"unity3d","name":"Unity3d","postCount":12205,"metadata":{"postCount":12205,"coverImage":{"id":"1*JRHSBV2EsqcYrE9A9e4y-w.png","originalWidth":1792,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"animation","name":"Animation","postCount":27598,"metadata":{"postCount":27598,"coverImage":{"id":"1*ae5yz8vxTp95Vlg9H7Xvqg.jpeg","originalWidth":1920,"originalHeight":1080,"isFeatured":true,"focusPercentX":49,"focusPercentY":30}},"type":"Tag"},{"slug":"csharp","name":"Csharp","postCount":16023,"metadata":{"postCount":16023,"coverImage":{"id":"1*SZFopbBIpPiQT7rCOL2YlQ.png","originalWidth":800,"originalHeight":800,"isFeatured":true}},"type":"Tag"},{"slug":"mobile-game-development","name":"Mobile Game Development","postCount":1633,"metadata":{"postCount":1633,"coverImage":{"id":"1*mIBo4xLRx3E5uEOs45aVKw.png","originalWidth":681,"originalHeight":380,"isFeatured":true,"alt":"Game Development"}},"type":"Tag"},{"slug":"game-development","name":"Game Development","postCount":54841,"metadata":{"postCount":54841,"coverImage":{"id":"1*xjDqIUWkbWUcK5EGdRMJrA.png","originalWidth":1920,"originalHeight":1080}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://guillaumeblanc.github.io/ozz-animation/documentation/animation_offline/","alts":[],"httpStatus":200},{"url":"https://medium.com/googleplaydev/shrinking-apks-growing-installs-5d3fcba23ce2","alts":[{"type":3,"url":"medium://p/5d3fcba23ce2"},{"type":2,"url":"medium://p/5d3fcba23ce2"}],"httpStatus":200},{"url":"https://outfit7.com/","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Linear_interpolation#Interpolation_of_a_data_set","alts":[],"httpStatus":200},{"url":"https://cmake.org/","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Half-precision_floating-point_format","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Multiplicative_inverse","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Inverse_function","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Quaternion#Conjugation,_the_norm,_and_reciprocal","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Skeletal_animation","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Animations.IAnimationJob.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Unity.Collections.NativeArray_1.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/AnimationClip.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Animator.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Animation.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Playables.PlayableBehaviour.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/AnimationUtility.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Transform.Find.html","alts":[],"httpStatus":200},{"url":"https://play.google.com/store/apps/details?id=com.outfit7.mytalkingangela2","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Animations.AnimationStream.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Unity.Collections.LowLevel.Unsafe.UnsafeUtility.Malloc.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Animations.AnimatorJobExtensions.html","alts":[],"httpStatus":200},{"url":"https://docs.unity3d.com/ScriptReference/Playables.PlayableGraph.html","alts":[],"httpStatus":200},{"url":"https://github.com/facebook/zstd","alts":[],"httpStatus":200},{"url":"https://developer.android.com/guide/app-bundle#size_restrictions","alts":[],"httpStatus":200},{"url":"https://github.com/guillaumeblanc/ozz-animation/blob/1014cb5b80687b4ee99bd1b454aeaf4ba491d4c6/samples/millipede/sample_millipede.cc#L179-L201","alts":[],"httpStatus":200},{"url":"https://github.com/guillaumeblanc/ozz-animation","alts":[],"httpStatus":200},{"url":"https://play.google.com/store/apps/details?id=com.outfit7.mytalkingangelafree","alts":[],"httpStatus":200},{"url":"https://medium.com/outfit7/building-the-ultimate-mobile-game-engine-starlite-14b640e2757b","alts":[{"type":3,"url":"medium://p/14b640e2757b"},{"type":2,"url":"medium://p/14b640e2757b"}],"httpStatus":200},{"url":"https://blog.unity.com/technology/animation-c-jobs","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1688979161163},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":74,"sectionCount":4,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"creating-a-custom-animation-system-for-unity","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"creating-a-custom-animation-system-for-unity-ce93b31b61bd","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*TbmS5EonHW_ICYg3","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"0796","type":3,"text":"Creating a custom animation system for Unity","markups":[],"alignment":1},{"name":"598f","type":1,"text":"TL;DR: Making a custom animation system to reduce the size of assets by 50% and…","markups":[{"type":1,"start":0,"end":6}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"TL;DR: Making a custom animation system to reduce the size of assets by 50% and solving all the problems that come with it."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":6,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"0796","type":3,"text":"Creating a custom animation system for Unity","markups":[]},{"name":"ed3a","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*TbmS5EonHW_ICYg3","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"598f","type":1,"text":"TL;DR: Making a custom animation system to reduce the size of assets by 50% and solving all the problems that come with it.","markups":[{"type":1,"start":0,"end":6}]},{"name":"24f5","type":6,"text":"I’m Blaž Tomažič, a Senior Software Engineer at Outfit7. I’ve been developing with the company for five years, working mostly on low-level parts of game development. I…","markups":[{"type":3,"start":48,"end":55,"href":"https://outfit7.com/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"f79e","startIndex":0}]},"isFullContent":false,"subtitle":"TL;DR: Making a custom animation system to reduce the size of assets by 50% and solving all the problems that come with it."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"14b640e2757b":{"id":"14b640e2757b","versionId":"7ec6219856f6","creatorId":"b9d3e3fbf665","homeCollectionId":"6ec626d5ad62","title":"Building the Ultimate Mobile Game Engine: Starlite","detectedLanguage":"en","latestVersion":"7ec6219856f6","latestPublishedVersion":"7ec6219856f6","hasUnpublishedEdits":false,"latestRev":1868,"createdAt":1685363107668,"updatedAt":1727353485383,"acceptedAt":0,"firstPublishedAt":1685607251723,"latestPublishedAt":1727353477514,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"The making of our game engine, Starlite, why we did it, and the impressive results.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*d9Zk7nRSza7P9wnjEbMOXQ.png","filter":"","backgroundSize":"","originalWidth":1920,"originalHeight":1005,"strategy":"resample","height":0,"width":0},"wordCount":52,"imageCount":1,"readingTime":0.39622641509433965,"subtitle":"The making of our game engine, Starlite, why we did it, and the impressive results.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":11,"isBookmarked":false,"tags":[{"slug":"game-engine","name":"Game Engine","postCount":586,"metadata":{"postCount":586,"coverImage":{"id":"0*5NAXMtNA7GNRnP8x.png","originalWidth":315,"originalHeight":250,"isFeatured":true}},"type":"Tag"},{"slug":"game-development","name":"Game Development","postCount":54841,"metadata":{"postCount":54841,"coverImage":{"id":"1*xjDqIUWkbWUcK5EGdRMJrA.png","originalWidth":1920,"originalHeight":1080}},"type":"Tag"},{"slug":"game-engine-and-editor","name":"Game Engine And Editor","postCount":1,"metadata":{"postCount":1,"coverImage":{"id":"1*d9Zk7nRSza7P9wnjEbMOXQ.png","originalWidth":1920,"originalHeight":1005,"isFeatured":true}},"type":"Tag"},{"slug":"development","name":"Development","postCount":112628,"metadata":{"postCount":112628,"coverImage":{"id":"1*uJKVgxbUjaG2eU2oAOvxmg.png","originalWidth":2696,"originalHeight":1742,"isFeatured":true}},"type":"Tag"},{"slug":"cross-platform","name":"Cross Platform","postCount":3798,"metadata":{"postCount":3798,"coverImage":{"id":"0*EICm3p7CyWP1qTTG.png","originalWidth":1400,"originalHeight":400,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://outfit7.com/blog/tech/building-the-ultimate-mobile-game-engine-starlite?utm_source=social&utm_medium=medium&utm_campaign=starlite","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1727353478069},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":39,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"building-the-ultimate-mobile-game-engine-starlite","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"building-the-ultimate-mobile-game-engine-starlite-14b640e2757b","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*d9Zk7nRSza7P9wnjEbMOXQ.png","originalWidth":1920,"originalHeight":1005,"isFeatured":true}},{"name":"6d84","type":3,"text":"Building the Ultimate Mobile Game Engine: Starlite","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"The making of our game engine, Starlite, why we did it, and the impressive results."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"6d84","type":3,"text":"Building the Ultimate Mobile Game Engine: Starlite","markups":[]},{"name":"ceaf","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*d9Zk7nRSza7P9wnjEbMOXQ.png","originalWidth":1920,"originalHeight":1005,"isFeatured":true}},{"name":"48a7","type":1,"text":"This article is now available on the Outfit7 Tech Blog!","markups":[{"type":1,"start":0,"end":55}]},{"name":"e992","type":1,"text":"We’ve moved this content to our website’s official Outfit7 Tech Blog.\nYou can now find the full article here.","markups":[{"type":3,"start":104,"end":108,"href":"https://outfit7.com/blog/tech/building-the-ultimate-mobile-game-engine-starlite?utm_source=social&utm_medium=medium&utm_campaign=starlite","title":"","rel":"","anchorType":0},{"type":1,"start":51,"end":68}]},{"name":"fe3d","type":1,"text":"Visit our new blog for more tech insights, mobile game development tips, and software engineering stories!","markups":[]}],"sections":[{"name":"5534","startIndex":0}]},"isFullContent":true,"subtitle":"The making of our game engine, Starlite, why we did it, and the impressive results."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":true,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"1e5c4a50b6c8":{"id":"1e5c4a50b6c8","versionId":"cb6d767449b8","creatorId":"1b04d7f0fde6","homeCollectionId":"6ec626d5ad62","title":"Kicking the habit: Jenkins detox in production","detectedLanguage":"en","latestVersion":"cb6d767449b8","latestPublishedVersion":"cb6d767449b8","hasUnpublishedEdits":false,"latestRev":130,"createdAt":1677149676072,"updatedAt":1677749278559,"acceptedAt":0,"firstPublishedAt":1677749275154,"latestPublishedAt":1677749275154,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Moving the O7 game build system into the cloud opened up new possibilities for individual game development teams around scaling…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*JQsjnND9Wcgtk2nE","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":838,"strategy":"resample","height":0,"width":0},"wordCount":2451,"imageCount":5,"readingTime":10.08238993710692,"subtitle":"Moving the O7 game build system into the cloud opened up new possibilities for individual game development teams around scaling…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":7,"isBookmarked":false,"tags":[{"slug":"game-development","name":"Game Development","postCount":54841,"metadata":{"postCount":54841,"coverImage":{"id":"1*xjDqIUWkbWUcK5EGdRMJrA.png","originalWidth":1920,"originalHeight":1080}},"type":"Tag"},{"slug":"game-build","name":"Game Build","postCount":12,"metadata":{"postCount":12,"coverImage":{"id":"1*o4f3YGNDEo4MEG2mNLCYTQ.jpeg","originalWidth":2560,"originalHeight":1440,"isFeatured":true}},"type":"Tag"},{"slug":"devops","name":"DevOps","postCount":101460,"metadata":{"postCount":101460,"coverImage":{"id":"0*MDcmfqL3SNlsCl8c.png","originalWidth":1154,"originalHeight":572,"isFeatured":true}},"type":"Tag"},{"slug":"jenkins","name":"Jenkins","postCount":7939,"metadata":{"postCount":7939,"coverImage":{"id":"1*rlPRYAfJ_aFOfoj52U7y2A.png","originalWidth":1015,"originalHeight":594,"isFeatured":true,"alt":"Technical Guide: End-to-End CI/CD DevOps with Jenkins, Docker, Kubernetes, ArgoCD, Github Actions , AWS EC2 and Terraform by Joel .O Wembo"}},"type":"Tag"},{"slug":"ci-cd-pipeline","name":"Ci Cd Pipeline","postCount":8049,"metadata":{"postCount":8049,"coverImage":{"id":"1*1Qo2PlX5MA-c6DgmCcSIWQ.png","originalWidth":638,"originalHeight":444,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[],"version":"0.3","generatedAt":1677749275326},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":19,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"kicking-the-habit-jenkins-detox-in-production","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"kicking-the-habit-jenkins-detox-in-production-1e5c4a50b6c8","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*JQsjnND9Wcgtk2nE","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"Kicking the habit: Jenkins detox in production","alignment":1},{"name":"previewSubtitle","type":13,"text":"Moving the O7 game build system into the cloud opened…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Moving the O7 game build system into the cloud opened up new possibilities for individual game development teams around scaling…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"52cc","type":3,"text":"Kicking the habit: Jenkins detox in production","markups":[]},{"name":"2636","type":1,"text":"TL;DR: Moving the O7 game build system into the cloud opened up new possibilities for individual game development teams around scaling, testing and fixing bugs. We improved build times, reduced system complexity, increased stability, and most importantly, increased the number of builds, ensuring finer-grained testing and bug tracking. Best of…","markups":[{"type":1,"start":0,"end":7}]}],"sections":[{"name":"213e","startIndex":0}]},"isFullContent":false,"subtitle":"Moving the O7 game build system into the cloud opened up new possibilities for individual game development teams around scaling…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"2c6b53a39bf":{"id":"2c6b53a39bf","versionId":"23dcb0628c0c","creatorId":"6e0aea09a013","homeCollectionId":"6ec626d5ad62","title":"Improving Loading Times in Talking Tom Hero Dash","detectedLanguage":"en","latestVersion":"23dcb0628c0c","latestPublishedVersion":"23dcb0628c0c","hasUnpublishedEdits":false,"latestRev":300,"createdAt":1668683400452,"updatedAt":1698142659727,"acceptedAt":0,"firstPublishedAt":1669115320640,"latestPublishedAt":1698142650962,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"By combining our experiences in game development, the team at Outfit7 were able to decrease the game load times in Talking Tom Hero…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*vqgnEWlq1N7Wqa_l","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":838,"strategy":"resample","height":0,"width":0},"wordCount":2313,"imageCount":7,"readingTime":9.778301886792454,"subtitle":"By combining our experiences in game development, the team at Outfit7 were able to decrease the game load times in Talking Tom Hero…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":7,"isBookmarked":false,"tags":[{"slug":"optimization","name":"Optimization","postCount":15123,"metadata":{"postCount":15123,"coverImage":{"id":"1*veJ49dJMtmoeC15yOPb_Aw.jpeg","originalWidth":4200,"originalHeight":2750,"isFeatured":true}},"type":"Tag"},{"slug":"game-development","name":"Game Development","postCount":54841,"metadata":{"postCount":54841,"coverImage":{"id":"1*xjDqIUWkbWUcK5EGdRMJrA.png","originalWidth":1920,"originalHeight":1080}},"type":"Tag"},{"slug":"loading-speed","name":"Loading Speed","postCount":48,"metadata":{"postCount":48,"coverImage":{"id":"1*48So2exFO8h5iMhAG0cmTA.png","originalWidth":1280,"originalHeight":720,"isFeatured":true,"alt":"https://bit.ly/3XtG24z"}},"type":"Tag"},{"slug":"unity3d","name":"Unity3d","postCount":12205,"metadata":{"postCount":12205,"coverImage":{"id":"1*JRHSBV2EsqcYrE9A9e4y-w.png","originalWidth":1792,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"unity","name":"Unity","postCount":34618,"metadata":{"postCount":34618,"coverImage":{"id":"1*0DbhuIXHoLXru1Ct47XdmQ.jpeg","originalWidth":3024,"originalHeight":4032,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://medium.com/googleplaydev/shrinking-apks-growing-installs-5d3fcba23ce2","alts":[{"type":3,"url":"medium://p/5d3fcba23ce2"},{"type":2,"url":"medium://p/5d3fcba23ce2"}],"httpStatus":200},{"url":"https://resources.unity.com/games/ultimate-guide-to-profiling-unity-games","alts":[],"httpStatus":200},{"url":"https://learn.unity.com/tutorial/assets-resources-and-assetbundles","alts":[],"httpStatus":200},{"url":"https://docs.google.com/document/d/1IYxYEq5e7aEaGndZ31eREtHmHDzZZ1te8B9oX9sAVDM/edit#heading=h.hmbvodh0llxw","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1698142651782},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":27,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"improving-loading-times-in-talking-tom-hero-dash","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"improving-loading-times-in-talking-tom-hero-dash-2c6b53a39bf","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*vqgnEWlq1N7Wqa_l","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"a73b","type":3,"text":"Improving Loading Times in Talking Tom Hero Dash","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"By combining our experiences in game development, the team at Outfit7 were able to decrease the game load times in Talking Tom Hero…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"a73b","type":3,"text":"Improving Loading Times in Talking Tom Hero Dash","markups":[]},{"name":"35e6","type":1,"text":"TL;DR: By combining our experiences in game development, the team at Outfit7 were able to decrease the game load times in Talking Tom Hero Dash by 35% and improve the memory footprint, which also positively affected user retention. Players now reach the fun zone faster.","markups":[{"type":1,"start":0,"end":7},{"type":2,"start":0,"end":270}]},{"name":"1423","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*vqgnEWlq1N7Wqa_l","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"9b55","type":1,"text":"I’m Tomaž Treven, Senior Software…","markups":[]}],"sections":[{"name":"030a","startIndex":0}]},"isFullContent":false,"subtitle":"By combining our experiences in game development, the team at Outfit7 were able to decrease the game load times in Talking Tom Hero…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"46cf06181893":{"id":"46cf06181893","versionId":"fe52d6145399","creatorId":"565c34edb417","homeCollectionId":"6ec626d5ad62","title":"The My Talking Angela 2 Hair System","detectedLanguage":"en","latestVersion":"fe52d6145399","latestPublishedVersion":"fe52d6145399","hasUnpublishedEdits":false,"latestRev":738,"createdAt":1668505019661,"updatedAt":1668689403145,"acceptedAt":0,"firstPublishedAt":1668615574780,"latestPublishedAt":1668684025148,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"The making of an easy-to-configure hair system for our hit game, including what it took to make it, and how everything came together.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*QeoWDJ4qQhrCS_Ei","filter":"","backgroundSize":"","originalWidth":1003,"originalHeight":634,"strategy":"resample","height":0,"width":0},"wordCount":2746,"imageCount":27,"readingTime":12.462264150943396,"subtitle":"The making of an easy-to-configure hair system for our hit game, including what it took to make it, and how everything came together.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":18,"isBookmarked":false,"tags":[{"slug":"game-development","name":"Game Development","postCount":54841,"metadata":{"postCount":54841,"coverImage":{"id":"1*xjDqIUWkbWUcK5EGdRMJrA.png","originalWidth":1920,"originalHeight":1080}},"type":"Tag"},{"slug":"procedural-animation","name":"Procedural Animation","postCount":11,"metadata":{"postCount":11,"coverImage":{"id":"1*xPhpduadwFt1k89-69ES_A.gif","originalWidth":782,"originalHeight":500,"isFeatured":true}},"type":"Tag"},{"slug":"simulation","name":"Simulation","postCount":5913,"metadata":{"postCount":5913,"coverImage":{"id":"1*R3-w0A15yVYZlZj_9QJ-yA.jpeg","originalWidth":3072,"originalHeight":1456,"isFeatured":true}},"type":"Tag"},{"slug":"mobile-games","name":"Mobile Games","postCount":7459,"metadata":{"postCount":7459,"coverImage":{"id":"1*w3o5dfASyR0zVa5EKoMx3w.png","originalWidth":1200,"originalHeight":628}},"type":"Tag"},{"slug":"rendering","name":"Rendering","postCount":2116,"metadata":{"postCount":2116,"coverImage":{"id":"0*CFbGs9nU6YYTj7zc","originalWidth":4515,"originalHeight":3010,"isFeatured":true,"unsplashPhotoId":"UYsBCu9RP3Y"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/UV_mapping","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Verlet_integration","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Skeletal_animation#Technique","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1668684025513},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":86,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"the-my-talking-angela-2-hair-system","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"the-my-talking-angela-2-hair-system-46cf06181893","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*QeoWDJ4qQhrCS_Ei","originalWidth":1003,"originalHeight":634,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"The My Talking Angela 2 Hair System","alignment":1},{"name":"previewSubtitle","type":13,"text":"The making of an easy-to-configure hair system for our hit game…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"The making of an easy-to-configure hair system for our hit game, including what it took to make it, and how everything came together."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":3,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"primaryTopicId":"decb52b64abf","isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"5dd9","type":3,"text":"The My Talking Angela 2 Hair System","markups":[]},{"name":"4d01","type":1,"text":"TL;DR: The making of an easy-to-configure hair system for our hit game, including what it took to make it, and how everything came together. With all the hairy details.","markups":[{"type":1,"start":0,"end":6},{"type":2,"start":0,"end":168}]},{"name":"38c1","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*QeoWDJ4qQhrCS_Ei","originalWidth":1003,"originalHeight":634,"isFeatured":true}},{"name":"25a9","type":1,"text":"I’m Aleksander Gregorka and I’m a Senior Software Engineer at Outfit7. I’ve been with the company since 2014, and during that…","markups":[]}],"sections":[{"name":"b04d","startIndex":0}]},"isFullContent":false,"subtitle":"The making of an easy-to-configure hair system for our hit game, including what it took to make it, and how everything came together."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"13e11ddd19e7":{"id":"13e11ddd19e7","versionId":"265f97881f17","creatorId":"83a93acabf8c","homeCollectionId":"6ec626d5ad62","title":"The Outfit7 Tech Blog","detectedLanguage":"en","latestVersion":"265f97881f17","latestPublishedVersion":"265f97881f17","hasUnpublishedEdits":false,"latestRev":155,"createdAt":1668001586423,"updatedAt":1727364283768,"acceptedAt":0,"firstPublishedAt":1668002623118,"latestPublishedAt":1727353251035,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Hello, world! That line’s been printed to console by every programmer at least once in their lifetime. And it’s also an appropriate way to…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*rviJN0y367MrE2fx","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":838,"strategy":"resample","height":0,"width":0},"wordCount":49,"imageCount":1,"readingTime":0.3849056603773585,"subtitle":"Hello, world! That line’s been printed to console by every programmer at least once in their lifetime. And it’s also an appropriate way to…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":23,"isBookmarked":false,"tags":[{"slug":"tech-blog","name":"Tech Blog","postCount":882,"metadata":{"postCount":882,"coverImage":{"id":"1*2WV5AOMwP-tRPslH2O1zmg.png","originalWidth":834,"originalHeight":688,"isFeatured":true}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":2697461,"metadata":{"postCount":2697461,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"},{"slug":"game-development","name":"Game Development","postCount":54841,"metadata":{"postCount":54841,"coverImage":{"id":"1*xjDqIUWkbWUcK5EGdRMJrA.png","originalWidth":1920,"originalHeight":1080}},"type":"Tag"},{"slug":"engineering-blog","name":"Engineering Blog","postCount":114,"metadata":{"postCount":114,"coverImage":{"id":"1*hFBpDSrh_nL7eeJICzJLRg.png","originalWidth":1200,"originalHeight":630,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":325611,"metadata":{"postCount":325611,"coverImage":{"id":"1*BqVsCBa2mLv1UWQrdhjX5w.png","originalWidth":1500,"originalHeight":750,"isFeatured":true,"alt":"How I Am Using a Lifetime 100% Free Server"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://outfit7.com/blog/tech/the-outfit7-tech-blog?utm_source=social&utm_medium=medium&utm_campaign=hello-world","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1727353251467},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":106,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"the-outfit7-tech-blog","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"the-outfit7-tech-blog-13e11ddd19e7","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*rviJN0y367MrE2fx","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"The Outfit7 Tech Blog","alignment":1},{"name":"previewSubtitle","type":13,"text":"Hello, world! That line’s been printed to console by every programmer at least…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Hello, world! That line’s been printed to console by every programmer at least once in their lifetime. And it’s also an appropriate way to…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"6ec626d5ad62","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"8f38","type":3,"text":"The Outfit7 Tech Blog","markups":[]},{"name":"19f4","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*rviJN0y367MrE2fx","originalWidth":1600,"originalHeight":838,"isFeatured":true}},{"name":"6330","type":1,"text":"This article is now available on the Outfit7 Tech Blog!","markups":[{"type":1,"start":0,"end":55}]},{"name":"03ae","type":1,"text":"We’ve moved this content to our website’s official Outfit7 Tech Blog. \nYou can now find the full article here.","markups":[{"type":3,"start":105,"end":109,"href":"https://outfit7.com/blog/tech/the-outfit7-tech-blog?utm_source=social&utm_medium=medium&utm_campaign=hello-world","title":"","rel":"","anchorType":0},{"type":1,"start":51,"end":68}]},{"name":"09ef","type":1,"text":"Visit our new blog for more tech insights, mobile game development tips, and software engineering stories!","markups":[]}],"sections":[{"name":"6476","startIndex":0}]},"isFullContent":true,"subtitle":"Hello, world! That line’s been printed to console by every programmer at least once in their lifetime. And it’s also an appropriate way to…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":true,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"}}},"paging":{"path":"/_/api/collections/6ec626d5ad62/topics/d7f7473196df","next":{"to":"1732392245976","ignoredIds":["ba5d97a4c1c2","ce93b31b61bd","14b640e2757b","1e5c4a50b6c8","2c6b53a39bf","46cf06181893","13e11ddd19e7"],"page":2}},"collection":{"id":"6ec626d5ad62","name":"Outfit7","slug":"outfit7","tags":["TECHNOLOGY","ENGINEERING","SOFTWARE DEVELOPMENT","GAME DEVELOPMENT","PROGRAMMING"],"creatorId":"ebaddf6e1f2a","description":"The inside scoop on development, engineering & tech innovation @ Outfit7.","shortDescription":"The inside scoop on development, engineering & tech…","image":{"imageId":"1*dCIQWfMya9g57UUL2ZzrJQ.png","filter":"","backgroundSize":"","originalWidth":10952,"originalHeight":10952,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":53,"activeAt":1727352998013},"virtuals":{"permissions":{"canPublish":false,"canPublishAll":false,"canRepublish":false,"canRemove":false,"canManageAll":false,"canSubmit":false,"canEditPosts":false,"canAddWriters":false,"canViewStats":false,"canSendNewsletter":false,"canViewLockedPosts":false,"canViewCloaked":false,"canEditOwnPosts":false,"canBeAssignedAuthor":false,"canEnrollInHightower":false,"canLockPostsForMediumMembers":false,"canLockOwnPostsForMediumMembers":false,"canViewNewsletterV2Stats":false,"canCreateNewsletterV3":false},"isSubscribed":false,"isEnrolledInHightower":false,"isEligibleForHightower":false,"isSubscribedToCollectionEmails":false,"isMuted":false,"canToggleEmail":false,"isWriter":false},"logo":{"imageId":"1*nTxl_7KgWQYo8PfVROUK_A.png","filter":"","backgroundSize":"","originalWidth":4566,"originalHeight":4566,"strategy":"resample","height":0,"width":0},"facebookPageName":"outfit7","collectionMastheadId":"ee5d0b65bfc","sections":[{"type":2,"collectionHeaderMetadata":{"title":"The inside scoop on development, engineering & tech innovation","description":"","backgroundImage":{"id":"1*lduq8q-DAzZbQ9GtDcLBvw.png","originalWidth":5857,"originalHeight":998,"focusPercentX":53.57142857142857,"focusPercentY":95.83333333333333},"logoImage":{"id":"1*rsxLbtYH2VSNPlCVkyXhSw@2x.png","originalWidth":2062,"originalHeight":277,"alt":"Outfit7"},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":2,"number":1,"postIds":[]}},{"type":1,"postListMetadata":{"source":2,"layout":4,"number":3,"postIds":[],"sectionHeader":"Stories worth reading"}},{"type":1,"postListMetadata":{"source":3,"layout":2,"number":10,"postIds":["46cf06181893","1e5c4a50b6c8","c5fa1610d786","ce93b31b61bd","876685f9ed1","66e045b2da0"]}}],"tintColor":"#FF111111","lightText":true,"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF858484","point":0},{"color":"#FF7C7B7B","point":0.1},{"color":"#FF737171","point":0.2},{"color":"#FF696868","point":0.3},{"color":"#FF5F5E5E","point":0.4},{"color":"#FF555454","point":0.5},{"color":"#FF4A4949","point":0.6},{"color":"#FF3F3E3E","point":0.7},{"color":"#FF343333","point":0.8},{"color":"#FF272727","point":0.9},{"color":"#FF1A1A1A","point":1}],"backgroundColor":"#FFFFFFFF"},"tintBackgroundSpectrum":{"colorPoints":[{"color":"#FF111111","point":0},{"color":"#FF313131","point":0.1},{"color":"#FF4D4C4C","point":0.2},{"color":"#FF666565","point":0.3},{"color":"#FF7D7C7C","point":0.4},{"color":"#FF939292","point":0.5},{"color":"#FFA9A7A7","point":0.6},{"color":"#FFBDBBBB","point":0.7},{"color":"#FFD2CFCF","point":0.8},{"color":"#FFE5E2E2","point":0.9},{"color":"#FFF8F5F5","point":1}],"backgroundColor":"#FF111111"},"highlightSpectrum":{"colorPoints":[{"color":"#FFF5F2F1","point":0},{"color":"#FFF3F0EF","point":0.1},{"color":"#FFF1EEEE","point":0.2},{"color":"#FFEFECEC","point":0.3},{"color":"#FFEDEAEA","point":0.4},{"color":"#FFEBE8E8","point":0.5},{"color":"#FFE9E7E6","point":0.6},{"color":"#FFE7E5E4","point":0.7},{"color":"#FFE5E3E2","point":0.8},{"color":"#FFE3E1E0","point":0.9},{"color":"#FFE1DFDE","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FF9E9C9C","point":0},{"color":"#FFA6A5A4","point":0.1},{"color":"#FFAFADAD","point":0.2},{"color":"#FFB7B6B5","point":0.3},{"color":"#FFC0BEBD","point":0.4},{"color":"#FFC8C6C6","point":0.5},{"color":"#FFD0CECE","point":0.6},{"color":"#FFD9D6D6","point":0.7},{"color":"#FFE1DEDD","point":0.8},{"color":"#FFE9E6E5","point":0.9},{"color":"#FFF0EEED","point":1}],"backgroundColor":"#FF000000"}},"navItems":[{"type":8,"title":"All","url":"https://medium.com/outfit7/latest"},{"type":4,"title":"Game Dev","url":"https://medium.com/outfit7/game-dev/home","topicId":"d7f7473196df","source":"topicId"},{"type":4,"title":"QA","url":"https://medium.com/outfit7/qa/home","topicId":"29a5e7ebfcfc","source":"topicId"},{"type":2,"title":"About","postId":"13e11ddd19e7","url":"https://medium.com/outfit7/the-outfit7-tech-blog-13e11ddd19e7","source":"postId"},{"type":3,"title":"Jobs","url":"https://outfit7.com/careers/jobs?field=technology&utm_source=social&utm_medium=medium&utm_campaign=tech-jobs"}],"colorBehavior":2,"collectionFeatures":[30],"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"title":"The inside scoop on development, engineering & tech innovation","description":"","backgroundImage":{"id":"1*lduq8q-DAzZbQ9GtDcLBvw.png","originalWidth":5857,"originalHeight":998,"focusPercentX":53.57142857142857,"focusPercentY":95.83333333333333},"logoImage":{"id":"1*rsxLbtYH2VSNPlCVkyXhSw@2x.png","originalWidth":2062,"originalHeight":277,"alt":"Outfit7"},"alignment":2,"layout":5},"subscriberCount":53,"tagline":"Our playground, your game.","instagramUsername":"outfit7","isOptedIntoAurora":false,"isCurationAllowedByDefault":false,"polarisCoverImage":{"imageId":"1*GJaVmaUaWCbCnxCoWDGxpw.png","filter":"","backgroundSize":"","originalWidth":1500,"originalHeight":749,"strategy":"resample","height":0,"width":0},"type":"Collection"},"topic":{"topicId":"d7f7473196df","collectionId":"6ec626d5ad62","createdAt":0,"slug":"game-dev","header":{},"sections":[{"source":4,"layout":4,"number":10,"title":"","items":[{"postId":"ba5d97a4c1c2","itemType":"postId"},{"postId":"ce93b31b61bd","itemType":"postId"},{"postId":"14b640e2757b","itemType":"postId"},{"postId":"1e5c4a50b6c8","itemType":"postId"},{"postId":"2c6b53a39bf","itemType":"postId"},{"postId":"46cf06181893","itemType":"postId"},{"postId":"13e11ddd19e7","itemType":"postId"}],"tagSlug":"Game Development"}],"title":"Game Dev","description":"Game Development Articles","type":"CollectionTopic"},"header":{"title":"Game Dev","description":"Game Development Articles","alignment":1},"streamItems":[{"createdAt":1732392246029,"randomId":"2e2abd930f4c","section":{"items":[{"post":{"postId":"ba5d97a4c1c2"},"itemType":"post"},{"post":{"postId":"ce93b31b61bd"},"itemType":"post"},{"post":{"postId":"14b640e2757b"},"itemType":"post"},{"post":{"postId":"1e5c4a50b6c8"},"itemType":"post"},{"post":{"postId":"2c6b53a39bf"},"itemType":"post"},{"post":{"postId":"46cf06181893"},"itemType":"post"},{"post":{"postId":"13e11ddd19e7"},"itemType":"post"}],"layout":4},"itemType":"section","type":"StreamItem"}]}) // ]]></script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8e73c42ff9a89fda',t:'MTczMjM5MjI0Ny4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10