Tạo một trò chơi arcade ghép 3 bằng Gemini và Antigravity

1. Giới thiệu

Trong lớp học lập trình này, bạn sẽ tạo CloudCrush, một trò chơi arcade ghép 3, bằng cách sử dụng Gemini 3 và tác nhân lập trình Antigravity. Trò chơi này sẽ được viết bằng Go và triển khai trên Google Cloud bằng Cloud Run.

Xin lưu ý rằng mặc dù bạn nên có kiến thức về ngôn ngữ Go, nhưng bạn không bắt buộc phải tham gia hội thảo này vì tác nhân sẽ thực hiện tất cả hoạt động lập trình. Mục tiêu chính của lớp học lập trình này là phát triển các kỹ năng điều phối tác nhân để tạo ứng dụng cho bạn thay vì viết mã theo cách thủ công.

Lớp học lập trình này dành cho các nhà phát triển trung cấp muốn tìm hiểu quy trình làm việc nâng cao dựa trên tác nhân. Tổng thời lượng ước tính cho bài thực hành này là 60 phút. Các tài nguyên được tạo trong lớp học lập trình này sử dụng mô hình định giá dựa trên mức tiêu thụ.

Bạn sẽ thực hiện

  • Xây dựng logic cốt lõi của trò chơi ghép 3 bằng Go và khung Ebitengine.
  • Điều chỉnh trò chơi để chạy trên trình duyệt web bằng WebAssembly (WASM)
  • Triển khai trò chơi và API điểm số cao của trò chơi đó lên Cloud Run.
  • Điều phối các tiện ích và tác nhân phụ chuyên biệt để kiểm thử và xem xét mã

Điều kiện tiên quyết

  • Kiến thức cơ bản về ngôn ngữ lập trình
  • Kiến thức cơ bản về cơ sở hạ tầng đám mây
  • Kiến thức cơ bản về bảng điều khiển Google Cloud

Kiến thức bạn sẽ học được

  • Cách làm việc với tác nhân lập trình để tạo các ứng dụng phức tạp
  • Cách làm việc với Gemini trong bối cảnh đa phương thức
  • Cách triển khai ứng dụng lên đám mây bằng Cloud Run

Bạn cần có

Bạn có thể thực hiện toàn bộ hội thảo này trên đám mây bằng Cloud Shell. Tuy nhiên, nếu muốn sử dụng máy cục bộ, bạn sẽ cần những thứ sau:

  • Antigravity 2.0 và Antigravity CLI. Tải và cài đặt ứng dụng này theo hướng dẫn trên trang web antigravity.google
  • Chuỗi công cụ Go (phiên bản 1.26 trở lên). Tải xuống và cài đặt bằng cách làm theo hướng dẫn trong go.dev
  • gcloud CLI để tương tác với Google Cloud. Tải xuống và cài đặt theo hướng dẫn trong tài liệu của Google Cloud
  • Tài khoản thanh toán Google Cloud (để triển khai trò chơi lên đám mây)

Công nghệ chính

Tại đây, bạn có thể tìm thêm thông tin về các công nghệ mà chúng tôi sẽ sử dụng:

  • Antigravity CLI: tác nhân phát triển
  • Gemini 3: phiên bản mới nhất của mô hình ngôn ngữ lớn tiên tiến của chúng tôi

2. Thiết lập môi trường

Chọn một trong các lựa chọn sau: Thiết lập môi trường tự học nếu bạn muốn chạy lớp học lập trình này trên máy của riêng mình, hoặc Bắt đầu Cloud Shell nếu bạn muốn chạy hoàn toàn lớp học lập trình này trên đám mây.

Thiết lập môi trường theo tốc độ của riêng bạn

  1. Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không sử dụng. Bạn luôn có thể cập nhật thông tin này.
  • Mã dự án là mã duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là PROJECT_ID). Nếu không thích mã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có được chấp nhận hay không. Bạn không thể thay đổi tên này sau bước này và tên này sẽ tồn tại trong suốt thời gian của dự án.
  • Để bạn nắm được thông tin, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
  1. Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí trị giá 300 USD.

Khởi động Cloud Shell

