Gemini CLI की मदद से, मैच 3 आर्केड गेम बनाना

1. परिचय

इस कोडलैब में, Gemini 3 और Gemini CLI का इस्तेमाल करके, मैच 3 आर्केड गेम CloudCrush बनाया जाएगा. Gemini CLI, कमांड लाइन कोडिंग एजेंट है. इस गेम को Go में लिखा जाएगा और Cloud Run का इस्तेमाल करके, Google Cloud पर डिप्लॉय किया जाएगा.

इस कोडलैब का मुख्य मकसद, एजेंट को इस तरह से व्यवस्थित करने की स्किल डेवलप करना है कि वह आपके लिए ऐप्लिकेशन बना सके. इसके लिए, आपको मैन्युअल तरीके से कोड लिखने की ज़रूरत न पड़े. आपको डेवलपमेंट से जुड़े सभी टास्क, Gemini CLI को सौंपने होंगे. भले ही, आपने पहले इन टेक्नोलॉजी का इस्तेमाल न किया हो.

यह कोडलैब, उन डेवलपर के लिए है जिन्हें एजेंटिक कोडिंग वर्कफ़्लो के बारे में जानना है. इस लैब को पूरा करने में 60 मिनट लग सकते हैं. इस कोडलैब में बनाए गए रिसॉर्स के लिए, इस्तेमाल के हिसाब से कीमत तय की जाती है.

आपको क्या करना होगा

  • Go और Ebitengine फ़्रेमवर्क का इस्तेमाल करके, मैच-3 गेम की मुख्य लॉजिक बनाएं.
  • WebAssembly (WASM) का इस्तेमाल करके, गेम को वेब ब्राउज़र पर चलाने के लिए अडैप्ट करना
  • गेम और उसके हाई-स्कोर एपीआई को Cloud Run पर डिप्लॉय करें.
  • टेस्टिंग और कोड की समीक्षा के लिए, खास सब-एजेंट और एक्सटेंशन को व्यवस्थित करना

ज़रूरी शर्तें

  • प्रोग्रामिंग भाषाओं की बुनियादी जानकारी
  • क्लाउड इन्फ़्रास्ट्रक्चर की बुनियादी जानकारी
  • Google Cloud Console की बुनियादी जानकारी

आपको क्या सीखने को मिलेगा

  • मुश्किल ऐप्लिकेशन बनाने के लिए, कोडिंग एजेंट के साथ काम करने का तरीका
  • अलग-अलग मोड में Gemini का इस्तेमाल कैसे करें
  • Cloud Run का इस्तेमाल करके, क्लाउड पर ऐप्लिकेशन डिप्लॉय करने का तरीका

आपको किन चीज़ों की ज़रूरत होगी

इस वर्कशॉप को Cloud Shell का इस्तेमाल करके, पूरी तरह से क्लाउड पर किया जा सकता है. हालांकि, अगर आपको अपनी लोकल मशीन का इस्तेमाल करना है, तो आपको इन चीज़ों की ज़रूरत होगी:

  • Gemini CLI. इसे डाउनलोड और इंस्टॉल करने के लिए, geminicli.com पर दिए गए निर्देशों का पालन करें
  • Go टूलचेन (1.26 या इसके बाद का वर्शन). go.dev में दिए गए निर्देशों का इस्तेमाल करके, इसे डाउनलोड और इंस्टॉल करें
  • Google Cloud के साथ इंटरैक्ट करने के लिए, gcloud सीएलआई. Google Cloud के दस्तावेज़ में दिए गए निर्देशों का इस्तेमाल करके, इसे डाउनलोड और इंस्टॉल करें
  • Google Cloud बिलिंग खाता (गेम को क्लाउड पर डिप्लॉय करने के लिए)

मुख्य टेक्नोलॉजी

हम जिन टेक्नोलॉजी का इस्तेमाल करेंगे उनके बारे में ज़्यादा जानकारी यहां दी गई है:

  • Gemini CLI: डेवलपमेंट एजेंट
  • Gemini 3: यह हमारे फ़्रंटियर लार्ज लैंग्वेज मॉडल का नया वर्शन है

2. एनवायरमेंट सेटअप करना

प्रोजेक्ट सेटअप करना

