<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Gaming</title><link>https://cloud.google.com/blog/products/gaming/</link><description>Gaming</description><atom:link href="https://cloudblog.withgoogle.com/blog/products/gaming/rss/" rel="self"></atom:link><language>en</language><lastBuildDate>Thu, 04 Sep 2025 21:55:31 +0000</lastBuildDate><image><url>https://cloud.google.com/blog/products/gaming/static/blog/images/google.a51985becaa6.png</url><title>Gaming</title><link>https://cloud.google.com/blog/products/gaming/</link></image><item><title>The AI-powered shift to “living games:” Meet the customers and partners leveling up the ways we play</title><link>https://cloud.google.com/blog/products/gaming/games-start-ups-developers-partners-innovating-with-gen-ai/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The games industry is on a powerful ride, surging forward with innovation and a sharp focus on the player experience. For years, the industry’s evolution was defined by familiar IPs getting better graphics and gameplay. At Google Cloud, we believe we’re on the cusp of something far more radical — a shift on the scale of the transition from cartridges to CD-ROMs, or 2D to 3D graphics. This new era is &lt;/span&gt;&lt;a href="https://cloud.google.com/transform/living-games-transforming-player-experience-development-operations-interview?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;defined by the rise of "living games,"&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; a new form of dynamic, ever-evolving experiences powered by AI that captivate players for years. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With the global market for games &lt;/span&gt;&lt;a href="https://newzoo.com/resources/blog/global-games-market-update-q2-2025" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;surpassing $180 billion&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; in 2024, this fundamental shift in how games are developed, played, and experienced creates an entirely new opportunity for the industry. A big part of what’s driving this shift is the transformative power of cloud computing and AI, and many cutting-edge developers and startups are already taking advantage of these advances.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Cloud platforms are now the core of a &lt;/span&gt;&lt;a href="https://www.businesswire.com/news/home/20250721364057/en/Omdia-Cloud-Platforms-Drive-%2412.9bn-Games-Market-Ecosystem" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;$12.9 billion ecosystem&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; within games, with AI adoption emerging as a central growth driver. In fact, Google Cloud’s &lt;/span&gt;&lt;a href="https://cloud.google.com/resources/games-report?e=48754805&amp;amp;hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;new survey&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, conducted by The Harris Poll, reveals just how deeply integrated AI has become: 97% of game developers agree that AI is reshaping the games industry. They already see this evolving technology as fundamentally changing how they create games and what players expect. This new technology is turning the weeks-long live-operations cycle into an instantaneous, AI-driven feedback loop that creates a game world that feels truly alive.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The vision of truly living games is no longer a distant dream; it's a reality unfolding today. Google Cloud is helping drive this forward through the powerful combination of Google’s deep live service expertise and cutting-edge cloud and generative AI technologies. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;It’s this kind of innovation that’s driving new and expanded collaborations with incredible games customers and partners, including Atlas, Embody, Ludeo, Nacon, and Nitrado. These pioneers are pushing the boundaries of what's possible in games, from creating more immersive player experiences to accelerating game development and scaling their operations.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Atlas: AI for creating vast 3D game worlds&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://atlas.design/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Atlas&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; is an agentic 3D-content creation platform designed for professional game studios, enabling them to generate game-ready assets, environments, tools, and workflows. It focuses on production-scale workflows rather than one-off asset generation, acting as a creative assistant through its multi-agent AI system. Developers can co-create with intelligent AI agents using natural language prompts, ensuring the output is tailored to their specific technical and aesthetic goals. Atlas integrates with industry-standard pipelines like Unreal Engine, Unity, and Houdini, making it ideal for AA+ teams building complex games at scale.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;“We believe AI-native games will define the next chapter in interactive entertainment,” said Ben James, chief executive officer, Atlas. “These experiences will be dynamic, personalized, and constantly evolving — and they’ll require a new creative infrastructure. Partnering with Google Cloud gives us the compute foundation and orchestration support to bring that vision to life.”&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Atlas is collaborating with Google Cloud to supercharge its multi-agent AI infrastructure and accelerate the development of AI-native games. The platform is built entirely on Google Cloud's infrastructure and uses our model orchestration tools, including &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Vertex AI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. This provides Atlas with the robust compute foundation and orchestration support necessary to bring its vision to life, enabling a new era of dynamic, evolving interactive entertainment. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;"Atlas's ability to seamlessly integrate with our highly customized workflows has been a game changer,” said Joseph Burnette, technical director of the Innovation Technology Division at SQUARE ENIX. “By deeply understanding the nuances of our pipeline, they've become an invaluable partner, enabling us to deliver high-quality, performance-optimized solutions with impressive agility."&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-video"&gt;



&lt;div class="article-module article-video "&gt;
  &lt;figure&gt;
    &lt;a class="h-c-video h-c-video--marquee"
      href="https://youtube.com/watch?v=L1nylc9qBUY"
      data-glue-modal-trigger="uni-modal-L1nylc9qBUY-"
      data-glue-modal-disabled-on-mobile="true"&gt;

      
        

        &lt;div class="article-video__aspect-image"
          style="background-image: url(https://storage.googleapis.com/gweb-cloudblog-publish/images/maxresdefault_3o26ZPd.max-1000x1000.jpg);"&gt;
          &lt;span class="h-u-visually-hidden"&gt;Atlas × Parallel&lt;/span&gt;
        &lt;/div&gt;
      
      &lt;svg role="img" class="h-c-video__play h-c-icon h-c-icon--color-white"&gt;
        &lt;use xlink:href="#mi-youtube-icon"&gt;&lt;/use&gt;
      &lt;/svg&gt;
    &lt;/a&gt;

    
      &lt;figcaption class="article-video__caption h-c-page"&gt;
        
          &lt;h4 class="h-c-headline h-c-headline--four h-u-font-weight-medium h-u-mt-std"&gt;Footage shown is from Parallel’s upcoming game, Colony, using Atlas technology.&lt;/h4&gt;
        
        
      &lt;/figcaption&gt;
    
  &lt;/figure&gt;
&lt;/div&gt;

&lt;div class="h-c-modal--video"
     data-glue-modal="uni-modal-L1nylc9qBUY-"
     data-glue-modal-close-label="Close Dialog"&gt;
   &lt;a class="glue-yt-video"
      data-glue-yt-video-autoplay="true"
      data-glue-yt-video-height="99%"
      data-glue-yt-video-vid="L1nylc9qBUY"
      data-glue-yt-video-width="100%"
      href="https://youtube.com/watch?v=L1nylc9qBUY"
      ng-cloak&gt;
   &lt;/a&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3 data-block-key="rtehs"&gt;&lt;b&gt;Embody: Personalized spatial audio for unrivaled immersion&lt;/b&gt;&lt;/h3&gt;&lt;p data-block-key="5ogqo"&gt;&lt;a href="https://embody.co/?currency=USD" target="_blank"&gt;Embody&lt;/a&gt; is an AI technology company revolutionizing sound for games, music, and XR experiences through its Immerse AI Engine. This engine uses machine learning, 3D neural networks, and computer vision to deliver personalized spatial audio on any headphones. Simply by analyzing a short smartphone video of a player's head and ears, Embody creates a unique sound profile for a hyper-realistic and deeply immersive experience. AI-native head tracking and adaptive EQ further enhance the audio, ensuring a consistent and top-tier sound experience across all devices.&lt;/p&gt;&lt;p data-block-key="4l0ec"&gt;To power these complex, real-time calculations and scale to millions of gamers, Embody relies on Google Cloud's infrastructure. Access to massive, cost-effective &lt;a href="https://cloud.google.com/gpu"&gt;GPU compute power&lt;/a&gt; is crucial for generating personalized audio profiles in seconds and for their continuous innovation in spatial sound. Our collaboration also allows Embody's R&amp;amp;D team to rapidly prototype new ideas and ensure their technology is economically viable and globally scalable. Embody's Immerse is already enhancing AAA titles like &lt;i&gt;Call of Duty: Black Ops 6&lt;/i&gt;, &lt;i&gt;War Zone&lt;/i&gt;, &lt;i&gt;Final Fantasy XIV&lt;/i&gt;, &lt;i&gt;Cyberpunk 2077&lt;/i&gt;, and &lt;i&gt;The Witcher 3: Wild Hunt&lt;/i&gt; — and just announced it’s launching with Sea of Thieves.&lt;/p&gt;&lt;p data-block-key="79eiq"&gt;“Sound is the emotional core of every game, and we believe it should be personal,” said Kapil Jain, chief executive officer, Embody. “With Google Cloud, we’re scaling our AI-powered sound personalization engine to meet the demand of millions of gamers around the world.”&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-video"&gt;



&lt;div class="article-module article-video "&gt;
  &lt;figure&gt;
    &lt;a class="h-c-video h-c-video--marquee"
      href="https://youtube.com/watch?v=wrgLYXlG9_U"
      data-glue-modal-trigger="uni-modal-wrgLYXlG9_U-"
      data-glue-modal-disabled-on-mobile="true"&gt;

      
        

        &lt;div class="article-video__aspect-image"
          style="background-image: url(https://storage.googleapis.com/gweb-cloudblog-publish/images/Screenshot_2025-08-17_at_10.57.47AM.max-1000x1000.png);"&gt;
          &lt;span class="h-u-visually-hidden"&gt;The Witcher 3 Immerse Gamepack&lt;/span&gt;
        &lt;/div&gt;
      
      &lt;svg role="img" class="h-c-video__play h-c-icon h-c-icon--color-white"&gt;
        &lt;use xlink:href="#mi-youtube-icon"&gt;&lt;/use&gt;
      &lt;/svg&gt;
    &lt;/a&gt;

    
  &lt;/figure&gt;
&lt;/div&gt;

&lt;div class="h-c-modal--video"
     data-glue-modal="uni-modal-wrgLYXlG9_U-"
     data-glue-modal-close-label="Close Dialog"&gt;
   &lt;a class="glue-yt-video"
      data-glue-yt-video-autoplay="true"
      data-glue-yt-video-height="99%"
      data-glue-yt-video-vid="wrgLYXlG9_U"
      data-glue-yt-video-width="100%"
      href="https://youtube.com/watch?v=wrgLYXlG9_U"
      ng-cloak&gt;
   &lt;/a&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Ludeo: Redefining game discovery with playable moments&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://business.ludeo.com/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Ludeo&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; is the world’s first playable media platform, enabling users to instantly play game highlight clips. Unlike gameplay content consumed today — which turns the experience of playing games into passive videos — Ludeo works directly with studios and publishers to create “playable moments,” called Ludeos, that users can instantly jump into and experience themselves. They can do so whether they own the game or not, without any downloads or lengthy installs. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;These Ludeo moments can be shared with a link anywhere, from social media platforms to messaging apps. Passive viewers become active participants in seconds. This helps game studios attract new players, re-engage existing ones by showcasing new content, and even lets players "try before they buy" in-game items, boosting interest and conversion.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To power this vision, Ludeo will bolster its core infrastructure with Google Cloud, using &lt;/span&gt;&lt;a href="https://cloud.google.com/kubernetes-engine"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Kubernetes Engine&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (GKE) and GPUs to create a highly optimized, low-latency infrastructure that’s required for their platform. Ludeo will also aim to build the "playable YouTube," fundamentally changing how players discover and socially engage with games, from popular AAA titles to AAs and indies.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;“Google Cloud’s infrastructure strengthens the capabilities and scale of the Ludeo platform,” said Uri Levanon, vice president of business development and partnerships at Ludeo. “This powerful combination will give players the magic of instantly playing game highlights instead of just watching them, in addition to unlocking new growth opportunities for game studios.”&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;NACON: Accelerating game production with AI transformation&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.nacongaming.com/en-US/?srsltid=AfmBOoqGxnxwV-y4FLxT8bxEbe1JzhinUWknPDjK4A9yTeNlGbSi2q0S" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;NACON&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; stands as a prominent AA video games company and a leader in high-end games hardware, known for popular titles like &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;RoboCop: Rogue City&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Ravenswatch&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Test Drive Unlimited Solar Crown&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;. With 15 game studios under its belt, NACON is making a bold strategic pivot, embedding AI at the core of its operations, from game development to marketing. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;NACON’s goal is to increase annual game launches, a move heavily reliant on streamlining processes and boosting creativity with AI. This vision encompasses everything from crafting captivating trailers and in-game cinematics to optimizing game maps for racing titles, all designed to enhance player experience and developer efficiency.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Cloud is NACON’s partner in this AI-driven transformation, helping NACON innovate faster and deliver unforgettable games experiences. NACON has selected Google Cloud as its preferred partner for game servers, ensuring scalable and reliable infrastructure for their diverse portfolio. They are also using Google’s Veo 3 model as a complementary tool to help produce cinematic trailers and Google’s Gemini model to support localization efforts, enabling NACON to reach new global markets more efficiently. Additionally, NACON will use Looker for deep insights into in-game analytics and player behavior, and &lt;/span&gt;&lt;a href="https://cloud.google.com/transform/how-google-does-it-modernizing-threat-detection"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Threat Intelligence&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to help their ability to proactively secure their operations against industry threats. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;“Partnering with Google Cloud marks a pivotal moment in NACON’s journey to transform game development with AI at its core,” said Alain FALC, president and chief executive officer, NACON. “Google Cloud’s cutting-edge tools empower our teams to innovate faster, streamline production, and deliver richer, more immersive experiences to gamers worldwide." &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Nitrado: Hybrid cloud scaling for flawless multiplayer gaming&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://server.nitrado.net/en-US?gad_source=1&amp;amp;gad_campaignid=16661931785&amp;amp;gbraid=0AAAAAC3Ny2XFjNX58IwnvCzlyafIR-rO5&amp;amp;gclid=CjwKCAjw1ozEBhAdEiwAn9qbzaBumYNqxkXw05ftXhnlQOFMDoNlNQC8_sjGqp-af9DKLgMd3RBljBoCI6IQAvD_BwE" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Nitrado&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, a global leader in game server hosting, is making multiplayer game creation even easier for studios with a new capability for their orchestration solution, &lt;/span&gt;&lt;a href="https://gamefabric.com/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GameFabric&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. This platform acts as a unified orchestration layer, allowing game developers to seamlessly combine Nitrado’s high-performance bare metal infrastructure with the elasticity of the cloud, all managed through GameFabric. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This means studios can automatically use Google Cloud to support traffic spikes, like during a big game launch or a busy weekend. Furthermore, studios can bring games closer to their players by instantly deploying servers in new regions, using Google’s planet-scale network to ensure low-latency performance for a global audience. GameFabric can scale up or down automatically, allowing developers to focus on the player experience, not the infrastructure, and studios to keep their games running smoothly and cost-efficiently, no matter how many players jump online or where they are.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With Google Cloud as GameFabric's preferred cloud provider, studios benefit from Google Cloud's low-latency global network for a flawless player experience and elastic infrastructure for unlimited scalability. This partnership is built on operational tools like GKE and Agones, which are trusted for managing game servers efficiently and reliably. Plus, Google Cloud's built-in security and reliability protect game and player data around the clock. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;“GameFabric brings together bare metal and cloud in a unified orchestration layer, so studios can scale up, stay fast, and keep costs predictable,” said Raphael Stange, chief executive officer, Nitrado. “This partnership strengthens the hybrid model we’ve built to serve multiplayer studio needs.”&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Rocket_Graphic_Asset_1920x1080.max-1000x1000.jpg"
        
          alt="Rocket Graphic Asset 1920x1080"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Bring your living games to life&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The future of living games isn't just a concept — it's being built right now, powered by the dynamic combination of cloud and AI. We’re committed to being the foundational partner for game developers and studios of all sizes, offering the scalable infrastructure, powerful AI tools, and deep expertise needed to bring truly dynamic, immersive, and successful games to players worldwide. We're excited to see what new experiences emerge as our customers and partners continue to push the boundaries of creativity and technology.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Build your AI-powered POC with Google Cloud for games. Visit&lt;/span&gt; &lt;a href="http://cloud.google.com/solutions/games"&gt;&lt;span style="font-style: italic; text-decoration: underline; vertical-align: baseline;"&gt;cloud.google.com/solutions/games&lt;/span&gt;&lt;/a&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 18 Aug 2025 07:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/gaming/games-start-ups-developers-partners-innovating-with-gen-ai/</guid><category>AI &amp; Machine Learning</category><category>Customers</category><category>Partners</category><category>Gaming</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/gaming_A8qtRWM.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>The AI-powered shift to “living games:” Meet the customers and partners leveling up the ways we play</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/gaming_A8qtRWM.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/gaming/games-start-ups-developers-partners-innovating-with-gen-ai/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Jack Buser</name><title>Global Director for Games, Google Cloud</title><department></department><company></company></author></item><item><title>Enhancing multiplayer games with gen AI and cloud gaming: a technical deep dive</title><link>https://cloud.google.com/blog/products/gaming/how-gen-ai-powers-up-multiplayer-games/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Generative AI is poised to revolutionize the gaming landscape. It will offer — and in many cases, already is offering — personalized NPCs, dynamic narratives, and tailored environments, thereby reshaping player experiences. It’s &lt;/span&gt;&lt;a href="https://venturebeat.com/games/google-cloud-expects-live-services-to-evolve-into-ai-based-living-games-jack-buser/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;a concept increasingly known as living games&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The recent unveiling of &lt;/span&gt;&lt;a href="https://deepmind.google/discover/blog/genie-2-a-large-scale-foundation-world-model" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Genie 2: a large scale foundation world model&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; created by Google DeepMind exemplifies this potential. Living cloud gaming, underpinned by Kubernetes, Agones, and Open Match, and integrated with generative AI, can extend these advancements to a vast audience without sacrificing performance or user experience.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In this blog post, we'll take you on a journey of integrating cutting-edge generative AI models — like Google’s &lt;/span&gt;&lt;a href="https://blog.google/technology/ai/google-gemini-ai/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; or open models such as &lt;/span&gt;&lt;a href="https://blog.google/technology/developers/gemma-3/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemma&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; — into scalable multiplayer game servers powered by Google Kubernetes Engine (GKE) and Agones. This blog will showcase how a sample game can be enhanced with generative AI, enabling developers to enrich their games with AI-driven features such as interactive user guidance, real-time chat capabilities, and personalized summaries of user progress, all while maintaining scalability and reliability.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Cloud gaming with Agones: the foundation for scalable multiplayer experiences&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://agones.dev/" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Agones&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; is an open-source, Kubernetes-based game-server-hosting solution that enables developers to efficiently manage large numbers of dedicated game servers. While Agones works on any Kubernetes deployment, running it on GKE provides Google Cloud customers with &lt;/span&gt;&lt;a href="https://cloud.google.com/kubernetes-engine/docs/how-to/agones-support"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;official support&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Agones also integrates with &lt;/span&gt;&lt;a href="https://open-match.dev/" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Open Match&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, an open-source matchmaking framework that simplifies the creation of multiplayer matches based on player criteria such as skill level or location. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This combination of Agones and Open Match provides a powerful foundation for scalable cloud games.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-aside"&gt;&lt;dl&gt;
    &lt;dt&gt;aside_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;title&amp;#x27;, &amp;#x27;Try Google Cloud for free&amp;#x27;), (&amp;#x27;body&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fe389f8cc70&amp;gt;), (&amp;#x27;btn_text&amp;#x27;, &amp;#x27;Get started for free&amp;#x27;), (&amp;#x27;href&amp;#x27;, &amp;#x27;https://console.cloud.google.com/freetrial?redirectPath=/welcome&amp;#x27;), (&amp;#x27;image&amp;#x27;, None)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Generative AI's Potential in Cloud Gaming&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;By utilizing generative AI in real time, living games can go beyond traditional live services, creating a dynamic and engaging player experience without constant developer input. Living games can foster a deep connection between players and the game world, ensuring that each playthrough is unique, through features like dynamic storyline adaptation, responsive NPC interactions, and personalized in-game content.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Building a language learning game with gen AI: A technical walkthrough&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To illustrate a simple example of Agones and generative AI integration, we created a language learning game called &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/ai-on-gke/tree/lexitrail/tutorials-and-examples/lexitrail" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Lexitrail&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Lexitrail helps players memorize Chinese characters in an interactive way while also competing against other players in multiplayer mode. &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1-lexitrailUI.max-1000x1000.png"
        
          alt="1-lexitrailUI"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Lexitrail utilizes a &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/ai-on-gke/tree/lexitrail/tutorials-and-examples/lexitrail/ui" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;React frontend&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, a &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/ai-on-gke/tree/lexitrail/tutorials-and-examples/lexitrail/backend" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Python Flask backend&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and a MySQL database. All of them are deployed in-cluster on&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt; &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Google Kubernetes Engine (GKE). A key component is the game session management layer, deployed as Agones game servers for seamless game session handling.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Within Lexitrail, we leverage the power of Gemini and Imagen models. These models generate subtle, ambiguous hint images that aid players in memorizing and recalling words. To further personalize the experience, we provide additional user-specific context alongside the LLM prompts.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;High-Level Architecture of Lexitrail&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The diagram below illustrates the fundamental architecture and components that underpin the Lexitrail system.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2-architecture.max-1000x1000.png"
        
          alt="2-architecture"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This architecture is designed to provide key features that enhance the gaming experience:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Seamless game sessions&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Utilizing Agones for game session management ensures uninterrupted gameplay with quick state transitions in both single-player and multiplayer modes.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Integration of generative AI&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: The generative AI integration layer's adaptability enables developers to create endpoints for both closed models (e.g. Gemini, Imagen) and open models (e.g., Llama, Stable Diffusion, Gemma). These endpoints can then be integrated with other components in the game application, allowing for the creation of detailed and suggestive hint images specifically tailored to the individual game's requirements&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Skill-based matchmaking&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: In multiplayer environments, Open Match creates balanced and engaging matches by pairing players based on their skill levels.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Scalability and reliability&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: The foundation of this architecture is GKE, providing the Kubernetes infrastructure necessary for managing and autoscaling game servers. Running Agones and Open Match on GKE guarantees that the language learning game can effortlessly support a global player base, from small study groups to massive tournaments.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Here's a breakdown of the Lexitrail game application's architecture, designed for a smooth and scalable multiplayer experience:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Lexitrail frontend:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; This is the initial interface for players. It manages authentication through Google login. The user interface component and the business logic governing its interactions are both managed within the frontend. Various game modes are provided. Players can practice solo or compete against others in multiplayer matches. Additionally, players can select wordsets based on different &lt;/span&gt;&lt;a href="https://en.wikipedia.org/wiki/Hanyu_Shuiping_Kaoshi" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;HSK (Hanyu Shuiping Kaoshi) &lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;levels for each game mode. When a player opts for multiplayer mode, the game's frontend triggers the matchmaking process. This process involves sending matchmaking requests to the Open Match component. &lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Open Match: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Lexitrail employs Open Match which is deployed as a GKE service for its matchmaking system. The current setup is straightforward: players who select the same wordset are paired together. However, Open Match's flexibility allows developers to implement more intricate matchmaking algorithms tailored to their specific game requirements. Once a match is determined, Open Match collaborates with the game server orchestration system to designate a dedicated game server for that match. Then the matchmaker passes back to the game clients (through the frontend) the address and port each client will need to connect directly to, since the game state is an in-memory simulation, and then, they play Lexitrail!&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Game server:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; In Lexitrail, &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;the game server is responsible for managing game sessions for pairs of players. It oversees gameplay logic, tracks intermediate word recall results, and maintains the final scoreboard. Additionally, the game server enhances performance by acting as a buffer layer. It batches time-consuming tasks, such as database updates and asynchronously flushes them to the backend, ensuring that these operations don't negatively impact the responsiveness of the frontend.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Agones&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Lexitrail employs Agones for game server orchestration, leveraging its allocator service to facilitate matchmaker’s requests to get the dedicated game server for each match.&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; Agones manages these game servers to ensure availability so the player experiences aren’t interrupted while players are playing on them. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Additionally, Lexitrail utilizes Agones' fleet autoscaler to dynamically adjust the number of game servers based on demand.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Game backend:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Lexitrail's game backend, deployed as a GKE service, manages the API interface and business logic for database interactions. It handles requests from both the frontend and game servers, retrieving and updating player data like wordsets, words, and recall history. Additionally, the backend integrates with the generative AI endpoints to generate hint texts and images &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;that aid players in memorizing and recalling words&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong style="vertical-align: baseline;"&gt;Database: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Lexitrail's backend database is powered by MySQL, deployed within the GKE environment. This database houses all essential game data which includes user profiles, word sets, individual word entries, and player recall history. The database schema can be found &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/ai-on-gke/blob/lexitrail/tutorials-and-examples/lexitrail/README.md#db-schema" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Generative AI integration:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; In the game's user interface, players are presented with words to memorize during gameplay, accompanied by visual hints to aid in recall. These image hints are generated by integrating with generative AI endpoints, which are deployed within the GKE environment. The game backend queries the image generation model endpoint to create the hint images for each word. The flexibility of kubernetes based architecture allows developers to easily select and utilize different underlying LLMs for image generation. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Take the Next Step&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The potential for gen AI in gaming is enormous, and the tools are now more accessible than ever. We invite you to explore the &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/ai-on-gke/tree/lexitrail/tutorials-and-examples/lexitrail" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;repo&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; as a starting point.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Explore gen AI integration&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Start integrating gen AI models into your own applications using Agones and GKE.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Leverage Vertex AI and GKE models&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Experiment and compare integration between Vertex AI or open models on GKE to see how AI can transform your gaming experience.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Join the community&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Engage with &lt;/span&gt;&lt;a href="https://agones.dev/site/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;the developer community&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for Agones, Open Match, and broader GKE AI projects — share your insights, learn from others, and help shape the future of AI-powered gaming.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Stay at the forefront of gaming technology by embracing scalable AI-driven features that deliver new levels of personalization and engagement to players, bringing living games to reality. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Kubernetes and GKE with Agones and Open Match provide a scalable, production-proven enterprise-grade solution for cloud games that leverage state-of-the-art components. The journey of scalable, AI-powered gaming is just beginning — and we can’t wait to see what you build!&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 17 Mar 2025 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/gaming/how-gen-ai-powers-up-multiplayer-games/</guid><category>AI &amp; Machine Learning</category><category>Containers &amp; Kubernetes</category><category>GKE</category><category>Gaming</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/games_gen_ai.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Enhancing multiplayer games with gen AI and cloud gaming: a technical deep dive</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/games_gen_ai.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/gaming/how-gen-ai-powers-up-multiplayer-games/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Max Gong</name><title>Senior Software Engineer</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Alex Bulankou</name><title>Senior Engineering Manager</title><department></department><company></company></author></item><item><title>Co-op mode: New partners driving the future of gaming with AI</title><link>https://cloud.google.com/blog/products/gaming/co-op-mode-the-ai-partners-driving-the-the-future-of-gaming/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Leaders in the games industry are using Google Cloud’s AI to drive &lt;/span&gt;&lt;a href="https://cloud.google.com/solutions/games?e=13802955&amp;amp;hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;unprecedented advancements in game development&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, including &lt;/span&gt;&lt;a href="https://cloud.google.com/transform/2025-the-year-ai-levels-up-the-games-industry-gen-ai"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;smarter, faster, and more immersive gaming experiences&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. And just like any successful game studio is the work of a broad and diverse team, our partner ecosystem is ready to help level up any project, including with game-industry-specific AI tools. Together, we can minimize engineering effort, maximize production efficiency, and help gaming companies grow their businesses.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;At this year’s Games Developers Conference, we're announcing new partnerships with nunu.ai, ElevenLabs and Common Sense Machines. These innovative startups are using Google Cloud’s AI platform, including Vertex AI, Google Kubernetes Engine (GKE), and Agentspace, to enhance creativity, automate workflows, and elevate player immersion.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;nunu.ai: Improving game testing with AI agents&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Game testing and quality assurance, traditionally time-consuming and costly initiatives, are being transformed by AI. Google Cloud is partnering with &lt;/span&gt;&lt;a href="http://nunu.ai" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;nunu.ai&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to bring innovative, AI-powered game-testing solutions to developers worldwide. As games grow increasingly complex, nunu.ai's multimodal AI agents—powered by Gemini models and running on Google Cloud infrastructure—are transforming how game testing is conducted. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Nunu.ai's agents navigate game environments just like human players, identifying bugs traditional testing might miss. These AI agents observe the game through rendered frames and interact using keyboard and mouse inputs, providing authentic testing experiences.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-video"&gt;



&lt;div class="article-module article-video "&gt;
  &lt;figure&gt;
    &lt;a class="h-c-video h-c-video--marquee"
      href="https://youtube.com/watch?v=eoCMjNE7aUQ"
      data-glue-modal-trigger="uni-modal-eoCMjNE7aUQ-"
      data-glue-modal-disabled-on-mobile="true"&gt;

      
        

        &lt;div class="article-video__aspect-image"
          style="background-image: url(https://storage.googleapis.com/gweb-cloudblog-publish/original_images/maxresdefault_XCGW2CM.jpg);"&gt;
          &lt;span class="h-u-visually-hidden"&gt;GDC 2025 showcase&lt;/span&gt;
        &lt;/div&gt;
      
      &lt;svg role="img" class="h-c-video__play h-c-icon h-c-icon--color-white"&gt;
        &lt;use xlink:href="#mi-youtube-icon"&gt;&lt;/use&gt;
      &lt;/svg&gt;
    &lt;/a&gt;

    
  &lt;/figure&gt;
&lt;/div&gt;