Mặc dù có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên Cloud.

Trên Bảng điều khiển Google Cloud, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ ở trên cùng bên phải:

Kích hoạt Cloud Shell

Quá trình này chỉ mất vài phút để cung cấp và kết nối với môi trường. Khi quá trình này kết thúc, bạn sẽ thấy như sau:

Ảnh chụp màn hình cửa sổ dòng lệnh Google Cloud Shell cho thấy môi trường đã kết nối

Máy ảo này được trang bị tất cả các công cụ phát triển mà bạn cần. Nó cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn có thể thực hiện mọi thao tác trong lớp học lập trình này trong trình duyệt. Bạn không cần cài đặt bất cứ thứ gì.

3. Thiết lập dự án

Tạo thư mục dự án

Trước tiên, chúng ta cần tạo một thư mục mới cho dự án của bạn. Trong cửa sổ dòng lệnh, hãy chạy các lệnh sau:

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

Khởi chạy Antigravity CLI

Trước tiên, hãy kiểm tra để đảm bảo bạn đã cài đặt Antigravity CLI đúng cách. Chạy trong thiết bị đầu cuối:

agy --version

Bạn sẽ thấy như sau:

$ agy --version
1.0.2

Bây giờ, hãy chạy Antigravity CLI bằng lệnh agy:

agy

Antigravity sẽ hỏi xem bạn có tin tưởng dự án này không. Vì chúng ta vừa tạo một thư mục trống nên bạn có thể tin tưởng thư mục này. Hãy xác nhận quyền truy cập và bạn sẽ được chuyển đến dấu nhắc CLI:

da47123c5404f93e.png

Nếu bạn thấy lời nhắc Antigravity CLI, tức là bạn đã hoàn tất. Nếu không, hãy kiểm tra kỹ xem bạn có bỏ lỡ bước thiết lập nào trước đó hay không.

4. Tạo trò chơi cơ bản ở chế độ lập kế hoạch

Hãy bắt đầu bằng cách xây dựng logic cốt lõi của trò chơi Ghép 3. Theo mặc định, Antigravity bắt đầu ở chế độ lập kế hoạch, vì vậy bạn không cần đưa ra bất kỳ lệnh đặc biệt nào để chuyển sang chế độ lập kế hoạch.

Tuy nhiên, bạn nên biết rằng bạn có thể bật chế độ lập kế hoạch bất cứ lúc nào bằng lệnh dấu gạch chéo /planning trong lời nhắc CLI Antigravity:

/planning

Nếu bạn thử chạy lệnh này ngay bây giờ, Antigravity sẽ nhắc bạn rằng lệnh này đã được lên kế hoạch.

8b3d4586b1521c50.png

Chế độ đối lập với chế độ lập kế hoạch là chế độ nhanh. Bạn có thể bật chế độ này bằng /fast:

/fast

c2a0e2a24ed682cb.png

Ở chế độ nhanh, Antigravity sẽ bắt đầu thực hiện ngay nhiệm vụ và chế độ này dành cho các nhiệm vụ đơn giản, độc lập. Chế độ lập kế hoạch được thiết kế cho các nhiệm vụ phức tạp, trong đó tác nhân sẽ trình bày chi tiết kế hoạch trước. Bạn có thể xem xét và lặp lại kế hoạch này trước khi thực hiện.

Tải các thành phần xuống

Chúng ta cần tải những hình ảnh sẽ được dùng trong trò chơi xuống. Vì đây là một tác vụ nhỏ, độc lập, nên không cần chạy tác vụ này ở chế độ lập kế hoạch. Vì vậy, hãy tận dụng chế độ nhanh để thực hiện ngay:

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

Antigravity sẽ yêu cầu bạn cấp quyền chạy một số lệnh shell để tải tệp xuống. Sau khi hoàn tất, bạn sẽ thấy nội dung tương tự như sau:

de07f3310951c932.png

Tạo trò chơi cơ bản

Khi các thành phần đã sẵn sàng, giờ là lúc xây dựng trò chơi cơ bản. Vì việc xây dựng một trò chơi là một nhiệm vụ khá phức tạp, nên hãy quay lại chế độ lập kế hoạch trước khi đưa ra câu lệnh:

/planning

Ở chế độ lập kế hoạch, hãy sao chép và dán câu lệnh sau vào Antigravity 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.

Có thể nó sẽ khám phá một số thông tin trước khi đưa ra kế hoạch, chẳng hạn như kiểm tra các tệp PNG để xem kích thước của chúng. Sau khi hoàn tất kế hoạch, bạn sẽ được nhắc xem lại kế hoạch đó:

46096ce2fd4bf219.png

Vui lòng chú ý đến góc dưới cùng bên phải, nơi bạn đã viết 1 thành phần và gợi ý sử dụng /artifact để xem xét. Trong Antigravity, các tệp hỗ trợ như kế hoạch, danh sách việc cần làm và hướng dẫn được gọi là "hiện vật" để phân biệt chúng với các tệp thông thường thuộc giải pháp (ví dụ: mã nguồn).

Khi nhập lệnh /artifact vào câu lệnh, bạn sẽ thấy kế hoạch và có thể nhận xét về kế hoạch đó trong trường hợp cần điều chỉnh.

/artifact

Bạn sẽ thấy như sau:

2b5d9881a172ac7c.png

Lưu ý rằng có một tệp tên là implementation_plan.md với các lựa chọn mở, phê duyệt hoặc từ chối. Nhấn phím Enter để mở. Sau đây là ví dụ về cách gói này xuất hiện trên hệ thống của tôi:

dd8f330bc22acebe.png

Bạn có thể dùng các phím mũi tên để cuộn lên và xuống, đồng thời có thể thêm bình luận vào bất kỳ dòng nào bằng cách nhấn phím C. Trong trường hợp này, tôi không thích việc sử dụng phiên bản Go cũ, vì vậy, tôi sẽ thêm một nhận xét để sử dụng Go 1.26 (phiên bản gần đây nhất tại thời điểm viết bài này) trên dòng 16:

de728205ab017d1a.png

Sau khi bạn nhập bình luận, bình luận đó sẽ xuất hiện ở dạng nội tuyến:

891588cf4488615a.png

Một phần quan trọng cần kiểm tra là "Kế hoạch xác minh". Các trò chơi rất khó kiểm thử tự động, nhưng go là một ngôn ngữ được biên dịch, vì vậy, ít nhất chúng ta phải đảm bảo rằng mô hình đang chuyển cho chúng ta mã có biên dịch. Nếu không có bước tự động nào để tạo tệp nhị phân, hãy thêm bước đó dưới dạng một bình luận:

Một phần quan trọng cần kiểm tra là "Kế hoạch xác minh". Trò chơi là một loại ứng dụng rất khó kiểm thử tự động, nhưng go là một ngôn ngữ được biên dịch, vì vậy, ít nhất chúng ta phải đảm bảo rằng mô hình đang chuyển cho chúng ta mã có biên dịch. Nếu không có bước tự động nào để tạo tệp nhị phân, hãy thêm bước đó dưới dạng một bình luận:

ba395927ab140f17.png

Lặp lại quy trình này cho đến khi bạn hài lòng với kế hoạch và nhấn phím ESC để quay lại. Sau đó, nhấn Y để xác nhận gửi bình luận cho nhân viên hỗ trợ:

602addd55412527c.png

Sau khi bạn nhấn Y, tác nhân phần mềm sẽ bắt đầu hoạt động ngay lập tức. Bạn cần nhấn phím Esc thêm một lần nữa để thoát khỏi trình đơn "Artifact" (Hiện vật). Thao tác này sẽ đưa bạn trở lại chế độ câu lệnh. Trong khi đó, tác nhân có thể yêu cầu xác nhận nhiều lệnh gọi công cụ hơn do cần chạy các lệnh shell.

Trong lúc chờ đợi, chúng ta cũng có thể tiếp tục tạo bản thiết kế bằng cách xếp hàng các câu lệnh. Ví dụ: chúng ta có thể nhân cơ hội này để thêm một yêu cầu mới mà chúng ta đã bỏ lỡ trong câu lệnh ban đầu:

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.