Google Cloud प्रोजेक्ट बनाना

  1. Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर, Google Cloud प्रोजेक्ट चुनें या बनाएं.
  2. पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग चालू हो. किसी प्रोजेक्ट के लिए बिलिंग चालू है या नहीं, यह देखने का तरीका जानें.

Cloud Shell शुरू करना

Cloud Shell, Google Cloud में चलने वाला एक कमांड-लाइन एनवायरमेंट है. इसमें ज़रूरी टूल पहले से लोड होते हैं.

  1. Google Cloud कंसोल में सबसे ऊपर मौजूद, Cloud Shell चालू करें पर क्लिक करें.
  2. Cloud Shell से कनेक्ट होने के बाद, अपने क्रेडेंशियल की पुष्टि करें:
    gcloud auth list
    
  3. पुष्टि करें कि आपका प्रोजेक्ट कॉन्फ़िगर किया गया है:
    gcloud config get project
    
  4. अगर आपका प्रोजेक्ट उम्मीद के मुताबिक सेट नहीं है, तो इसे सेट करें:
    export PROJECT_ID=<YOUR_PROJECT_ID>
    gcloud config set project $PROJECT_ID
    

3. प्रोजेक्ट सेटअप करना

प्रोजेक्ट डायरेक्ट्री बनाना

सबसे पहले, हमें आपके प्रोजेक्ट के लिए एक नई डायरेक्ट्री बनानी होगी. अपने टर्मिनल में, ये कमांड चलाएं:

mkdir -p codelab-match3 && cd codelab-match3

Gemini CLI लॉन्च करना

सबसे पहले, यह देख लेते हैं कि Gemini CLI को सही तरीके से इंस्टॉल किया गया है या नहीं. अपने टर्मिनल में यह कमांड चलाएं:

gemini --version

आपको कुछ ऐसा दिखेगा:

$ gemini --version
0.37.1

अब gemini कमांड का इस्तेमाल करके, Gemini CLI लॉन्च करें:

gemini

आपको Gemini CLI का प्रॉम्प्ट दिखेगा:

b9f33e9786c58b61.png

अगर आपको Gemini CLI का प्रॉम्प्ट दिख रहा है, तो इसका मतलब है कि आपने इसे सही तरीके से सेट अप कर लिया है. अगर आपको प्रॉम्प्ट नहीं दिख रहा है, तो दोबारा जांच करें कि आपने सेट अप करने के पिछले चरणों में से कोई चरण नहीं छोड़ा हो.

मॉडल स्टीयरिंग की सुविधा चालू करना

मॉडल स्टीयरिंग एक ऐसी सुविधा है जिसकी मदद से, एजेंट को किसी टास्क पर काम करते समय अतिरिक्त कॉन्टेक्स्ट दिया जा सकता है. इसका इस्तेमाल, एजेंट को सही दिशा में ले जाने के लिए किया जा सकता है. ऐसा तब करें, जब आपको लगे कि एजेंट गलत दिशा में जा रहा है. साथ ही, एजेंट के जवाब को बेहतर बनाने के लिए, इसमें ज़्यादा जानकारी जोड़ी जा सकती है. इसके अलावा, इसमें ऐसी छोटी-छोटी सुविधाएं भी शामिल की जा सकती हैं जो ओरिजनल प्रॉम्प्ट में शामिल नहीं की गई थीं.

मॉडल स्टीयरिंग की सुविधा चालू करने के लिए, /settings कमांड का इस्तेमाल करके सेटिंग मेन्यू खोलें. इसके बाद, खोज बॉक्स में "स्टीयरिंग" टाइप करें. इसके बाद, 'मॉडल स्टीयरिंग की सुविधा चालू करें' विकल्प को 'सही' पर सेट करें.

8ed164e05654a79.png

बदलाव को लागू करने के लिए, आपको सीएलआई को रीस्टार्ट करना पड़ सकता है. इसके लिए, "r" कुंजी दबाएं.

ऐसेट डाउनलोड करना

हमें उन इमेज को डाउनलोड करना होगा जिनका इस्तेमाल गेम में किया जाएगा. ये फ़ाइलें, GitHub पर इस रिपॉज़िटरी में सेव की जाती हैं: यहां. इन्हें मैन्युअल तरीके से डाउनलोड किया जा सकता है. इसके अलावा, Gemini से इन्हें डाउनलोड करने के लिए कहा जा सकता है. इसके लिए, यह प्रॉम्प्ट इस्तेमाल करें:

Create a folder named "assets" and download the images
background.png, gcp_sprites.png, gemini.png and logo.png,
from this GitHub repository to the "assets" folder:
https://github.com/GoogleCloudPlatform/devrel-demos/tree/main/codelabs/gemini-cli/gemini-cli-match3-golang

4. प्लान मोड और मॉडल स्टीयरिंग की मदद से गेम बनाना

सबसे पहले, मैच-3 गेम के मुख्य लॉजिक को बनाएं. यह एक मुश्किल टास्क है. इसलिए, डेवलपमेंट को व्यवस्थित करने के लिए, प्लान मोड में Gemini CLI का इस्तेमाल करना सबसे अच्छा होता है.

Gemini CLI प्रॉम्प्ट में, स्लैश कमांड /plan का इस्तेमाल करके प्लान मोड को टॉगल करें:

/plan

प्लान मोड चालू होने पर, इस प्रॉम्प्ट को कॉपी करके Gemini CLI में चिपकाएँ:

Build a Match-3 game called 'Cloud Crush' in Go using Ebitengine v2.
The entire game screen should have background.png as background.
The play area should be an 8x8 grid with white background. 
On the right side of the play area include a side panel with UI elements 
like player score and how to play instructions.
The side panel should have a solid background colour to help with readability of the UI.

Use standard GCP product logos (e.g. Compute Engine, Cloud Storage, BigQuery, etc.)
as icons. These icons are provided in the gcp_sprites.png file.

The icons are saved as 64x64 sprites but scale them as necessary
based on the screen resolution. Implement swapping, clearing 3+ gems, and gravity.

Use ebitengine native font rendering (size 48 for titles and size
24 for normal text) for all text and not the debug print.

The font should be monospaced (golang.org/x/image/font/gofont/gomono).
Keep the UI tidy and harmonic, e.g. centered text should always be
adjusted based on text length, not just guess based on estimates.

प्लान जनरेट करने से पहले, Gemini CLI आपसे कुछ सवाल पूछ सकता है.

उदाहरण के लिए, यहां पूछा जा रहा है कि आपको एक फ़ाइल वाला ऐप्लिकेशन चाहिए या कई फ़ाइलों वाला:

ba0d58fecaef343b.png

यहां यह ऐनिमेशन के लिए हमारी प्राथमिकताओं के बारे में पूछ रहा है:

432cbe7c747b2f3.png

आखिरी सवाल, go:embed की मदद से ऐसेट को बाइनरी में एम्बेड करने के बारे में है:

98ae4d6786d24c9b.png

सभी सवालों के जवाब देने के बाद, आपको उन्हें सबमिट करने से पहले एक बार फिर से देखने का विकल्प मिलता है.

47c44052fafdc1bf.png

प्लान पूरा हो जाने के बाद, आपको इसकी समीक्षा करने के लिए कहा जाएगा:

5e474a04a060d28b.png

समीक्षा बॉक्स में सबसे नीचे, आपके पास प्लान को स्वीकार करने या हमें सुझाव देने का विकल्प होता है.

b0ad1350cd1ae6c5.png

इस अवसर का इस्तेमाल करके, ऐसी नई ज़रूरी जानकारी जोड़ें जो ओरिजनल प्रॉम्प्ट में शामिल नहीं की गई थी:

Add a 60-seconds countdown timer and an in-memory high-score tracker
to enhance the arcade game experience.
Combos should give a score bonus of 10% per combo number.

आपको लागू करने के प्लान की पुष्टि करने के लिए, आखिरी बार यह मैसेज दिखेगा:

2f52c3c43efafd0e.png

एजेंट को काम शुरू करने के लिए, Enter दबाएं. इसके बाद, एजेंट प्लान मोड से बाहर निकल जाएगा और कोड लिखना शुरू कर देगा.

इस समय, आम तौर पर हमें इसके पूरा होने का इंतज़ार करना पड़ता है. अगर हमें लागू करने के तरीके में बदलाव करना है, तो हमें ESC कुंजी का इस्तेमाल करके इसे रोकना पड़ता है. हालांकि, मॉडल स्टीयरिंग की सुविधा चालू होने की वजह से, हम मॉडल को सही करने के लिए निर्देशों को लाइन में लगा सकते हैं.

