{"id":466,"date":"2025-03-25T22:17:19","date_gmt":"2025-03-25T22:17:19","guid":{"rendered":"https:\/\/techtrendfeed.com\/?p=466"},"modified":"2025-03-25T22:17:19","modified_gmt":"2025-03-25T22:17:19","slug":"unlocking-bonus-worlds-with-gemini-for-the-google-i-o-puzzle","status":"publish","type":"post","link":"https:\/\/techtrendfeed.com\/?p=466","title":{"rendered":"Unlocking bonus worlds with Gemini for the Google I\/O puzzle"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<h2 data-block-key=\"3712d\"><b>Cracking the code<\/b><\/h2>\n<p data-block-key=\"fv91r\">This yr\u2019s <a rel=\"nofollow\" target=\"_blank\" href=\"https:\/\/io.google\/2025\/puzzle\/?utm_source=blogpost&amp;utm_medium=pr&amp;utm_campaign=puzzle&amp;utm_content=\">Google I\/O puzzle<\/a> challenges gamers to control mild and coloration by prisms to unlock sectors of the sport world. Past the core sport loop, a brand new dimension was added to the gameplay\u2013bonus worlds hidden behind riddles generated with the Gemini API. This weblog will overview how we constructed it!<\/p>\n<\/div>\n<div>\n<h2 data-block-key=\"3712d\">The Gemini integration: A inventive and scalable resolution<\/h2>\n<p data-block-key=\"6qsjj\">Hidden tiles are dynamically positioned on the map as Gemini fashions generate distinctive riddles for gamers to resolve and discover them. The objective? To create greater engagement by incentivizing gamers to discover new dimensions of the puzzle constructed with AI.<\/p>\n<p data-block-key=\"eidcc\">Fairly than manually hardcoding 100s of attainable secret tile places and corresponding riddles, we used AI to assist us scale the characteristic in a manner that was difficult and distinctive.<\/p>\n<\/div>\n<div>\n<h2 data-block-key=\"3712d\">Our resolution: Dynamic riddle technology<\/h2>\n<p data-block-key=\"8ti1h\">To leverage Gemini&#8217;s strengths, we devised an answer that mixed algorithmic precision with AI-powered creativity. A backend algorithm positioned hidden tiles on the map and generated a immediate for the Gemini API based mostly on the sport guidelines describing the situation with three easy directions. This ensured that each riddle had a logical resolution inside the sport&#8217;s framework. We used Gemini to rework the algorithmically generated reply right into a intelligent riddle.<\/p>\n<h3 data-block-key=\"e7pjl\"><b><br \/>Algorithmic immediate technology<\/b><\/h3>\n<p data-block-key=\"1kqmt\">Based mostly on the sport&#8217;s guidelines we programmatically decided a &#8220;secret location&#8221; on the sport board that was used because the immediate for Gemini. This ensured that the reply to every riddle was all the time legitimate and solvable.<\/p>\n<\/div>\n<div>\n<div class=\"highlight\">\n<pre class=\"javascript\"><span\/><span class=\"c1\">\/\/ Finds a brand new hiding spot for the Gemini token and generates a clue string<\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">getHiddenLocation<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">geminiCluePositions<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">GameWorld<\/span><span class=\"p\">.<\/span><span class=\"nx\">getCluePositions<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"c1\">\/\/ Returns positions which might be designated as a \"Clue\" tile. We tag essential tiles when designing a stage. These are usually tiles that aren't movable by the participant.<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/ We get all of the tiles positions within the stage, a place is a straightforward XY coordinate<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">secretLocations<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">GameWorld<\/span><span class=\"p\">.<\/span><span class=\"nx\">getAllTilePositions<\/span><span class=\"p\">()<\/span>\n<span class=\"w\">      <\/span><span class=\"c1\">\/\/ we take away tiles that aren't adjoining to a clue place...<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">.<\/span><span class=\"nx\">filter<\/span><span class=\"p\">((<\/span><span class=\"nx\">tileA<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">=&gt;<\/span><span class=\"w\"> <\/span><span class=\"nx\">geminiCluePositions<\/span><span class=\"p\">.<\/span><span class=\"nx\">some<\/span><span class=\"p\">((<\/span><span class=\"nx\">tileB<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">=&gt;<\/span><span class=\"w\"> <\/span><span class=\"nx\">GameWorld<\/span><span class=\"p\">.<\/span><span class=\"nx\">isNextTo<\/span><span class=\"p\">(<\/span><span class=\"nx\">tileA<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">tileB<\/span><span class=\"p\">)))<\/span>\n<span class=\"w\">      <\/span><span class=\"c1\">\/\/ we take away invalid positions, comparable to tiles that aren't empty<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">.<\/span><span class=\"nx\">filter<\/span><span class=\"p\">(({<\/span><span class=\"nx\">gridX<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">gridY<\/span><span class=\"p\">})<\/span><span class=\"w\"> <\/span><span class=\"p\">=&gt;<\/span><span class=\"w\"> <\/span><span class=\"nx\">GameWorld<\/span><span class=\"p\">.<\/span><span class=\"nx\">isValidGeminiPosition<\/span><span class=\"p\">(<\/span><span class=\"nx\">gridX<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">gridY<\/span><span class=\"p\">))<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/ we randomly select a hiding spot<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">randomPosition<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">secretLocations<\/span><span class=\"p\">[<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">floor<\/span><span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">random<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"nx\">secretLocations<\/span><span class=\"p\">.<\/span><span class=\"nx\">length<\/span><span class=\"p\">)]<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">randomTile<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">Gameworld<\/span><span class=\"p\">.<\/span><span class=\"nx\">getTileByPosition<\/span><span class=\"p\">(<\/span><span class=\"nx\">randomPosition<\/span><span class=\"p\">)<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/ now that we've got a hiding spot, we generate a clue string<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">riddleClues<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">GameWorld<\/span><span class=\"p\">.<\/span><span class=\"nx\">generateGeminiRiddleClues<\/span><span class=\"p\">(<\/span><span class=\"nx\">tilePosition<\/span><span class=\"p\">)<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">      <\/span><span class=\"nx\">place<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">randomPosition<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">      <\/span><span class=\"nx\">clues<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">riddleClues<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">  <\/span><span class=\"p\">}<\/span>\n<\/pre>\n<\/div>\n<\/div>\n<div>\n<p data-block-key=\"3712d\">The output of the algorithm was easy textual content like:<\/p>\n<p>1. Instantly beneath a wall.<\/p>\n<p data-block-key=\"1b7fm\">2. Precisely 2 tiles away from a rainbow node.<\/p>\n<p data-block-key=\"dme11\">3. Within the first sector.<\/p>\n<h3 data-block-key=\"5rrr0\"><b><br \/>Gemini riddle creation<\/b><\/h3>\n<p data-block-key=\"6gmoa\">With a constant construction for the immediate to be generated, we then turned to the Gemini API to create a riddle that cryptically described the key tile\u2019s location. By prompting Gemini with the required context and constraints, we had been in a position to create participating and difficult riddles that had been constantly formatted in a manner our entrance finish utility might show them to customers.<\/p>\n<\/div>\n<div>\n<div class=\"highlight\">\n<pre class=\"javascript\"><span\/><span class=\"c1\">\/\/ Construct a immediate based mostly on the tile place. We all the time output 3 guidelines on this order:<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/ Clue 1. The kind of one adjoining tile to the key location<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/ Clue 2. The sector which accommodates the key location<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/ Clue 3. The closest coloration node to the key location, and precisely what number of tiles away it's.<\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">generateGeminiRiddleClues<\/span><span class=\"p\">(<\/span><span class=\"nx\">tilePosition<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">adjacentTiles<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">GameWorld<\/span><span class=\"p\">.<\/span><span class=\"nx\">getAdjacentTiles<\/span><span class=\"p\">(<\/span><span class=\"nx\">tilePosition<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"c1\">\/\/ Get the left, proper, prime and backside neighboring tiles<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">locationSector<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">GameWorld<\/span><span class=\"p\">.<\/span><span class=\"nx\">getTileSector<\/span><span class=\"p\">(<\/span><span class=\"nx\">tilePosition<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"c1\">\/\/ get the \"sector\" of the tile. Ranges are divided in sectors or 'chunks' by the extent designer.<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">nodeTiles<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">GameWorld<\/span><span class=\"p\">.<\/span><span class=\"nx\">getAllNodeTiles<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"c1\">\/\/ get each 'Node' tile within the stage<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/ clue 1<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">randomAdjacentTile<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">adjacentTiles<\/span><span class=\"p\">[<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">floor<\/span><span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">random<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"nx\">adjacentTiles<\/span><span class=\"p\">.<\/span><span class=\"nx\">length<\/span><span class=\"p\">)]<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">course<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">GameWorld<\/span><span class=\"p\">.<\/span><span class=\"nx\">getDirection<\/span><span class=\"p\">(<\/span><span class=\"nx\">randomAdjacentTile<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">tilePosition<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">randomTileType<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">randomAdjacentTile<\/span><span class=\"p\">.<\/span><span class=\"nx\">sort<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">firstClue<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"sb\">`Instantly <\/span><span class=\"si\">${<\/span><span class=\"nx\">course<\/span><span class=\"si\">}<\/span><span class=\"sb\"> a <\/span><span class=\"si\">${<\/span><span class=\"nx\">randomTileType<\/span><span class=\"si\">}<\/span><span class=\"sb\"> tile`<\/span><span class=\"w\"> <\/span><span class=\"c1\">\/\/ e.g. \"Instantly above a wall tile\"<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/ clue 2<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">secondClue<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"sb\">`In sector <\/span><span class=\"si\">${<\/span><span class=\"nx\">locationSector<\/span><span class=\"si\">}<\/span><span class=\"sb\">`<\/span><span class=\"w\"> <\/span><span class=\"c1\">\/\/ e.g. \"In sector 3\"<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/ clue 3<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">closestNode<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">nodeTiles<\/span><span class=\"p\">.<\/span><span class=\"nx\">scale back<\/span><span class=\"p\">((<\/span><span class=\"nx\">closest<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">node<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">=&gt;<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">      <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">distance<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">GameWorld<\/span><span class=\"p\">.<\/span><span class=\"nx\">getDistance<\/span><span class=\"p\">(<\/span><span class=\"nx\">node<\/span><span class=\"p\">.<\/span><span class=\"nx\">place<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">tilePosition<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">      <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">distance<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"nx\">closest<\/span><span class=\"p\">.<\/span><span class=\"nx\">distance<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"nx\">node<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">distance<\/span><span class=\"p\">}<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">      <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"nx\">closest<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">},<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"nx\">node<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">null<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">distance<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">Infinity<\/span><span class=\"p\">})<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"kd\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">thirdClue<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">Precisely<\/span><span class=\"w\"> <\/span><span class=\"nx\">$<\/span><span class=\"p\">{<\/span><span class=\"nx\">distance<\/span><span class=\"p\">}<\/span><span class=\"w\"> <\/span><span class=\"nx\">tiles<\/span><span class=\"w\"> <\/span><span class=\"nx\">away<\/span><span class=\"w\"> <\/span><span class=\"kr\">from<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">$<\/span><span class=\"p\">{<\/span><span class=\"nx\">closestNode<\/span><span class=\"p\">.<\/span><span class=\"nx\">node<\/span><span class=\"p\">.<\/span><span class=\"nx\">coloration<\/span><span class=\"p\">}<\/span><span class=\"w\"> <\/span><span class=\"nx\">node<\/span><span class=\"sb\">`<\/span>\n\n\n<span class=\"sb\">    const clues = `<\/span><span class=\"mf\">1.<\/span><span class=\"w\"> <\/span><span class=\"nx\">$<\/span><span class=\"p\">{<\/span><span class=\"nx\">firstClue<\/span><span class=\"p\">}.<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.<\/span><span class=\"w\"> <\/span><span class=\"nx\">$<\/span><span class=\"p\">{<\/span><span class=\"nx\">secondClue<\/span><span class=\"p\">}.<\/span><span class=\"w\"> <\/span><span class=\"mf\">3.<\/span><span class=\"w\"> <\/span><span class=\"nx\">$<\/span><span class=\"p\">{<\/span><span class=\"nx\">thirdClue<\/span><span class=\"p\">}.<\/span><span class=\"sb\">`<\/span>\n\n\n<span class=\"sb\">    return clues<\/span>\n<span class=\"sb\">  }<\/span>\n<\/pre>\n<\/div>\n<\/div>\n<div>\n<p data-block-key=\"3712d\">The ensuing riddle was then:<\/p>\n<p data-block-key=\"ejj06\"><i>I stand immediately beneath a wall so excessive,<\/i><\/p>\n<p data-block-key=\"769f1\"><i>Two tiles from a rainbow node, I lie.<\/i><\/p>\n<p data-block-key=\"1k12i\"><i>Inside the first sector, my place you will see,<\/i><\/p>\n<p data-block-key=\"73vvu\"><i>Remedy this and declare the token&#8217;s victory.<\/i><\/p>\n<h3 data-block-key=\"5l0g\"><b><br \/>Why riddles?<\/b><\/h3>\n<p data-block-key=\"3e01o\">Riddles are inherently cryptic and enjoyable, plus a level of ambiguity is anticipated. This allowed us to embrace the occasional &#8220;pink herring&#8221; or surprising flip of phrase that may come up from AI generated output. Moreover, riddles have interaction gamers&#8217; reasoning expertise, encouraging them to assume creatively and apply their data of the sport&#8217;s guidelines, analyzing the structure of the board as they seek for the hidden tile.<\/p>\n<h3 data-block-key=\"9dafn\"><b><br \/>Guaranteeing consistency in LLM generated output with System Directions<\/b><\/h3>\n<p data-block-key=\"c0eeb\">Working with AI comes with its personal set of challenges. Probably the most vital is the tendency for AI to &#8220;hallucinate&#8221; or deviate from supplied guidelines. We mitigated this threat by programmatically producing a immediate, offering examples and an outlined JSON output within the System Directions for the immediate:<\/p>\n<\/div>\n<div>\n<div class=\"highlight\">\n<pre class=\"markdown\"><span\/><span class=\"gs\">**Essential Directions:**<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">-<\/span><span class=\"w\"> <\/span>Reply <span class=\"gs\">**solely**<\/span> with the JSON object within the actual format specified.\n<span class=\"w\">        <\/span><span class=\"k\">-<\/span><span class=\"w\"> <\/span>Do <span class=\"gs\">**not**<\/span> embrace any explanations, code blocks, or extra textual content.\n<span class=\"w\">        <\/span><span class=\"k\">-<\/span><span class=\"w\"> <\/span>Do <span class=\"gs\">**not**<\/span> enclose the JSON in triple backticks or any markdown formatting.\n<span class=\"w\">        <\/span><span class=\"k\">-<\/span><span class=\"w\"> <\/span>Guarantee all strings within the JSON are correctly escaped.\n<span class=\"w\">        <\/span><span class=\"k\">-<\/span><span class=\"w\"> <\/span>Escape particular characters like newlines (<span class=\"sb\">`n`<\/span>), tabs (<span class=\"sb\">`t`<\/span>), and citation marks (<span class=\"sb\">`\"`<\/span>) inside strings.\n<span class=\"w\">        <\/span><span class=\"k\">-<\/span><span class=\"w\"> <\/span>Don't use single quotes; use double quotes for all JSON keys and string values.\n<span class=\"w\">        <\/span><span class=\"k\">-<\/span><span class=\"w\"> <\/span>Make sure the JSON is legitimate and parsable.\n<\/pre>\n<\/div>\n<\/div>\n<div>\n<p data-block-key=\"3712d\">We additionally leaned into the human capability for reasoning. Gamers are adept at decoding and deciphering cryptic clues. By creating riddles that required logical deduction, we empowered gamers to beat any potential inconsistencies in AI output. Finally, it was about discovering the precise stability between AI-generated content material and human ingenuity.<\/p>\n<h2 data-block-key=\"bttp0\"><b><br \/><\/b>Construct with the Gemini API in your apps as we speak<\/h2>\n<p data-block-key=\"1l5jj\">This yr marked a milestone: the primary Google I\/O puzzle that includes the Gemini API. For our design and engineering groups, it was extra than simply integration\u2014it was a considerate exploration into a brand new period of collaborative creation with AI. We weren&#8217;t simply constructing a characteristic; we had been pioneering a brand new strategy to interactive experiences. As you think about bringing the Gemini API into your individual tasks, keep in mind these three key classes in figuring out your strategy:<\/p>\n<ul>\n<li data-block-key=\"5d8vg\"><b>Creativity:<\/b> Leverage AI in your merchandise for dynamic content material technology, scalability, and automation in methods you haven\u2019t been in a position to earlier than.<\/li>\n<\/ul>\n<ul>\n<li data-block-key=\"cpvsf\"><b>Design:<\/b> Check writing efficient prompts and create prototypes in <a rel=\"nofollow\" target=\"_blank\" href=\"https:\/\/aistudio.google.com\/\">Google AI Studio<\/a> to check your outcomes with completely different Gemini fashions and capabilities.<\/li>\n<\/ul>\n<ul>\n<li data-block-key=\"fko1a\"><b>Implementation:<\/b> Write detailed System Directions to outline output format with examples of your required mannequin response to make your output extra structured and constant in a manner your utility can interpret.<\/li>\n<\/ul>\n<p data-block-key=\"349jt\">AI is altering how customers work together with our apps and video games, opening doorways to new and thrilling consumer experiences.<\/p>\n<p data-block-key=\"dup1s\"><b>Be part of us on-line for<\/b> <a rel=\"nofollow\" target=\"_blank\" href=\"https:\/\/io.google\/2025\/register\/?utm_source=blogpost&amp;utm_medium=pr&amp;utm_campaign=puzzle&amp;utm_content=\"><b>Google I\/O<\/b><\/a><b> Could 20-21<\/b>, for this yr\u2019s thrilling bulletins streaming stay from Shoreline Amphitheatre in Mountain View. We encourage you to experiment with Gemini and discover its potential to create extra useful and enjoyable experiences on your customers; the probabilities are infinite.<\/p>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Cracking the code This yr\u2019s Google I\/O puzzle challenges gamers to control mild and coloration by prisms to unlock sectors of the sport world. Past the core sport loop, a brand new dimension was added to the gameplay\u2013bonus worlds hidden behind riddles generated with the Gemini API. This weblog will overview how we constructed it! [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":468,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[56],"tags":[293,295,81,296,292,294],"class_list":["post-466","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software","tag-bonus","tag-gemini","tag-google","tag-puzzle","tag-unlocking","tag-worlds"],"_links":{"self":[{"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/posts\/466","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=466"}],"version-history":[{"count":1,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/posts\/466\/revisions"}],"predecessor-version":[{"id":467,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/posts\/466\/revisions\/467"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/media\/468"}],"wp:attachment":[{"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=466"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=466"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=466"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}<!-- This website is optimized by Airlift. Learn more: https://airlift.net. Template:. Learn more: https://airlift.net. Template: 69d9690a190636c2e0989534. Config Timestamp: 2026-04-10 21:18:02 UTC, Cached Timestamp: 2026-06-13 15:16:09 UTC -->