&lt;div class="h-c-modal--video"
     data-glue-modal="uni-modal-eoCMjNE7aUQ-"
     data-glue-modal-close-label="Close Dialog"&gt;
   &lt;a class="glue-yt-video"
      data-glue-yt-video-autoplay="true"
      data-glue-yt-video-height="99%"
      data-glue-yt-video-vid="eoCMjNE7aUQ"
      data-glue-yt-video-width="100%"
      href="https://youtube.com/watch?v=eoCMjNE7aUQ"
      ng-cloak&gt;
   &lt;/a&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Our partnership with nunu.ai delivers:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Human-like testing:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; AI agents play games just like humans do, catching bugs that other testing solutions miss.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Cost efficiency:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Game studios working with nunu.ai have reduced manual QA costs by up to 50% by automating repetitive testing tasks.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;24/7 availability&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;at scale:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Unlike human testers, nunu.ai's AI agents work around the clock with consistent performance and scale to meet growing demands.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Accelerated time-to-market&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: By automating and streamlining the testing process, nunu.ai helps developers identify and fix issues faster, significantly reducing development cycles and enabling quicker game releases without sacrificing quality.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Easy integration&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Developers can implement nunu.ai's lightweight SDK quickly or use black-box testing for compatible games with minimal maintenance.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Multiplayer capabilities&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Easily spawn multiple AI agents to simulate real player interactions, solving the persistent challenge of multiplayer testing.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Cross-platform support&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Currently supporting PC and mobile games (iOS and Android), with console support coming soon.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;These advanced AI agents automatically test your game throughout your development pipeline, providing continuous quality assurance at every stage. By automating repetitive testing tasks, nunu.ai ensures developers can focus on what matters most: creating exceptional gaming experiences for players.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-aside"&gt;&lt;dl&gt;
    &lt;dt&gt;aside_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;title&amp;#x27;, &amp;#x27;Try Google Cloud for free&amp;#x27;), (&amp;#x27;body&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fe3885aa2b0&amp;gt;), (&amp;#x27;btn_text&amp;#x27;, &amp;#x27;Get started for free&amp;#x27;), (&amp;#x27;href&amp;#x27;, &amp;#x27;https://console.cloud.google.com/freetrial?redirectPath=/welcome&amp;#x27;), (&amp;#x27;image&amp;#x27;, None)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;ElevenLabs: AI-powered voice synthesis for immersive experiences&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Beyond gameplay mechanics and quality assurance, AI is enhancing another fundamental aspect of player immersion: voice and sound. &lt;/span&gt;&lt;a href="https://elevenlabs.io/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ElevenLabs&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; is at the forefront of this transformation.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ElevenLabs provides AI-powered voice technology for immersive, dynamic, and scalable experiences. By combining Google Cloud’s infrastructure with ElevenLabs’ voice AI, studios can create new kinds of real-time interactions, and localize and produce the games simply and quickly.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_-_ElevenLabs.max-1000x1000.png"
        
          alt="2 - ElevenLabs"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ElevenLabs AI voice solutions enable:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Real-time conversational character voices:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; AI-powered interactions for immersive NPCs.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Custom voice and sound design:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Instant, unique voice creation and tailored sound effects.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Faster dialogue production:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; AI text-to-speech for dialogue and voiceovers.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Easier global localization:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Automated, high-quality voice translation.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Synthetic voiceovers for marketing and trailers:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Generate compelling AI-driven voiceovers for game promotions and storytelling.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;AI-Generated narration and audiobooks:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Streamline long-form voice content production for in-game lore, cutscenes, and interactive storytelling.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Multimodal AI integration:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Combine voice AI with LLMs and other generative AI tools for intelligent, context-aware conversations.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;AI-Driven contact centers and support:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Enhance customer interactions with natural, responsive AI voice agents.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With Google Cloud’s scalable AI infrastructure and ElevenLabs’ industry-leading voice synthesis, studios can enhance player immersion, reduce production costs, and bring their worlds to life. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Common Sense Machines (CSM.ai): Best-in-class AI models for 3D content creation &lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Common Sense Machines (CSM) is redefining AI-native game development by building best-in-class AI models for 3D content generation. They were &lt;/span&gt;&lt;a href="https://www.csm.ai/blog/csm-takes-1-spot-in-global-3d-ai-model-rankings" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;recently ranked&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; as the No. 1 3D/AI model globally, on the world's largest AI model benchmarking site, Hugging Face, in the 3D Arena category. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;CSM’s models set a new standard for high-quality AI-generated assets, enabling artists to enhance their creativity, build immersive environments, and reduce time spent on tedious tasks li&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;ke retopology and UV remapping.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/3_-_CSM.gif"
        
          alt="3 - CSM"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;CSM is already making a real impact through strategic partnerships. They’re working with Cosmic Lounge, a studio building games with their proprietary AI-powered puzzle games engine, to generate 3D assets for marketing and&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; LiveOps content&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;—&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;the dynamic, continuously updated elements that enhance games after their initial launch (ie: new character skins, seasonal items, and environmental assets). By focusing on use cases that drive user acquisition and revenue, studios can take advantage of AI to drive growth, rather than just improving efficiencies and resolving production bottlenecks.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;CSM is passionate about assisting artists, not replacing them. With AI-hybrid workflows evolving quickly, CSM expects human modelers will always play a crucial role in the creative process.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;The AI-driven future of gaming &lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;"We see a powerful shift in gaming, where AI empowers creators and developers to achieve unprecedented levels of immersion and efficiency," said Macy Mills, partner at A16Z Games, a unit of venture firm Andreessen Horowitz. "Nunu.ai, ElevenLabs, and CSM.ai are pioneering tools that we believe will reshape game development, allowing studios to focus on crafting truly compelling worlds and experiences."&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;AI is transforming how games are created, tested, and experienced. By partnering with innovative startups like nunu.ai, ElevenLabs and CSM, Google Cloud is helping game developers push the boundaries of what’s possible—delivering smarter, faster, and more immersive gaming experiences.&lt;/span&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;sup&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Opening image created with Imagen 3 running on Vertex AI, using the prompt: An overhead shot in a realistic video-game style, wide angle, of a group of characters seen from behind, from different game genres, like fantasy, shooter/military, 8-bit, etc., standing on a mountain top of cliffside, looking out to an exciting world and the horizon. This should all represent the concept "the future of gaming.” ... Make it a little more 8-bit.&lt;/span&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 17 Mar 2025 13:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/gaming/co-op-mode-the-ai-partners-driving-the-the-future-of-gaming/</guid><category>AI &amp; Machine Learning</category><category>Partners</category><category>Gaming</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/google-cloud-games-partner-ecosystem-ai-gami.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Co-op mode: New partners driving the future of gaming with AI</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/google-cloud-games-partner-ecosystem-ai-gami.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/gaming/co-op-mode-the-ai-partners-driving-the-the-future-of-gaming/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Jack Buser</name><title>Global Director for Games, Google Cloud</title><department></department><company></company></author></item><item><title>Powering Web3-enabled gaming with GameShift by Solana Labs</title><link>https://cloud.google.com/blog/products/gaming/powering-web3-enabled-gaming-with-gameshift-by-solana-labs/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;As we join the vibrant community at Solana Breakpoint this week, we're excited to share how Google Cloud is helping shape the future of gaming through its partnership with Solana Labs. The Gamer Village at Breakpoint is a testament to the innovative spirit driving Web3 gaming forward, and we're proud to be at the forefront of this revolution.  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;At the nexus of our partnership is GameShift, which provides the full slate of Web3 primitives and actions — like wallets, tokenized assets, and on-chain markets — that games require; as of today, &lt;/span&gt;&lt;a href="https://console.cloud.google.com/marketplace/product/gameshift/gameshift-api"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gameshift’s offerings are now available&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; through the Google Cloud Marketplace.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We want to share with the Google Cloud community the potential for Web3 in games, how GameShift can help developers realize this potential, the safety of using GameShift for Web3, and how GameShift and Google Cloud now work together seamlessly. We welcome anyone interested to reach out to their Google Cloud account manager or to &lt;/span&gt;&lt;a href="https://console.cloud.google.com/marketplace/product/gameshift/gameshift-api?hl=en&amp;amp;project=solana-labs"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GameShift&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Cloud has long &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/web3"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;recognized the potential of Web3 technologies&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Its support for this ecosystem includes its Blockchain Node Engine product, Web3 BigQuery datasets, and the Web3 for Startups program. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;As a leading blockchain, Solana brings top transaction throughput, 99.95% uptime, and billions in transactions daily.  This integration connects games to millions of users in a unified ecosystem of wallets, assets, and activity. Solana is consistently a top-3 performer in terms of NFT, decentralized exchange trading, and stablecoin volume, as well as transactions-per-second in production, and active wallets. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;These results make Solana a great option for games seeking to leverage Web3 to create new player experiences and new revenue channels.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;The Web3 evolution of gaming&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Video games are constantly evolving. Just like other forms of media, games need to constantly reinvent themselves to offer novel experiences to their users. This could be in the form of new creative assets, gen AI-generated digital assets, story lines, watermarking, provenance or IP licensing. For the same reason, games developers have been rapid adopters of new technology to not only enable new gameplay mechanics, but also to find their way into new parts of our everyday lives, including crossover points into seemingly mundane activities like loyalty programs. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Web3 provides a new avenue for games to reach players with an evolved value proposition. With Web3, games can easily convert their players from customers into partners and co-creators. This is important because players are increasingly sophisticated in their understanding of how they provide value to a game, and how they get monetized. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In short, players are expecting more from their experiences.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Blockchains provide the building blocks that power complete game asset economies, including user-generated content, global game item trading, gamer identity, anti-cheat, and cross-game portability. They also facilitate nuanced monetization schemes aligned with how players interact with the game. Games can implement cost-efficient microtransactions, generate secondary market revenue on first-party and user-generated assets, and monetize their in-game currencies. To players, these revenue strategies feel cooperative rather than extractive.  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;By simplifying interactions between on-chain programs from different providers — also known as “composability” — blockchains enable novel experiences and developer efficiencies. In the payments domain, composability dramatically reduces the cost and complexity of offering  real-money gaming services, earning interest from stored value balances, and providing player choice in payment methods and pay-outs.  Composability also opens the door to exciting features like guild management, open modding, and global player reputation systems, all of which are on the forefront of Web3 game development.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;GameShift simplifies Web3 for games&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;“Game studios have recently been considering Web3 for new approaches to growth and development, but are often discouraged by the seeming complexity of the technology and the Web3 community” said Jack Buser, director for Games at Google Cloud. “Game studios are already overburdened, and need solutions like GameShift that provide simplified technical and cultural interfaces to Web3.” &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;GameShift’s API-first philosophy meets game developers where they’re at, without requiring any blockchain experience to get started. “Our goal in building GameShift,” said  Davis Hart, general manager of GameShift, “is to provide a development and player experience as similar to existing services as possible while leveraging the unique capabilities of Web3.” &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Earth From Another Sun, a cinematic-quality RPG, is using GameShift to power their entire blockchain integration, said Freeman Fan, CEO of the game’s developer. “By leveraging GameShift's proven toolset and innovative features, we can implement best-in-class Web3 gaming experiences while reducing development time and costs by 90%,” Fan said.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Key Advantages &lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;GameShift’s features cover the full spectrum of Web3 gaming functionality in a developer-friendly REST API. The team at Solana Labs offers GameShift customers deep connectivity to the Solana ecosystem, support designing Web3 gaming strategies, and growth support. This means that with GameShift, studios don’t need multiple providers or specialized blockchain developers, and they can rest assured that GameShift will grow with them over time.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Today, GameShift offers five core features:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Seamless wallet integration&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Create embedded wallets in your game or support players with  existing Solana wallets. GameShift wallets abstract key storage and provide a clean and friendly transaction signing flow, providing a smooth, secure experience for players without requiring them to leave your game environment. The fact that our wallets are non-custodial means that games don’t need to manage pools of user assets.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Game asset management&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Easily create and manage in-game assets on the Solana blockchain, with custom asset attributes, rarity, and in-game functionality. It also handles asset transfers, making it simple to implement features like trading or gifting within your game economy.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Pay-in and pay-out systems&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Implement secure, low-cost transactions for in-game purchases, subscriptions, or rewards. This API supports both fiat and cryptocurrency payments, handling currency conversion and transaction processing behind the scenes. It also facilitates easy withdrawals, allowing players to transfer their game-related assets back to their personal wallets or bank accounts.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Marketplace functionality&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Quickly set up and manage in-game marketplaces where players can buy, sell, or trade their assets. This API handles listings, bids, transactions, and transfers, ensuring a secure and efficient marketplace. It also provides tools for implementing royalties, allowing you to earn a percentage of secondary sales, even on user-generated content.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Rewards programs&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Design and implement sophisticated reward systems using blockchain technology. This API allows you to create token-based loyalty programs or achievement-based rewards that provide players with tangible value. It handles program enrollment, tracking, and rewards distribution with custom logic,  enabling you to incentivize player engagement and retention in innovative ways.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Reducing the risks of Web3 in gaming&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;“Developers are rightly concerned about player safety given the history of hacks and scams in Web3,” noted Hart. “But, with the combination of the right security practices and game design, these concerns can be brought to the level that developers routinely address in their off-chain systems.”&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;At the core of GameShift’s strategy is its invisible non-custodial wallet system. This feature provides individual user wallets, each backed by its own cryptographic keys that segregate assets between users, reducing the risk that an attacker could access the assets of all users simultaneously. Key management is abstracted away from  o the user, eliminating the risks associated with user-managed keys and seed phrases.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Players using GameShift wallets are further protected from scams because the game is in control of when and what types of transactions are presented to the user. Transaction Transaction approval flows simulate the effect of any on-chain action and alert the user of any balance changes. GameShift uses only on-chain services from vetted and trusted providers. These strategies  prevent a third party from defrauding users of their assets through phishing attacks or hacks.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;“Our approach allows us to provide an approachable player experience that avoids many of the risks game studios are worried about,” Hart said. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Leveraging Google Cloud with Web3&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With GameShift &lt;/span&gt;&lt;a href="https://console.cloud.google.com/marketplace/product/gameshift/gameshift-api"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;now deployed&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; on the Google Cloud Marketplace, developers can quickly enable Web3 within their existing Cloud game backend services.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image2_EbrutKS.max-1000x1000.png"
        
          alt="image2"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This reference architecture hints at what’s possible with GameShift on Google Cloud, including:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Supplementing existing player data in BigQuery with GameShift transactions, creating a richer view of player activity.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Deploying BigQuery and Vertex AI against the Solana public BigQuery dataset to understand how players interact on-chain.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Using Cloud Storage to easily host user-generated content globally.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Applying generative AI for gaming assets as well  as user-generated content to ensure compliance with content policies, content moderation, toxicity, anti-cheat and player privacy, safety, and security.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Using Pub/Sub to rapidly ingest live blockchain event data and trigger in-game activity.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Looking Ahead&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The future of Web3 gaming is bright, and we're excited about upcoming developments:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Solana Mobile: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Announced at Breakpoint 2024,  the next generation web3 mobile device  will offer a new platform for mobile Web3 gaming.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Solana Permissioned Environments: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Combined with GameShift on Google Cloud, Solana Permissioned Environments will allow studios to benefit from the Solana ecosystem while maintaining control over their chain access.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Tournament Management: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;GameShift has just announced a real-money gaming tournament management product, simplifying the integration of fiat and Web3 payments for game tournaments.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Cloud and GameShift are committed to empowering game developers with the tools and infrastructure they need to create the next generation of engaging, secure, and innovative gaming experiences. Through its collaboration with Solana Labs and the power of GameShift, Google Cloud is helping  turn the promise of Web3 gaming into reality.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Next Steps&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We encourage anyone interested in GameShift and Google Cloud to contact their Google Cloud account rep, contact &lt;/span&gt;&lt;a href="https://console.cloud.google.com/marketplace/product/gameshift/gameshift-api"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GameShift&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and review the &lt;/span&gt;&lt;a href="http://docs.gameshift.dev" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GameShift documentation&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 23 Sep 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/gaming/powering-web3-enabled-gaming-with-gameshift-by-solana-labs/</guid><category>Web3</category><category>Gaming</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/image1_RA8YvLy.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Powering Web3-enabled gaming with GameShift by Solana Labs</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/image1_RA8YvLy.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/gaming/powering-web3-enabled-gaming-with-gameshift-by-solana-labs/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Davis Hart</name><title>General Manager, Gameshift</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Jeff Kim</name><title>Head of Customer Engineering, Gaming, Google Cloud</title><department></department><company></company></author></item><item><title>Square Enix’s journey of building an AI-driven Customer Data Platform</title><link>https://cloud.google.com/blog/products/data-analytics/square-enix-builds-a-customer-data-platform-with-google-cloud/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;Editor’s note: &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;In this post, we’ll learn from Japanese video game and entertainment company Square Enix about its journey building a customer data platform with Google Cloud to enhance its first-party data strategy by collecting and connecting its marketing, player, and game data.&lt;/span&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In today’s data-driven world, understanding who your customers are is more critical than ever. For game developers and publishers, in particular, gaining a complete picture of who your players can quite literally be a game changer — transforming games that never quite find the right audience into standout titles. Data can unlock a trove of valuable insights that help gaming companies gain a deeper understanding of their product discovery journey and player base, unlocking insights into playing style, playtime metrics and more to create engaging, personalized communications.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Unfortunately, traditional data analysis is often siloed with player information scattered across multiple systems and platforms, making it cumbersome and time-consuming to achieve a consolidated view of a player’s interactions and habits. That’s where &lt;/span&gt;&lt;a href="https://cloud.google.com/solutions/customer-data-platform#section-2"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Customer Data Platforms (CDPs)&lt;/span&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt; &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;come in, acting as a central hub that can bring all your player data together and deliver a unified player profile that empowers game developers to truly get to know their players and create games that resonate. Developing a CDP for games is especially complex. This is due to the sheer number of players a game can attract and the massive volume of data each player generates.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;When set up and configured correctly,&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; CDPs &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;are an integral part in driving player-centric experiences and game design across your business. Typically, CDPs comprise four key areas: &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Player data aggregation:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Collecting, integrating, and storing all forms of player data, including platform preferences, in-game achievements, playstyle behavior, and social interactions.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Cross-platform player identification:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Unifying player data across different gaming platforms, devices (PC, console, mobile), in-game IDs, and email addresses into a comprehensive player profile.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Game analytics and AI insights:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Utilizing advanced AI and machine learning models to deliver out-of-the-box insights that power predictive player behavior, forecasting churn, in-game and outer-game engagement, and optimal communication strategies.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Player activation:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Utilizing preference based segmentation to engage players with targeted messaging across different channels including in-game notifications, emails and social media. Offering personalized catalog title recommendations to players can also help foster lifelong relationships.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;While organizations are able to purchase many of these technologies off the shelf, there are many benefits to building your own CDP and creating a more tailored platform to meet your specific needs and use cases. In this post, we’ll share our own journey of how we built our own CDP with Google Cloud at Square Enix. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Building an AI-driven CDP with Google Cloud&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;As an early adopter of data collection, analysis and machine learning, the Square Enix Analytics and Insights department has been at the center of bringing business value to our organization through data-driven game innovations, such as using telemetry data to discover new markets for games and inform patching decisions about areas where players get stuck.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Our European division — Square Enix West — faced a significant shift in data strategy in 2017, driven by the General Data Protection Regulation (GDPR) due to come into force the following year. Recognizing the changing landscape and policy around marketing data, our team, along with technology leadership, saw the need to focus on collecting and connecting our first-party data across multiple sources — thus began the journey to aggregate marketing, player, and game data under a single roof. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Given that gaming is often a lifelong passion, the ability to analyze fan’s engagement level with Square Enix’s services over periods of five to ten years and across multiple data sources is crucial. Our vision was to craft a solution that would allow the team to conduct end-to-end analysis of gamers’ behavior, including touchpoints, purchases, gameplay and retention. We knew that the right CDP tool would be essential to service players at every step along their discovery and buying journey.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Using Google Cloud services, particularly serverless, we built a proprietary system called Single Gamer View (SGV), which delivers both CDP and customer relationship management features. The new solution unifies all of our databases, provides marketing automation, and feeds data back into marketing platforms to drive fan engagement.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_The_system_architecture_powering_the_Squ.max-1000x1000.jpg"
        
          alt="1_The system architecture powering the Square Enix Single Gamer View"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="738d3"&gt;The system architecture powering the Square Enix Single Gamer View.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We built pipelines leveraging PubSub and Dataflow to collect data into BigQuery for data processing. This data comes from sources across Square Enix, including game data, website data from Google Analytics 360, aggregated sales data, digital advertising data, and even metrics from emails and surveys. We run AI and machine learning models daily, leveraging Vertex AI for training and managing models for larger-scale tasks.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In addition to building SGV, the alignment of all team members — from marketing to analytics to engineering to machine learning experts — is key. Our projects begin with data analysts, who draft proposals and estimate the value of the project. Community managers and brand teams then review these proposals to ensure alignment with player needs. Data scientists, following an agile approach, start with rule-based segmentation, and later transition to more advanced machine learning methods once early strategies prove successful. Finally, our data engineering and data protection teams provide oversight throughout, ensuring data security and effective deployment. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;How SGV delivers AI-driven marketing&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Today, the significance of SGV is set to grow even more, especially as we move toward the phasing-out of third-party cookies in 2024. This shift will highlight the importance of having robust internal systems for gathering and effectively using data to nurture relationships with fans. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The value of having an integrated CDP is often poorly understood until it is tied into marketing activations, fan retention, and marketing activity modeling. Consequently, here are three core initiatives we championed from the beginning and continue to support.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;1. Marketing automation and feedback loop&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Having all our marketing and game data in one place allowed us to develop and train more advanced ML-powered personalization systems. For instance, we designed a marketing automation framework with a feedback loop to test out different marketing actions. The process uses a &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/how-to-build-better-contextual-bandits-machine-learning-models"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;contextual bandit model pipeline built with AutoML Tables&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and helps drive our marketing email campaigns, encouraging better retention, demo trials, and survey responses. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;SGV also helped us build a self-optimizing recommendation system, which can detect when a player has reached a milestone in the game, compares them to similar players, and sends recommendations tailored to the individual. The system, which leverages &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/docs/bigqueryml-mf-implicit-tutorial"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;BigQuery ML to make recommendations&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, receives feedback on whether the demo recommended was played and if so, how long the player played.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_Self-optimizing_demo_recommendation_syst.max-1000x1000.jpg"
        
          alt="2_Self-optimizing demo recommendation system"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="738d3"&gt;Self-optimizing demo recommendation system&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;2. Fan onboarding and retention&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;With SGV, we have improved Square Enix’s ability to understand and nurture life-long relationships with fans. Game teams can create more personalized customer experiences, which better service players’ needs by &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/docs/bigqueryml-mf-implicit-tutorial"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;leveraging ML-based segmentations powered by BigQuery ML&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to identify users by play style, class or character preferences, or content they find interesting. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;For example, we can now provide players who enjoy player versus player (PvP) conflict with specific news regarding PvP content updates. This personalization not only improves the user experience but also helps to deepen their relationship and retention with the game. In fact, our teams saw a significant increase in players returning to specific Square Enix games after implementing this new data-driven approach.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;3. Marketing ROI challenges &lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;With evolving digital advertising standards and increased privacy regulations, particularly the phase-out of third-party cookies, digital tracking methodologies have become less viable. This has led to the resurgence of Marketing Mix Modeling (MMM). MMM is a statistical analysis method used to estimate the impact of various marketing tactics on sales and determine the effectiveness of each promotion.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/3_Marketing_mix_models_evaluate_the_impact.max-1000x1000.jpg"
        
          alt="3_Marketing mix models evaluate the impact of promotional activities on sales"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="738d3"&gt;Marketing mix models evaluate the impact of promotional activities on sales&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Organizations without a centralized data repository would have to start an MMM project by first defining the necessary data, locating it, acquiring it, and then cleaning it. Using traditional data analysis methods, just preparing the data for modeling could take several months. However, as we have major data points inside SGV, data scientists can now quickly access data and develop proof-of-concept models. Additionally, leveraging tools like &lt;/span&gt;&lt;a href="https://console.cloud.google.com/marketplace/product/supermetrics-sql/searchmetrics"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Supermetrics&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and Google Trends through Google Cloud, we can now pull more granular marketing data from our marketing sources and gain more valuable insights. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Bringing gaming fan engagement to the next level with Google Cloud&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Overall, SGV has been quite literally a game changer for Square Enix, helping us to increase player engagement and enhance marketing ROI measurement. By integrating Google Cloud tools, advanced analytics, and proprietary data, we have consistently delivered impressive results. Our overall email marketing performance has increased by 20%, with some campaigns seeing as much as a 150% increase particularly when our recommendation engine effectively addresses long-tail needs. We have also seen a 10% increase in game retention and completion rates. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In addition, building a custom CDP tailored to our specific requirements has increased our work efficiency. Our teams benefit from an automated optimization system, allowing us to save time managing tasks like promoting catalog titles, sending retention emails, and collecting feedback surveys. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The next step is to continue enhancing the management and scalability of our machine learning processes. We believe that effectively using Vertex AI will be crucial during this next phase, especially as we tackle the challenge of moving from experimentation to production. For example, we are already considering how to use Google Cloud’s new &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/docs/generative-ai-overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;generative AI features in BigQuery&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to enrich and help automate our existing data processes. We are also keen to see how new data scientist-friendly features, such as &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/docs/manage-notebooks"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;managed notebooks&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://cloud.google.com/python/docs/reference/bigframes/latest"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;BigQuery DataFrames&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, can help us accelerate the development and initial adaptation of notebook code. While notebooks may not fully meet these standards on their own, these tools can simplify experimentation and transition to production without needing specialized expertise.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;While the full impact of AI in the gaming industry remains to be seen, we are looking forward to seeing (and also shaping) a future where we can finally bridge the “last mile” and deliver new innovative experiences to our players. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Interested in starting your own customer data platform journey? Learn more about &lt;/strong&gt;&lt;a href="https://cloud.google.com/solutions/customer-data-platform?hl=en"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;how Google Cloud can help you prepare for a privacy-centric future&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 24 Jun 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/data-analytics/square-enix-builds-a-customer-data-platform-with-google-cloud/</guid><category>Gaming</category><category>Customers</category><category>Data Analytics</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Square Enix’s journey of building an AI-driven Customer Data Platform</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/data-analytics/square-enix-builds-a-customer-data-platform-with-google-cloud/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Tatsuo Yoshida</name><title>Director of Data Science, Analytics &amp; Insight department, Square Enix</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Arjun Gill</name><title>Data Analytics Specialist</title><department></department><company></company></author></item><item><title>Game-changing assets: Making concept art with Google Cloud's generative AI</title><link>https://cloud.google.com/blog/products/gaming/making-concept-art-with-vertex-ai-model-garden/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Developing games is unique in that it requires a large variety of media assets such as 2D images, 3D models, audio, and video to come together in a development environment.   However, in small game teams, such as those just getting started or “indie” teams, it’s unlikely that there are enough people to create such a wide variety and amount of assets. The lack of assets can create a bottleneck, throttling the entire game development team.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In this blog, we demonstrate how easy it is for gaming developers to deploy generative AI services on Google Cloud, showcase the available tooling of Model Garden on Vertex AI (including partner integrations like &lt;/span&gt;&lt;a href="https://huggingface.co/blog/gcp-partnership" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Hugging Face&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and Civitai), and highlight their potential for scaling game-asset creation.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Solution&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Cloud offers a diverse range of generative AI models, accessible to users for various use cases. This solution focuses on how game development teams can harness the capabilities of Model Garden on Vertex AI, which incorporates partner integrations such as &lt;/span&gt;&lt;a href="https://huggingface.co/blog/gcp-partnership" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Hugging Face&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and Civitai. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Many artists run these models on their local machine, e.g., Stable Diffusion on a local instance of &lt;/span&gt;&lt;a href="https://github.com/AUTOMATIC1111" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Automatic 1111&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. However, considering the cost of high-end GPUs, not all people have access to hardware required to do so. Therefore, running these models in the cloud is a way to access the compute needed while mitigating the need to invest in high-end hardware upfront.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Our primary objective is to explore how these tools can streamline and scale game-asset creation.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Concept or pre-production assets&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Assets are the visual and audio elements that make up a game's world. They have a significant impact on the player's experience, contributing to the creation of a realistic and immersive environment. There are many different types of game assets, including:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;2D and 3D models&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Textures&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Animations&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Sounds and music&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Here's a typical life journey of a typical 3D game asset, such as a character:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Concept art: Initial design of the asset&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;3D modeling: Creation of a three-dimensional model of the asset&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Texturing: Adding color and detail to the model in alignment with the game's style&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Animation: Bringing movement to the asset (if applicable)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Sound effects: Adding audio elements to enhance the asset&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Import to game engine: Integration of the asset into the game engine that powers the gameplay&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Generative AI can streamline the asset-creation process by generating initial designs, 3D models, and high-quality textures tailored to the game's style. In this way, game artists can quickly provide assets that unlock the rest of the game team in the short term, while allowing them to focus on long term goals like art direction and finalized assets.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Read on to learn how to accomplish the first step of game asset creation – generating concept art – on Google Cloud using Vertex AI and Model Garden with Stable Diffusion. We'll cover how to access and download popular LoRA (Low-Rank Adaptation) adapters from Hugging Face or Civitai, and serve them alongside the &lt;/span&gt;&lt;a href="https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;stabilityai/stable-diffusion-xl-base-1.0&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; model (from &lt;/span&gt;&lt;a href="https://cloud.google.com/model-garden?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Model Garden&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;) on Vertex AI for online prediction. The resulting concept art images will be stored in a Google Cloud Storage bucket for easy access and further refinement by artists.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Infrastructure setup&lt;/strong&gt;&lt;/h3&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;1. &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Prerequisites:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Google Cloud Project:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;a href="https://console.cloud.google.com/cloud-resource-manager"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Select or create a project&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. When you first create an account, you get a $300 free credit towards your compute/storage costs.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Billing enabled:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Verify that &lt;/span&gt;&lt;a href="https://cloud.google.com/billing/docs/how-to/modify-project"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;billing is enabled&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for your project.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;APIs enabled:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Enable both the &lt;/span&gt;&lt;a href="https://console.cloud.google.com/flows/enableapi?apiid=aiplatform.googleapis.com,compute_component"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Vertex AI and Compute Engine APIs&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;2. &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Storage and authentication:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Cloud Storage Bucket:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;a href="https://cloud.google.com/storage/docs/creating-buckets"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Create a bucket&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to store downloaded LORAs and experiment outputs.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Service Account: &lt;/strong&gt;&lt;a href="https://cloud.google.com/iam/docs/service-accounts-create#iam-service-accounts-create-console"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Create a service account&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; with the following roles:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="2" style="list-style-type: circle; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Vertex AI User&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="2" style="list-style-type: circle; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Storage Object Admin&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p role="presentation"&gt;&lt;span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;We'll use this service account with our Python notebook for model creation and storage management.&lt;/span&gt;&lt;/p&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;3. &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Colab Enterprise setup:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Runtime remplate:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Create a runtime template in Colab Enterprise following the instructions at &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai/docs/colab/create-runtime-template"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;https://cloud.google.com/vertex-ai/docs/colab/create-runtime-template&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Runtime instance:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Create a runtime instance based on your Runtime template created above. Follow instructions at &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai/docs/colab/create-runtime"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;https://cloud.google.com/vertex-ai/docs/colab/create-runtime&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Upload notebooks:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Download these &lt;/span&gt;&lt;a href="https://github.com/google/game-changing-assets" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;three&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; notebooks from git and upload them to the Colab Enterprise. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;4. &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Running your notebooks:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Connecting notebooks:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Once you've uploaded the notebooks, ensure they are &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai/docs/colab/connect-to-runtime"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;connected to the runtime&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; you created in step 3 above. This ensures your notebooks have access to the necessary resources for execution.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Cloud NAT:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; If your runtime environment requires internet access to download packages, you can create a Cloud NAT following &lt;/span&gt;&lt;a href="https://cloud.google.com/nat/docs/set-up-manage-network-address-translation?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;these instructions&lt;/span&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This completes the infrastructure setup. You're ready to run your Jupyter notebooks to deploy a LoRA model with &lt;/span&gt;&lt;a href="https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;stabilityai/stable-diffusion-xl-base-1.0&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; on a Vertex AI prediction endpoint.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Execution&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Upon successful execution of all the above steps, you should see three Jupyter notebook files in Colab Enterprise as follows:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1.ColabEnterprise.max-1000x1000.png"
        
          alt="1.ColabEnterprise"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;1. Create_mg_pytorch_sdxl_lora.ipynb&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;This notebook contains steps to download popular LoRA (Low-Rank Adaptation) adapters from either huggingface.co or civitai.com. It then serves the adapter alongside the &lt;/span&gt;&lt;a href="https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;stabilityai/stable-diffusion-xl-base-1.0&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; model on Vertex AI for online prediction.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;In this notebook, set the following variables to begin:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong style="vertical-align: baseline;"&gt;HUGGINGFACE_MODE:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; If enabled, the LoRA will be downloaded from Hugging Face. Otherwise, it will be downloaded from Civitai.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2.NotebookVariables-1.max-1000x1000.png"
        
          alt="2.NotebookVariables-1"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Upon successful execution, this notebook will print "Model ID" and "Endpoint ID." Save these values for use in the following notebooks.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;If HUGGINGFACE_MODE is unchecked or disabled, ensure you update the Civitai variables within the notebook.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/3.Civitai.max-1000x1000.png"
        
          alt="3.Civitai"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;2. GenerateGameAssets.ipynb&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;This notebook contains code to convert text to images. Set the following variables to begin:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;ENDPOINT_ID:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Obtained from successful execution of "1.Create_mg_pytorch_sdxl_lora.ipynb".&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/4.NotebookVariables-2.max-1000x1000.png"
        
          alt="4.NotebookVariables-2"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;ul&gt;