जब एजेंट काम कर रहा हो, तब एजेंट की चैट विंडो में यह जानकारी चिपकाएं. इससे "मॉडल स्टीयरिंग" की सुविधा के बारे में पता चलेगा. साथ ही, यह भी पता चलेगा कि लागू करने के तरीके को बदलने के लिए, कमांड को कैसे लाइन में लगाया जा सकता है:

Update the implementation to include: 'Q' to quit, 'F' for full-screen
and 'A' for Accessibility Mode: swap GCP logos for high-contrast coloured blocks.

Also enable Arrow Keys to move the selection cursor and Space to select the gem to 
swap (space is pressed once to select, then arrow key immediately makes 
the move - no need to press space again).

Use a golden square (4 px border, transparent fill) with a simple animation
to highlight where the cursor is at the moment.

आपको दिखेगा कि इस प्रॉम्प्ट को "स्टीयरिंग हिंट" के तौर पर कतार में रखा गया है:

75652d5d67e247b3.png

प्लान स्वीकार करें और एजेंट को अपनी सभी ज़रूरी शर्तों को पूरा करते हुए देखें.

जब एजेंट लागू करने की प्रोसेस पूरी कर ले, तब डेस्कटॉप वर्शन का डेमो देने के लिए, प्रोजेक्ट फ़ोल्डर पर go run main.go चलाएं. इस कमांड को चलाने के लिए, आपको Gemini CLI छोड़ने की ज़रूरत नहीं है. ! टाइप करें (विस्मयादिबोधक चिह्न) का इस्तेमाल करके शेल मोड में जाएं और वहां से कमांड चलाएं:

a2ead65c4efe9d52.png

शेल मोड से चलाने का फ़ायदा यह है कि इससे होने वाली किसी भी समस्या को एजेंट के कॉन्टेक्स्ट में तुरंत कैप्चर कर लिया जाता है. उदाहरण के लिए, इस मामले में एजेंट कुछ डिपेंडेंसी डाउनलोड करना भूल गया:

c7caf0bc02bc29ce.png

एस्केप बटन दबाकर, शेल मोड से बाहर निकला जा सकता है. इसके बाद, एजेंट से गड़बड़ी की जांच करने और उसे ठीक करने के लिए कहा जा सकता है:

ef1773f2efffe886.png

सफल नतीजे कुछ इस तरह दिखने चाहिए:

2f69de852e625951.png

गेम खेलें और गेम के पैरामीटर को तब तक बेहतर बनाएं, जब तक आपको गेम खेलने का अच्छा अनुभव न मिले. उदाहरण के लिए, ऐनिमेशन को तेज़ या धीमा करना, निर्देशों के हिसाब से जवाब देने की सुविधा को अडजस्ट करना वगैरह.

5. गेम को वेब ब्राउज़र पर चलाने के लिए अडैप्ट करना

आपने अभी-अभी जो Ebitengine गेम बनाया है वह एक डेस्कटॉप ऐप्लिकेशन है. इसे वेब पर चलाने के लिए, हम इसे WebAssembly में बदल सकते हैं.

एजेंट को निर्देश देने के लिए, इस प्रॉम्प्ट का इस्तेमाल करें:

We need to enable this game to run on a web browser. Compile the game to WASM
and create a Go web server to serve the compiled WASM and the assets.

एजेंट के टास्क पूरा करने के बाद, एजेंट को बैकग्राउंड में गेम सर्वर चलाने का निर्देश दिया जा सकता है.

880f19b60981d191.png

Ctrl+B कीबोर्ड शॉर्टकट का इस्तेमाल करके, बैकग्राउंड प्रोसेस मैनेज की जा सकती हैं:

b72391e3963db37b.png

इस विंडो को बंद करने के लिए, Ctrl+B को फिर से दबाएं.

अब वेब पर गेम चलाने के लिए, अपने ब्राउज़र में http://localhost:8080 खोलें:

909e328eb1771bb4.png

अब जब आपने इसे वेब पर चला लिया है, तो इसे क्लाउड पर डिप्लॉय करने से पहले, इसे फ़ाइनल रूप दें.

6. टाइटल स्क्रीन और लीडरबोर्ड बनाना