Một câu lệnh được xếp hàng đợi sẽ xuất hiện trong nhật ký tin nhắn, có một mũi tên nhỏ ở phía trước:

8093d9113e14792d.png

Bạn cũng có thể nhận thấy số lượng cấu phần phần mềm đang tăng lên. Ngoài kế hoạch, Antigravity cũng sẽ tạo một danh sách việc cần làm (task.md) để theo dõi từng mục cần triển khai hoặc hành động cần thực hiện. Sau khi hoàn tất, Antigravity sẽ tạo một tệp hướng dẫn (walkthrough.md) kèm theo nội dung giải thích về các mục tiêu đã đạt được. Bạn có thể kiểm tra tất cả các thông tin này bằng cách sử dụng lại lệnh /artifact.

384ffba82817aa8d.png

Sau đây là ví dụ về tệp task.md sau khi hoàn tất quá trình triển khai trò chơi cơ bản:

5bf1f31cfef8c725.png

Bất cứ lúc nào, bạn cũng có thể mở các tệp này và thêm nhận xét vào đó. Sau khi bạn gửi cho trợ lý, các tệp này sẽ được đưa vào hàng đợi để thực thi giống như một câu lệnh trong hàng đợi. Bạn nên nhận xét về các tệp này để cung cấp thêm bối cảnh cho nhân viên hỗ trợ về yêu cầu của bạn.

Sau khi tạo thành công tệp nhị phân, bạn sẽ thấy nội dung như sau:

1215f6ba267d9933.png

Hãy thử chạy trò chơi và xem trò chơi có hoạt động như mong đợi không. Bạn nên kích hoạt lệnh này từ bên trong câu lệnh cho tác nhân. Bạn có thể chuyển câu lệnh sang "chế độ shell" bằng cách nhập dấu chấm than "!":

3ed1f93c756154bc.png

Bạn sẽ thấy thông báo "activated bash mode" (đã kích hoạt chế độ bash) bên dưới lời nhắc. Nhấn phím Enter để chạy lệnh. Việc chạy tệp nhị phân ở chế độ này mang lại cho bạn lợi ích là tác nhân sẽ "theo dõi" mọi đầu ra đến thiết bị đầu cuối. Vì vậy, trong trường hợp trò chơi không chạy được hoặc gặp sự cố đột ngột, bạn không cần giải thích cho tác nhân về vấn đề đã xảy ra. Ngay lập tức, nó sẽ có tất cả thông tin cần thiết từ ngữ cảnh shell.

761f3c71af5ad842.png

Hãy thử chơi trò chơi và tinh chỉnh các thông số của trò chơi cho đến khi bạn hài lòng với trải nghiệm (ví dụ: tăng hoặc giảm tốc độ ảnh động, điều chỉnh cách trò chơi phản hồi các lệnh, v.v.)

Ví dụ: lời nhắc này sẽ cải thiện trải nghiệm bằng cách thêm chế độ hỗ trợ tiếp cận và các lệnh bàn phím mới:

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.

Sau khi hoàn tất việc tinh chỉnh, hãy chuyển sang phần tiếp theo để chuyển đổi thành ứng dụng web.

5. Điều chỉnh trò chơi để chạy trên trình duyệt web

Trò chơi Ebitengine hiện là một ứng dụng dành cho máy tính. Hãy yêu cầu Antigravity CLI điều chỉnh để chạy trong trình duyệt web bằng WebAssembly (WASM). Thao tác này sẽ liên quan đến việc biên dịch mã Go cho mục tiêu trình duyệt và thiết lập một máy chủ web cơ bản.

Hãy dùng câu lệnh sau để hướng dẫn trợ lý:

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. 

Xin lưu ý rằng tác nhân sẽ cố gắng tìm một tệp có tên là wasm_exec.js trong hệ thống tệp của bạn. Đây là điều được dự kiến và bạn cần cho phép, vì tệp này là trình bao bọc cho phép chạy các tệp nhị phân Go thông qua JS. Ví dụ:

b9fcf1089f9dce3e.png

Sau khi tác nhân hoàn tất nhiệm vụ, bạn có thể hướng dẫn tác nhân chạy máy chủ trò chơi ở chế độ nền.