&lt;li&gt;&lt;span style="vertical-align: baseline;"&gt;Update the prompts in the notebook as needed.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/5.Prompts-notebook2.max-1000x1000.png"
        
          alt="5.Prompts-notebook2"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Upon successful execution, you should see the following results:&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li aria-level="2" style="list-style-type: circle; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Concept art images will be uploaded to your configured GCS storage bucket.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="2" style="list-style-type: circle; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Images will be displayed for reference.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/6.Result-2.max-1000x1000.png"
        
          alt="6.Result-2"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;3. CleanupCloudResources.ipynb&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Execute this notebook to clean up resources, including the endpoint and model.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Before executing, set the following variables:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;MODEL_ID&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;ENDPOINT_ID:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Obtained from successful execution of "1.Create_mg_pytorch_sdxl_lora.ipynb".&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/7.NotebookVariables-3.max-1000x1000.png"
        
          alt="7.NotebookVariables-3"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Congratulations! You've successfully deployed the &lt;/span&gt;&lt;a href="https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;stabilityai/stable-diffusion-xl-base-1.0&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; model from Model Garden on Vertex AI, generated concept art for your games, and responsibly deleted models and endpoints to manage costs.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Final thoughts&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Integrating Stable Diffusion-generated images into a game requires careful planning:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Legal rights:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Ensure you have the necessary permissions to use generated images. Always consult a legal professional if you have any questions about image usage rights.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Customization:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Edit and refine the images to match your game's style and technical needs.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Optimization:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Optimize images for in-game performance and smooth integration into your game engine.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Testing:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Thoroughly test for quality and performance after incorporating the assets.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Ethics and compliance:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Prioritize ethical considerations and legal compliance throughout the entire process.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Documentation and feedback:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Maintain detailed records, backups, and be responsive to player feedback after your game's release.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;References&lt;/strong&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Explore AI models in Model Garden &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai/docs/start/explore-models"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;https://cloud.google.com/vertex-ai/docs/start/explore-models&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Your guide to generative AI support in Vertex AI &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/vertex-ai-model-garden-and-generative-ai-studio" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;https://cloud.google.com/blog/products/ai-machine-learning/vertex-ai-model-garden-and-generative-ai-studio&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;div class="block-related_article_tout"&gt;





&lt;div class="uni-related-article-tout h-c-page"&gt;
  &lt;section class="h-c-grid"&gt;
    &lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/vertex-ai-model-garden-and-generative-ai-studio/"
       data-analytics='{
                       "event": "page interaction",
                       "category": "article lead",
                       "action": "related article - inline",
                       "label": "article: {slug}"
                     }'
       class="uni-related-article-tout__wrapper h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
        h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3 uni-click-tracker"&gt;
      &lt;div class="uni-related-article-tout__inner-wrapper"&gt;
        &lt;p class="uni-related-article-tout__eyebrow h-c-eyebrow"&gt;Related Article&lt;/p&gt;

        &lt;div class="uni-related-article-tout__content-wrapper"&gt;
          &lt;div class="uni-related-article-tout__image-wrapper"&gt;
            &lt;div class="uni-related-article-tout__image" style="background-image: url('')"&gt;&lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="uni-related-article-tout__content"&gt;
            &lt;h4 class="uni-related-article-tout__header h-has-bottom-margin"&gt;Your guide to Generative AI support in Vertex AI&lt;/h4&gt;
            &lt;p class="uni-related-article-tout__body"&gt;Organizations can build with the generative AI models they need with Vertex AI’s Model Garden and fine-tune models with Generative AI Stu...&lt;/p&gt;
            &lt;div class="cta module-cta h-c-copy  uni-related-article-tout__cta muted"&gt;
              &lt;span class="nowrap"&gt;Read Article
                &lt;svg class="icon h-c-icon" role="presentation"&gt;
                  &lt;use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mi-arrow-forward"&gt;&lt;/use&gt;
                &lt;/svg&gt;
              &lt;/span&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;/div&gt;</description><pubDate>Thu, 16 May 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/gaming/making-concept-art-with-vertex-ai-model-garden/</guid><category>AI &amp; Machine Learning</category><category>Developers &amp; Practitioners</category><category>Gaming</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Game-changing assets: Making concept art with Google Cloud's generative AI</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/gaming/making-concept-art-with-vertex-ai-model-garden/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Krishna Chytanya Ayyagari</name><title>Generative AI Field Solutions Architect</title><department></department><company></company></author></item><item><title>Tencent: Building analytics culture for better game development</title><link>https://cloud.google.com/blog/products/data-analytics/the-road-to-analytics-culture-with-funcom-and-tencent/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;a href="https://www.tencent.com/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Tencent&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; is a leading internet and technology company headquartered in Shenzhen, China. Our mission is “value for users, tech for good.” We are also the company behind world-famous games like Level Infinite, &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;PubG Mobile, Honor of Kings, GTFO, and Assassin’s Creed Jade. In February 2020, we acquired &lt;/span&gt;&lt;a href="https://www.funcom.com/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Funcom&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, a gaming company that recently celebrated its 30th anniversary, with a critically acclaimed portfolio that includes games like The Longest Journey, Anarchy Online, and Metal Hellsinger.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The acquisition of Funcom brought together the best of tech and the gaming industry, and with that, we decided to build an analytics culture at Funcom, supported by Google Cloud. We’ll share the challenges we faced as well as the solutions that were implemented in the process.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To demonstrate, we’ll use the online multiplayer survivor game, Conan Exiles, as an example. Developed by Funcom and released in 2017, this game constantly updates and releases new content, and was transitioned into a live service game model in 2022. As such, we needed data to support our business decisions. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;An architecture for scalability and growth&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Funcom’s architecture was developed to support the internal development team with live operations and to monitor the game servers’ health. The entire architecture was made of on-premises virtual machines and open-source frameworks, which limited our use cases and scalability. The legacy technology stack was not built with a data-driven approach in mind from a live service game model standpoint. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Based on interest from both developers and executives at Funcom, we decided to collaborate with Google Cloud to develop a new architecture. With only a few months to go before the release of the first season of Conan Exiles, the Google Cloud team provided us with a fully operational data warehouse that could be used to build dashboards and provide insights to key stakeholders, including executives, marketing, and live operations. The diagram below illustrates the architecture that we used:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_7iIgU9e.max-1000x1000.png"
        
          alt="1"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We built our new technology stack according to a few key criteria: ease of integration, diverse use case coverage, and optimizing the total cost of ownership (TCO).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Building this data platform was like putting together puzzle pieces. We replaced our legacy data infrastructure using key products like Cloud Storage and BigQuery, which acted as a data lake and query engine. As a result, we were able to build a robust data pipeline and a well-established data platform foundation in less than two months, enabling access to a host of new game data that was previously unseen, such as in-game player activity playtests. This includes marketing data, such as social listening and community responses, performance data about CPU, graphic or memory usage, and even crash monitoring data. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;A new foundation to connect gaming and marketing datasets&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With the new architecture set up, we decided to explore other ways of using data to optimize cost performance and get better control of the data stack to connect marketing and sales datasets. For example, game leads need to understand how data can support in-game development, while our marketing teams should have easy access to in-game data to support marketing efforts.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To help, we automated the entire pipeline with always up-to-date KPI reports to monitor our marketing performance within Google Cloud. Additionally, the data team can provide recommendations based on in-depth insight analytics by connecting the data across player behavior, community, and marketing.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Moving forward with a revenue-generating tech stack &lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With Google Cloud, we’ve been able to redesign the raw data pipeline and data lake architecture without impacting our gaming data pipeline, day-to-day decision-making systems, or requiring additional engineering overhead. As a result, we are able to process twice as much game data on a daily basis, compared to our previous architecture. In addition, we have also decreased our overall monthly costs by 70% using BigQuery and Cloud Composer.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Moving forward, we’re looking to further expand this architecture with near real-time pipelines built with Pub/Sub. We are also planning to improve data quality monitoring and alerting, and standardizing our data structure, so that we can deploy newly developed features directly to beta and accelerate our time to market.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Fri, 10 May 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/data-analytics/the-road-to-analytics-culture-with-funcom-and-tencent/</guid><category>Infrastructure Modernization</category><category>Gaming</category><category>Data Analytics</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Tencent: Building analytics culture for better game development</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/data-analytics/the-road-to-analytics-culture-with-funcom-and-tencent/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Mathieu Ruiz</name><title>Lead Game Data Analyst, Funcom</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Hao Liang</name><title>Manager, Data Platform, Tencent</title><department></department><company></company></author></item><item><title>The evolution of play: From live to living games</title><link>https://cloud.google.com/blog/products/gaming/generative-ai-fuels-next-gen-living-games/</link><description>&lt;div class="block-paragraph"&gt;&lt;p data-block-key="0q7qx"&gt;Over the last year, we have seen the live game model explode in popularity, with live service modalities now incorporated into just about every top game release. Player engagement is at an all-time high, and a significant portion of that comes from live games. A &lt;a href="https://www.gamesindustry.biz/report-95-of-studios-are-working-on-or-aim-to-release-a-live-service-game" target="_blank"&gt;recent survey&lt;/a&gt; paints a clear picture: a staggering 95% of studios are developing some form of a live game experience. In fact, Electronic Arts (EA) &lt;a href="https://ir.ea.com/press-releases/press-release-details/2023/Electronic-Arts-Reports-Strong-Q2-FY24-Results/default.aspx" target="_blank"&gt;reported&lt;/a&gt; that live services comprised more than 73% of its business in 2023, even while EA continues to release traditional retail games. This is a testament to the power of this evolving model and signifies a crucial shift – developers understand the need for games that evolve alongside their passionate player bases.&lt;/p&gt;&lt;p data-block-key="8pcvd"&gt;Now, with generative AI (gen AI), there is an opportunity for developers to take live games to the next level. Enter: living games. Living games will transform the games landscape, empowering creators — designers, developers, artists, and marketers — to reimagine their workflows and craft experiences in ways that were previously unimaginable.&lt;/p&gt;&lt;h3 data-block-key="e47ne"&gt;Live games: a new era, new needs&lt;/h3&gt;&lt;p data-block-key="33h8s"&gt;For players, live games offer exciting features like constant updates, new content, and long-term support. For developers to keep pace they turn to Google Cloud, allowing them access to the infrastructure needed to build these seamless virtual experiences. But it's not just about game servers — databases are equally crucial. Games live and breathe on player data. For every ‘prestige’ and ‘platinum’ earned within a game, Google Cloud ensures that they’re all meticulously remembered. We also equip developers with insights that allow them to refine player engagement strategies. With live games, developers can:&lt;/p&gt;&lt;ul&gt;&lt;li data-block-key="62m0t"&gt;&lt;b&gt;Launch and operate planet scale games:&lt;/b&gt; Of course, before anything else, a game simply has to work when a player wants to game! &lt;a href="https://cloud.google.com/kubernetes-engine"&gt;Google Kubernetes Engine&lt;/a&gt; (GKE) provides a scalable foundation for managing game servers, effortlessly accommodating player fluctuations. &lt;a href="https://cloud.google.com/spanner"&gt;Cloud Spanner&lt;/a&gt; offers a globally distributed, high-performance database ideal for the always-on demands of live games. Store player profiles, in-game economies, and more, ensuring smooth gameplay for a massive, worldwide player base.&lt;/li&gt;&lt;li data-block-key="cgmr7"&gt;&lt;b&gt;Make data-driven decisions:&lt;/b&gt; Analytics are paramount. Understanding player behavior through robust data analysis using &lt;a href="https://cloud.google.com/bigquery"&gt;BigQuery&lt;/a&gt; and &lt;a href="https://cloud.google.com/looker"&gt;Looker&lt;/a&gt; allows developers to tailor content and features for maximum engagement. Imagine a game that dynamically adjusts difficulty based on a player's performance tracked in BigQuery and visualized in Looker.&lt;/li&gt;&lt;/ul&gt;&lt;p data-block-key="1pn7j"&gt;By providing a powerful, adaptable, and secure platform for live games, developers can focus on what they do best: crafting exceptional games and building thriving player communities.&lt;/p&gt;&lt;h3 data-block-key="akdbk"&gt;Live games transform into living games with generative AI&lt;/h3&gt;&lt;p data-block-key="3rh2n"&gt;As we look ahead, living games will disrupt the live game model. Now, the game itself will be an active participant. Gone are the days of static experiences. Using Google Cloud products like GKE and Vertex AI, developers can create personalized games that dynamically adapt based on player choices, generating unique quests and challenges, and continuously evolving their narratives. This creates a deeper level of player immersion and engagement, leading to a more enriching experience for everyone involved.&lt;/p&gt;&lt;p data-block-key="eid14"&gt;&lt;a href="https://us.ncsoft.com/" target="_blank"&gt;NCSOFT&lt;/a&gt;, a global game developer and publisher of popular titles including Guild Wars 2 and Blade &amp;amp; Soul, is using Google Cloud's AI infrastructure to power its in-house large language model (LLM) set, VARCO LLM. NCSOFT's VARCO LLM is specialized for generating high-quality content required for game development. Using VARCO LLM, NCSOFT has developed a suite of AI power tools ranging from text creation, managing "digital" human characters, player-to-virtual-character conversation, and dynamic storyline generation based on player actions. The result is a more engaging and dynamic gaming experience for players.&lt;/p&gt;&lt;h3 data-block-key="e48rg"&gt;Building the future of play through a collaborative ecosystem&lt;/h3&gt;&lt;p data-block-key="6uq2i"&gt;The future of games is also collaborative. By fostering a thriving ecosystem of game developers, technology providers, and players, we are building truly living worlds that push the boundaries of storytelling and engagement.&lt;/p&gt;&lt;p data-block-key="dr9o2"&gt;Google Cloud goes beyond just offering its own technology and infrastructure. We act as a bridge, connecting you to the most powerful and innovative game-development tools from industry leaders.&lt;/p&gt;&lt;p data-block-key="9bi42"&gt;For example, Replica Studios, an AI voice technology company, is partnering with Google Cloud, and GlobalLogic to enhance game production, gameplay, and distribution. Replica Studio’s Voice Lab technology breathes new life into non-player characters (NPCs) and stories with advanced, cost-effective gen AI. Replica’s Voice Lab takes its cues from a prompt to generate a unique voice, which when combined with Google’s Gemini language models, can utilize a game’s assets, environment, and lore to create a cast of thousands of diverse characters with unique voices, personalities, motivations, and behaviors. Replica Studios, Globallogic and Google Cloud are ushering in a new era of living games that will define the next generation of interactive entertainment.&lt;/p&gt;&lt;p data-block-key="5qqpd"&gt;Google Cloud’s partner ecosystem provides access to the latest engines, online back-end solutions, Web3 platforms, and gen AI tools, empowering game developers to focus on what matters most: crafting experiences that resonate with players on a deeper level, forging lasting connections, and a shared sense of community within living games.&lt;/p&gt;&lt;p data-block-key="d8eu8"&gt;Google Cloud stands ready to empower the next generation of game experiences. Transformative technologies like gen AI allow developers to unleash their creativity and bring to life games that are more immersive, dynamic, and deeply engaging than ever before. The future of play is bright, and with Google Cloud as a partner, developers have the tools and support to make their most ambitious visions a reality.&lt;/p&gt;&lt;p data-block-key="73dmh"&gt;To learn more about Google Cloud for Games, visit &lt;a href="http://goo.gle/cloudforgames" target="_blank"&gt;goo.gle/cloudforgames&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 18 Mar 2024 12:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/gaming/generative-ai-fuels-next-gen-living-games/</guid><category>AI &amp; Machine Learning</category><category>Gaming</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>The evolution of play: From live to living games</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/gaming/generative-ai-fuels-next-gen-living-games/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Jack Buser</name><title>Global Director for Games, Google Cloud</title><department></department><company></company></author></item><item><title>Running machine learning in the cloud for live service games</title><link>https://cloud.google.com/blog/products/gaming/the-case-for-running-ml-in-the-cloud-for-live-service-games/</link><description>&lt;div class="block-paragraph"&gt;&lt;p data-block-key="06zip"&gt;Generative AI has become the number one technology of interest across many industries over the past year. Here at Google Cloud for Games, we think that online game use cases have some of the highest potential for generative AI, giving creators the power to build more dynamic games, monetize their games better, and get to market faster. As part of this, we’ve explored ways that games companies can train, deploy, and maintain GenAI utilizing Google Cloud. We'd like to walk you through what we’ve been working on, and how you can start using it in your game today. While we’ll focus on gen AI applications, the framework we’ll be discussing has been developed with all machine learning in mind, not just the generative varieties.&lt;/p&gt;&lt;p data-block-key="emuhi"&gt;Long term, the possibilities of gen AI in Games are endless, but in the near term, we believe the following are the most realistic and valuable to the industry over the next 1-2 years.&lt;/p&gt;&lt;ol&gt;&lt;li data-block-key="e4ovs"&gt;Game production&lt;/li&gt;&lt;li data-block-key="69p7g"&gt;Adaptive gameplay&lt;/li&gt;&lt;li data-block-key="8kpoi"&gt;In-game advertising&lt;/li&gt;&lt;/ol&gt;&lt;p data-block-key="dqmpb"&gt;Each of these helps with a core part of the game development and publishing process. Generative AI in game production, mainly in the development of 2D textures, 3D assets, and code, can help decrease the effort to create a new game, decrease the time to market, and help make game developers more effective overall. Thinking towards sustaining player engagement and monetizing existing titles, ideas like adaptive dialogue and gameplay can keep players engaged, and custom in-game objects can keep them enticed. In-game advertising opens a new realm of monetization, and allows us not only the ability to hyper-personalize ads to views, but to personalize their placement and integration into the game, creating seamless ad experiences that optimize views and engagement. If you think about the time to produce a small game, never mind a AAA blockbuster, development of individual game assets consumes an immense amount of time. If generative models can help reduce developer toil and increase the productivity of studio development teams by even a fraction, it could represent a faster time to market and better games for us all.&lt;/p&gt;&lt;p data-block-key="cmd1d"&gt;As part of this post, we introduce our &lt;a href="https://github.com/googleforgames/GenAI-quickstart" target="_blank"&gt;Generative AI Framework for Games&lt;/a&gt;, which provides templates for running gen AI for games on Google Cloud, as well as a framework for data ingest and storage to support these live models. We walk you through a demo of this framework below, where we specifically show two cases around image generation and code generation in a sample game environment.&lt;/p&gt;&lt;p data-block-key="atb2f"&gt;But before we jump into what we’re doing here at Google Cloud, let’s first tackle a common misconception about machine learning in games.&lt;/p&gt;&lt;h3 data-block-key="97vqf"&gt;Cloud-based ML plus live services games are a go&lt;/h3&gt;&lt;p data-block-key="ge1e"&gt;It’s a common refrain that running machine learning in the cloud for live game services is either cost prohibitive or prohibitive in terms of the induced latency that the end user experiences. Live games have always run on a client-server paradigm, and it’s often preferable that compute-intensive processes that don’t need to be authoritative run on the client. While this is a great deployment pattern for some models and processes, it’s not the only one. Cloud-based gen AI, or really any form of AI/ML, is not only possible, but can result in significantly decreased toil for developers, and reduced maintenance costs for publishers, all while supporting the latencies needed for today’s live games. It’s also safer — cloud-based AI safeguards your models from attacks, manipulation, and fraud.&lt;/p&gt;&lt;p data-block-key="25f2v"&gt;Depending on your studio’s setup, Google Cloud can support complete in-cloud or hybrid deployments of generative models for adaptive game worlds. Generally, we recommend two approaches depending on your technology stack and needs;&lt;/p&gt;&lt;ol&gt;&lt;li data-block-key="193lo"&gt;If starting from scratch, we recommend utilizing Vertex AI’s Private Endpoints for low latency serving, which can work whether you are looking for a low ops solution, or are running a service that does not interact with a live game environment.&lt;/li&gt;&lt;li data-block-key="di983"&gt;If running game servers on Google Cloud, especially if they are on Google Kubernetes Engine (GKE), and are looking to utilize that environment for ultra-low latency serving, we recommend deploying your models on GKE alongside your game server.&lt;/li&gt;&lt;/ol&gt;&lt;p data-block-key="24c25"&gt;Let’s start with Vertex AI. Vertex AI supports both public and private endpoints, although for games, we generally recommend utilizing Private Endpoints to achieve the appropriate latencies. Vertex AI models utilize what we call an adaptor layer, which has two advantages: you don’t need to call the entire model when making a prediction, and any fine tuning conducted by you, the developer, is contained in your tenant. Compared to running a model yourself, whether in the cloud or on prem, this negates the need to handle enormous base models and the relevant serving and storage infrastructure to support them. As mentioned, we’ll show both of these in the demo below.&lt;/p&gt;&lt;p data-block-key="7g2qj"&gt;If you’re already running game servers on GKE, you can gain a lot of benefit from running both proprietary and open-source machine learning models on GKE as well as taking advantage of GKE’s native networking. With GKE Autopilot, our tests indicate that you can achieve prediction performance in the sub-ms range when deployed alongside your game servers. Over the public internet, we’ve achieved low millisecond latencies that are consistent, if not better, with what we have seen in classic client side deployments. If you’re afraid of the potential cost implications of running on GKE, think again — the vast majority of gaming customers see cost savings from deploying on GKE, alongside a roughly 30% increase in developer productivity. If you manage both your machine learning deployments and your game servers with GKE Autopilot, there’s also a significant reduction in operational burden. In our testing, we’ve found that whether you are deploying models on Vertex or GKE, the cost is roughly comparable.&lt;/p&gt;&lt;h3 data-block-key="c9v3f"&gt;Unified data platforms enable real-time AI&lt;/h3&gt;&lt;p data-block-key="323ef"&gt;AI/ML driven personalization thrives on large amounts of data regarding player preferences, gameplay, and the game’s world and lore. As part of our efforts in gen AI in games, we’ve developed a data pipeline and database template that utilizes the best of Google Cloud to ensure consistency and availability.&lt;/p&gt;&lt;p data-block-key="9eone"&gt;Live games require strong consistency, and models,whether generative or not, require the most up-to-date information about a player and their habits. Periodic retraining is necessary to keep models fresh and safe, and globally available databases like Spanner and BigQuery ensure that the data being fed into models, generative or otherwise, is kept fresh and secure. In many current games, users are fragmented by maps/realms, with hard lines between them, keeping experiences bounded by firm decisions and actions. As games move towards models where users inhabit singular realms, these games will require a single, globally available data store. In-game personalization also requires the live status of player activity. A strong data pipeline and data footprint is just as important for running machine learning models in a liveops environment as the models themselves. Considering the complexity of frequent model updates across a self-managed data center footprint, we maintain it’s a lighter lift to manage the training, deployment, and overall maintenance of models in the cloud.&lt;/p&gt;&lt;p data-block-key="6p031"&gt;By combining a real-time data pipeline with generative models, we can also inform model prompts about player preferences, or combine them with other models that track where, when, and why to personalize the game state. In terms of what is available today, this could be anything from pre-generated 3D meshes that are relevant to the user, retexturing meshes to different colors, patterns or lighting to match player preferences or mood, or even the giving the player the ability to fully customize the game environment based natural language. All of this is in service of keeping our players happy and engaged with the game.&lt;/p&gt;&lt;h3 data-block-key="6k444"&gt;Demoing capabilities&lt;/h3&gt;&lt;p data-block-key="8basb"&gt;Let’s jump into the framework. For the demo, we’ll be focusing on how Google Cloud’s data, AI, and compute technology can come together to provide real-time personalization of the game state.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_live_service_games_.max-1000x1000.png"
        
          alt="1 live service games"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p data-block-key="06zip"&gt;The framework includes:&lt;/p&gt;&lt;ul&gt;&lt;li data-block-key="83v1q"&gt;Unity for the client and server&lt;/li&gt;&lt;/ul&gt;&lt;p data-block-key="44dt6"&gt;Open source:&lt;/p&gt;&lt;ul&gt;&lt;li data-block-key="gdj9"&gt;Terraform&lt;/li&gt;&lt;li data-block-key="ehi6p"&gt;Agones&lt;/li&gt;&lt;/ul&gt;&lt;p data-block-key="3ktip"&gt;Google Cloud:&lt;/p&gt;&lt;ul&gt;&lt;li data-block-key="bv810"&gt;GKE&lt;/li&gt;&lt;li data-block-key="k205"&gt;Vertex AI&lt;/li&gt;&lt;li data-block-key="erm0c"&gt;Pub/Sub&lt;/li&gt;&lt;li data-block-key="1nvd9"&gt;Dataflow&lt;/li&gt;&lt;li data-block-key="c2n8s"&gt;Spanner&lt;/li&gt;&lt;li data-block-key="6sbun"&gt;BigQuery&lt;/li&gt;&lt;/ul&gt;&lt;p data-block-key="fhmo2"&gt;As part of this framework, we created an open-world demo game in Unity that uses assets from the Unity store. We designed this to be an open world game — one where the player needs to interact with NPCs and is guided through dynamic billboards that assist the player in achieving the game objective.. This game is running on GKE with &lt;a href="https://agones.dev/" target="_blank"&gt;Agones&lt;/a&gt;, and is designed to support multiple players. For simplicity, we focus on one player and their actions.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-video"&gt;



&lt;div class="article-module article-video "&gt;
  &lt;figure&gt;
    &lt;a class="h-c-video h-c-video--marquee"
      href="https://youtube.com/watch?v=LzOLidx7JL0"
      data-glue-modal-trigger="uni-modal-LzOLidx7JL0-"
      data-glue-modal-disabled-on-mobile="true"&gt;

      
        

        &lt;div class="article-video__aspect-image"
          style="background-image: url(https://storage.googleapis.com/gweb-cloudblog-publish/images/2_live_service_games_.max-1000x1000.png);"&gt;
          &lt;span class="h-u-visually-hidden"&gt;Generative AI in Games - Demo Game&lt;/span&gt;
        &lt;/div&gt;
      
      &lt;svg role="img" class="h-c-video__play h-c-icon h-c-icon--color-white"&gt;
        &lt;use xlink:href="#mi-youtube-icon"&gt;&lt;/use&gt;
      &lt;/svg&gt;
    &lt;/a&gt;

    
  &lt;/figure&gt;
&lt;/div&gt;

&lt;div class="h-c-modal--video"
     data-glue-modal="uni-modal-LzOLidx7JL0-"
     data-glue-modal-close-label="Close Dialog"&gt;
   &lt;a class="glue-yt-video"
      data-glue-yt-video-autoplay="true"
      data-glue-yt-video-height="99%"
      data-glue-yt-video-vid="LzOLidx7JL0"
      data-glue-yt-video-width="100%"
      href="https://youtube.com/watch?v=LzOLidx7JL0"
      ng-cloak&gt;
   &lt;/a&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p data-block-key="06zip"&gt;Now, back to the framework. Our back-end Spanner database contains information on the player and their past actions. We also have data on their purchasing habits across this make-believe game universe, with a connection to the Google Marketing Platform. This allows us in our demo game to start collecting universal player data across platforms. Spanner is our transactional database, and BigQuery is our analytical database, and data flows freely between them.&lt;/p&gt;&lt;p data-block-key="eu70o"&gt;As part of this framework, we trained recommendation models in Vertex AI utilizing everything we know about the player, so that we can personalize in-game offers and advertising. For the sake of this demo, we’ll forget about those models for a moment, and focus on two generative AI use cases: image generation, NPC chat, and code generation for our adaptive gameplay use case. To show you both deployment patterns that we recommend for games, deploying on GKE alongside the game server, and utilizing Vertex AI. For image generation, we host an open-source Stable Diffusion model on GKE, and for code generation and NPC chat we’re using the gemini-pro model within Vertex AI. In cases where textures need to be modified or game objects are repositioned, we are using the Gemini LLM to generate code that can render, position, and configure prefabs within the game environment.&lt;/p&gt;&lt;p data-block-key="4vq"&gt;As the character walks through the game, we adaptively show images to suggest potential next moves and paths for the player. In practice, these could be game-themed images or even advertisements. In our case, we display images that suggest what the player should be looking for to progress game play.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-video"&gt;