यह गेम काम करता है, लेकिन इसमें आर्केड गेम का सही अनुभव देने के लिए कुछ ज़रूरी सुविधाएं मौजूद नहीं हैं. सबसे पहले, टाइटल स्क्रीन जोड़ते हैं. इसके बाद, लीडरबोर्ड जोड़ते हैं, ताकि आप अपने दोस्तों के साथ मुकाबला कर सकें!

नीचे दिए गए प्रॉम्प्ट का इस्तेमाल करके, दोनों समस्याएं ठीक करें:

Create a title screen that displays the game logo (logo.png) over the cloud background.
The logo should be centered and occupy no more than 75% of the screen area.
The title screen should display "Press ENTER to play" (black/bold) right below the logo,
with every letter animated in a slow wavy (cosine) pattern.
Once the player presses ENTER, it should be prompted to add their name, which 
will then be recorded to populate the leaderboard at the end of the round.

Once the game is over, play the animated leaderboard with the top 10 highest scores.
The animated leaderboard should render entries one by one up to 10 entries, 
using a fade in effect just like old school arcade games. The leaderboard
should fade out to the title screen after 15 seconds.

Please note that name entry should be processed independently of the play state
key handlers (e.g. pressing A during name entry should not toggle accessibility mode).

यहाँ टाइटल स्क्रीन का एक उदाहरण दिया गया है:

8babe90fc0d1079f.png

यह अब थोड़ा ज़्यादा प्रोफ़ेशनल लग रहा है! 🙂

7. गेम को Cloud Run पर डिप्लॉय करना

अब समय आ गया है कि हम अपनी इस क्रिएशन को दुनिया के साथ शेयर करें! गेम को Google Cloud Run पर डिप्लॉय करें, ताकि इसे कहीं से भी ऐक्सेस किया जा सके.

Use the gcloud CLI to provision and deploy the Go web server and its assets to
Google Cloud Run. Provide the live URL when complete.

गेम अब क्लाउड पर लाइव है. इसलिए, इसे मोबाइल डिवाइसों पर चलाने की अनुमति न देना एक अच्छा मौका गंवाने जैसा होगा. इसके लिए, यह प्रॉम्प्ट इस्तेमाल करें:

Now enable this game to run on mobile devices. You need to update the input
system to handle "taps" as well as key presses and clicks. Since mobile devices
most likely won't have a keyboard, add a button to generate a random name and
a confirmation button to the name entry.

Also generate a QR code for the CloudRun link and display it on the screen so
that people can scan it to access the mobile version and compete against their
friends for the high score.

अपने ब्राउज़र पर गेम को फिर से चलाएं. क्यूआर कोड का इस्तेमाल करके, किसी फ़ोन या टैबलेट से भी गेम को ऐक्सेस करने की कोशिश करें.

8. गेम की जांच करने के लिए, ब्राउज़र एजेंट का इस्तेमाल करना

Gemini CLI में, सब-एजेंट एक अलग पर्सोना होता है, जिसमें नया कॉन्टेक्स्ट होता है. यह लंबे समय तक चलने वाले और/या ज़्यादा सटीक कामों के लिए सबसे सही होता है. इन कामों में, आपको मौजूदा कॉन्टेक्स्ट से नतीजों पर असर नहीं पड़ने देना होता है.

गेम को आम तौर पर इस्तेमाल किए जाने वाले टेस्टिंग टूल (जैसे, यूनिट और इंटिग्रेशन टेस्ट) से टेस्ट करना मुश्किल होता है. हालांकि, हम ब्राउज़र एजेंट का इस्तेमाल करके कुछ टेस्टिंग कर सकते हैं. ब्राउज़र एजेंट, अपना Chrome ब्राउज़र लॉन्च कर सकता है. साथ ही, वह DOM कमांड जारी करके गेम की स्क्रीन पर नेविगेट करेगा. इसमें स्क्रीनशॉट लेने की सुविधा भी है. इसका इस्तेमाल हम टेस्ट को रिकॉर्ड करने के लिए कर सकते हैं. साथ ही, हम इसे एजेंट को वापस भेज सकते हैं, ताकि वह बाद में यूज़र इंटरफ़ेस (यूआई) में मामूली बदलाव कर सके.