aa59ec12374a2712.png

Bây giờ, hãy mở http://localhost:8080 trong trình duyệt để xem trò chơi chạy trên web:

5503ee0226f585b5.png

Bây giờ, bạn đã chạy ứng dụng này trên web, hãy trau chuốt lần cuối trước khi triển khai trên đám mây.

6. Tạo màn hình tiêu đề và bảng xếp hạng

Trò chơi hoạt động nhưng thiếu một số tính năng chính để mang lại trải nghiệm arcade phù hợp. Trước tiên, hãy thêm một màn hình tiêu đề, sau đó thêm một bảng xếp hạng để bạn có thể cạnh tranh với bạn bè! Hãy sử dụng câu lệnh sau:

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).

Leaderboard scores should be saved in-memory, server-side.

Giờ thì trông chuyên nghiệp hơn một chút rồi! 🙂

7. Triển khai trò chơi lên Cloud Run

Cuối cùng thì chúng ta cũng có thể chia sẻ tác phẩm của mình với mọi người! Chúng ta sẽ triển khai toàn bộ ứng dụng này lên Google Cloud Run để có thể truy cập vào ứng dụng từ mọi nơi.

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.

Vì trò chơi hiện đang hoạt động trên đám mây, nên việc không cho phép trò chơi chạy trên thiết bị di động sẽ là một cơ hội bị bỏ lỡ. Bạn có thể thực hiện việc này bằng lời nhắc sau:

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 virtual keyboard to the name entry screen and a confirmation button to the name entry.

Finally, 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.

Chạy lại trò chơi trên trình duyệt. Hãy thử truy cập vào URL từ thiết bị di động (bạn có thể tạo mã QR để đơn giản hoá trải nghiệm này).

8. Sử dụng tác nhân trình duyệt để kiểm thử trò chơi

Mặc dù thường rất khó kiểm thử tự động một trò chơi vì trò chơi dựa vào phản hồi trực quan, nhưng chúng ta vẫn có thể tận dụng một số tính năng tự động hoá để ít nhất là đảm bảo quá trình triển khai diễn ra chính xác và chúng ta có các phần tử cơ bản.

Để làm việc này, chúng ta sẽ sử dụng tác nhân phụ của trình duyệt. Trong Antigravity, đại lý phụ là một vai trò riêng biệt với bối cảnh mới, phù hợp với những tác vụ mà bạn không muốn bối cảnh hiện tại ảnh hưởng đến kết quả hoặc khi bạn muốn ngăn tác vụ "làm nhiễm bẩn" cửa sổ ngữ cảnh chính của mình.

Tác nhân trình duyệt là một tác nhân đặc biệt được tích hợp sẵn cho các tác vụ liên quan đến trình duyệt. Xin lưu ý rằng chỉ riêng bước này, chúng ta cần sử dụng ứng dụng Antigravity dành cho máy tính vì tác nhân trình duyệt hiện không có trên dòng lệnh.

Mở ứng dụng Antigravity trên máy tính và bắt đầu một cuộc trò chuyện mới trong dự án Cloud Crush:

324c7b8633dc46d9.png

Bạn có thể kích hoạt trợ lý ảo trên trình duyệt bằng cách nhập /browser, sau đó nhập câu lệnh sau:

Go to http://localhost:8080 and capture screenshots of the following game screens:
1. Title Screen (initial state: "PRESS ENTER TO PLAY")
2. Name Entry Screen (press Enter to reach this screen)
3. Main Gameplay Screen (type a name like "PLAYER" and press Enter to start)
4. Leaderboard Screen (let the game timer run out to view the high scores)

Phương pháp này cho phép chúng tôi sử dụng ảnh chụp màn hình để sửa các phần tử của giao diện người dùng mà nếu chỉ mô tả bằng văn bản thì sẽ khó.

Bạn có thể tham chiếu đến các tệp bằng cách sử dụng biểu tượng "@" rồi nhập tên tệp. Ví dụ: ở đây, tôi yêu cầu tác nhân phần mềm tăng kích thước của biểu trưng trên màn hình tiêu đề:

5c18bde16b58fc8.png

Mặc dù ví dụ này hơi gượng ép vì mô hình không nhất thiết phải "nhìn thấy" hình ảnh để áp dụng mức điều chỉnh 50% về kích thước, nhưng đây là một kỹ thuật hữu ích để điều chỉnh giao diện người dùng trong trường hợp khó mô tả vấn đề bằng dạng văn bản. Công cụ này cũng cho phép nhân viên xác thực công việc của chính mình bằng cách chụp ảnh màn hình trước và sau khi thực hiện. Vì vậy, hãy lưu giữ mẹo này trong bộ công cụ của bạn.

9. Tạo một tác nhân tuỳ chỉnh để bảo mật trò chơi

Một mối lo ngại thường gặp đối với các ứng dụng "được tạo bằng AI" là làm thế nào để duy trì chất lượng cao và các phương pháp hay nhất từ cả góc độ lập trình và bảo mật. Mặc dù bạn có thể cố gắng cải thiện câu lệnh để đảm bảo tính chặt chẽ cho cả hai khía cạnh này, nhưng càng thêm nhiều thông tin vào câu lệnh thì tác nhân sẽ càng ít tập trung, điều này thường dẫn đến kết quả không tối ưu.

Đối với loại kịch bản này, việc sử dụng các trợ lý ảo là lý tưởng vì chúng có thể tập trung vào nhiệm vụ mà bạn giao cho chúng. Hãy tạo một tác nhân tuỳ chỉnh để kiểm tra bảo mật mã này và đảm bảo rằng chúng ta không làm lộ bất kỳ thông tin đăng nhập nào hoặc tự đặt mình vào rủi ro không cần thiết khi triển khai trò chơi này.

Câu lệnh này cung cấp một cơ sở tốt cho tác nhân:

create a new subagent called "security_auditor" using the following instructions:

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.

Xin lưu ý rằng Antigravity sẽ sử dụng công cụ "DefineSubagent" để tạo tác nhân mới:

63cde28b749d4e81.png

Yêu cầu trợ lý thực hiện kiểm tra bảo mật đối với mã trò chơi bằng câu lệnh sau:

Run the security auditor agent in this code

Bạn sẽ thấy như sau:

5563a8169e106701.png

Sau khi tác nhân hoàn tất nhiệm vụ, bạn sẽ thấy một báo cáo như sau:

6df39e15635a7cd7.png

Hãy yêu cầu Antigravity sửa chúng cho chúng ta 🙂:

Fix these findings for me please!

Và thế là xong:

93a3331df80a7d7f.png

Xin lưu ý rằng những tác nhân được tạo theo cách này chỉ tồn tại trong suốt cuộc trò chuyện. Nếu muốn có một tác nhân "có thể sử dụng lại" giữa các phiên, bạn có thể tạo tác nhân đó bằng cách sử dụng tệp cấu hình. Để biết thêm thông tin, hãy xem lệnh /agents.

10. Kết luận

Xin chúc mừng! Bạn đã sử dụng thành công Antigravity CLI để tạo, triển khai, kiểm thử và kiểm tra một trò chơi arcade, minh hoạ các quy trình làm việc nâng cao của tác nhân từ giàn giáo ban đầu đến việc triển khai.

Dọn dẹp

Để tránh các khoản phí phát sinh cho tài khoản Google Cloud của bạn, hãy xoá các tài nguyên đã tạo trong lớp học lập trình này.

  1. Xoá dịch vụ Cloud Run:
I'm finished with this project. Delete the cloud run deployment.
  1. Xoá thư mục dự án:
cd .. && rm -rf codelab-match3

Ngoài ra, bạn có thể xoá toàn bộ dự án trên Google Cloud nếu dự án đó chỉ được tạo cho lớp học lập trình này.

Các bước tiếp theo

Bạn có thể tiếp tục hành trình học tập bằng cách khám phá các lớp học lập trình khác trên nền tảng này hoặc tự cải thiện Cloud Crush. Đừng quên dọn dẹp các tài nguyên sau khi hoàn tất!

Chúc bạn lập trình vui vẻ!