&lt;div class="article-module article-video "&gt;
  &lt;figure&gt;
    &lt;a class="h-c-video h-c-video--marquee"
      href="https://youtube.com/watch?v=LzOLidx7JL0"
      data-glue-modal-trigger="uni-modal-LzOLidx7JL0-"
      data-glue-modal-disabled-on-mobile="true"&gt;

      
        

        &lt;div class="article-video__aspect-image"
          style="background-image: url(https://storage.googleapis.com/gweb-cloudblog-publish/images/3_live_service_games_.max-1000x1000.png);"&gt;
          &lt;span class="h-u-visually-hidden"&gt;Generative AI in Games - Demo Game&lt;/span&gt;
        &lt;/div&gt;
      
      &lt;svg role="img" class="h-c-video__play h-c-icon h-c-icon--color-white"&gt;
        &lt;use xlink:href="#mi-youtube-icon"&gt;&lt;/use&gt;
      &lt;/svg&gt;
    &lt;/a&gt;

    
  &lt;/figure&gt;
&lt;/div&gt;

&lt;div class="h-c-modal--video"
     data-glue-modal="uni-modal-LzOLidx7JL0-"
     data-glue-modal-close-label="Close Dialog"&gt;
   &lt;a class="glue-yt-video"
      data-glue-yt-video-autoplay="true"
      data-glue-yt-video-height="99%"
      data-glue-yt-video-vid="LzOLidx7JL0"
      data-glue-yt-video-width="100%"
      href="https://youtube.com/watch?v=LzOLidx7JL0"
      ng-cloak&gt;
   &lt;/a&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p data-block-key="06zip"&gt;In the example above, the player is shown a man surrounded by books, which provides a hint to the player that maybe they need to find a library as their next objective. That hint also aligns with the riddle that the NPC shared earlier in the game. If a player interacts with one of these billboards, which may mean moving closer to it or even viewing the billboard for a preset time, then the storyline of our game adapts to that context.&lt;/p&gt;&lt;p data-block-key="bealc"&gt;We can also load and configure prefabs on the fly with code generation. Below, you’ll see our environment as is, and we ask the NPC to change the bus color to yellow, which dynamically updates the bus color and texture.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-video"&gt;



&lt;div class="article-module article-video "&gt;
  &lt;figure&gt;
    &lt;a class="h-c-video h-c-video--marquee"
      href="https://youtube.com/watch?v=LzOLidx7JL0"
      data-glue-modal-trigger="uni-modal-LzOLidx7JL0-"
      data-glue-modal-disabled-on-mobile="true"&gt;

      
        

        &lt;div class="article-video__aspect-image"
          style="background-image: url(https://storage.googleapis.com/gweb-cloudblog-publish/images/4_live_service_games_.max-1000x1000.png);"&gt;
          &lt;span class="h-u-visually-hidden"&gt;Generative AI in Games - Demo Game&lt;/span&gt;
        &lt;/div&gt;
      
      &lt;svg role="img" class="h-c-video__play h-c-icon h-c-icon--color-white"&gt;
        &lt;use xlink:href="#mi-youtube-icon"&gt;&lt;/use&gt;
      &lt;/svg&gt;
    &lt;/a&gt;

    
  &lt;/figure&gt;
&lt;/div&gt;