फ़िलहाल, ब्राउज़र एजेंट की सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. इसलिए, हमें इसे पहले चालू करना होगा. प्रोजेक्ट लेवल पर एजेंट को चालू करने के लिए, Gemini CLI को यह प्रॉम्प्ट दें.

Create a .gemini/settings.json file with the following content to
configure the browser sub agent:

{
  "agents": {
    "overrides": {
      "browser_agent": {
        "enabled": true
      }
    }
  }
}

इस बदलाव को लागू करने के लिए, आपको एजेंट को रीस्टार्ट करना होगा. /chat save कमांड का इस्तेमाल करके, मौजूदा बातचीत को सेव करें:

3a3ae7e3c610614b.png

Gemini CLI को बंद करने के लिए, Ctrl+D को दो बार दबाएं. इसके बाद, इसे फिर से शुरू करें. /chat resume cloud-crush के साथ हुई बातचीत को पहले जैसा करें.

अब आपके पास ब्राउज़र एजेंट का ऐक्सेस होना चाहिए. जब भी आपको ब्राउज़र एजेंट को कोई टास्क सौंपना हो, तो @browser_agent के साथ उसका ज़िक्र करें:

977af2400fdd6ae7.png

अब ब्राउज़र एजेंट का इस्तेमाल करके, डिप्लॉय किए गए हमारे गेम का आकलन करें:

@browser_agent perform an end-to-end test of the Cloud Run deployment URL.
Navigate the homepage, start a game, submit a score, and verify the new score 
appears correctly on the leaderboard. Take screenshots to show each step of the 
investigation and save to ./screenshots.

आपको पुष्टि करने वाली स्क्रीन दिखेगी:

3af4096f5d903115.png

एजेंट और ज़रूरी टूल को सहमति देने के बाद, Chrome ब्राउज़र की एक नई विंडो खुलनी चाहिए. यह एजेंट के कंट्रोल वाला ब्राउज़र है. स्क्रीन पर नीले रंग का बॉर्डर दिखेगा. साथ ही, सबसे नीचे यह मैसेज दिखेगा: "Gemini CLI इस ब्राउज़र को कंट्रोल कर रहा है":

ddfaed4cd8fe3a80.png

जब यह प्रोसेस पूरी हो जाएगी, तो आपको इस तरह का मैसेज दिखेगा:

d69a9241ae8a9b71.png

यहां ब्राउज़र एजेंट के लिए गए कुछ स्क्रीनशॉट दिए गए हैं:

title_screen.png:

fb0a1b38b05e104f.png

game_board.png:

2ef025b6130c31.png

अब एजेंट की ली गई किसी इमेज का इस्तेमाल करके, गेम के यूज़र इंटरफ़ेस (यूआई) को ऑप्टिमाइज़ किया जा सकता है. उदाहरण के लिए, आप कह सकते हैं:

Analyse the screenshot @screenshots/game_board.png and adjust the side panel to
have better contrast and be more harmonic with the rest of UI elements. Focus
on readability and color theory to achieve the best possible visuals.

9. गेम को सुरक्षित रखने के लिए, पसंद के मुताबिक एजेंट बनाना

"वाइब-कोडेड" ऐप्लिकेशन के बारे में एक आम चिंता यह है कि कोडिंग और सुरक्षा, दोनों के नज़रिए से अच्छी क्वालिटी और सबसे सही तरीकों को कैसे बनाए रखा जाए. इन दोनों पहलुओं पर ज़्यादा ध्यान देने के लिए, अपने प्रॉम्प्ट को बेहतर बनाया जा सकता है. हालांकि, किसी प्रॉम्प्ट में जितनी ज़्यादा जानकारी जोड़ी जाएगी, एजेंट का फ़ोकस उतना ही कम होगा. इससे अक्सर, उम्मीद के मुताबिक नतीजे नहीं मिलते. इस तरह के उदाहरण के लिए, सब-एजेंट का इस्तेमाल करना सबसे सही होता है. ऐसा इसलिए, क्योंकि ये मुख्य एजेंट से अलग कॉन्टेक्स्ट पर काम करते हैं. साथ ही, इन्हें सिर्फ़ वही काम दिया जाता है जो आपने इन्हें सौंपा है. आइए, इस कोड का सुरक्षा ऑडिट करने के लिए एक कस्टम एजेंट बनाएं. इससे यह पक्का किया जा सकेगा कि हम Cloud Run पर इस गेम को डिप्लॉय करते समय, किसी भी क्रेडेंशियल को लीक न करें या खुद को गैर-ज़रूरी जोखिम में न डालें.