&lt;div class="h-c-modal--video"
     data-glue-modal="uni-modal-LzOLidx7JL0-"
     data-glue-modal-close-label="Close Dialog"&gt;
   &lt;a class="glue-yt-video"
      data-glue-yt-video-autoplay="true"
      data-glue-yt-video-height="99%"
      data-glue-yt-video-vid="LzOLidx7JL0"
      data-glue-yt-video-width="100%"
      href="https://youtube.com/watch?v=LzOLidx7JL0"
      ng-cloak&gt;
   &lt;/a&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p data-block-key="06zip"&gt;Once we make the request, either by text or speech, Google Cloud GenAI models generate the exact code needed to update the prefab in the environment, and then renders it live in the game.&lt;/p&gt;&lt;p data-block-key="77g5n"&gt;While this example shows how code generation can be used in-game, game developers can also use a similar process to place and configure game objects within their game environment to speed up game development.&lt;/p&gt;&lt;p data-block-key="55v1d"&gt;If you would like to take the next step and check out the technology, then we encourage you to explore the Github link and resources below.&lt;/p&gt;&lt;p data-block-key="2ktm8"&gt;Additionally, we understand that not everyone will be interested in every facet of the framework. That's why we've made it flexible – whether you want to dive into the entire project or just work with specific parts of the code to understand how we implemented a certain feature, the choice is yours.&lt;/p&gt;&lt;p data-block-key="2430b"&gt;If you're looking to deepen your understanding of Google Cloud generative AI, check out this curated set of resources that can help:&lt;/p&gt;&lt;ul&gt;&lt;li data-block-key="1t9qi"&gt;&lt;a href="https://cloud.google.com/ai/generative-ai"&gt;Generative AI on Google Cloud&lt;/a&gt;&lt;/li&gt;&lt;li data-block-key="3v7ne"&gt;&lt;a href="https://cloud.google.com/vertex-ai/docs/generative-ai/start/quickstarts/quickstart-multimodal"&gt;Getting started with generative AI on Vertex&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-block-key="fnr53"&gt;Last but not least, if you’re interested in working with the project or would like to contribute to it, feel free to explore the code on Github, which focuses on the GenAI services used as part of this demo:&lt;/p&gt;&lt;ul&gt;&lt;li data-block-key="esfdg"&gt;&lt;a href="https://github.com/googleforgames/GenAI-quickstart" target="_blank"&gt;Generative AI Quickstart for Gaming&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description><pubDate>Thu, 22 Feb 2024 17:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/gaming/the-case-for-running-ml-in-the-cloud-for-live-service-games/</guid><category>AI &amp; Machine Learning</category><category>Gaming</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/gaming.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Running machine learning in the cloud for live service games</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/gaming.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/gaming/the-case-for-running-ml-in-the-cloud-for-live-service-games/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Patrick Smith</name><title>Head of Specialist Customer Engineers, Google Cloud for Games</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Dan Zaratsian</name><title>Tech Lead, AI/ML Solutions Architect, Google Cloud for Games</title><department></department><company></company></author></item><item><title>Game on: Aiven for Apache Kafka and BigQuery - your ultimate gaming cheat code</title><link>https://cloud.google.com/blog/topics/partners/game-autoscaling-via-analytics-with-aiven-pubsub-and-bigquery/</link><description>&lt;div class="block-paragraph"&gt;&lt;p data-block-key="76t59"&gt;The games industry is one of the most data-driven industries in the world. Games generate massive amounts of data every second, from player behavior and in-game transactions to social media engagement and customer support tickets. This data can be used to improve games, make better business decisions, and create new and innovative experiences for players.&lt;/p&gt;&lt;p data-block-key="43qql"&gt;However, the games industry also faces a unique challenge: how to analyze this data in real-time or near-real-time. This is because games are now constantly changing and evolving, and players expect a personalized and highly responsive experience. Imagine, you and your friends are all set to join your favorite game’s new version launch! You take the day off, get your snacks ready and POOF! Server unresponsive… Reload… Still nothing.&lt;/p&gt;&lt;p data-block-key="em8hq"&gt;Massively Multiplayer Online Role-Playing Games (MMORPGs), for instance, need to be able to handle a large number of concurrent players while simulating a virtual world in real time. This can put a strain on game server infrastructure, and it can be difficult to scale the infrastructure to meet the needs of a growing player base. Here is where real-time analytics plays a role in auto-scaling infrastructure in response to these events.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Aiven.max-1000x1000.jpg"
        
          alt="Aiven"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3 data-block-key="76t59"&gt;&lt;b&gt;Automating infrastructure scaling in real-time&lt;/b&gt;&lt;/h3&gt;&lt;p data-block-key="fahit"&gt;&lt;a href="https://aiven.io/kafka" target="_blank"&gt;Aiven for Apache Kafka&lt;/a&gt; provides time-value to player-volume-based data, allowing automation of infrastructure scaling, based on traffic patterns and load. In addition, with &lt;a href="https://aiven.io/influxdb" target="_blank"&gt;Aiven for InfluxDB&lt;/a&gt; and &lt;a href="https://aiven.io/grafana" target="_blank"&gt;Aiven for Grafana&lt;/a&gt;, data infrastructure teams have insights into the health of gaming services — as the gameplay is happening. Once certain thresholds are detected, automation scripts employing the Kubernetes Operator or Terraform Provider can spin up new game services to answer demand.&lt;/p&gt;&lt;p data-block-key="7eoiu"&gt;As one of the most demanding industries for computing power, online or mobile games need to be able to handle a large number of concurrent players. This can put a strain on game server infrastructure, and it can be difficult to scale the infrastructure to meet the needs of a growing player base.&lt;/p&gt;&lt;p data-block-key="184fh"&gt;The &lt;a href="https://aiven.io/platform" target="_blank"&gt;Aiven Platform&lt;/a&gt; offers multiple features, across all managed services, that make it well-suited for automated game service scaling, including:&lt;/p&gt;&lt;ul&gt;&lt;li data-block-key="1lg9e"&gt;&lt;b&gt;Scalability&lt;/b&gt;: Aiven services can be scaled to handle any amount of data, making it ideal for high player volume gaming scenarios, such as a highly anticipated version launch.&lt;/li&gt;&lt;li data-block-key="ir8i"&gt;&lt;b&gt;High reliability and availability&lt;/b&gt;: Via the management plane — or Aiven Console — highly reliable services are designed to be always available. (Typically, even smaller plans provided by Aiven for Apache Kafka include three High-Available Nodes, out of the box.)&lt;/li&gt;&lt;li data-block-key="d0up7"&gt;&lt;b&gt;Security&lt;/b&gt;: The Aiven Console offers a number of security features and &lt;a href="https://aiven.io/security-compliance" target="_blank"&gt;compliance by default&lt;/a&gt; to protect your data, including encryption and authentication.&lt;/li&gt;&lt;/ul&gt;&lt;p data-block-key="ctjr8"&gt;Some of the benefits gained when using the Aiven Stack, shown in our reference architecture, to scale game servers are:&lt;/p&gt;&lt;ul&gt;&lt;li data-block-key="1d9bu"&gt;&lt;b&gt;Improved performance&lt;/b&gt;: By automatically scaling the number of game servers up or down as needed, you can ensure that your game servers are always operating at optimal capacity.&lt;/li&gt;&lt;li data-block-key="3l7kp"&gt;&lt;b&gt;Cost optimization&lt;/b&gt;: You can save money on your cloud computing costs by only running the number of game servers that you need.&lt;/li&gt;&lt;li data-block-key="o46e"&gt;&lt;b&gt;Improved scalability&lt;/b&gt;: Aiven for Apache Kafka, coupled with &lt;a href="https://aiven.io/solutions/aiven-for-observability" target="_blank"&gt;Aiven observability services&lt;/a&gt; (Aiven for InfluxDB and Aiven for Grafana), can be used to scale your game server infrastructure to meet the needs of your growing player base.&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-block-key="afrpp"&gt;&lt;b&gt;Future-proofing automated scaling&lt;/b&gt;&lt;/h3&gt;&lt;p data-block-key="cd0j2"&gt;&lt;a href="https://cloud.google.com/pubsub/docs/overview"&gt;Google Pub/Sub&lt;/a&gt; capabilities within the &lt;a href="https://cloud.google.com/bigquery/docs/query-overview"&gt;BigQuery&lt;/a&gt; suite can be used together to perform longer-term analytics for the games industry. Pub/Sub is a near-real-time/longer-term messaging service that can be used to collect data from game servers, in our case, messages from Aiven for Apache Kafka.&lt;/p&gt;&lt;p data-block-key="d0k0d"&gt;There are a variety of use cases beyond the scope of auto-scaling infrastructure that can be leveraged when using Pub/Sub and BigQuery for longer-term analytics of player telemetry data:&lt;/p&gt;&lt;ul&gt;&lt;li data-block-key="3ui3q"&gt;&lt;b&gt;Player behavior analysis&lt;/b&gt;: By tracking player behavior over time, game companies can identify trends and patterns in how players are playing their games. This information can be used to improve the player experience, develop new content, and balance in-game economies.&lt;/li&gt;&lt;li data-block-key="1a48r"&gt;&lt;b&gt;Game performance analysis&lt;/b&gt;: By tracking game performance over time, game companies can identify areas where technical performance is struggling. This information can be used to fix bugs, optimize performance, and improve the overall quality of the game experience.&lt;/li&gt;&lt;li data-block-key="f2uvh"&gt;&lt;b&gt;Business intelligence&lt;/b&gt;: By analyzing data on player engagement, revenue, and other metrics, companies can make better business decisions. For example, a gaming company could use this data to identify their most popular and profitable titles.&lt;/li&gt;&lt;/ul&gt;&lt;p data-block-key="8q6ba"&gt;Several benefits games industry customers will see by using Pub/Sub and BigQuery for longer-term analytics in the games industry are:&lt;/p&gt;&lt;ul&gt;&lt;li data-block-key="6oid2"&gt;&lt;b&gt;Scalability and reliability&lt;/b&gt;: Pub/Sub and BigQuery are both highly scalable and highly available services that can handle any amount of data.&lt;/li&gt;&lt;li data-block-key="3nvr9"&gt;&lt;b&gt;Security&lt;/b&gt;: Pub/Sub and BigQuery offer a number of security features to help protect your data, including encryption and authentication.&lt;/li&gt;&lt;li data-block-key="aqimb"&gt;&lt;a href="https://cloud.google.com/bigquery/docs/best-practices-costs"&gt;&lt;b&gt;Cost-optimization&lt;/b&gt;&lt;/a&gt;: By analyzing longer term data points, Pub/Sub and BigQuery can help forecast future player workloads and enable adjustments to auto-scaling behavior.&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-block-key="b3fi6"&gt;&lt;b&gt;Aiven + Google Cloud = better together&lt;/b&gt;&lt;/h3&gt;&lt;p data-block-key="57r7k"&gt;By partnering with Google Cloud and &lt;a href="https://aiven.io/googlecloud" target="_blank"&gt;Aiven on Google Cloud&lt;/a&gt;, the games industry can prepare for a worry-free launch while having the data to understand players and keep them coming back for more. Service reliability is key — a hassle-free experience dictates the success of the game! — but cost should always be considered. By lowering the total cost of operations, and right-sizing in real-time, you can achieve greater game-play usability while minimizing unnecessary overscaling.&lt;/p&gt;&lt;p data-block-key="epctu"&gt;Predictive analytics in BigQuery allows you to tweak the scaling parameters based on past data, enabling greater control of future volumes that would otherwise be lost. The combination of managed services from Aiven and Google Cloud add time value to data — and increased revenue from a successful launch. Game on!&lt;/p&gt;&lt;h3 data-block-key="7so1d"&gt;&lt;b&gt;Conclusion and next steps&lt;/b&gt;&lt;/h3&gt;&lt;p data-block-key="bb150"&gt;As the games industry continues to evolve and embrace data-driven decision-making, the combination of Aiven for Kafka and &lt;a href="https://cloud.google.com/pubsub/docs/overview"&gt;Pub/Sub&lt;/a&gt; capabilities within the &lt;a href="https://cloud.google.com/bigquery/docs/query-overview"&gt;BigQuery&lt;/a&gt; suite will become increasingly essential for success. By harnessing the power of real-time data, games companies can unlock new opportunities, enhance player experiences, and drive sustainable growth. If you’re ready to learn more, check out the following links below:&lt;/p&gt;&lt;ul&gt;&lt;li data-block-key="aevnq"&gt;For further reading of connecting Aiven with Google Native services: &lt;a href="https://cloud.google.com/blog/products/data-analytics/stream-data-with-open-source-kafka-by-aiven-analyze-with-bigquery"&gt;Shorten the path to insights with Aiven for Apache Kafka and BigQuery&lt;/a&gt;.&lt;/li&gt;&lt;li data-block-key="b1ek"&gt;How Google Cloud empowers the games industry to achieve success: &lt;a href="https://cloud.google.com/blog/products/gaming/how-google-cloud-for-games-enables-live-service-games"&gt;Game on and on and on: Google Cloud's strategy for live service games&lt;/a&gt;&lt;/li&gt;&lt;li data-block-key="82fr6"&gt;Ready to give it a try? &lt;a href="https://pantheon.corp.google.com/marketplace/product/aiven-public/aiven?organizationId=433637338589" target="_blank"&gt;Click here&lt;/a&gt; to check out Aiven’s listing on Google Cloud Marketplace, and let us know what you think.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description><pubDate>Tue, 30 Jan 2024 17:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/topics/partners/game-autoscaling-via-analytics-with-aiven-pubsub-and-bigquery/</guid><category>Data Analytics</category><category>Gaming</category><category>Databases</category><category>Partners</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Game on: Aiven for Apache Kafka and BigQuery - your ultimate gaming cheat code</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/topics/partners/game-autoscaling-via-analytics-with-aiven-pubsub-and-bigquery/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Jess Ambriz</name><title>ISV Partner Engineer, Google Cloud</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Chris Butler</name><title>Partner Solutions Architect, Aiven</title><department></department><company></company></author></item><item><title>The generative AI revolution in the games industry: A path to boundless creativity</title><link>https://cloud.google.com/blog/products/gaming/generative-ai-in-the-games-industry/</link><description>&lt;div class="block-paragraph"&gt;&lt;p data-block-key="48zh3"&gt;The games industry has continually pushed the boundaries of technology, harnessing it to unleash the human imagination. Game developers have embraced cutting-edge advancements in computing, graphics, networking, social media, and data to craft experiences that today captivate &lt;a href="https://newzoo.com/resources/blog/the-games-market-in-2022-the-year-in-numbers" target="_blank"&gt;over 3 billion players worldwide&lt;/a&gt;.&lt;/p&gt;&lt;p data-block-key="a26vh"&gt;By being on the forefront of technology, the games industry serves as a beacon of innovation for other businesses, showcasing new methods to inform, engage, and connect people at scale. For example, while consumers were beginning to adopt mobile devices en masse in the mid 2000’s, games were early pioneers, adopting the trend into their business models. Today, nearly half the planet plays games; the majority through their mobile device.&lt;/p&gt;&lt;p data-block-key="7ccr9"&gt;The industry’s early learnings in mobile has led to “&lt;a href="https://cloud.google.com/blog/products/gaming/how-google-cloud-for-games-enables-live-service-games"&gt;live service games&lt;/a&gt;” which is today the dominant business model in the industry across nearly all game platforms. Live service games constantly change and evolve, relying on a cycle of creation, engagement, and learning between developer and player.&lt;/p&gt;&lt;p data-block-key="erdek"&gt;Today, we stand at the forefront of a new era. It is paramount to explore how the games industry can leverage the transformative potential of generative artificial intelligence (gen AI) to further push the boundaries of game experiences. With generative AI, those that create games — designers, developers, artists, marketers, and more — can revolutionize how they work, and expand the range of experiences they can deliver.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/20563_GenAI_Games_Blog_Img14x.max-1000x1000.png"
        
          alt="20563_GenAI_Games_Blog_Img1@4x"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3 data-block-key="48zh3"&gt;Understanding the generative AI difference for games&lt;/h3&gt;&lt;p data-block-key="22bmn"&gt;So, what sets generative AI apart from its predecessors? On one level, it's evolutionary. To think back, games have long used the term “AI,” but our definition was a constrained set of rules, decision trees, and behaviors. Players engaged with “bots,” but compared to a human, bots often weren’t as engaging. More recently, game companies have been using true AI and ML frameworks (built on data and analytics) to understand players, manage churn, and increase monetization. Some have even integrated their frameworks to advanced AI algorithms like large language models (LLMs) which brings us to generative AI.&lt;/p&gt;&lt;p data-block-key="351gs"&gt;Generative AI goes well beyond an evolutionary step forward, however. It’s a whole new dimension for innovation, and, I posit, the biggest change to the industry of games since the introduction of real-time 3D graphics&lt;b&gt;&lt;i&gt;.&lt;/i&gt;&lt;/b&gt; Here are two fundamental ways generative AI will transform games:&lt;/p&gt;&lt;p data-block-key="d7s2"&gt;1. &lt;b&gt;Scalable Development with generative AI:&lt;/b&gt; Creating content is one of - if not the largest - expenses that games can incur. According to the &lt;a href="https://assets.publishing.service.gov.uk/media/644939aa529eda000c3b0525/Microsoft_Activision_Final_Report_.pdf" target="_blank"&gt;UK’s CMA&lt;/a&gt;, blockbuster games can have development budgets well over $100 million. Even with these massive investments, game teams can struggle to keep up with player demand for new content, especially as these audiences grow to planet-scale. Generative AI can help accelerate game production across the board - code, art, dialogue, and more, enabling these teams to better serve their players at scale. It can help existing teams create better content at a faster pace, with improved collaboration, ideation, and personalization. What’s more, enterprise-grade generative AI allows developers to leverage this new technology in a way which is respectful of intellectual property, while protecting one's own proprietary data.&lt;/p&gt;&lt;p data-block-key="4cil4"&gt;2. &lt;b&gt;Real-Time generative AI&lt;/b&gt;: As development teams integrate generative AI into their production process, some have begun integrating it into the game itself. This has the potential of revolutionizing player experiences, with generative AI running in real-time as the game is played. This is generative AI that is responsive and dynamic, distilling huge LLMs to react and interact with a player in real-time. Games themselves will be able to generate content based on the explicit or even implicit actions of players: from instantly generated new items and levels to in-game characters that can have lifelike discussions. Imagine games that can naturally respond to a player’s voice, or generate entirely novel content in response to player behavior. With these examples, one can imagine a new paradigm of player personalization and game interaction which is wholly unlike anything the world has seen before.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/20563_GenAI_Games_Blog_Img24x.max-1000x1000.png"
        
          alt="20563_GenAI_Games_Blog_Img2@4x"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3 data-block-key="48zh3"&gt;Getting started on the path of innovation&lt;/h3&gt;&lt;p data-block-key="ar79p"&gt;The future I've described may sound visionary, but it is closer than we might think. In fact, the foundation for this future is already being laid today, as individuals and companies explore the fundamental models that will shape the games industry's transformation. I believe that as the games industry embraces generative AI, the business will go through another tectonic shift. Just as the preeminent business model evolved from boxed software games to live service games, we will evolve again; this time into “living games”. In such a model, the relationship cycle between the player and developer expands to the game itself, with all three interacting to enrich the player experience along with business outcomes.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/20563_GenAI_Games_Blog_Flow4x.max-1000x1000.png"
        
          alt="20563_GenAI_Games_Blog_Flow@4x"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p data-block-key="48zh3"&gt;Successfully incorporating generative AI in games will take more than desire and drive. Developers will need to harness their data and use it in entirely new ways; training models on reliable datasets capable of generating consistent and compelling outcomes. Game developers will also need to implement AI responsibly and securely, safeguarding intellectual property while vigilantly respecting the player.&lt;/p&gt;&lt;p data-block-key="afgej"&gt;At Google Cloud, we are dedicated to providing a comprehensive ecosystem for living games, encompassing powerful game servers, robust data assets, fast networks, and the most powerful and responsible AI capabilities. Today, Game developers should pay particular attention to &lt;a href="https://cloud.google.com/vertex-ai"&gt;Vertex AI&lt;/a&gt;, which empowers generative AI on proprietary data in a secure and powerful environment. Within Vertex AI, our model garden offers a diverse range of proprietary and open foundation models for teams to learn from and create with, all in a secure and robust enterprise environment, perfectly suited to game development. Over the past few months, we have garnered invaluable feedback and developed roadmaps based on what game companies aspire to see next with generative AI from Google.&lt;/p&gt;&lt;p data-block-key="1fg38"&gt;As I mentioned earlier, the games industry has always thrived on human invention, creativity, and the drive to adopt state-of-the-art technologies. While generative AI may accelerate workflows, create novel player experiences, and open new avenues for audience engagement and monetization, it will not alter this fundamental truth. Like the revolutionary technologies that preceded it, game developers will use generative AI to amplify rather than replace their gifts, as it’s their creativity that's guaranteed to keep this industry so exciting.&lt;/p&gt;&lt;p data-block-key="d1oi4"&gt;For more details on jump starting your generative AI journey, download our eBook, &lt;a href="https://inthecloud.withgoogle.com/executive-guide-getting-started-with-generative-ai/dl-cd.html" target="_blank"&gt;The Executive’s Guide to Generative AI&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-aside"&gt;&lt;dl&gt;
    &lt;dt&gt;aside_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;title&amp;#x27;, &amp;#x27;What\&amp;#x27;s your prompt? Introducing &amp;quot;The executive\&amp;#x27;s guide to generative AI&amp;quot;&amp;#x27;), (&amp;#x27;body&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fe38924bb80&amp;gt;), (&amp;#x27;btn_text&amp;#x27;, &amp;#x27;Read more&amp;#x27;), (&amp;#x27;href&amp;#x27;, &amp;#x27;https://cloud.google.com/blog/transform/introducing-executives-guide-to-generative-ai&amp;#x27;), (&amp;#x27;image&amp;#x27;, &amp;lt;GAEImage: introducing-executives-guide-to-generative-ai-midjourney-hero.png&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;</description><pubDate>Fri, 06 Oct 2023 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/gaming/generative-ai-in-the-games-industry/</guid><category>AI &amp; Machine Learning</category><category>Gaming</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>The generative AI revolution in the games industry: A path to boundless creativity</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/gaming/generative-ai-in-the-games-industry/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Jack Buser</name><title>Global Director for Games, Google Cloud</title><department></department><company></company></author></item><item><title>How DeNA developed a live streaming app in just 2 months with Live Stream API</title><link>https://cloud.google.com/blog/products/gaming/broadcasting-live-sporting-events-with-live-stream-api/</link><description>&lt;div class="block-paragraph"&gt;&lt;p&gt;As a provider of several mobile portal and e-commerce platforms in Japan, DeNA Co., Ltd (DeNA) has continuously sought to expand its portfolio of services to create value for society and innovation in the entertainment business by leveraging internet and AI technologies. That is why it launched Play-by-Play LIVE, an application that allows professional or amateur play-by-play commentators to stream live sporting events and engage with the audience as they do so. This is done by setting up multiple commentary channels for every match, so fans can engage with their favourite sports teams and commentators in real-time. &lt;/p&gt;&lt;p&gt;There are as many ways to enjoy sports as there are commentators. The concept of Play-by-Play LIVE is for the audience to enjoy sports in a new way that is not limited to just watching live sports streaming. This was done through the effort of our two business areas, from sports business and live streaming business.&lt;/p&gt;&lt;p&gt;One of the biggest hurdles DeNA faced was the short development time frame. With only two months from the start of the project to producing a proof of concept, building a video streaming server from scratch was a sizable challenge. The company decided to turn to&lt;a href="https://cloud.google.com/livestream/docs"&gt; Live Stream API by Google Cloud&lt;/a&gt; to deploy the application, entrusting the fully managed service to build the infrastructure so that we can focus more on the development of user experience. We chose Live Stream API for its ease of usability, cost and operations. &lt;/p&gt;&lt;h3&gt;Putting the app together with Google Cloud&lt;/h3&gt;&lt;p&gt;One of the company’s first steps in development was to use Flutter, an open-source software development kit (SDK) by Google, to create the application’s user interface, while the backend system was built with Google Cloud and Firebase. We also built an authentication feature that is aligned with our own user identification system, BAYSTARS ID, that is required to be able to use the service provided by Yokohama DeNA Baystars, a platform for the fans of the baseball team. &lt;/p&gt;&lt;p&gt;Here is how Play-by-Play LIVE was developed with Google Cloud:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Live streams of baseball games are received via Real Time Messaging Protocol (RTMP), and converted to HTTP Live Streaming (HLS) with Live Stream API. Information about the game, such as scores, pitching charts, and the name of players will be overlaid on screen, with this functionality being built on Flutter and Firebase.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The progress of live matches are updated in real time on the Cloud Firestore database, as a third party vendor  is asked to input these information on a management console that’s developed with Firebase. &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The information will then be displayed as a subtitle or caption. To fully utilize the application, users will need to log in with a guest or Baystars account. &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Videos of these live sporting events are captured by OBS Studio, an open source software for video recording and live streaming, then combined with the footage of commentators on OBS Studio.The final videos are then exported to the Live Stream API via RTMP, converted to HLS and delivered to the audience on their mobile app.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Additional features such as quizzes and questions are built with Firestore. For functions that cannot be processed through Firestore and mobile apps, &lt;a href="https://cloud.google.com/functions"&gt;Cloud Functions&lt;/a&gt; is used to process them server side, through a serverless environment. &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Flutter is also used to develop a console application for monitoring the comment and quiz functions, with this hosted on Firebase as a web application.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Broadcasting major sporting events confidently&lt;/h3&gt;&lt;p&gt;With Google Cloud, DeNA was able to deliver a proof of concept for Play-by-Play LIVE within the short timeline of two months. On top of managing the hefty workload of live video streaming with Google Cloud, these tools have provided its team the means to build and deploy simple functions swiftly, such as with open source function-as-a-service frameworks in Cloud Functions. This has helped DeNA eliminate the complexity of constructing the non-essential components of the application’s backend system, while accelerating development. &lt;/p&gt;&lt;p&gt;Another benefit of using Google Cloud was to leverage the function of Firestore. When there was a specification change in the midst of development, we were able to reduce the amount of workload for the change since Firestore’s structure was simple. &lt;/p&gt;&lt;p&gt;Play-by-Play LIVE was eventually used to broadcast the 3x3 football championship that was held on March 26, 2023. The braodcast’s success has given DeNA the confidence to livestream other major sporting events in Japan through the application in the future.&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 07 Aug 2023 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/gaming/broadcasting-live-sporting-events-with-live-stream-api/</guid><category>Application Modernization</category><category>Gaming</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>How DeNA developed a live streaming app in just 2 months with Live Stream API</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/gaming/broadcasting-live-sporting-events-with-live-stream-api/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Kenta Sugahara</name><title>Director, Solution Business Department, DeNa</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Naoto Ikeno</name><title>Engineer, Solution Business Department, DeNa</title><department></department><company></company></author></item><item><title>DevOps Awards winner Improbable on “unleashing the full power of the cloud”</title><link>https://cloud.google.com/blog/products/devops-sre/devops-awards-2022-winner-improbable/</link><description>&lt;div class="block-paragraph"&gt;&lt;p&gt;&lt;i&gt;Improbable Worlds Limited — commonly known as Improbable — is a metaverse technology company that’s been at the forefront of building virtual worlds since 2012. With a world-class team, Improbable creates immersive gaming and event experiences using its Morpheus Technology, allowing over 15,000 users to interact as if they were in the same place at the same time. In this blog post, we’re highlighting Improbable for the DevOps achievements that earned the company the ‘Unleashing the Full Power of the Cloud’ award in the &lt;a href="https://cloud.google.com/awards/devops"&gt;2022 DevOps Awards&lt;/a&gt;. If you want to learn more about the winners and how they used DORA metrics and practices to grow their businesses, &lt;a href="http://dora.dev" target="_blank"&gt;start here&lt;/a&gt;.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Video game builds traditionally require choosing between high infrastructure costs or longer wait times for developers and other downstream processes, but neither is tenable when you are trying to bring together tens of thousands of users in one single virtual environment. Rapid prototyping and QA are essential to the games industry or companies building virtual worlds, so developers must get working builds and deployments out as soon as possible to be able to validate, gather feedback, iterate, and try again. A single build failure can block the work and testing of hundreds of individuals — waiting hours on a fix is not an option — so the systems we provide must be fast and reliable.&lt;/p&gt;&lt;p&gt;Beyond just speed, scalability and stability were becoming major issues as Improbable’s original static and inflexible system had to adapt to a rapid expansion with more aggressive deadlines and an intense growth in daily build requirements. With an old infrastructure relying on tightly integrated systems, even upgrades and new features could lead to a failure in a single, small system,  which could lead to an outage of the company’s entire service.&lt;/p&gt;&lt;h3&gt;Meeting customer needs&lt;/h3&gt;&lt;p&gt;To meet the growing demands, our organization saw that we needed to address both technological and process-based challenges. To meet customers’ needs, we needed a purpose-built infrastructure for Windows Metaverse (Game) development that was fast, cheap, highly reliable, and highly scalable. With this infrastructure also came the need to provide top-class support to keep developers unblocked.&lt;/p&gt;&lt;p&gt;The key to this project's success was adopting CI/CD as a service. This meant that we would provide guidance to developers on CI/CD development, as well as providing:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Infrastructure&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Scripting&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Source control&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Automated merge tools&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Automated release tools&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Solution&lt;/h3&gt;&lt;p&gt;A complicated problem like this needed a more technically elegant and complex solution to optimize build times rather than just throwing compute at the problem. In addition, Windows VMs can become difficult to manage without containerization. Costs can also spiral quickly, with diminishing returns on investment. Our teams found all of the technical solutions they needed in the cloud.&lt;/p&gt;&lt;p&gt;Using Google Cloud, we were able to develop a more stable, scalable, and sustainable approach to development that integrates a number of Google Cloud tools and services right from the beginning. When a job request comes in, &lt;a href="https://cloud.google.com/run/docs/about-instance-autoscaling"&gt;Cloud Run scalers&lt;/a&gt; respond immediately to get the process going as quickly as possible — including a webhook scaler for instant response and speed, as well as a polling scaler for backup in case there are any webhook or external service-related issues. The scalers being Cloud Run, also auto-scale themselves to match demand and are highly reliable.&lt;/p&gt;&lt;p&gt;Rather than simply building directly on a VM, we utilized &lt;a href="https://console.cloud.google.com/marketplace/product/google-cloud-platform/compute-engine"&gt;Compute Engine’s&lt;/a&gt; Windows Server for Containers images and launch a secondary Windows instance as a container on the host VM. Here we can isolate source code, assets, and build output to Virtual Hard Drives (VHDs) running on the host VM. During a build, changes made and build output can either be cached or reset at the end of the run, as we delete the container and reset the VHD back to a known state. This gives us absolute build isolation and reproducibility, as well as quickly allowing the build agent to return to the pool for its next job.&lt;/p&gt;&lt;p&gt;Our development process also introduces the use of “golden images” — Google Cloud images of a VM that has just run a full suite of all known possible build combinations for a specific project. For game design with Unreal, this includes builds for all platforms across debug, development, test, and shipping build configurations. All of the source, assets and build data will be cached to VHDs on the image. This cached data present on a golden image allows the next job to be iterative and thus significantly faster, while maintaining a known state to reset to.&lt;/p&gt;&lt;p&gt;These and other technological tools and improvements have reduced many of our biggest pain points, but even with these technical solutions, Improbable’s digital transformation would only be half-complete without also fostering a DevOps-first and engineering culture. Some of the most notable successes in this cultural transformation included:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Tracking metrics as soon as possible to identify and correct key time-wasting areas&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Empowering smoother outage mitigation with reliable backup systems and clear workflows and guidelines on how best to deal with specific issues&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Checking in on health checks with system redundancy to ensure key systems are working as expected&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Implementing data sharing across teams for metrics around build times, reliability, and costs to keep teams honest and encourage cooperative problem solving&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Staying proactive in finding, reporting, and addressing problems rather than remaining passive and reactive&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;To help developers do their best, our organization began to prioritize developer time over infrastructure costs. By reducing variance in lead time, we reduce developer frustration and allow developers to plan their time accordingly based on reliable delivery time averages. We also introduced practices to reduce outages, including rapid-state reporting, reducing complexity in shared systems and codebases.&lt;/p&gt;&lt;h3&gt;The power of cloud&lt;/h3&gt;&lt;p&gt;With the power of the cloud and focused DevOps practices, our organization has seen notable improvements in both cost savings and development efficiency. The number of build jobs performed daily went from 500 to 3000+, now with eight preflight validations for source changes whereas before there were only two. Costs dropped dramatically — from $1.7 per job to $0.5 — and projects that would have cost $900k per year in the old system can now be accomplished for $120k with the same build output. &lt;/p&gt;&lt;p&gt;Through the adoption of all &lt;a href="https://cloud.google.com/architecture/devops/devops-tech-cloud-infrastructure"&gt;five capabilities of cloud computing&lt;/a&gt;, we saw improvements to our software delivery and organizational performance. This includes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Resource pooling&lt;/b&gt;: By running build requests in parallel on &lt;b&gt;hundreds of VMs&lt;/b&gt; — including &lt;b&gt;thousands of vCPUs&lt;/b&gt; working at maximum capacity — we optimize processing power by spreading the resource workloads, meaning that the more projects and customers involved, the lower the price is for each build job.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Rapid elasticity&lt;/b&gt;: With a double scaler tech stack that keeps our VM pool at optimum capacity all the time, build requests are serviced &lt;b&gt;within 10-160 seconds&lt;/b&gt;. The VM pool is dynamically resized to match demand — including adding more VMs as needed and killing idle ones.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Measured service&lt;/b&gt;: We have visibility on whether we are on track with SLOs and feature budget spend by tracking our performance using bots made with Cloud Run that post easy-to-digest reports and updates, as well as track everything from build times to pass/fail rates using DataDog tracing and metrics stacks.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;On demand self-service&lt;/b&gt;: Our developers can run experiments and gather test data without blockers or bureaucratic processes with tools that can automatically spin up a VM for their specific build request in an environment that is completely isolated from the production environment.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Broad network access&lt;/b&gt;: By using Cloud Identity-Aware Proxy (IAP) for access control and resource management with a zero-trust security model, our developers can remotely use our cloud resources at will without the limitations of office IP or broad, catch-all firewalls.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;With these applications of the full power of the cloud, we’ve seen measurable improvements in the development process, including:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Deployment frequency&lt;/b&gt;: Build system rollouts went &lt;b&gt;from weekly to after every merge&lt;/b&gt;, with projects, products, and customers now being able to deploy their metaverses &lt;b&gt;hundreds of times per day&lt;/b&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Lead time for change&lt;/b&gt;s: Using the exotic cloud stack reduced lead times by &lt;b&gt;at least 300%&lt;/b&gt; — with primary CI build average times dropping &lt;b&gt;from 60 minutes to 15&lt;/b&gt; and metaverse deployment builds going &lt;b&gt;from 90 minutes to 25&lt;/b&gt; — enabling Improbable to move faster and rapidly iterate and test new features.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Change failure rate&lt;/b&gt;: Overall failure rates for servicing build jobs went &lt;b&gt;from 96% success to 99.99%&lt;/b&gt; with master build job success rates going &lt;b&gt;from 80% to 99%&lt;/b&gt;, saving money and time — especially in the reduction of support calls.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Time to restore service&lt;/b&gt;: Between the dual scaler system, the container setup, and other cloud-based solutions, there have only been three occasions where we had to completely wipe the pool of VMs and restart the scalers due to technical issues, and these outages &lt;b&gt;only lasted 10 minutes&lt;/b&gt; before all builds were back online and serviced.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;i&gt;Stay tuned for the rest of the series highlighting the &lt;a href="https://cloud.google.com/awards/devops"&gt;DevOps Award Winners&lt;/a&gt; and read the &lt;a href="https://cloud.google.com/devops/state-of-devops"&gt;2022 State of DevOps report&lt;/a&gt; to dive deeper into the DORA research.&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Fri, 21 Jul 2023 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/devops-sre/devops-awards-2022-winner-improbable/</guid><category>Customers</category><category>Gaming</category><category>DevOps Awards</category><category>DevOps &amp; SRE</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/Improbable.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>DevOps Awards winner Improbable on “unleashing the full power of the cloud”</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/Improbable.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/devops-sre/devops-awards-2022-winner-improbable/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Joshua Huburn</name><title>Lead Software Engineer</title><department></department><company></company></author></item><item><title>Accelerate your Multiplayer Game Development with the Global Scale Multiplayer Demo</title><link>https://cloud.google.com/blog/products/gaming/make-an-online-game-based-on-this-cloud-gaming-demo/</link><description>&lt;div class="block-paragraph"&gt;&lt;p&gt;Building the backend for a fast-paced competitive multiplayer game is a complex task. There are many moving parts to coordinate, and the product and solution landscape is practically endless. There are a myriad of managed products, supporting open source solutions and more that need to be evaluated, experimented with and implemented, and the path to using all of them in conjunction with one another is often not clear.&lt;/p&gt;&lt;p&gt;To solve this problem, and kickstart your journey on building your own multiplayer game, a multidisciplinary team of Google Cloud for Games experts banded together to create a global scale, integrated demo of a fast paced multiplayer game. The aim of this demo is to show the  technologies and techniques we at &lt;a href="https://cloud.google.com/solutions/games#section-4"&gt;Google Cloud have seen work in production&lt;/a&gt; to host, scale and orchestrate game backends for multiplayer games - from services and data storage all the way through to dedicated game servers.&lt;/p&gt;&lt;p&gt;This includes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Game Engine&lt;/p&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://www.unrealengine.com/" target="_blank"&gt;Unreal Engine&lt;/a&gt; 5 for the game client and dedicated server code.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;A custom &lt;a href="https://go.dev/" target="_blank"&gt;Go&lt;/a&gt; game launcher for client side authentication.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;p&gt;Open Source&lt;/p&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://www.terraform.io/" target="_blank"&gt;Terraform&lt;/a&gt;, for infrastructure as code.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://agones.dev/" target="_blank"&gt;Agones&lt;/a&gt; for hosting and scaling dedicated game servers.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://open-match.dev/" target="_blank"&gt;Open Match&lt;/a&gt; for match making our global player base.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;p&gt;Google Cloud&lt;/p&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://cloud.google.com/build"&gt;Cloud Build&lt;/a&gt; and &lt;a href="https://cloud.google.com/deploy"&gt;Cloud Deploy&lt;/a&gt; for Continuous Integration and Deployment.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview"&gt;GKE Autopilot&lt;/a&gt; for hosting the backend microservices.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Globally distributed &lt;a href="https://cloud.google.com/kubernetes-engine"&gt;GKE&lt;/a&gt; Autopilot and Standard clusters running for hosting Agones orchestrated Unreal dedicated game servers&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://cloud.google.com/anthos/service-mesh"&gt;Anthos Service Mesh&lt;/a&gt; for cross cluster service discovery and communication.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://cloud.google.com/spanner"&gt;Cloud Spanner&lt;/a&gt; for storing the player in-game data.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;We’ll also share some tips and tricks the team of people working on this project learnt along the way so you can turbocharge your development journey even more!&lt;/p&gt;&lt;h2&gt;Droidshooter&lt;/h2&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image1_oS3CXGD.max-1000x1000.jpg"
        
          alt="image1.jpg"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;i&gt;“Droidshooter” the global scale, multiplayer demo being played&lt;/i&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;We deliberately built a very simple multiplayer game called “Droidshooter” to highlight and make easily discoverable the server side technologies and techniques we took advantage of during the development of this demo.&lt;/p&gt;&lt;p&gt;In this game you fly a small spaceship against another two players, while attempting to get their health to zero by firing bursts of energy against the other ships. For each successful destruction of a rival spaceship, you receive a point. The player with the most number of points at the end of thirty seconds wins the round!&lt;/p&gt;&lt;h2&gt;Architecture overview&lt;/h2&gt;&lt;p&gt;Before we jump into the details of each component, let’s look at an architecture overview:&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image2_kqChkol.max-1000x1000.png"
        
          alt="image2.png"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;i&gt;Architecture Overview of “Droid Shooter” (&lt;a href="https://services.google.com/fh/files/blogs/global_scale_game_architecture.png"&gt;Click to Enlarge&lt;/a&gt;)&lt;/i&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;Since this is a game that is targeted at a global audience, we also have a global infrastructure footprint.&lt;/p&gt;&lt;p&gt;Our general backend services for our game are hosted in us-central1, since they aren’t latency sensitive, and consolidating them into a single region and cluster makes managing them much easier. Since player connection to the multiplayer, dedicated game servers are latency sensitive, we have them on multiple Kubernetes clusters in multiple regions around the world to ensure that they are close to our players locations.&lt;/p&gt;&lt;h2&gt;Game state flow&lt;/h2&gt;&lt;h3&gt;Launching the game client&lt;/h3&gt;&lt;p&gt;In the above architecture, each player will start an instance of the &lt;a href="https://github.com/googleforgames/global-multiplayer-demo/tree/main/game/GameLauncher" target="_blank"&gt;Game Launcher&lt;/a&gt;. This provides authentication via Google login, as well as options for launching the game.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image3_U8Ideda.max-1000x1000.jpg"
        
          alt="image3.jpg"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;i&gt;Game State Sequence Diagram&lt;/i&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;At log in, &lt;a href="https://github.com/googleforgames/global-multiplayer-demo/blob/v0.1.0/services/profile/main.go#L72-L92" target="_blank"&gt;a profile record is created&lt;/a&gt; if it doesn’t exist in the database. From there, the profile information is retrieved from the &lt;a href="https://github.com/googleforgames/global-multiplayer-demo/tree/v0.1.0/services/profile" target="_blank"&gt;profile service&lt;/a&gt; and displayed here in the launcher (That’s one of our names above!) as well as in the game client.&lt;/p&gt;&lt;p&gt;Clicking “Open Droidshooter” will start the &lt;a href="https://github.com/googleforgames/global-multiplayer-demo/tree/v0.1.0/game" target="_blank"&gt;game client&lt;/a&gt;, which will request a game through the &lt;a href="https://github.com/googleforgames/global-multiplayer-demo/tree/v0.1.0/services/frontend" target="_blank"&gt;frontend service&lt;/a&gt;, providing an authenticated endpoint for almost all communications to hosted backend services for the game client, as well as the previously mentioned launcher.&lt;/p&gt;&lt;h3&gt;Match making&lt;/h3&gt;&lt;p&gt;From here, the client will need to request the global set of “ping locations” in each of the regions that our game servers will be hosted in, since our game requires low latency for an optimal, real time experience. Therefore we need to actively measure ping latencies from each region from the player’s location, so that they can be matched to players of similar latency from where they are situated, and ignore regions where latency is too high.  Unfortunately, you can’t just send players to only the closest region to them, as that splits your player base, and results in an inability to match players that would otherwise be able to play a game together.&lt;/p&gt;&lt;p&gt;Once the game client has utilized each of the latency measurement endpoints in each region and recorded the player’s latency to each region, it sends this data to the matchmaking system (through the authenticated frontend) requesting to be grouped with other players so they can play a game! In Droidshooter, we have a very simple matchmaking system, where our matchmaker looks to &lt;a href="https://github.com/googleforgames/global-multiplayer-demo/blob/v0.1.0/services/open-match/matchfunction/mmf/matchfunction.go" target="_blank"&gt;match three players together that have the closest latency&lt;/a&gt; to each other.&lt;/p&gt;&lt;h3&gt;Allocating a game server&lt;/h3&gt;&lt;p&gt;Once a group is formed to play a game, the matchmaker &lt;a href="https://github.com/googleforgames/global-multiplayer-demo/blob/v0.1.0/services/open-match/director/main.go" target="_blank"&gt;requests a dedicated game server&lt;/a&gt; from the game server orchestration system in the region in which it has determined the best place to place these players. Since all these players need to have the same experience, the dedicated game server's job is to simulate the game world state, and communicate this information to all connected players in real time, so they can all enjoy the fun experience of playing Droidshooter.&lt;/p&gt;&lt;p&gt;Therefore the matchmaker passes back to the game clients (through the frontend) the address and port each client will need to connect directly to, since the game state is an in-memory simulation, and then, they play Droidshooter!&lt;/p&gt;&lt;h3&gt;Final cleanup&lt;/h3&gt;&lt;p&gt;Once the game is complete, the game server shuts itself down, and thanks to our &lt;a href="https://github.com/googleforgames/global-multiplayer-demo/blob/v0.1.0/game/fleet.yaml" target="_blank"&gt;game server fleet management system&lt;/a&gt;, a new one is spun up right away for new players to play on.&lt;/p&gt;&lt;h2&gt;Ecosystem breakdown&lt;/h2&gt;&lt;p&gt;Let’s look at each of the products and open source projects we used to implement the above flow, and why we chose each of them:&lt;/p&gt;&lt;h3&gt;Terraform&lt;/h3&gt;&lt;p&gt;When getting started with this project, the first thing we did was decide that we wanted to have an infrastructure as code set up for automating the creation of the infrastructure we would be running the backend for our game on.  We decided on &lt;a href="https://www.terraform.io/" target="_blank"&gt;Terraform&lt;/a&gt;, an open-source infrastructure as code software tool that enables you to safely and predictably create, change, and improve infrastructure through a declarative configuration language.&lt;/p&gt;&lt;p&gt;We chose this tool, as it is widely adopted and meant that each of the people developing on the project would have the same infrastructure setup as each other, our final end users could easily spin up the same infrastructure themselves using tools they were already likely familiar with.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Tips and Tricks&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Make liberal use of Terraform variables throughout your code! Thanks to our &lt;a href="https://github.com/googleforgames/global-multiplayer-demo/blob/v0.1.0/infrastructure/terraform.tfvars.sample" target="_blank"&gt;set of configurable variables&lt;/a&gt;, end users could choose to spin up a full global configuration of the project, or aim for a much smaller, and cheaper to run, configuration, possibly for development purposes.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;GKE Autopilot and Standard&lt;/h3&gt;&lt;p&gt;GKE Autopilot is a fully managed Kubernetes experience where you only pay for the Pods you run, and don’t have to worry about the underlying infrastructure that hosts it.  It was a perfect fit for all our services, such as custom ones like our profile and front end service as well as the Open Match platform services (more on that later). The truly delightful thing about developing on Autopilot was that as a team we never had to worry about new services that were being built and if there was capacity on the GKE cluster that they were going to run on - we could just deploy knowing that Autopilot would take care of the infrastructure.&lt;/p&gt;&lt;p&gt;We actually host our game server containers on both &lt;a href="https://github.com/googleforgames/global-multiplayer-demo/blob/v0.1.0/infrastructure/terraform.tfvars.sample#L43-L75" target="_blank"&gt;GKE Standard and Autopilot&lt;/a&gt; in this demo. While you probably would want to settle on a single platform in production, we wanted to highlight that if the ease of use of Autopilot fits your requirements for your game server workloads then it works perfectly with this entire stack, but if your game server requires very specific tuning of the underlying GKE standard nodes - then GKE standard is also a great solution.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Tips and tricks&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Start with Autopilot and only move over to GKE standard if you need to. If you don’t have a reason to move to GKE standard, the ease of use of Autopilot can save you a lot of time. Since it’s all Kubernetes underneath, migration between platforms is very straightforward.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Agones&lt;/h3&gt;&lt;p&gt;Agones is an open-source game server orchestration platform originally co-created by Ubisoft and Google Cloud, but now with over 200 contributors from a variety of game studios. Built recognizing that Kubernetes needed game-specific optimizations, it teaches Kubernetes about the lifecycle of game server workloads, and ensures that player experiences aren’t interrupted while players are playing on them. Therefore our decision to use Agones was pretty straightforward as this meant we didn’t have to worry about game server lifecycle management or infrastructure usage optimisation - Agones would take care of all that for us.&lt;/p&gt;&lt;p&gt;Agones also provides us with a set of APIs and SDKs that make it easy to integrate our demo with the platform. This includes features like game state management and player management, which significantly decreases the time needed to implement these features from scratch. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Tips and tricks&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Take advantage of the &lt;a href="https://agones.dev/site/docs/installation/terraform/gke/" target="_blank"&gt;Terraform modules&lt;/a&gt; Agones comes with for you to use to create both GKE standard and autopilot clusters. You could create your own from the &lt;a href="https://agones.dev/site/docs/installation/creating-cluster/gke/" target="_blank"&gt;cluster creation instructions&lt;/a&gt; - but why go to all that effort?&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Open Match&lt;/h3&gt;&lt;p&gt;Open Match is another open-source tool for multiplayer games that was originally developed in collaboration between Google Cloud and &lt;a href="https://unity.com/" target="_blank"&gt;Unity Technologies&lt;/a&gt;.  It is a matchmaking framework that helps game developers build scalable and extensible matchmaking systems. It provides a set of tools and APIs that game developers can use to create their own matchmaking logic, while Open Match handles the underlying infrastructure to support a global player base.&lt;/p&gt;&lt;p&gt;We primarily chose this platform because it allowed us to have full customization over our match making logic, but also provided us with the ability to scale to whatever traffic we want to drive this multiplayer game demo to handle.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Tips and Tricks&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;While Open Match bundles a version of Redis hosted within the same Kubernetes cluster it is deployed on, take advantage of &lt;a href="https://cloud.google.com/memorystore"&gt;MemoryStore for Redis&lt;/a&gt; for a managed Redis offering on Google Cloud that includes high availability, failover, patching, and monitoring.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;We recommend hosting Open Match on &lt;a href="https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview"&gt;GKE Autopilot&lt;/a&gt;, since you only pay for the Pods you are running, and no longer have to concern yourself with node infrastructure - making Open Match much easier to manage and maintain.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Unreal Engine 5&lt;/h3&gt;&lt;p&gt;Unreal Engine is a great choice for building multiplayer games, as it has a long history of use within the industry, provides fantastic networking tools and also is used by many developers in production for their multiplayer games! So since we were looking to match production workloads with this sample, it seemed like an easy decision.&lt;/p&gt;&lt;p&gt;One of the many benefits of using Unreal Engine 5 is its seamless integration with Agones, which can be achieved both via C++ and Blueprints. With the Agones SDK integrated into Unreal Engine 5, developers can easily manage the game server’s lifecycle, configuration, metadata and player tracking. You can download the source and build the plugin directly from here: &lt;a href="https://github.com/googleforgames/agones/tree/release-1.30.0/sdks/unreal/Agones" target="_blank"&gt;https://github.com/googleforgames/agones/tree/release-1.30.0/sdks/unreal/Agones&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Tips and tricks&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;To query the latency times to each region we are hosting game servers in, our Unreal Engine 5 based client also needs to send some UDP packets to &lt;a href="https://agones.dev/site/docs/guides/ping-service/" target="_blank"&gt;Agones’ Latency Testing Services&lt;/a&gt;.. This can be a little tricky to find the documentation for, but to achieve that, we can use Unreal's &lt;a href="https://docs.unrealengine.com/4.26/en-US/API/Runtime/Icmp/FUDPPing/" target="_blank"&gt;FUDPPing&lt;/a&gt; API,  to send an ICMP Ping packet over UDP, like so: &lt;code&gt;FUDPPing::UDPEcho()&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;The &lt;a href="https://docs.unrealengine.com/5.1/en-US/quick-start-guide-for-using-container-images-in-unreal-engine/" target="_blank"&gt;Unreal Engine container ecosystem&lt;/a&gt; for interacting with the engine in the cloud - particularly building container images of dedicated game servers, is really well implemented and has a very smooth developer experience - strongly recommend taking it for a spin if you haven’t!&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Cloud Build and Cloud Deploy&lt;/h3&gt;&lt;p&gt;Cloud Build and Cloud Deploy are two managed Google Cloud Platform products that can be used together to automate the Continuous Integration and Continuous Deployment of applications that also have strong integration with GKE standard and Autopilot. For the Global Scale Game Demo, we are using them for both creating the artifacts and images for the backend services as well for the Unreal Engine 5 dedicated game servers, using the aforementioned Unreal Engine container system. &lt;/p&gt;&lt;p&gt;Cloud Deploy was also particularly chosen because of its ability to arbitrarily group multiple clusters together as deployment targets. This means we can group our clusters per region, and do regional rollouts of our clusters.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image4_NisSxui.max-1000x1000.png"
        
          alt="image4.png"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;i&gt;Each Regional Target contains Multiple GKE Clusters Behind it&lt;/i&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;This means we can do test deployments in smaller population areas, such as Australia, and assuming all things go to plan, move out to large and large population sets.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Tips and Tricks&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;If the generated YAML that is being applied to your cluster through Cloud Deploy results in more than 262144 bytes, use the &lt;code&gt;--server-side  kubectl&lt;/code&gt; flag, and you may also want to combine it with &lt;code&gt;--force-conflicts&lt;/code&gt; flag to handle any Kubernetes &lt;a href="https://kubernetes.io/docs/reference/using-api/server-side-apply/#conflicts" target="_blank"&gt;server side apply ownership issues&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;If you have a Deployment that may fail several times before coming to a healthy state, take advantage of the &lt;a href="https://cloud.google.com/deploy/docs/deploying-application#change_the_deployment_timeout"&gt;&lt;code&gt;tolerateFailuresUntilDeadline&lt;/code&gt; feature of Cloud Deploy&lt;/a&gt;, which allows the system to tolerate failures up until the specified deadline. This is particularly useful for Istio and/or Anthos Service Mesh, which is covered in later sections.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Artifact Registry&lt;/h3&gt;&lt;p&gt;The artifacts that are built and deployed by Cloud Build and Cloud Deploy are stored in an &lt;a href="https://cloud.google.com/artifact-registry"&gt;Artifact Registry&lt;/a&gt; container repository, which gives us the added benefit of faster spin up times for our backend service and dedicated game server images via &lt;a href="https://cloud.google.com/kubernetes-engine/docs/how-to/image-streaming"&gt;image streaming&lt;/a&gt;, as well as vulnerability scanning and more.&lt;/p&gt;&lt;h3&gt;Anthos Service Mesh&lt;/h3&gt;&lt;p&gt;To build a full global scale game we needed a way to communicate between our set of GKE clusters that are distributed around the world. This included our backend services clusters as well as our Agones clusters. This is particularly important to our Open Match based matchmaker, as it needs to route requests to allocate game servers from Agones powered GKE clusters in specific regions around the world.&lt;/p&gt;&lt;p&gt;Thankfully, Google Cloud comes with &lt;a href="https://cloud.google.com/anthos/service-mesh"&gt;Anthos Service Mesh&lt;/a&gt;, a managed Service Mesh offering based on the open source project &lt;a href="https://istio.io/" target="_blank"&gt;Istio&lt;/a&gt;. This provides us both with &lt;a href="https://istio.io/latest/docs/ops/deployment/deployment-models/#dns-with-multiple-clusters" target="_blank"&gt;DNS based service discovery&lt;/a&gt; within clusters as well as the ability to facilitate multi-cluster communications - which made it a perfect fit for our needs.&lt;/p&gt;&lt;p&gt;The ability to use &lt;a href="https://istio.io/latest/docs/reference/config/networking/virtual-service/" target="_blank"&gt;Istio’s &lt;code&gt;VirtualService&lt;/code&gt; was key&lt;/a&gt;, as it allowed us to have a single DNS entry for all &lt;a href="https://agones.dev/site/docs/advanced/allocator-service/" target="_blank"&gt;Agones Allocation REST&lt;/a&gt; endpoints in our backend service cluster, and provide routing to specific regions using a &lt;a href="https://github.com/googleforgames/global-multiplayer-demo/blob/v0.1.0/platform/open-match/base/agones-allocator-vs.yaml" target="_blank"&gt;custom region HTTP header in the request&lt;/a&gt;, while also managing access control and security through &lt;a href="https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity"&gt;Workload Identity&lt;/a&gt;. This solved a lot of problems for us in one go!&lt;/p&gt;&lt;p&gt;&lt;b&gt;Tips and Tricks&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;You may need to use &lt;a href="https://github.com/googleforgames/global-multiplayer-demo/blob/v0.1.0/platform/cloudbuild.yaml" target="_blank"&gt;Cloud Build&lt;/a&gt; to do some &lt;a href="https://cloud.google.com/anthos/fleet-management/docs"&gt;Anthos Fleet Management&lt;/a&gt; via &lt;code&gt;gcloud&lt;/code&gt;, since some operations are not yet supported via Terraform.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;If the expected multicluster Service DNS entry is not found within the cluster that needs it, make sure to ensure the namespace and matching Service are also created in that cluster as well. It doesn't need the implementation, but it does need &lt;a href="https://github.com/googleforgames/global-multiplayer-demo/blob/v0.1.0/platform/open-match/base/agones-allocator-vs.yaml#L70-L92" target="_blank"&gt;both the matching namespace and Service&lt;/a&gt; to create the DNS entry.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Cloud Spanner&lt;/h3&gt;&lt;p&gt;The classic problem with game launches is that you are never sure how much traffic you are going to get. At the same time launches are critically important because if they go badly, it’s extremely hard to recover your player base from the peak you would receive at launch.&lt;/p&gt;&lt;p&gt;To solve those very problems, we chose Spanner for our data storage platform. Since Spanner has both high availability, with a &lt;a href="https://cloud.google.com/spanner/sla"&gt;99.999% uptime SLA&lt;/a&gt; for Multi-Region instances, horizontally scalability to match any demand a launch can throw at it, and also strong consistency globally, so you always know that players are seeing accurate in-game information.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Tips and Tricks&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;It is important to place the GKE clusters as geographically close to Spanner as defined by the &lt;a href="https://cloud.google.com/spanner/docs/instance-configurations#three_continents"&gt;instance configuration&lt;/a&gt; to reduce request latencies for writes and consistent reads. In this example, we put Spanner in &lt;i&gt;us-central1&lt;/i&gt; because the backend services are also in &lt;i&gt;us-central1&lt;/i&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://cloud.google.com/spanner/docs/use-liquibase"&gt;Liquibase&lt;/a&gt; is a great tool for managing your Spanner schema changes and updates, through a &lt;a href="https://github.com/googleforgames/global-multiplayer-demo/tree/v0.1.0/infrastructure/schema" target="_blank"&gt;yaml configuration file&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Configuring &lt;a href="https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#authenticating_to"&gt;Workload Identity&lt;/a&gt; to enable your application connectivity to Spanner has multiple steps, and can be tricky to get right. To solve this &lt;a href="https://github.com/googleforgames/global-multiplayer-demo/blob/v0.1.0/infrastructure/services-gke.tf" target="_blank"&gt;we generated the Cloud Deploy yaml files from the Terraform created IAM configuration&lt;/a&gt; to ensure both our infrastructure setup and our continuous deployment configuration aligned without manual intervention.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Conclusion&lt;/h2&gt;&lt;p&gt;Choosing a set of products to build a multiplayer game out of the myriad of open source tools and products can be overwhelming and time consuming. The aim of the Global Scale Multiplayer Demo is to provide some guidelines, architecture patterns and building blocks that you can use to build your next global scale, production multiplayer game!&lt;/p&gt;&lt;p&gt;We’re excited for the future of the Global Scale Multiplayer Demo. We have big plans for the future to continue to grow and extend this project to show you all the ways you can use Google Cloud to host and scale your game.&lt;/p&gt;&lt;p&gt;If you want to get involved or just have a look at the project:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/googleforgames/global-multiplayer-demo" target="_blank"&gt;Github Repository&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/googleforgames/global-multiplayer-demo/blob/main/README.md" target="_blank"&gt;Install it in your own Google Cloud Project&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/googleforgames/global-multiplayer-demo/issues" target="_blank"&gt;File an issue for enhancements you would like to see&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description><pubDate>Fri, 14 Jul 2023 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/gaming/make-an-online-game-based-on-this-cloud-gaming-demo/</guid><category>Application Development</category><category>Developers &amp; Practitioners</category><category>Gaming</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Accelerate your Multiplayer Game Development with the Global Scale Multiplayer Demo</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/gaming/make-an-online-game-based-on-this-cloud-gaming-demo/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Nikolai Danylchyk</name><title>Customer Engineer</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Mark Mandel</name><title>Developer Advocate</title><department></department><company></company></author></item><item><title>How Glance is collaborating with Google to build a next-level recommendation engine for its gaming platform, Nostra</title><link>https://cloud.google.com/blog/products/ai-machine-learning/glance-gaming-recommendation-at-scale-with-google-cloud-ai/</link><description>&lt;div class="block-paragraph"&gt;&lt;p&gt;Mobile gaming has &lt;a href="https://www.statista.com/topics/1906/mobile-gaming/" target="_blank"&gt;exploded in popularity&lt;/a&gt; in recent years, with billions of people around the world playing games on their smartphones and tablets. &lt;a href="https://glance.com/" target="_blank"&gt;Glance&lt;/a&gt;, a subsidiary of InMobi, is one of the world’s largest lock screen platforms with over 220 million active users. Redefining the way people use their mobile phone lock screen, over 400 million smartphones now come enabled with Glance’s next-generation internet experience. Glance aims to increase user adoption of &lt;a href="https://nostra.gg/" target="_blank"&gt;Nostra&lt;/a&gt;, their mobile gaming platform, by providing personalized game recommendations to users. Nostra currently has a few hundred games, with over 75 million monthly active users and a rapidly-growing user base.&lt;/p&gt;&lt;p&gt;Glance and Nostra had an urgent need to recommend and personalize the games displayed on the user's lock screen, in order to improve the overall user experience. They turned to Google Cloud to build recommendation systems to personalize their gaming content according to the user's preferences.&lt;/p&gt;&lt;p&gt;Let’s take a deep dive into the recommendation system and the various Google AI technologies that were implemented to build the solution. &lt;br/&gt;&lt;/p&gt;&lt;h3&gt;The historical dataset&lt;/h3&gt;&lt;p&gt;Historical interactions on Glance that users had voluntarily provided, compliant with privacy guidelines, produced the following datasets:&lt;br/&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;User metadata:  Information on the user, such as the unique user ID, the handset details, and the manufacturer details.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Game metadata: Information regarding the games, such as their name, version, description, and unique game ID. The dataset also contained secondary information, such as which regions the game was released in and the game’s category and subcategory.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;User-Game interaction data: Interaction data, i.e. data capturing the unique user ID, the unique game ID, the interaction start time, the duration of interaction, and the game version.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These were the primary data sources used further for analysis, experimentation, and ultimately modeling. These datasets were partitioned by time, and in the spirit of experimentation, we considered a data chunk of 30 days for the solution approach.&lt;/p&gt;&lt;h3&gt;Identifying data trends&lt;/h3&gt;&lt;p&gt;We observed the plots of session duration vs. the number of events. From those, we decided to remove user interaction events that were less than two seconds long, as these events were likely unintentional or accidental.&lt;/p&gt;&lt;p&gt;Another interesting trend we observed was that the majority of the sessions occurred at night, followed by events that occurred after midnight.&lt;/p&gt;&lt;p&gt;We also observed that some games had a relatively higher median session interaction duration compared to other games, which was expected. &lt;/p&gt;&lt;h3&gt;Dealing with the outliers&lt;/h3&gt;&lt;p&gt;For the given interaction dataset, the observed value of the session duration varied across the board. Consequently, we observed outliers on both ends of the session duration spectrum.&lt;/p&gt;&lt;p&gt;As mentioned earlier, the minimum possible session duration was capped at two seconds, and any lower values were discarded. Through mathematical analysis, we also affixed a certain maximum session duration to be the representative value for a single session interaction; any value higher than this was considered spurious.&lt;/p&gt;&lt;h3&gt;Splitting the data&lt;/h3&gt;&lt;p&gt;We used 30 days' worth of data, but to fairly and accurately access the recommendation system, we needed to fix the data split methodology.&lt;/p&gt;&lt;p&gt;We considered several approaches, including the following:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Random split in 80/10/10 fashion. This might lead the model to preemptively learn trends from the future and ultimately cause data leakage.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Split stratified based on unique games/users. This would lead to the cold-start problem with a collaborative filtering approach.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Split based on a “last one out” strategy, which would imply we consider only (N-1) games with which the user interacted, keeping the last game for the test set. This would cause data leakage across the temporal dimension.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Data split stratified over N weeks, as we did explore some weekly trends. Hence, the first N weeks can be considered as a training set, and subsequent sets can be for testing and validation. This split type is also known as global-temporal-split.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Since the number of games was less than the number of users, we considered all the games across sets, i.e., all N games should be considered that have at least *one* user interaction per each set train/test/validation (or at least three user interactions in total).&lt;/p&gt;&lt;p&gt;We chose the fourth approach, global temporal split, where we first ordered the data chronologically, then defined the split interval and created the train, test, and evaluation splits. This way, we could avoid temporal data leakage and ensure that the trends were being captured properly across all users.&lt;/p&gt;&lt;h3&gt;Preprocessing the data&lt;/h3&gt;&lt;p&gt;The next logical step was to scale the values. However, due to the non-normal nature of the distribution, we could not perform any normalization, so we thus went with the approach of median centering over the aggregated duration.&lt;/p&gt;&lt;p&gt;The aggregated duration was calculated by summing the total interaction time between a unique user-game pair across all sessions, per split set, so each set had train, test, and evaluation.&lt;/p&gt;&lt;p&gt;In this approach, we selected the median sum of the duration of the training distribution and used it within a formula to scale the values down. Scaling the values ensured that the model we trained would be able to converge swiftly; it also ensured that all values that were lesser than the median were transformed as negative numbers and that all values above the median were transformed as positive numbers.&lt;/p&gt;&lt;h3&gt;Experimentation and modeling approaches&lt;/h3&gt;&lt;p&gt;We experimented deep and wide to find the best-fit solution for this use case. The experiments that we conducted included methods such as matrix factorization, two tower modeling through &lt;a href="https://cloud.google.com/vertex-ai"&gt;Vertex AI&lt;/a&gt; and TFRS implementation, and reinforcement learning.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Matrix factorization through BQML&lt;/b&gt; - Matrix factorization is a class of collaborative filtering algorithms used in recommender systems. Matrix factorization algorithms work by decomposing the user-item interaction matrix into the product of two lower-dimensionality rectangular matrices. &lt;a href="https://cloud.google.com/bigquery-ml/docs"&gt;BQML&lt;/a&gt; offers matrix factorization out of the box. This model only requires us to write SQL scripts to create a model and start training the same. BQML implements the WALS &lt;a href="http://yifanhu.net/PUB/cf.pdf?utm_source=cloud.google.com&amp;amp;utm_medium=referral"&gt;algorithm&lt;/a&gt; to decompose the user-item interaction matrix.&lt;br/&gt;&lt;br/&gt;This was the baseline model that was created and trained, and the feature we considered was the aggregate session duration for each user-game interaction.&lt;br/&gt;&lt;br/&gt;This model performed quite well, and after hyper-parameter tuning, it was the model with the best scores for test and evaluation sets. The following diagram describes the flow of data in the BigQuery pipeline:&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--medium
      
      
        h-c-grid__col
        
        h-c-grid__col--4 h-c-grid__col--offset-4
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_Glance_Blog_BQML.drawio.max-1000x1000.jpg"
        
          alt="1 Glance Blog BQML.drawio.jpg"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Two Tower Embedding Algorithm with Vertex AI matching engine&lt;/b&gt; - This is an embedding-based approach to build the recommendation system. The two-tower approach is a ranking model that uses a query tower and a candidate tower to generate embeddings of the query and its related candidate passed on to their respective towers. The generated embeddings are then represented in a vector embedding space.&lt;br/&gt;&lt;br/&gt;Embedding-based models use the user and the item context to create a well-informed embedding in a shared vector space. In our experimentation approach, we considered numerous combinations of user features and game features to construct the embeddings. The best results were observed when the game embeddings included the category and the user embeddings included the temporal features, such as the day of the week and the time of the day.&lt;br/&gt;&lt;br/&gt;After these embeddings were created, we created a Vertex AI Matching Engine Index. Vertex AI Matching Engine provides the industry's leading high-scale low latency vector database (a.k.a, vector similarity-matching or approximate nearest neighbor service). More specifically, given the query item, Matching Engine finds the most semantically similar items from a large corpus of candidate items.&lt;br/&gt;&lt;br/&gt;Utilizing this, we created indexes for Bruteforce search and Approximate Nearest Neighbour Search. Then, we performed a series of experimentations with various distance metrics, including dot product, cosine similarity, etc. The results from these experimentations concluded that we may require additional modeling and additional contextual data to make the embedding model perform better.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/2_ScaNN.gif"
        
          alt="2 ScaNN.gif"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;br/&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Custom modeling with TFRS&lt;/b&gt; - &lt;a href="https://www.tensorflow.org/recommenders" target="_blank"&gt;TensorFlow Recommenders&lt;/a&gt; (TFRS) is a library for building recommender system models. It is built on top of TensorFlow and streamlines the process of building, training, and deploying recommender systems.&lt;br/&gt;&lt;br/&gt;The TFRS retrieval model built for this approach was composed of two sub-models viz, a query model (UserModel) computing the query representation using query features, and a candidate model (GameModel) computing the candidate representation using the candidate features. The outputs of the two models were used to give a query-candidate affinity score, with higher scores expressing a better match between the candidate and the query. Similar to the VertexAI Two Tower approach, we conducted multiple experiments defining various user features and game features to create the embeddings, and created Indexes on Vertex AI Matching Engine.&lt;br/&gt;&lt;br/&gt;Best results and generalization was observed when only the user features were considered and the no game feature was considered, so only the unique game ID was used as a reference to embed the unique games in the vector space. The index used for the analysis was a Brute Force one to recommend top K games. We used Brute Force as the search space was limited.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/3_45H7kRW.max-1000x1000.jpg"
        
          alt="3.jpg"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Reinforcement learning through contextual bandits&lt;/b&gt; - We implemented a multi-armed contextual bandit algorithm implemented through tf-agents. Multi-Armed Bandit (MAB) is a machine learning framework in which an agent has to select actions (arms) to maximize its cumulative reward in the long term. In each round, the agent receives some information about the current state (context), and then it chooses an action based on this information and the experience gathered in previous rounds. At the end of each round, the agent receives the reward associated with the chosen action.&lt;br/&gt;&lt;br/&gt;In this approach, we utilize the Multi-Armed Contextual Bandit (MACB) modeling, with per-arm features, i.e. the learning agent has the option to choose games from one of the "arms" having their respective features. This helps in generalization as the user and the game context are embedded through a neural network.&lt;br/&gt;&lt;br/&gt;In the methodology, the context was derived from the BQML matrix factorization model. We used an epsilon Greedy agent with a prespecified exploration factor, which ensured that the model is capable of learning trends as well as exploring beyond.&lt;br/&gt;&lt;br/&gt;This model gave surprisingly good results, considering that it was only trained on a subset of 1 million unique users. The model gained exceptional generalizability from the limited training samples and was able to understand and map out the context space for a total of 19 million unique users.&lt;br/&gt;&lt;br/&gt;This model was one of the top performers throughout this engagement, wherein it aimed at optimizing model metrics like the Sub-Optimal Arms Metrics and the Regret Metric. For experimentation of MACB we followed the following approach:&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/4_v1_Gsv4e5h.max-1000x1000.jpg"
        
          alt="4.jpg"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3&gt;Experimentation metrics&lt;/h3&gt;&lt;p&gt;In all of these experimentations we calculated four metrics:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Mean Average Precision at K (MAP)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Normalized Discounted Cumulative Gain at K (NDCG)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Average Rank&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Mean Squared Error&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The "K" here represents the number of results to be recommended. We experimented with values of K being 5, 10 and All.&lt;/p&gt;&lt;p&gt;These metrics were used to rank models across different modeling methodologies. However, out of these four metrics, we mainly focused on comparing the MAP and NDCG values, as they do a better job of representing the problem statement at hand.&lt;/p&gt;&lt;h3&gt;Results and observations&lt;/h3&gt;&lt;p&gt;With our best model, we observed a significant performance improvement compared to the baseline model used previously. The BQML Matrix Factorization model was the best performer, followed by the Contextual Bandits model, VertexAI Two Tower, and finally the TFRS approach. The embedding-based models suffered because of the lack of certain user demographic features in the given dataset. We also observed that as the K value increased, the model performance also increased, which is expected behavior.&lt;/p&gt;&lt;p&gt;Explaining the productionization and scaling approach of these models, the Nostra team initially deployed new models on a small percentage of traffic, comparing engagement metrics with control traffic in an A/B testing fashion. This deployment was tuned to ensure low latency output and to gain a deeper understanding of the key drivers behind user engagement. Once the model showed good performance, Nostra was positioned for further cost optimisations if required, and to scale the model to a larger percentage of traffic.&lt;/p&gt;&lt;p&gt;After this engagement, the Nostra team decided to implement the BQML Matrix Factorization model in production, after which they observed a preliminary increase in the time spent by the users interacting with the games on their platform.&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;Fast track end-to-end deployment with Google Cloud AI Services (AIS)&lt;/h3&gt;&lt;p&gt;The partnership between Google Cloud and Glance is just one of the latest examples of how we’re providing AI-powered solutions to solve complex problems to help organizations drive the desired outcomes. To learn more about Google Cloud’s AI services, visit &lt;a href="https://cloud.google.com/products/ai"&gt;our AI &amp;amp; ML Products page&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;b&gt;Paul Duff, Consultant - Data Sciences with Nostra&lt;/b&gt;&lt;/i&gt; emphasized how happy he is with Cloud AIS and out-of-the-box products like BQML that helped get to productionable models in just a few weeks, stating, &lt;i&gt;“The Google team was able to exceed our agreed objective to develop an offline recommendation system for Nostra, completing all milestones on or before time and delivering four fully documented working models. We were able to deploy the first of these in production (beyond the agreed project scope) and saw an uplift in our key metrics before the project end date. The organization of the team was exemplary with excellent communication throughout.”&lt;/i&gt;&lt;br/&gt;&lt;/p&gt;&lt;hr/&gt;&lt;p&gt;&lt;i&gt;&lt;sup&gt;We’d like to give special thanks to Naveen Poosarla and Charu Shelar for their support and guidance throughout the project. We are grateful to the Nostra team (Gaurav Konar, Rohit Anand and Rohith Kalyan) and our partner team from Wipro and Capgemini (Tulluru Durga Pravallika and Viral Gorecha) who partnered with us in delivering this successful project. And a special shout out to our super awesome leader Nitin Aggarwal.&lt;/sup&gt;&lt;/i&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;sup&gt;Disclaimer: &lt;/sup&gt;&lt;/i&gt;&lt;i&gt;&lt;sup&gt;The information presented in this blog is intended to provide insights into a specific subset of data related to product usage metrics. It is important to note that the findings presented here may not necessarily reflect the overall product usage metrics.&lt;/sup&gt;&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 15 May 2023 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/ai-machine-learning/glance-gaming-recommendation-at-scale-with-google-cloud-ai/</guid><category>Gaming</category><category>AI &amp; Machine Learning</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>How Glance is collaborating with Google to build a next-level recommendation engine for its gaming platform, Nostra</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/ai-machine-learning/glance-gaming-recommendation-at-scale-with-google-cloud-ai/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Paul Duff</name><title>Consultant, Data Sciences, Glance, Nostra, InMobi</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Gopala Dhar</name><title>AI Engineering Lead, Google Cloud Consulting</title><department></department><company></company></author></item><item><title>Building multiplayer Google Doodle games with GKE, Open Match and Agones</title><link>https://cloud.google.com/blog/products/containers-kubernetes/making-online-containerized-games-with-managed-services/</link><description>&lt;div class="block-paragraph"&gt;&lt;h3&gt;Introduction&lt;/h3&gt;&lt;p&gt;As anyone who visits the &lt;a href="http://google.com" target="_blank"&gt;Google Search&lt;/a&gt; homepage may realise, there is often a surprising, creative and delightful change in our logo that sits above the Search bar. They’re called “Google Doodles.” &lt;/p&gt;&lt;p&gt;In recent years, we’ve seen them not only be interactive, but also &lt;i&gt;multiplayer!&lt;/i&gt; Letting anyone who may be browsing the Google homepage play a game with one or more other people also browsing the same page. But the question begets itself -- what technologies are they using behind the scenes to power these games that are serving this global audience of Google users? And are those technologies available to the reader to build similar experiences?&lt;/p&gt;&lt;p&gt;We’re joined by &lt;a href="https://www.linkedin.com/in/jacobhowcroft/" target="_blank"&gt;Jacob Howcroft&lt;/a&gt;, who has been a software engineer on the Google Doodle team for the past seven years, and has been leading efforts into the journey the Google Doodle team has been going on into multiplayer Google Doodle experiences.&lt;/p&gt;&lt;h3&gt;What is a Google Doodle?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: A Google “Doodle” is a spontaneous change to the Google logo that celebrates diverse holidays, people, places, and things that have impacted and shaped local and global culture. The original Doodles were static illustrations, but now we also create games and other interactive experiences.&lt;/p&gt;&lt;h3&gt;What is a multiplayer Google Doodle?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: It’s an interactive experience that connects players together, so that they can play with their friends or other random users online. Anyone who visits google.com in a browser or mobile device sees the Google logo transformed with a “play” button, and clicking it takes them to a multiplayer game.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/1_Google_Doodle_games.gif"
        
          alt="1 Google Doodle games.gif"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;i&gt;Google Multiplayer Doodle for Halloween 2022&lt;/i&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3&gt;What multiplayer Google Doodles did you recently launch? How did they go?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: Our first multiplayer Doodle was &lt;a href="https://www.google.com/doodles/halloween-2018" target="_blank"&gt;The Great Ghoul Duel&lt;/a&gt;, for Halloween 2018. Since it was one of our most popular Doodles ever, we launched &lt;a href="https://www.google.com/doodles/halloween-2022" target="_blank"&gt;The Great Ghoul Duel 2&lt;/a&gt; on Halloween in 2022. We also launched &lt;a href="https://www.google.com/doodles/celebrating-petanque" target="_blank"&gt;Celebrating Pétanque&lt;/a&gt;, a multiplayer game celebrating the French sport, in July 2022.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_Google_Doodle_games.max-1000x1000.jpg"
        
          alt="2 Google Doodle games.jpg"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;i&gt;The Great Ghoul Duel 2 (2022)&lt;/i&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Celebrating_Petanque.max-1000x1000.jpg"
        
          alt="Celebrating Petanque.jpg"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;i&gt;Celebrating Pétanque&lt;/i&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;Millions of people played the Petanque and Halloween Doodles, and we also saw that a lot of them played multiple rounds, especially for Halloween. "The Great Ghoul Duel" has a fan community on Twitter and Discord that has remained active since 2018, and of course they were really happy to see the sequel.&lt;/p&gt;&lt;h3&gt;What are the challenges of launching a multiplayer game for the Google Homepage?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: The biggest challenge is getting ready for scale. Every day, there are billions of searches on Google, and we’re making a game available to those users, so we have to handle a huge number of players right at launch. Additionally, these games launch all over the world in a matter of hours, so we have to scale up really fast. Since the Doodle is a surprise, we don’t have an opportunity to test in a beta release. This means we need to perform very rigorous QA, load testing, and internal playtesting.&lt;/p&gt;&lt;h3&gt;How many players do you get on a multiplayer Google Doodle?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: When a Doodle is live on our homepage, our users play many millions of times. After the Doodle’s run on the homepage, we regularly see thousands of games played each day on our &lt;a href="http://google.com/doodles" target="_blank"&gt;google.com/doodles&lt;/a&gt; archive.&lt;/p&gt;&lt;h3&gt;How does a browser based game differ from other types of multiplayer games? &lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: The main difference for browser-based games, written in JavaScript or &lt;a href="https://www.typescriptlang.org/" target="_blank"&gt;TypeScript&lt;/a&gt;, is that they use the WebSocket protocol, whereas mobile, console, or PC games would typically use UDP. The challenge this creates is the requirement for each GameServer to have a certificate for HTTPS / Web Socket Secure (WSS). Since the game runs on an https page, this means that all the WebSocket connections need to be secure as well. Doing this also requires DNS addresses for the game server, as opposed to connecting directly to IP and port, as they would for a more traditional UDP multiplayer game connection.&lt;/p&gt;&lt;h3&gt;Can you tell us how you built these multiplayer Doodle games?&lt;/h3&gt;&lt;p&gt;We used a bunch of Google Cloud products and took advantage of freely available game infrastructure and distributed systems open source projects. For the game itself, we use many TypeScript tools and libraries that we’ve created over the years for Doodles, as well as some open source engines like &lt;a href="https://pixijs.com/" target="_blank"&gt;PIXI&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;What Google Cloud Products did you use?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: &lt;a href="https://cloud.google.com/kubernetes-engine"&gt;Google Kubernetes Engine&lt;/a&gt; (GKE) runs most of everything.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;We utilise &lt;a href="https://cloud.google.com/kubernetes-engine/docs/concepts/ingress"&gt;Ingress for External HTTP(S) Load Balancing&lt;/a&gt; to handle global load balancing for the matchmaker and for the game server clusters.&lt;/p&gt;&lt;p&gt;&lt;a href="https://cloud.google.com/memorystore"&gt;Redis Memorystore&lt;/a&gt; is used to configure routing for game servers, and to store matchmaking tickets for our matchmaker.&lt;/p&gt;&lt;p&gt;&lt;a href="https://cloud.google.com/load-balancing/docs/ssl-certificates/google-managed-certs"&gt;Google Managed Certificates&lt;/a&gt; allows for the automatic creation and rotation of SSL certificates for the matchmakers and game servers. This was really helpful, since it turned certificate handling into zero work.&lt;/p&gt;&lt;p&gt;&lt;a href="https://cloud.google.com/logging"&gt;Cloud Logging&lt;/a&gt;, &lt;a href="https://cloud.google.com/monitoring"&gt;Cloud Monitoring&lt;/a&gt; and &lt;a href="https://cloud.google.com/logging/docs/logs-based-metrics"&gt;Logs-based Metrics allowed&lt;/a&gt; us to have a set of dashboards to monitor production, looking at metrics like game server status, number of matchmaking tickets, etc.&lt;/p&gt;&lt;p&gt;&lt;a href="https://cloud.google.com/run/"&gt;Cloud Run&lt;/a&gt; and &lt;a href="https://cloud.google.com/endpoints"&gt;Cloud Endpoints&lt;/a&gt; power the multicluster game server selection system, which chooses appropriate game server instances for our players from a set of GKE clusters and marks those game servers as “Allocated” - basically that they have players on them, and therefore shouldn’t be interrupted. We can go deeper into this later, but the multicluster allocator system helped a lot for scaling.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;h3&gt;Why did you choose to use open source projects for the backend?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: We are mostly a frontend team - we build content for the web, and the frontend servers. When it comes to deeper backend tech like Google Cloud and Kubernetes, it isn’t our expertise. But the open source systems available bridge this skills gap, and let us work outside our comfort zone to create these more complex experiences.&lt;/p&gt;&lt;h3&gt;Which open source projects did you take advantage of?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: Our first multiplayer Doodle back in 2018 took advantage of &lt;a href="https://open-match.dev/" target="_blank"&gt;Open Match&lt;/a&gt; to matchmake our players together to play a game, and it worked fantastically, so we have continued to use that in our newer multiplayer game stack.&lt;/p&gt;&lt;p&gt;&lt;a href="https://agones.dev/" target="_blank"&gt;Agones&lt;/a&gt; is installed on our GKE clusters to host and scale our game servers and make sure they run uninterrupted while players are playing the game. Agones provides us with the &lt;a href="https://agones.dev/site/docs/getting-started/create-gameserver/" target="_blank"&gt;&lt;i&gt;GameServer&lt;/i&gt;&lt;/a&gt; and &lt;a href="https://agones.dev/site/docs/getting-started/create-fleet/" target="_blank"&gt;&lt;i&gt;Fleet&lt;/i&gt;&lt;/a&gt; custom resource definitions we can use to declare the types and number of game server processes we are running in our GKE clusters. It also gives us the ability that we just talked about to select and allocate game servers, and mark them ready for player connection. We run multiple GKE and Agones clusters around the world to ensure that we have game servers near all our potential players (which is all of the users of Google.com!).&lt;/p&gt;&lt;p&gt;Also, not only were these terrific solutions, but since Google Cloud founded both Open Match and Agones and continues to maintain these projects with help from their respective communities, we knew we were in good hands and had people we could ask for help (and we did!).&lt;/p&gt;&lt;p&gt;We also use &lt;a href="https://traefik.io/" target="_blank"&gt;Traefik&lt;/a&gt; proxy to coordinate the websocket connections for matchmade players to specific Agones GameServer Pods hosted on our GKE clusters, so that players can play their games together.&lt;/p&gt;&lt;p&gt;For development and operational tools, we use &lt;a href="https://www.terraform.io/" target="_blank"&gt;Terraform&lt;/a&gt; for provisioning our infrastructure, and &lt;a href="https://helm.sh/" target="_blank"&gt;Helm&lt;/a&gt; and &lt;a href="https://github.com/helmfile/helmfile" target="_blank"&gt;Helmfile&lt;/a&gt; for coordinating deployments of the open source tooling and our custom components into all of our GKE clusters.&lt;/p&gt;&lt;h3&gt;How much custom code did you end up writing?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: Not as much as you would think!&lt;/p&gt;&lt;p&gt;Open Match requires you to write several custom components for &lt;a href="https://openmatch.dev/site/docs/guides/matchmaker/matchfunction/" target="_blank"&gt;match functions&lt;/a&gt; and integration with external systems like Agones, but thanks to the interoperability of &lt;a href="https://grpc.io/" target="_blank"&gt;gRPC&lt;/a&gt;, we could write all of them in Node.js even though Open Match is written in Go. We wrote our websocket based game servers in Node.js as well. This had the advantage of allowing us to share code between the client and server and speed up our development time.&lt;/p&gt;&lt;p&gt;We also wrote a custom Kubernetes controller to configure Traefik Routes. Traefik can be set up to detect configurations from Redis by writing to certain key formats. Our controller watched for Agones GameServer events, and wrote the name, pod IP, and port to Memorystore when one occurred. Traefik dynamically updates its routing so that we can access the GameServer using &lt;code&gt;wss://&amp;lt;project subdomain&amp;gt;.cloud.doodles.goog/&amp;lt;game server name&amp;gt;&lt;/code&gt;.&lt;/p&gt;&lt;h3&gt;Can you step us through your architecture for matchmaking and assigning a game server to a group of players?&lt;/h3&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/4_Google_Doodle_games.max-1000x1000.jpg"
        
          alt="4 Google Doodle games.jpg"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;i&gt;High level architecture of a multiplayer Google Doodle&lt;/i&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: First, players connect to a global &lt;a href="https://cloud.google.com/kubernetes-engine/docs/concepts/multi-cluster-ingress"&gt;Multi Cluster Ingress&lt;/a&gt; HTTP(S) load balancer, which routes players to their closest match maker frontend hosted in globally distributed GKE clusters. We usually have a handful of these clusters, with one or two per continent.&lt;/p&gt;&lt;p&gt;Through the matchmaker frontend, a &lt;a href="https://open-match.dev/site/docs/guides/matchmaker/frontend/" target="_blank"&gt;Ticket&lt;/a&gt; is created in Open Match, which is matched with other players.&lt;/p&gt;&lt;p&gt;When the Agones Fleet starts new GameServers, our custom Agones-Traefik controller writes their Pod IPs to a Memorystore Redis instance. Traefik Proxy reads from this instance to set up routes in the cluster as we mentioned before - this way, players will connect to GameServer “foo” by url, i.e. “wss://cluster.game.cloud.doodles.goog/foo”.&lt;/p&gt;&lt;p&gt;The &lt;a href="https://openmatch.dev/site/docs/guides/matchmaker/director/" target="_blank"&gt;Open  Match Director&lt;/a&gt; component, which we wrote in NodeJS, receives a Match and uses the Cloud Run-powered &lt;a href="https://github.com/googleforgames/agones/blob/main/examples/allocation-endpoint/README.md" target="_blank"&gt;Agones multicluster Allocation service&lt;/a&gt; to allocate a GameServer. Each Matchmaker cluster allocates from one or more GameServer clusters. &lt;/p&gt;&lt;p&gt;When doing our load tests we noticed that the optimal GameServer &lt;code&gt;Fleet&lt;/code&gt; (a grouping of &lt;code&gt;GameServers&lt;/code&gt;) size is mostly limited by the Kubernetes control plane. So the allocation rate, amount of game server activity, plus your control plane size determines the size you can handle. Our game sessions are usually pretty short, and all that turnover creates a lot of load on the Kubernetes API.&lt;/p&gt;&lt;p&gt;We originally had an instance of our Open Match matchmaker and Agones GameServer Fleet in each cluster. However, we found that there was an optimal size for our GameServer clusters, around 6,000 Agones GameServers, so a one-to-many architecture for Matchmaker and GameServer clusters allowed us to scale higher, since more clusters equaled more overall throughput.&lt;/p&gt;&lt;p&gt;Once a GameServer allocation succeeds, the matchmaker replies to the players with the url of the GameServer. Players connect to it through a separate Ingress, and Traefik Proxy routes the request to the appropriate GameServer.&lt;/p&gt;&lt;p&gt;At the end of the game session, we don’t shutdown the game server, instead, &lt;a href="https://agones.dev/site/docs/integration-patterns/reusing-gameservers/" target="_blank"&gt;we reset the game server and move it back to  the “Ready” state through the Agones SDK, so it can be allocated for a new game&lt;/a&gt;. This saves us some load on the Kubernetes API and the Traefik proxy, by reducing the GameServer turnover.&lt;/p&gt;&lt;h3&gt;We usually advocate for a single instance of Open Match to support a global player base - why have an instance in each region?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: While we know that Open Match can handle a global player base, we used multiple Open Match instances in different regions, so that we could rely on the Load Balancing to route traffic to the nearest Matchmaker. Since we had such a massive pool of players, we didn’t need to worry about sharding our player base - there were plenty for each Matchmaker.&lt;/p&gt;&lt;p&gt;Since we didn’t have the option of beta testing before launch, having more instances of Open Match around the world reduced launch day risks and allowed us to horizontally scale Open Match instances and the Agones clusters behind them if we had to.&lt;/p&gt;&lt;h3&gt;Can you go into more detail on the websocket based communications? That sounds quite tricky.&lt;/h3&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/5_Google_Doodle_games.max-1000x1000.jpg"
        
          alt="5 Google Doodle games.jpg"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;i&gt;Websocket Connections to Agones GameServer Pods &lt;/i&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: WebSocket games require Web Socket Secure (WSS), which means that every GameServer needs to be addressed by URL and have an SSL certificate. Managing this for the dynamic Fleets of thousands of GameServers required a novel solution.&lt;/p&gt;&lt;p&gt;For the Halloween 2018 Doodle, we had statically generated thousands of DNS entries routing to GameServers by subdomain. However, this approach stopped us from taking advantage of all the dynamic, scaleable features of Agones and GKE.&lt;/p&gt;&lt;p&gt;So for our new setup, we found &lt;a href="https://github.com/traefik/traefik" target="_blank"&gt;Traefik Proxy&lt;/a&gt;. We chose this one because routes can be configured dynamically with various providers, one of them being Redis. So, we wrote a &lt;a href="https://kubernetes.io/docs/concepts/architecture/controller/" target="_blank"&gt;Kubernetes controller&lt;/a&gt; that watches GameServers, and writes the configurations to Redis. We were concerned about how a proxy would affect players’ ping, but with some load testing, we found that it didn’t have a noticeable impact. This setup allowed us to dynamically scale the Fleet and have the new GameServers available for connection as soon as they could spin up without having to manipulate DNS entries.&lt;/p&gt;&lt;p&gt;We also wrote a WebSocket library, using &lt;a href="https://google.github.io/closure-library/api/goog.net.WebSocket.html" target="_blank"&gt;Google Closure WebSockets&lt;/a&gt; on the client and &lt;a href="https://www.npmjs.com/package/ws" target="_blank"&gt;ws&lt;/a&gt; on the servers. For each game, we define an API using &lt;a href="https://protobuf.dev/" target="_blank"&gt;protocol buffers&lt;/a&gt; - a client-to-server message and a server-to-client message. Usually, this message contains a &lt;a href="https://protobuf.dev/programming-guides/proto3/#oneof" target="_blank"&gt;oneof field&lt;/a&gt; for various sub message types for different actions within the game. The library uses TypeScript generics to make sure that the game code sends and receives messages using this API.&lt;/p&gt;&lt;h3&gt;Ensuring a game is fun is one the most important aspects of any game - how did you test for that?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: We test for fun in a few ways. The first one is a weekly team playtest; the whole Doodle team gathers together to play the latest demos and share feedback and ideas. The second way is internal user tests, or “Cafe tests”. We find some random Googlers, or set up a stand in a micro-kitchen, and get their feedback in real time. Googlers are usually pretty honest, so we get some good results this way. Finally, we will set up playtests with external users from a variety of backgrounds and tech familiarities, which provides very valuable and diverse perspectives that inform the final product.&lt;/p&gt;&lt;h3&gt;Given you are on the front page of Google, how do you load test for that kind of traffic?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: The first thing, from an early stage, is to make a headless game client. This means that the game can be played by a script, without interacting with any UI. Then, we wrote a Node-based load testing client that simulated a user.&lt;/p&gt;&lt;p&gt;Using &lt;a href="https://kubernetes.io/docs/concepts/workloads/controllers/job/" target="_blank"&gt;Kubernetes Jobs&lt;/a&gt;, we would deploy thousands of these fake users to GKE, and point them at a cluster. We start with a small number of users, and if the cluster handles them properly, then we step it up, and repeat this process until something breaks down.&lt;/p&gt;&lt;p&gt;Then, we would debug and fix the issue, and start over. Using this process, we were able to find the optimal Fleet size for our Agones clusters, which was about 6,000 GameServers. Note that this number depends on your Kubernetes provider, the size of your matches, the duration of your games, and other factors, so it isn’t a one-size-fits-all.&lt;/p&gt;&lt;h3&gt;How did you estimate the amount of traffic to load test for?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: We looked at metrics from our past games, and used that to estimate the potential traffic for this one. However, it can vary a ton depending on a lot of different factors, so we have to aim as high as we can. Even still, we ended up deploying additional clusters during launch because the peak traffic was so high.&lt;/p&gt;&lt;h3&gt;When you were ready to deploy to production, how did you do this?&lt;/h3&gt;&lt;p&gt;Once we had determined the approximate scale via load testing and analysing past Doodle performance, we would define the entire &lt;code&gt;Fleet&lt;/code&gt; in &lt;a href="https://www.terraform.io/" target="_blank"&gt;Terraform&lt;/a&gt; and &lt;a href="https://github.com/helmfile/helmfile" target="_blank"&gt;Helmfile&lt;/a&gt;, and deploy it. The Doodle begins rolling out based on local time around the world, so we plan for traffic to increase in large steps over about 24 hours.&lt;/p&gt;&lt;h3&gt;Did you autoscale any of your resources, or just keep a static infrastructure?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: We enabled node autoscaling on our GKE node pools, except for some cases where we wanted to avoid scale-down, to make operational maintenance easier. Since we had long-running WebSocket connections, we had to reduce the amount of pods being moved around as nodes turned over. We generally didn’t use autoscaling for our &lt;a href="https://kubernetes.io/docs/concepts/workloads/controllers/deployment/" target="_blank"&gt;Kubernetes Deployments&lt;/a&gt;, because we knew we would be receiving a lot of traffic in a short time; we preferred to pre-scale to high levels and then manually adjust throughout the short launch window. We also didn’t use Agones Fleet autoscaling, as we ran at 100% capacity for the entire game launch, however, we took advantage of being able to easily resize the Agones Fleets by running: &lt;code&gt;kubectl scale fleet halloween --replicas=N&lt;/code&gt;, and since we use node autoscaling, the cluster would automatically resize to fit the Fleet.&lt;/p&gt;&lt;h3&gt;How many GKE clusters did you have, and how did you manage them?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: For the most recent game (Halloween 2022), we had 30 clusters. On average, we had 3-5 GameServer clusters per matchmaker cluster. Using Terraform and Helm and taking advantage of their loop constructs was crucial to manage all these clusters. It made configs that could have been hundreds of lines into a few dozen.&lt;/p&gt;&lt;h3&gt;You mentioned using Cloud Monitoring, what did you actively monitor?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: We monitored a variety of metrics across the system, but to highlight some of the most important ones:&lt;/p&gt;&lt;p&gt;We had dashboards for Agones Fleet status showing how many GameServers were in each state, especially Ready vs Allocated. This let us know when a Fleet was reaching its capacity. Since the launch period is only about 48 hours, we didn’t set up alerts and just stayed on call throughout. However, we set up some alerts based on error rates for when the game runs on the &lt;a href="http://google.com/doodles" target="_blank"&gt;google.com/doodles&lt;/a&gt; archive.&lt;/p&gt;&lt;p&gt;We also monitored game server and matchmaker connections. Especially for the matchmaker, we monitored the rate of successful matches made. This was important as it was our number one metric of the user experience - failing to find a match was the least fun thing that could happen for the user. Another important metric is how long users spend waiting for enough players to join a match. Luckily we didn’t have to worry about this one, because we had so much traffic.&lt;/p&gt;&lt;p&gt;We tracked our own custom “Game Over” events. Looking at the running total of games completed was really exciting! We did this by creating a chart summing our custom log-based metrics for things such as matchmaker connections, successes and failures in the open match components we wrote, game server connections, etc.&lt;/p&gt;&lt;p&gt;And finally, we utilised all the built-in metrics from Agones and Open Match to give us an overview of the entire platform health.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_carousel"&gt;


&lt;div class="h-c-page article-module"&gt;
  &lt;div class="article-module glue-pagination h-c-carousel h-c-carousel--simple h-c-carousel--dark ng-cloak" data-glue-pagination-config="{cyclical: true}"&gt;

    &lt;div class="h-c-carousel__wrap"&gt;
      &lt;ul class="glue-carousel ng-cloak" data-glue-carousel-options="{pointerTypes: ['touch', 'mouse'], jump: true}"&gt;

        
          &lt;li class="h-c-carousel__item article-carousel__slide"&gt;
            &lt;figure&gt;
              
                
                  
                  &lt;div class="article-carousel__slide-img" style="background-image: url(https://storage.googleapis.com/gweb-cloudblog-publish/images/6_Google_Doodle_games.max-1200x1200.jpg);"&gt;&lt;span class="h-u-visually-hidden"&gt;6 Google Doodle games.jpg&lt;/span&gt;&lt;/div&gt;
                
              

              
                &lt;figcaption class="article-carousel__caption h-c-copy  h-u-mt-std"&gt;&lt;i&gt;Cloud Monitoring Chart: Matchmaker Connections&lt;/i&gt;&lt;/figcaption&gt;
              
            &lt;/figure&gt;
          &lt;/li&gt;
        
          &lt;li class="h-c-carousel__item article-carousel__slide"&gt;
            &lt;figure&gt;
              
                
                  
                  &lt;div class="article-carousel__slide-img" style="background-image: url(https://storage.googleapis.com/gweb-cloudblog-publish/images/7_Google_Doodle_games.max-1100x1100.jpg);"&gt;&lt;span class="h-u-visually-hidden"&gt;7 Google Doodle games.jpg&lt;/span&gt;&lt;/div&gt;
                
              

              
                &lt;figcaption class="article-carousel__caption h-c-copy  h-u-mt-std"&gt;&lt;i&gt;Cloud Monitoring Chart: Game Server Connections&lt;/i&gt;&lt;/figcaption&gt;
              
            &lt;/figure&gt;
          &lt;/li&gt;
        
          &lt;li class="h-c-carousel__item article-carousel__slide"&gt;
            &lt;figure&gt;
              
                
                  
                  &lt;div class="article-carousel__slide-img" style="background-image: url(https://storage.googleapis.com/gweb-cloudblog-publish/images/8_Google_Doodle_games.max-1200x1200.jpg);"&gt;&lt;span class="h-u-visually-hidden"&gt;8 Google Doodle games.jpg&lt;/span&gt;&lt;/div&gt;
                
              

              
                &lt;figcaption class="article-carousel__caption h-c-copy  h-u-mt-std"&gt;&lt;i&gt;Cloud Monitoring Chart: Total Game Servers&lt;/i&gt;&lt;/figcaption&gt;
              
            &lt;/figure&gt;
          &lt;/li&gt;
        

      &lt;/ul&gt;

      &lt;div class="h-c-carousel__paginate glue-pagination-previous" data-glue-pagination-label="Previous" data-glue-pagination-update-model="false"&gt;
        &lt;div class="h-c-carousel__paginate-wrap"&gt;
          &lt;svg role="img" class="h-c-icon h-c-icon--keyboard-arrow-left"&gt;
            &lt;use xlink:href="#mi-keyboard-arrow-right"&gt;&lt;/use&gt;
          &lt;/svg&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="h-c-carousel__paginate glue-pagination-next" data-glue-pagination-label="Next" data-glue-pagination-update-model="false"&gt;
        &lt;div class="h-c-carousel__paginate-wrap"&gt;
          &lt;svg role="img" class="h-c-icon h-c-icon--keyboard-arrow-right"&gt;
            &lt;use xlink:href="#mi-keyboard-arrow-right"&gt;&lt;/use&gt;
          &lt;/svg&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="h-c-carousel__navigation"&gt;
      &lt;div class="glue-pagination-page-list"&gt;&lt;/div&gt;
    &lt;/div&gt;

  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3&gt;What would you have done differently if you had to do it again?&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Jacob&lt;/b&gt;: One lesson we learned was that we should have obtained more than double the amount of quota to handle our expected traffic. The system was designed so that it was really easy to bring new clusters online during launch, which we made use of and was really helpful in scaling up at the last minute. However, we didn’t have enough quota in some regions to do a full &lt;a href="https://en.wikipedia.org/wiki/Blue-green_deployment" target="_blank"&gt;blue-green deployment&lt;/a&gt; (running an entire deployment of a new version before switching over from an older version). That meant we had to incur some downtime when making infrastructure changes during launch. This can be avoided by having plenty of headroom in your quotas. So our recommendation is to work with your Google Cloud customer account representatives to ensure that you have a full launch review with quota requirements well ahead of your launch date.&lt;/p&gt;&lt;p&gt;Another thing that was difficult was getting the entire matchmaking and game server orchestration systems to spillover gracefully to another region if they had no more Agones GameServers available in their region. This meant that during launch, we had to make sure each Open Match instance was backed by enough GameServers that we wouldn’t run out, given the peak load we expected and encountered. We avoided the cascading failures during launch, but the tradeoff was having to manually scale up the busiest clusters.&lt;/p&gt;&lt;p&gt;To explain, users connect to the matchmaking frontend and request to join a match. They wait until there’s enough players, and then an allocation request is sent to Agones. But if all Agones clusters are full, it will reply with an error. At this point, there might be thousands of players attempting to join a match already, and then all of those matchmaking requests will fail, since there is nowhere for them to go (remember, we run at 100% capacity). Additionally, new users are still connecting to the matchmaking system, and all those requests will fail as well, leading to cascading failure for the matchmaking cluster.  Ideally, the matchmaking system would stop accepting new match making requests early if it knows that its Fleet is above a certain Allocated threshold.&lt;/p&gt;&lt;p&gt;To better handle this in the future, we need the frontend to have up-to-date data on the Fleets behind each Open Match instance, so it can start telling clients to use a different instance before it becomes overloaded. If you wait until the Allocator Service reports that the Fleet is exhausted, you may already have a problem.&lt;/p&gt;&lt;p&gt;We are also considering switching to &lt;a href="https://cloud.google.com/kubernetes-engine/docs/how-to/deploying-multi-cluster-gateways"&gt;Multi Cluster Gateways&lt;/a&gt;, which would allow us to configure rate limits. Then we could just compute our max QPS for a cluster based on its maximum capacity, set the rate limit accordingly, and let GCP handle the spillover. It would be a less dynamic solution, but it would be very simple to implement.&lt;/p&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;p&gt;Thank you to Jacob for such a detailed description of how the Google Doodle team develops, hosts, scales and orchestrates their multiplayer Google Doodle games.&lt;/p&gt;&lt;p&gt;The combination of Google Cloud - particularly Google Kubernetes Engine - and the open source Google Cloud Gaming solutions allowed the Google Doodle team to successfully run successive multiplayer Doodles at Google Search scale - a truly impressive feat!&lt;/p&gt;&lt;p&gt;It’s also pretty amazing to see that such a comprehensive multiplayer game platform could be built with relatively minor custom code, when utilising Open Source solutions for multiplayer games from Google Cloud.&lt;/p&gt;&lt;p&gt;If any of this sounds interesting and you want to learn more about any of the solutions listed above, you can go to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://cloud.google.com/gaming"&gt;Google Cloud for Games&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://cloud.google.com/kubernetes-engine"&gt;Google Kubernetes Engine&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://open-match.dev/" target="_blank"&gt;Open Match&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://agones.dev" target="_blank"&gt;Agones&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/googleforgames" target="_blank"&gt;Google for Games GitHub Organization&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/traefik/traefik" target="_blank"&gt;Traefik&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And finally, if you want to play/see any of the over 5000 Google Doodles we’ve launched around the globe throughout the decades, you can do so at &lt;a href="https://www.google.com/doodles" target="_blank"&gt;google.com/doodles&lt;/a&gt;!&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-related_article_tout"&gt;