Create a new custom agent in .gemini/agents/security_auditor.md using the following content:

---
name: security_auditor
description: Specialized in finding security vulnerabilities in code.
kind: local
tools:
  - read_file
  - grep_search
model: gemini-3-flash-preview
temperature: 0.2
max_turns: 10
---

You are a ruthless Security Auditor. Your job is to analyze code for potential
vulnerabilities.

Focus on:

1.  SQL Injection
2.  XSS (Cross-Site Scripting)
3.  Hardcoded credentials
4.  Unsafe file operations

When you find a vulnerability, explain it clearly and suggest a fix. Do not fix
it yourself; just report it.

बदलाव को लागू करने के लिए, आपको सीएलआई को रीस्टार्ट करना होगा. /chat save के साथ चैट सेशन को सेव करें और /chat resume के साथ उसे फिर से शुरू करें.

सीएलआई के फिर से शुरू होने पर, यह स्टार्टअप के दौरान नए एजेंट का अपने-आप पता लगा लेगा:

36a78465019aee07.png

Acknowledge and Enable पर क्लिक करें. इसके बाद, एजेंट से गेम कोड की सुरक्षा जांच करने के लिए कहें. इसके लिए, यह प्रॉम्प्ट इस्तेमाल करें:

@security-auditor please run a security audit on this code and cloud run 
deployment to make sure it is safe against common attack patterns and that it is 
not leaking any credentials

आपको कुछ ऐसा दिखेगा:

7dd0440a539c735a.png

ऑडिट पूरी होने के बाद, यह टूल सुझाव देगा. इस उदाहरण में, इसे ठीक करने के लिए कुछ ज़रूरी चीज़ें मिली हैं:

e6d8d7965a003c16.png

अगर आपको कोई समस्या मिलती है, तो Gemini CLI से उसे ठीक करने के लिए कहें! 🙂

10. नतीजा

बधाई हो! आपने Gemini CLI का इस्तेमाल करके, एक आर्केड गेम बनाया, डिप्लॉय किया, उसकी जांच की, और ऑडिट किया. इससे पता चलता है कि आपने शुरुआती स्केफ़ोल्डिंग से लेकर डिप्लॉयमेंट तक, एजेंटिक वर्कफ़्लो के ऐडवांस तरीके इस्तेमाल किए हैं.

क्लीन अप करें

अगर आपको इस कोडलैब पर बाद में वापस नहीं आना है, तो हमारा सुझाव है कि आप इस कोडलैब के दौरान बनाए गए संसाधनों को मिटा दें.

  1. Cloud Run सेवा मिटाएं:

Gemini CLI से इसे मिटाने के लिए कहें:

I'm finished with this project. Delete the cloud run deployment.
  1. प्रोजेक्ट डायरेक्ट्री मिटाएं:
cd .. && rm -rf codelab-match3

इसके अलावा, अगर Google Cloud प्रोजेक्ट को सिर्फ़ इस कोडलैब के लिए बनाया गया था, तो उसे मिटाया जा सकता है.

अगले चरण

इस प्लैटफ़ॉर्म पर मौजूद अन्य कोडलैब आज़माकर, अपनी सीखने की यात्रा जारी रखें. इसके अलावा, Cloud Crush को अपने हिसाब से बेहतर बनाया जा सकता है!

गेम को बेहतर बनाने के लिए कुछ सुझाव:

  • एक खास "Gemini" Gem (gemini.png का इस्तेमाल करके) जोड़ें, जो चार या इससे ज़्यादा Gem मैच होने पर दिखता है. Gemini के तीन या उससे ज़्यादा जेम मैच करने पर, खिलाड़ी को बोनस टाइम मिलता है!
  • संगीत जोड़ें. Gemini के होम पेज पर, Lyria 3 का इस्तेमाल करके संगीत जनरेट किया जा सकता है.
  • साउंड इफ़ेक्ट जोड़ना
  • गेम खेलने के अन्य मोड जोड़ना

कोडिंग करते रहें!