&lt;div class="uni-related-article-tout h-c-page"&gt;
  &lt;section class="h-c-grid"&gt;
    &lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/scalable-matchmaker-performance-cloud-memorystore-redis-read-replicas/"
       data-analytics='{
                       "event": "page interaction",
                       "category": "article lead",
                       "action": "related article - inline",
                       "label": "article: {slug}"
                     }'
       class="uni-related-article-tout__wrapper h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
        h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3 uni-click-tracker"&gt;
      &lt;div class="uni-related-article-tout__inner-wrapper"&gt;
        &lt;p class="uni-related-article-tout__eyebrow h-c-eyebrow"&gt;Related Article&lt;/p&gt;

        &lt;div class="uni-related-article-tout__content-wrapper"&gt;
          &lt;div class="uni-related-article-tout__image-wrapper"&gt;
            &lt;div class="uni-related-article-tout__image" style="background-image: url('')"&gt;&lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="uni-related-article-tout__content"&gt;
            &lt;h4 class="uni-related-article-tout__header h-has-bottom-margin"&gt;Scalable Matchmaker Performance with Cloud Memorystore for Redis Read Replicas&lt;/h4&gt;
            &lt;p class="uni-related-article-tout__body"&gt;This blog post shows the performance of Open Match and Cloud Memorystore for Redis Read Replicas to create a scalable matchmaker to handl...&lt;/p&gt;
            &lt;div class="cta module-cta h-c-copy  uni-related-article-tout__cta muted"&gt;
              &lt;span class="nowrap"&gt;Read Article
                &lt;svg class="icon h-c-icon" role="presentation"&gt;
                  &lt;use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mi-arrow-forward"&gt;&lt;/use&gt;
                &lt;/svg&gt;
              &lt;/span&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;/div&gt;</description><pubDate>Mon, 03 Apr 2023 18:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/containers-kubernetes/making-online-containerized-games-with-managed-services/</guid><category>Open Source</category><category>Gaming</category><category>Developers &amp; Practitioners</category><category>Containers &amp; Kubernetes</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/Google_Doodle_games.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Building multiplayer Google Doodle games with GKE, Open Match and Agones</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/Google_Doodle_games.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/containers-kubernetes/making-online-containerized-games-with-managed-services/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Jacob Howcroft</name><title>Google Doodles, Senior Software Engineer</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Mark Mandel</name><title>Google Cloud, Developer Advocate</title><department></department><company></company></author></item><item><title>Run your game infrastructure on GKE Autopilot to focus on player experience</title><link>https://cloud.google.com/blog/products/containers-kubernetes/auto-scale-your-game-back-end-to-save-time-and-money/</link><description>&lt;div class="block-paragraph"&gt;&lt;p&gt;Earlier this month, we shared &lt;a href="https://cloud.google.com/blog/products/gaming/how-google-cloud-for-games-enables-live-service-games"&gt;Google Cloud's strategy for live service games&lt;/a&gt; which outlines our focus on the three critical pillars of (1) serving players everywhere, (2) collecting and organizing game data, and (3) unlocking player and game insights. Starting today, you can run your game workloads on Google Kubernetes Engine (GKE) Autopilot — a truly automated experience in running global multiplayer game servers. This blog explores how &lt;a href="https://cloud.google.com/kubernetes-engine"&gt;GKE Autopilot&lt;/a&gt; can help you serve players globally.  &lt;/p&gt;&lt;p&gt;For players, games just have to work. Game developers must have underlying cloud infrastructure that is simple to operate and seamlessly scales with player traffic, so that game developers can focus on what truly matters: building great games. At Google Cloud, we are fixated on making game launches boring by making GKE Autopilot the platform-of-choice for running game workloads for scalability, reliability, and automation. &lt;/p&gt;&lt;p&gt;One of the most critical components of a multiplayer game is the dedicated game server — an authoritative source of game state to which players' clients connect to interact with the game world. These dedicated game servers have to stay up during a game session, handle many connections, and scale based on metrics such as concurrent players.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Global_Scale_Architecture_-_GKE_Autopilot_.max-1000x1000.jpg"
        
          alt="IMG01-Global Scale Architecture - GKE Autopilot for Games Blogpost Version.jpg"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;i&gt;Example architecture of a global scale game&lt;/i&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;Now you can run dedicated game servers on GKE Autopilot using &lt;a href="https://agones.dev/" target="_blank"&gt;Agones&lt;/a&gt;, an open source game server orchestrator that we have been developing with the games industry. When running game servers on GKE Autopilot, Google Cloud manages the clusters for you, and you only pay for the CPU, memory, and storage that your game servers request while running. You don’t pay for unallocated nodes or system overhead, regardless of how your game servers are scheduled. &lt;/p&gt;&lt;p&gt;&lt;i&gt;"We use Google Kubernetes Engine to run our dedicated games servers and we are sensitive to the operating costs of clusters. We are excited to run our game servers using GKE Autopilot with Agones because it eliminates the need to manage Kubernetes node pools helping us scale our game servers and our team without scaling our costs."&lt;/i&gt;&lt;i&gt;—&lt;b&gt;Hiroki Awata, Software Engineer, DeNA&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;h3&gt;Power-up: Game servers on GKE Autopilot &lt;/h3&gt;&lt;p&gt;To get started with GKE Autopilot for games, first create a GKE Autopilot cluster, then create a &lt;a href="https://agones.dev/site/docs/installation/creating-cluster/gke/#creating-the-firewall" target="_blank"&gt;firewall rule&lt;/a&gt; to allow UDP player traffic, and &lt;a href="https://agones.dev/site/docs/installation/creating-cluster/gke/" target="_blank"&gt;install Agones using Helm&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;gcloud container clusters create-auto agones-autopilot \\\r\n  --region=us-central1 \\\r\n  --autoprovisioning-network-tags=game-server&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fe3889de190&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;Since GKE Autopilot is Kubernetes, we can create a game server fleet with the same fleet configuration yaml that we apply to any Kubernetes cluster.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;apiVersion: &amp;quot;agones.dev/v1&amp;quot;\r\nkind: Fleet\r\nmetadata:\r\n  name: simple-game-server\r\nspec:\r\n  replicas: 5\r\n  template:\r\n    spec:\r\n      ports:\r\n      - name: default\r\n        containerPort: 7777\r\n      template:\r\n        spec:\r\n          containers:\r\n          - name: simple-game-server\r\n            image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.14&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fe3889de9a0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;Notice how we didn’t have to think about the number of nodes, node pools, or cluster autoscaler configuration we would need to run our game servers: we simply defined the number of game servers we wanted to run. Wasn’t that easy?&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;For the win: Hands-off infrastructure&lt;/h3&gt;&lt;p&gt;GKE Autopilot is perfect for running your dedicated game servers because it is a hands-off, fully-managed Kubernetes platform that manages your cluster’s underlying infrastructure without you needing to configure or monitor - a workload level SLA backed by Google SRE. By using &lt;a href="https://agones.dev/site/docs/getting-started/create-fleetautoscaler/" target="_blank"&gt;Agones FleetAutoscaler&lt;/a&gt; with GKE Autopilot, your global game server fleets automatically and dynamically scale as players flow in and out of your game - you can set it and forget it!&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;apiVersion: &amp;quot;autoscaling.agones.dev/v1&amp;quot;\r\nkind: FleetAutoscaler\r\nmetadata:\r\n  name: simple-game-server-autoscaler\r\nspec:\r\n  fleetName: simple-game-server\r\n  policy:\r\n    type: Buffer\r\n    buffer:\r\n      bufferSize: 2\r\n      minReplicas: 5\r\n      maxReplicas: 100&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fe3889de6a0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;With traditional Kubernetes, this scaling requires resources and time for planning, right-sizing, and bin-packing. You might overprovision node pools much earlier in anticipation of scaling up and keep those node pools running longer before scaling down. All this costs money. &lt;/p&gt;&lt;p&gt;Scaling game servers with GKE Autopilot makes sense because game servers are pods and Autopilot speaks in units of pods. Autopilot ensures you pay &lt;i&gt;only&lt;/i&gt; for your running game server pods and you don’t pay for system components, operating system overhead, or unallocated capacity. According to a &lt;a href="https://inthecloud.withgoogle.com/forrester-tei-gke-report-lp-23/dl-cd.html" target="_blank"&gt;Forrester&lt;/a&gt; study, using GKE Autopilot results in up to 85% reduction in infrastructure costs and 45% improvement in developer efficiency.&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;noclip On: Full control, full freedom&lt;/h3&gt;&lt;p&gt;Fully managed doesn’t have to mean vendor lock-in. Some game companies on Google Cloud run their games on cluster fleets that span across regions, on-premises, or other cloud vendors. Since Agones is open source and GKE Autopilot is based on open source Kubernetes, when serving your games with GKE Autopilot you don’t have to sacrifice portability or flexibility. Better yet, Google Cloud continues to be the &lt;a href="https://k8s.devstats.cncf.io/d/9/companies-table?orgId=1&amp;amp;var-period_name=Last%20year&amp;amp;var-metric=contributions" target="_blank"&gt;largest contributor&lt;/a&gt; to both the Agones and Kubernetes projects allowing you to leverage our expertise and help define the roadmap to serve the next generation of games.&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;Pro-move: Leverage the integrations with the best of Google Cloud&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The technology needed for successfully running global multiplayer games extends beyond dedicated game servers and includes matchmaking services, custom network proxies, databases, and analytics. When running game servers on GKE, these integrations are easy. For example, you can use &lt;a href="https://cloud.google.com/blog/products/gaming/open-match-1-0-ready-for-deployment-in-production"&gt;Open Match&lt;/a&gt; on GKE Autopilot to scale the matchmaker with your dedicated game servers or manage player data with &lt;a href="https://cloud.google.com/blog/products/databases/choosing-cloud-spanner-for-game-development"&gt;Cloud Spanner&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;Secret Mission: Continuous delivery with Google Cloud Deploy multi-target parallel deployment&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Let’s say that you want to launch your game server with new features for an upcoming global game event, region-by-region. Cloud Deploy’s new &lt;a href="https://cloud.google.com/deploy/docs/deploy-app-parallel"&gt;multi-target deployment capability&lt;/a&gt; enables you to do just that. Create GKE clusters in the regions your players are close to, group them (as &lt;a href="https://cloud.google.com/deploy/docs/terminology#target"&gt;targets&lt;/a&gt;) into &lt;a href="https://cloud.google.com/deploy/docs/parallel#configure_the_multi-target"&gt;multi-targets&lt;/a&gt;, and deploy your Agones game servers in waves. Need to first validate in a staging environment? No problem, create a staging target at the start of your &lt;a href="https://cloud.google.com/deploy/docs/create-pipeline-targets#about_the_delivery_pipeline_and_targets"&gt;progression&lt;/a&gt; sequence. Need an &lt;a href="https://cloud.google.com/deploy/docs/promote-release#manage_approvals_for_a_delivery_pipeline"&gt;approval&lt;/a&gt; pause button before deployment to production? Cloud Deploy supports that too, along with &lt;a href="https://cloud.google.com/deploy/docs/parallel#rolling_back_a_parallel_deployment"&gt;multi-target rollback&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/IMG02-agones_clouddeploy_blog_032023.max-1000x1000.jpg"
        
          alt="IMG02-agones_clouddeploy_blog_032023.jpg"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;i&gt;A Cloud Deploy delivery pipeline progression sequence using multi-targets&lt;/i&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3&gt;Game on&lt;/h3&gt;&lt;p&gt;We understand that every resource that you have to spend on managing and scaling infrastructure is one less resource spent on making great games. To get started with running game servers on GKE Autopilot, &lt;a href="https://agones.dev/site/docs/installation/creating-cluster/gke/#agones-on-gke-autopilot" target="_blank"&gt;learn more&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;</description><pubDate>Tue, 21 Mar 2023 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/containers-kubernetes/auto-scale-your-game-back-end-to-save-time-and-money/</guid><category>Gaming</category><category>Developers &amp; Practitioners</category><category>Containers &amp; Kubernetes</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Run your game infrastructure on GKE Autopilot to focus on player experience</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/containers-kubernetes/auto-scale-your-game-back-end-to-save-time-and-money/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Ishan Sharma</name><title>Senior Product Manager, Google Kubernetes Engine</title><department></department><company></company></author></item><item><title>Build a multiplayer game with Cloud Spanner</title><link>https://cloud.google.com/blog/products/gaming/build-a-multiplayer-game-with-cloud-spanner/</link><description>&lt;div class="block-paragraph"&gt;&lt;p&gt;Fantasy sports games are live service games built on real-world data. The data is collected from various sources such as real-world sports leagues, statistics websites, and news outlets. A virtual world is built where players can draft teams and compete against each other at a global scale in real time.&lt;/p&gt;&lt;p&gt;These games are characterized by low latency requirements, huge fluctuations in workload, and the need for a zero downtime architecture.  A successful game requires a robust database that is highly reliable, globally available and quick to respond to varying workloads.&lt;/p&gt;&lt;p&gt;&lt;a href="https://niveussolutions.com/" target="_blank"&gt;Niveus&lt;/a&gt; is a Google Cloud partner that specializes in helping enterprises digitally transform workloads to both enhance their customer experience and differentiate themselves in the marketplace. The Niveus team recently evaluated &lt;a href="https://cloud.google.com/spanner"&gt;Cloud Spanner&lt;/a&gt; and we built a demo fantasy sports game; read on to see how Spanner was used for this workload.&lt;/p&gt;&lt;h3&gt;Why consider Cloud Spanner for real time multiplayer games?&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Globally distributed, and scalable database&lt;/b&gt;: Spanner is a globally distributed database that can span across multiple regions. The Spanner architecture decouples compute from storage, which allows it to scale processing resources separately from storage. This allows for increased flexibility, reduced cost, improved performance, and increased reliability. The distributed nature makes it an ideal solution for global unpredictable workloads, like online games. When a game goes viral, Spanner's infinite scalability ensures that the game doesn't become a victim of its own success.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Transactional and strong consistency&lt;/b&gt;: Spanner supports ACID transactions so that millions of player actions are secure and consistent, resulting in a single source of truth for the game state. By default, Spanner guarantees "strong" reads that observe the effects of all transactions before the start of the operation, regardless of distribution or node failures. This is critical for games for storing game state and in-game transactions. &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;High availability&lt;/b&gt;: Spanner's 99.999% uptime with zero maintenance windows is a great match for gamers' high expectations around responsiveness and uptime. &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Multiple games customers, like Niantic, Bandai Namco and Embark Games use Spanner as their backend games database because of Spanner’s differentiated capabilities. More details can be found on the &lt;a href="https://cloud.google.com/solutions/databases/games"&gt;Databases for Games&lt;/a&gt; page.&lt;/p&gt;&lt;h3&gt;Fantasy Sports League (FSL) Game Implementation&lt;/h3&gt;&lt;p&gt;Each matchup in the sports league starts with creating a fantasy team. Each gamer selects players from two competing teams in an upcoming cricket match. Points are awarded for different game activities. A live leaderboard is maintained throughout the game and the fantasy team with the most points at the end of the match is the winner.&lt;/p&gt;&lt;p&gt;A multiplayer game requires read/write operations for each activity a gamer performs along with storage of that data (id, username, password, players on the gamer’s fantasy team, their stats, etc.). In addition to basic gamer details, the system must also store backend game state and derived data like leaderboard snapshots. A viral multi-player game whose user count shoots up would see an explosion of compute and storage requirements; satisfying these requirements with a database like MySQL would require a developer to create, deploy, and maintain a sharded environment. This is tricky, complex, and expensive. In contrast, a Spanner database automatically shards data and distributes based on compute load, while also managing replication to provide the "database is never down" experience that assures a great experience to gamers. &lt;/p&gt;&lt;p&gt;The game uses &lt;b&gt;Node JS&lt;/b&gt; for the application layer, &lt;b&gt;Spanner&lt;/b&gt; as the backend game database, and &lt;a href="https://cloud.google.com/memorystore"&gt;&lt;b&gt;Cloud Memorystore&lt;/b&gt;&lt;/a&gt; as a caching layer for storing leaderboard data.&lt;/p&gt;&lt;p&gt;While our code is focused on running the game on Spanner, one could extend this architecture to include the analytics piece that is critical to any game deployment. This will include Dataflow, BigQuery, and Looker for analytics on the game data collected. In this architecture, we use Spanner &lt;a href="https://cloud.google.com/spanner/docs/change-streams"&gt;change streams&lt;/a&gt; to pull data into BigQuery. &lt;b&gt;BigQuery&lt;/b&gt; is a scalable, highly reliable, and secure cloud-based data warehouse for storing and analyzing large datasets and &lt;b&gt;Looker&lt;/b&gt; is a powerful business intelligence platform that helps you explore, share, and visualize your data.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/IMG_1_Architectural_Diagram.max-1000x1000.jpg"
        
          alt="[IMG 1] Architectural Diagram.jpg"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;i&gt;High Level Architecture&lt;/i&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-aside"&gt;&lt;dl&gt;
    &lt;dt&gt;aside_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;title&amp;#x27;, &amp;#x27;Check out the source code for the game!&amp;#x27;), (&amp;#x27;body&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fe38926ae80&amp;gt;), (&amp;#x27;btn_text&amp;#x27;, &amp;#x27;See code&amp;#x27;), (&amp;#x27;href&amp;#x27;, &amp;#x27;https://github.com/google/fsl-gaming&amp;#x27;), (&amp;#x27;image&amp;#x27;, None)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;As you browse through the code you can see the microservices that we developed:&lt;br/&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;FSL-Backend-Common&lt;/b&gt; - Contains several methods and utilities used by other microservices.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;FSL-MS-Resource-Management&lt;/b&gt; - Handles CRUD operation endpoints for tables like &lt;i&gt;Team Details, Match Details, Player Details, Fantasy Team Details&lt;/i&gt;, etc.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;FSL-MS-Simulator&lt;/b&gt; - Simulates the match.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;FSL-MS-Update-Leaderboard&lt;/b&gt; - To calculate the score for each fantasy team and update the leaderboard in Memorystore.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;FSL-MS-Display-Leaderboard&lt;/b&gt; - Displaying the leaderboard data for a contest.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Match Simulation&lt;/h2&gt;&lt;p&gt;FSL-MS-Simulator microservices include APIs to simulate individual balls and matches. &lt;i&gt;/simulateBall&lt;/i&gt; API is used to simulate a ball. Similarly, an entire match gets simulated using a simulate match API by calling &lt;i&gt;/simulateMatch&lt;/i&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/IMG_2updatingScore_wth_Pub_Sub_1.max-1000x1000.jpg"
        
          alt="[IMG 2]updatingScore_wth_Pub_Sub.jpg"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;&lt;i&gt;SimulateBall&lt;/i&gt; pushes a message to Pub/Sub topic &lt;i&gt;simulatorListener&lt;/i&gt; and &lt;i&gt;updateScore&lt;/i&gt;. &lt;i&gt;UpdateScoreListener&lt;/i&gt; receives the data packet from Pub/Sub and calls the &lt;i&gt;/updateScore&lt;/i&gt; API, which makes batches of a fixed length and pushes to &lt;i&gt;updateRedis&lt;/i&gt; Pub/Sub topic to execute a huge amount of data in parallel. &lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/IMG_3MatchSimulation_Update_score_flow_1.max-1000x1000.jpg"
        
          alt="[IMG 3]MatchSimulation_Update score flow.jpg"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3&gt;Updating Scores&lt;/h3&gt;&lt;p&gt;Score calculations are based on incrementing score for each team in Memorystore as the game progresses. Once the score is updated in Memorystore, it is updated in Spanner. To scale the writes, the data is pushed to Pub/Sub where all the subscribers listen to publish events and start writing to Spanner.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/IMG_4Leaderboard_SpannerUpdateFlow.max-1000x1000.jpg"
        
          alt="[IMG 4]Leaderboard_SpannerUpdateFlow.jpg"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3&gt;Storing Leaderboard data in Spanner&lt;/h3&gt;&lt;p&gt;After the final ball, we update the leaderboard snapshots in Spanner, enabling anyone who visits the site after the match completion to see the final leaderboard for the match. &lt;a href="https://cloud.google.com/vertex-ai"&gt;Machine Learning models&lt;/a&gt; can be built on the stored data in the future for predicting user scores and potentially winners.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/IMG_5MatchSimulation_ScoreIUpdates.max-1000x1000.jpg"
        
          alt="[IMG 5]MatchSimulation_ScoreIUpdates.jpg"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3&gt;Leaderboard&lt;/h3&gt;&lt;p&gt;Fantasy teams are listed on the leaderboards and are ranked based on the scores. The score gets calculated in Memorystore for each team. During a live match, all the writes happen to the cache and a live leaderboard is retrieved from  Memorystore.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/IMG_6Get_LeaderboardScore_ToMemoryStore.max-1000x1000.jpg"
        
          alt="[IMG 6]Get_LeaderboardScore_ToMemoryStore.jpg"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3&gt;Post Simulation Results&lt;/h3&gt;&lt;p&gt;Post-simulation, we store the top ten fantasy teams in the &lt;b&gt;contestDetails&lt;/b&gt; and &lt;b&gt;MatchResults&lt;/b&gt; tables in Spanner.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/IMG_7Get_LeaderboardScore-Spanner.max-1000x1000.jpg"
        
          alt="[IMG 7]Get_LeaderboardScore-Spanner.jpg"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h2&gt;Conclusion &lt;/h2&gt;&lt;p&gt;Spanner with its high availability, strong consistency, and distributed nature became a goto database for our multiplayer game development. Many gaming studios and game developers trust Cloud Spanner to provide a rock-solid backend that lets them focus on what they do best: building great games. &lt;/p&gt;&lt;/div&gt;
&lt;div class="block-aside"&gt;&lt;dl&gt;
    &lt;dt&gt;aside_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;title&amp;#x27;, &amp;#x27;Review the ER diagrams for the game&amp;#x27;), (&amp;#x27;body&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fe38926a160&amp;gt;), (&amp;#x27;btn_text&amp;#x27;, &amp;#x27;Review diagrams&amp;#x27;), (&amp;#x27;href&amp;#x27;, &amp;#x27;https://github.com/google/fsl-gaming/blob/main/images/README.md&amp;#x27;), (&amp;#x27;image&amp;#x27;, None)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;Learn more about the &lt;a href="https://cloud.google.com/spanner/docs/free-trial-instance"&gt;Spanner free trial instances&lt;/a&gt; available at no cost to both existing and new Google Cloud customers. &lt;/p&gt;&lt;p&gt;If you want to learn more about uses of Spanner, and specifically how it helps in games:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://cloud.google.com/spanner#section-7"&gt;Cloud Spanner&lt;/a&gt; as gaming server backend&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://cloud.google.com/spanner/docs/best-practices-gaming-database"&gt;Best practices for using Cloud Spanner as a gaming database&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr/&gt;&lt;p&gt;&lt;i&gt;&lt;sup&gt;We would like to thank Aalok Muley, Group Product Manager, Databases (Google Cloud) for his help on this blog.&lt;/sup&gt;&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Tue, 21 Mar 2023 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/gaming/build-a-multiplayer-game-with-cloud-spanner/</guid><category>Databases</category><category>Developers &amp; Practitioners</category><category>Gaming</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Build a multiplayer game with Cloud Spanner</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/gaming/build-a-multiplayer-game-with-cloud-spanner/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Sarun Singla</name><title>Technical Account Manager, Google Cloud</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Sagar Vaidya</name><title>Senior Solution Architect, Niveus Solution</title><department></department><company></company></author></item><item><title>Game on and on and on: Google Cloud's strategy for live service games</title><link>https://cloud.google.com/blog/products/gaming/how-google-cloud-for-games-enables-live-service-games/</link><description>&lt;div class="block-paragraph"&gt;&lt;p&gt;It's undeniable: Live service games (“live games”) are the future of the games industry. In 2022, the top 10 most played games were all live, continuously delighting players with new content, features, and gameplay. Today, the live service model is prevalent across all console, PC and mobile platforms and genres. And with a projected &lt;a href="https://kstatic.googleusercontent.com/files/27e03cbcd4a9807d601459a0328d57dc4b793b9d4d0ff9e143363e6634a8550f71c8ad05d1ce1934b286272f8512cfc5d5d1113672367e441f8438c6a859c876" target="_blank"&gt;3.6 billion players by 2024&lt;/a&gt;, the opportunity for live games has never been larger.&lt;/p&gt;&lt;p&gt;Google is no stranger to this model, operating some of the world’s largest live services like Google Search and YouTube to billions of users around the world. Likewise, Google Cloud is committed to bringing the best of Google to game developers who are delivering live game experiences to players everywhere. &lt;/p&gt;&lt;p&gt;We already work with most of the top-grossing game companies. In our journey with them, we’ve learned we need to help developers unite performance and understanding via three critical undertakings:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Serve players everywhere.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Collect and organize game data.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Unlock player and game insights.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Here’s how. &lt;/p&gt;&lt;h3&gt;Serve players everywhere&lt;/h3&gt;&lt;p&gt;Live games just have to work. Google Cloud helps developers connect players with game servers built on the world's largest, most secure network.&lt;/p&gt;&lt;p&gt;Take, for example, game launches. It's a hard problem because it requires developers to effectively bet on how successful their game will be before launch. "Will I attract a thousand players? A million? More? At the same time?" Ironically, the nightmare scenario is often extraordinary success: being unable to serve players who would have played your game had they been able. &lt;/p&gt;&lt;p&gt;Success shouldn't worry a game developer. To that end, one of the most important capabilities Google Cloud can provide is scale. Kubernetes is recognized as one of the best ways to handle computing at massive scale and no one knows it better than us — we founded the project and continue to be its most prolific contributor.&lt;/p&gt;&lt;p&gt;With our deep knowledge of Kubernetes, we built &lt;a href="https://cloud.google.com/kubernetes-engine"&gt;Google Kubernetes Engine (GKE)&lt;/a&gt;, which gives game developers the capability and confidence to serve even the largest player audiences. It’s the most scalable and automated managed Kubernetes service, capable of running 15,000+ node clusters, outscaling other cloud providers by as much as 10x.&lt;/p&gt;&lt;p&gt;While GKE works for a range of compute tasks, we know workloads for live games are unique. That's why we partnered with Ubisoft to create &lt;a href="https://agones.dev/" target="_blank"&gt;Agones&lt;/a&gt;, an open-source game server orchestrator for Kubernetes. Using Agones with GKE enables developers to focus on player experience instead of infrastructure.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-pull_quote"&gt;&lt;div class="uni-pull-quote h-c-page"&gt;
  &lt;section class="h-c-grid"&gt;
    &lt;div class="uni-pull-quote__wrapper h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
      h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3"&gt;
      &lt;div class="uni-pull-quote__inner-wrapper h-c-copy h-c-copy"&gt;
        &lt;q class="uni-pull-quote__text"&gt;At Ubisoft we needed a centralized, standard solution for game servers. We partnered with Google Cloud to develop Agones as a result, maximizing players’ engagement and trust over time.&lt;/q&gt;

        
          &lt;cite class="uni-pull-quote__author"&gt;
            
            
              &lt;span class="uni-pull-quote__author-meta"&gt;
                
                  &lt;strong class="h-u-font-weight-medium"&gt;Pierre Romagné&lt;/strong&gt;&lt;br /&gt;
                
                
                  VP Engineering and Platform, Ubisoft
                
              &lt;/span&gt;
            
          &lt;/cite&gt;
        
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3&gt;Collect and organize game data&lt;/h3&gt;&lt;p&gt;&lt;b&gt;Live games can't forget player progress. Google Cloud helps developers secure player experiences without having to worry about scale or performance.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Live service games are persistent. Players earn levels, add friends, buy skins. Even the smallest bits of data can be prized by players, down to every shot they made (“How accurate am I getting?”). Multiply this desire with the potential for a live game to have millions of &lt;b&gt;concurrent&lt;/b&gt; players all over the world. The challenge seems daunting.&lt;/p&gt;&lt;p&gt;Leveraging our vast experience with our own live services, we created &lt;a href="https://cloud.google.com/spanner"&gt;Cloud Spanner&lt;/a&gt; to fully address data scalability. Spanner provides a single, logical, horizontally scalable database that can process 2+ billion requests per second. This means game developers don’t have to compromise between performance, manageability, and scale (no more sharding!). They can have a single database that scales to handle the largest player audiences. &lt;/p&gt;&lt;/div&gt;
&lt;div class="block-pull_quote"&gt;&lt;div class="uni-pull-quote h-c-page"&gt;
  &lt;section class="h-c-grid"&gt;
    &lt;div class="uni-pull-quote__wrapper h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
      h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3"&gt;
      &lt;div class="uni-pull-quote__inner-wrapper h-c-copy h-c-copy"&gt;
        &lt;q class="uni-pull-quote__text"&gt;At any given time, we have about 5,000 Spanner nodes handling traffic… All of them work together to support millions of players playing all across the world at a given moment.&lt;/q&gt;

        
          &lt;cite class="uni-pull-quote__author"&gt;
            
            
              &lt;span class="uni-pull-quote__author-meta"&gt;
                
                  &lt;strong class="h-u-font-weight-medium"&gt;James Prompanya&lt;/strong&gt;&lt;br /&gt;
                
                
                  Sr. Engineering Manager, Pokémon GO, Niantic
                
              &lt;/span&gt;
            
          &lt;/cite&gt;
        
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;Beyond scale, Spanner can also reduce costs (up to 50%) while improving player experience through latency reduction (up to 25%). That way, for example, when a player unlocks a new skin, they can equip it immediately. &lt;/p&gt;&lt;h3&gt;Unlock player and game insights&lt;/h3&gt;&lt;p&gt;Live games need to continuously evolve in the right direction. Google Cloud helps developers understand what's working to find and retain players with Google's analytics and AI.&lt;/p&gt;&lt;p&gt;There are over 3 billion players in the world, and they come in all shapes and sizes. To delight them, developers need to understand what works and segment players accordingly. Take, for example, Square Enix, a global games publisher. They’re using data and analytics to build a Single Gamer View in order to understand and engage their players, resulting in increased engagement and customer satisfaction.&lt;/p&gt;&lt;p&gt;BigQuery is a catalyst for generating insights and is a killer app among large game developers. It’s used by nearly all of Google Cloud’s top game companies. When it comes to data analytics BQ is OP, helping developers analyze and unite huge amounts of player and game data. From predicting the success of a new feature to personalizing offers based on player behavior, BigQuery helps game companies find answers to questions they may not even have thought to ask. Or thought who to ask. BigQuery is designed for approachability, so employees across the business can generate insights using data previously locked in silos. BigQuery goes further with &lt;a href="https://cloud.google.com/bigquery-ml/docs/introduction"&gt;built-in ML&lt;/a&gt; and &lt;a href="https://cloud.google.com/vertex-ai"&gt;Vertex AI &lt;/a&gt;to unlock insights across the organization.&lt;/p&gt;&lt;h3&gt;Powering an everlasting love for the game&lt;/h3&gt;&lt;p&gt;At Google Cloud, we believe that a live game’s success should depend on the strength of the game’s enjoyment, not limited to the strength of its infrastructure. That’s why we’re building an ecosystem for live games that unifies understanding and performance. &lt;/p&gt;&lt;p&gt;Google Cloud for Games is an ecosystem that includes not just Google Cloud, but also solutions from enablers like Ubitus, Incredibuild, Heroic Labs, and Unity. &lt;/p&gt;&lt;/div&gt;
&lt;div class="block-pull_quote"&gt;&lt;div class="uni-pull-quote h-c-page"&gt;
  &lt;section class="h-c-grid"&gt;
    &lt;div class="uni-pull-quote__wrapper h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
      h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3"&gt;
      &lt;div class="uni-pull-quote__inner-wrapper h-c-copy h-c-copy"&gt;
        &lt;q class="uni-pull-quote__text"&gt;We are excited to work with Google to offer developers our suite of Unity Gaming Services which provides the most robust tools and infrastructure to build, launch, and grow games seamlessly at a global scale&lt;/q&gt;

        
          &lt;cite class="uni-pull-quote__author"&gt;
            
            
              &lt;span class="uni-pull-quote__author-meta"&gt;
                
                  &lt;strong class="h-u-font-weight-medium"&gt;Jeff Collins&lt;/strong&gt;&lt;br /&gt;
                
                
                  SVP &amp;amp; GM of Unity Gaming Services, Unity
                
              &lt;/span&gt;
            
          &lt;/cite&gt;
        
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;Solutions across this ecosystem work best when they work together as a cohesive whole. While there are standouts, the winningest MVP is backed by a well oiled team; just like a squad, clan, or raid group.&lt;/p&gt;&lt;p&gt;To learn more about Google Cloud for Games, visit &lt;a href="http://goo.gle/cloudforgames" target="_blank"&gt;goo.gle/cloudforgames&lt;/a&gt;&lt;/p&gt;&lt;p&gt;GLHF.&lt;/p&gt;&lt;/div&gt;</description><pubDate>Wed, 08 Mar 2023 17:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/gaming/how-google-cloud-for-games-enables-live-service-games/</guid><category>Containers &amp; Kubernetes</category><category>Databases</category><category>Data Analytics</category><category>Gaming</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Game on and on and on: Google Cloud's strategy for live service games</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/gaming/how-google-cloud-for-games-enables-live-service-games/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Jack Buser</name><title>Global Director for Games, Google Cloud</title><department></department><company></company></author></item><item><title>Power Matchmaking with Redis Enterprise via Google Cloud Marketplace</title><link>https://cloud.google.com/blog/topics/developers-practitioners/power-matchmaking-redis-enterprise-google-cloud-marketplace/</link><description>&lt;div class="block-paragraph"&gt;&lt;p&gt;Have you ever played a multiplayer game where the players could have been better? This scenario is common and is likely not an ideal experience for anyone. &lt;br/&gt;&lt;/p&gt;&lt;p&gt;Game developers try to ensure that when you play, your opponents are at least as good as you are. Accurately matching players is a requirement for multiplayer games because creating compatible matches means more retention and revenue. Most of all, it increases players' loyalty to the game and boosts turnover.&lt;/p&gt;&lt;p&gt;While it's essential, developing effective matchmaking functionality is a challenging task. Evaluating skill level and many other attributes instantly is a requirement. Matchmaking in gaming needs to be blazing fast, as no player will wait long to get into a game session.&lt;/p&gt;&lt;h3&gt;Challenges&lt;/h3&gt;&lt;p&gt;The advancement of both hardware and software enables large-scale games where hundreds of players are getting matched to start a game or an experience. Concurrent players in popular games are on a steady rise. Nowadays, popular games' concurrent players range anywhere from 3 million to 10 million&lt;sup&gt;1&lt;/sup&gt; depending on the game, day, and time of the year.  &lt;/p&gt;&lt;p&gt;While the player pools are expanding, the latency expectations are shrinking. These two forces drive the need for horizontally scalable and blazing-fast matchmaking backends. Because of this, Google teamed up with Unity and created a framework called Open Match. Open Match runs on Kubernetes, and Redis is the data layer. The goal was to create an auto-scalable matchmaking framework to prevent reinventing the wheel and allow developers to focus on the logic to connect players for games. Previously, we looked into &lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/scalable-matchmaker-performance-cloud-memorystore-redis-read-replicas"&gt;Memorystore with Open Match&lt;/a&gt; so now we will look into &lt;a href="https://redis.com/redis-enterprise-software/overview/" target="_blank"&gt;Redis Enterprise&lt;/a&gt; in Google Cloud Marketplace.&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;Redis Enterprise in Google Cloud Marketplace&lt;/h3&gt;&lt;p&gt;As the advancement of both hardware and software pushes more concurrent players and large numbers of players per game, scalability has become the top priority for Open Match. Since Open Match runs on Kubernetes, the compute layer can auto-scale with technologies like GKE's Cluster autoscaler and is usually not a big concern for DevOps engineers. However, achieving scalability and high availability at the data layer is a mundane task for Open Match DevOps teams.  &lt;/p&gt;&lt;p&gt;As the first step towards the scalability and high availability challenges, we stood up the Open Match framework with &lt;a href="https://redis.com/cloud-partners/google/" target="_blank"&gt;Redis Enterprise Cloud&lt;/a&gt; in place of OSS Redis. Redis Enterprise scales linearly and scales with a click of a button without requiring downtime, which massively reduces the scalability burden. On top, high availability is just a slider on the admin console.&lt;br/&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Redis_Blog_-_image_1.max-1000x1000.png"
        
          alt="Scalability Settings and High Availability Settings"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;Scalability Settings (left) and High Availability Settings (right)&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;Redis Enterprise Cloud is a fully managed service with 24/7x365 support and 99.999% SLA and offers simplified billing through a single Google Cloud Account.&lt;/p&gt;&lt;h3&gt;VPC peering&lt;/h3&gt;&lt;p&gt;You can deploy Redis Enterprise Cloud through the &lt;a href="https://console.cloud.google.com/marketplace/product/redis-marketplace-isaas/redis-enterprise-cloud-flexible-plan?project=redis-ent-migration"&gt;Google Cloud Marketplace&lt;/a&gt; or through the &lt;a href="https://registry.terraform.io/providers/RedisLabs/rediscloud/latest/docs" target="_blank"&gt;Terraform provider&lt;/a&gt; in a matter of minutes. Once the database is created, by providing the Google Cloud Project and Network name, you can &lt;a href="https://docs.redis.com/latest/rc/security/vpc-peering/#gcp-vpc-peering" target="_blank"&gt;peer&lt;/a&gt; the VPC the GKE cluster belongs to with Redis’s managed VPC. After the peering is completed, the GKE cluster could connect to the Redis Enterprise database through the database's private endpoint.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;h3&gt;Open Match with Redis Enterprise Cloud&lt;/h3&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Open_Match_Redis_Enterprise.max-1000x1000.png"
        
          alt="Open Match Architecture with Redis Enterprise Cloud"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;Assuming your newly created Redis Enterprise Cloud database has been provisioned, it is ready for use. You can run the following helm command to install Open Match on your GKE cluster pointing to the Redis Enterprise Cloud instance:&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;helm install open-match open-match/open-match \\\r\n--set open-match-customize.enabled=true \\\r\n--set open-match-customize.evaluator.enabled=true \\\r\n--set open-match-override.enabled=true \\\r\n--set open-match-core.redis.enabled=false \\\r\n--set open-match-core.redis.hostname=&amp;quot;Default:&amp;lt;password&amp;gt;@&amp;lt;Redis-Enterprise-Database-Private-Endpoint&amp;gt;&amp;quot; \\\r\n--set open-match-core.redis.port=&amp;lt;Redis-Enterprise-Database-Port-Number&amp;gt; \\\r\n-nopen-match&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fe3892930a0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;For example,&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;helm install open-match open-match/open-match \\\r\n--set open-match-customize.enabled=true \\\r\n--set open-match-customize.evaluator.enabled=true \\\r\n--set open-match-override.enabled=true \\\r\n--set open-match-core.redis.enabled=false \\\r\n--set open-match-core.redis.hostname=&amp;quot;Default:ZDtglM5R@redis-16264.internal.c21576.us-west1-mz.gcp.cloud.rlrcp.com&amp;quot; \\\r\n--set open-match-core.redis.port=16264 \\\r\n-nopen-match&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fe3892a92b0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p&gt;You can follow this &lt;a href="https://github.com/googleforgames/open-match/tree/main/tutorials/redis-enterprise-cloud" target="_blank"&gt;tutorial&lt;/a&gt; to deploy and run the Open Match demo to generate matches and see Redis Enterprise in action.&lt;/p&gt;&lt;h3&gt;Summary&lt;/h3&gt;&lt;p&gt;Redis Enterprise on Google Cloud provides linear scalability, high availability and five-nines (99.999% SLA) of availability through Active-Active Geo Distribution feature spanning over 20 Google Cloud regions to support global game launches. User spikes are real and significant opportunities for the success of the game. Game companies need to be ready for these moments and do everything possible to retain the players on the platform. Adopt Open Match with Redis Enterprise for accurate, compatible, and ultra-fast matchmaking functionality at scale. &lt;/p&gt;&lt;h3&gt;Next Steps&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://redis.com/solutions/industries/gaming/" target="_blank"&gt;Build better games with real-time data&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://redis.com/cloud-partners/google/?_ga=2.147514355.532558759.1668527623-349106944.1638806937" target="_blank"&gt;Fully managed Redis Enterprise Cloud on Google Cloud&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/googleforgames/open-match/tree/main/tutorials/redis-enterprise-cloud" target="_blank"&gt;Redis Enterprise Open Match Tutorial&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/googleforgames/open-match" target="_blank"&gt;GitHub Repository for Open Match&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://open-match.dev/site/" target="_blank"&gt;Open Match website&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr/&gt;&lt;p&gt;&lt;b&gt;Footnotes:&lt;/b&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;sup&gt;1. &lt;a href="https://playercounter.com/fortnite/" target="_blank"&gt;Fortnite Player Count - How Many People Are Playing Now?&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;sup&gt;A special 'thank you' to Gilbert Lau, Cloud Partner Solution Architect, Redis for his contribution to this article.&lt;/sup&gt;&lt;/i&gt;&lt;br/&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-related_article_tout"&gt;





&lt;div class="uni-related-article-tout h-c-page"&gt;
  &lt;section class="h-c-grid"&gt;
    &lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/scalable-matchmaker-performance-cloud-memorystore-redis-read-replicas/"
       data-analytics='{
                       "event": "page interaction",
                       "category": "article lead",
                       "action": "related article - inline",
                       "label": "article: {slug}"
                     }'
       class="uni-related-article-tout__wrapper h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
        h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3 uni-click-tracker"&gt;
      &lt;div class="uni-related-article-tout__inner-wrapper"&gt;
        &lt;p class="uni-related-article-tout__eyebrow h-c-eyebrow"&gt;Related Article&lt;/p&gt;

        &lt;div class="uni-related-article-tout__content-wrapper"&gt;
          &lt;div class="uni-related-article-tout__image-wrapper"&gt;
            &lt;div class="uni-related-article-tout__image" style="background-image: url('')"&gt;&lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="uni-related-article-tout__content"&gt;
            &lt;h4 class="uni-related-article-tout__header h-has-bottom-margin"&gt;Scalable Matchmaker Performance with Cloud Memorystore for Redis Read Replicas&lt;/h4&gt;
            &lt;p class="uni-related-article-tout__body"&gt;This blog post shows the performance of Open Match and Cloud Memorystore for Redis Read Replicas to create a scalable matchmaker to handl...&lt;/p&gt;
            &lt;div class="cta module-cta h-c-copy  uni-related-article-tout__cta muted"&gt;
              &lt;span class="nowrap"&gt;Read Article
                &lt;svg class="icon h-c-icon" role="presentation"&gt;
                  &lt;use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mi-arrow-forward"&gt;&lt;/use&gt;
                &lt;/svg&gt;
              &lt;/span&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-aside"&gt;&lt;dl&gt;
    &lt;dt&gt;aside_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;title&amp;#x27;, &amp;#x27;Redis Enterprise on Google Cloud | Redis Cloud Partner&amp;#x27;), (&amp;#x27;body&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fe3889e9820&amp;gt;), (&amp;#x27;btn_text&amp;#x27;, &amp;#x27;Learn More&amp;#x27;), (&amp;#x27;href&amp;#x27;, &amp;#x27;https://redis.com/cloud-partners/google/&amp;#x27;), (&amp;#x27;image&amp;#x27;, &amp;lt;GAEImage: The Turbo Charged Partnership of Redis Enterprise and Google Cloud&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;</description><pubDate>Fri, 16 Dec 2022 15:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/topics/developers-practitioners/power-matchmaking-redis-enterprise-google-cloud-marketplace/</guid><category>Gaming</category><category>Open Source</category><category>Developers &amp; Practitioners</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Power Matchmaking with Redis Enterprise via Google Cloud Marketplace</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/topics/developers-practitioners/power-matchmaking-redis-enterprise-google-cloud-marketplace/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Volkan Civelek</name><title>Sr. Partner Solution Architect, Redis</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Jon Foust</name><title>Developer Advocate, Google</title><department></department><company></company></author></item></channel></rss>