Tạo mã nguồn cho trò chơi dành cho trẻ em bằng Gemini và phát hành bằng Firebase!

1. Giới thiệu

Vào ngày 25 tháng 3 năm 2025, Google ra mắt Gemini 2.5. Một trong những khía cạnh đáng nhớ nhất của lần ra mắt này là việc cho phép mọi người dùng thử tính năng "Lập trình nâng cao" [ video]:

a3d1de17f9fbf428.png

Gemini 2.5: Tạo trò chơi khủng long của riêng bạn chỉ bằng một câu lệnh

Trong lớp học lập trình này, bạn sẽ tìm hiểu về "vibe coding" (lập trình theo cảm hứng) cho một ứng dụng đơn giản dành cho trẻ em, bắt đầu từ một câu lệnh chung rồi tuỳ chỉnh theo ý thích của riêng bạn. Chúng tôi sẽ kiểm thử ứng dụng trên p5.js. Cuối cùng, chúng ta sẽ đẩy những thay đổi này lên Lưu trữ Firebase.Điều tuyệt vời nhất là toàn bộ ngăn xếp này hiện miễn phí!

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

  • Sử dụng Gemini 2.5 để tạo mã rung cho một ứng dụng trò chơi.
  • Kiểm thử mã trên p5js.org
  • Cách lặp lại và tinh chỉnh câu lệnh / ứng dụng.
  • Cách lưu trữ một ứng dụng tĩnh trên Firebase

af537073e37f086a.png

Lưu ý rằng lớp học lập trình này sử dụng mã do AI tạo; đây là mã không xác định, vì vậy, lớp học lập trình này chứa các nguyên tắc vì tác giả không biết đầu ra của bạn. Ngoài ra, vui lòng KHÔNG sử dụng mã này trong phiên bản phát hành!

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

Lớp học lập trình này có 2 giai đoạn:

  1. Chỉ phát triển cho web. Đây là nơi bạn sẽ có nhiều niềm vui nhất và không cần có khả năng lập trình. Đối với hoạt động này, chúng ta sẽ sử dụng giao diện người dùng Gemini ( gemini.google.com) và p5.js.
  2. Môi trường lập trình cục bộ. Đây là nơi bạn cần một chút kỹ năng viết mã / tạo tập lệnh, cộng với việc cài đặt và sử dụng npm / npx và một trình chỉnh sửa cục bộ, chẳng hạn như vscode hoặc IntelliJ hoặc bất kỳ trình chỉnh sửa nào. Phần thứ hai này là không bắt buộc và chỉ cần thiết nếu bạn muốn duy trì ứng dụng để bạn bè và gia đình có thể chơi ứng dụng đó trên thiết bị di động hoặc máy tính của họ.

Điều kiện tiên quyết duy nhất cho giai đoạn 1 là Trình duyệt và máy tính (màn hình lớn sẽ giúp ích). Để biết thông tin về giai đoạn 2, hãy đọc tiếp.

Giao diện người dùng của Gemini

gemini.google.com là một nền tảng tuyệt vời để bạn dùng thử tất cả các mô hình Gemini mới nhất, đồng thời tạo hình ảnh và video của riêng mình! Ứng dụng này được tích hợp với các sản phẩm của Google như Google Maps và Khách sạn/Chuyến bay/Bài đánh giá, nhờ đó trở thành người bạn đồng hành lý tưởng để lên kế hoạch cho kỳ nghỉ tiếp theo của bạn!

8d174c7e462cfd11.png

Lưu ý: Nếu bạn thích lập trình, hãy cân nhắc sử dụng AI Studio, một giao diện tương tự nơi bạn có thể tạo mẫu cho một hoạt động tương tác với LLM (ví dụ: tạo hình ảnh) và lấy mã Python ngay từ trang!

p5.js

p5.js là một thư viện JavaScript mã nguồn mở, miễn phí, giúp các nghệ sĩ, nhà thiết kế, nhà giáo dục và những người khác có thể tiếp cận và tham gia vào hoạt động lập trình sáng tạo. P5.js dựa trên ngôn ngữ Processing và đơn giản hoá quy trình tạo nội dung trực quan và nội dung tương tác bằng mã trong trình duyệt web.

ca1f12cbbedc76b9.png

Mã hoá cục bộ [không bắt buộc]

Nếu muốn duy trì ứng dụng, bạn cần thiết lập thêm:

  • Trình soạn thảo mã cục bộ ( Visual Studio Code, IntelliJ, ..)
  • Một tài khoản git ( github / gitlab / bitbucket) để lưu trữ mã của bạn.
  • npm được cài đặt cục bộ, tốt hơn nếu ở không gian người dùng (thông qua npx hoặc công nghệ tương đương).

Ngoài ra, chúng ta sẽ thiết lập một tài khoản Firebase sau.

Bạn cũng cần có một số kỹ năng lập trình, chẳng hạn như:

  • Có thể cài đặt gói npm
  • Có thể tương tác với hệ thống tệp (tạo thư mục và tệp)
  • Có thể tương tác với git (git add, git commit, git push).

Nếu có bất kỳ nội dung nào khiến bạn cảm thấy khó khăn, hãy nhớ rằng: Các LLM có thể giúp bạn rất nhiều. Bạn có thể sử dụng "Gemini 2.0 flash" hoặc mô hình tương đương, chẳng hạn như để nhận đề xuất. Nếu vẫn quá khó, bạn có thể bỏ qua hoàn toàn giai đoạn 2. Giai đoạn 1 phải đủ hấp dẫn.

3. Hãy tạo trò chơi đầu tiên của chúng ta!

Mở gemini.google.com rồi chọn một mô hình có khả năng tạo mã, chẳng hạn như 2.5. Lựa chọn này có thể khác nhau tuỳ thuộc vào tình trạng còn hàng, chi phí và ngày. Tại thời điểm viết bài này, lựa chọn tốt nhất là:

  • Gemini 2.5 Flash (lặp lại nhanh hơn)
  • Gemini 2.5 Pro (kết quả tốt hơn).

Bạn có thể xem thêm thông tin về các mô hình Gemini của chúng tôi tại đây.

8d174c7e462cfd11.png

Câu lệnh đầu tiên của chúng tôi về trò chơi

Như bạn có thể thấy trong video này, câu lệnh ban đầu có thể đơn giản như sau:

Make me a captivating endless runner game. Key instructions on the screen.
p5js scene, no HTML. I like pixelated dinosaurs and interesting backgrounds.

Bạn có thể tuỳ chỉnh một chút:

  • Bối cảnh thời trung cổ / tương lai / viễn tưởng công nghệ cao
  • Có nhiều biểu tượng cảm xúc hay chỉ có một biểu tượng cảm xúc cụ thể?
  • Bạn yêu thích màu vàng hoặc nhiều sắc độ của màu tím.
  • Có thể trẻ yêu thích kỳ lân, khủng long hoặc pokemon.

Sau khi dán câu lệnh vào trình duyệt, bạn sẽ thấy Gemini đang tư duy.Đúng vậy, Gemini 2.5 là một mô hình tư duy, vì vậy, mô hình này sẽ bắt đầu một số tác vụ mà bạn có thể thấy thay đổi theo thời gian. Bạn có thể nhấp vào trình đơn thả xuống đang thay đổi để xem điều gì đang xảy ra hoặc bạn có thể đợi kết quả:

1379f641db7b829d.png

Cuối cùng, bạn sẽ có một javascript hoạt động.

Giờ đây, bạn có thể nhấp vào nút sao chép ở trên cùng:

5b3750c38378acb8.png

Kiểm thử trò chơi trên p5.js

Giờ là lúc bạn có thể kiểm thử trò chơi!

Trang của bạn sẽ có dạng như sau:

bcbd2cf1ea825ae6.png

Cuối cùng, bạn có thể nhấn nút PHÁT.

Giờ đây, có thể xảy ra hai trường hợp: mã của bạn hoạt động hoặc không hoạt động. Hãy làm theo hướng dẫn tuỳ thuộc vào cả hai trường hợp:

  1. Mã của bạn không hoạt động
  2. Mã của bạn hoạt động ngay từ lần thử đầu tiên!

Hãy xem cách quản lý cả hai điều kiện này trong hai đoạn tiếp theo.

(trường hợp 1) Mã của tôi không hoạt động!

Nếu gặp phải lỗi như thế này, bạn chỉ cần sao chép và dán lỗi đó vào Gemini. Hãy để anh ấy sửa mã cho bạn!

366759a4baacccc7.png

(trường hợp 2) Mã của tôi hoạt động!

Nếu mã của bạn hoạt động, bạn sẽ thấy một trò chơi trực quan ở cuối bên phải của trang.

👏 Xin chúc mừng, bạn đang chạy trò chơi AI đầu tiên của mình!

da962547fd6dc5f9.png

Lưu ý: Khi bạn có mã, ứng dụng sẽ chỉ hoạt động trong trình duyệt của bạn. Nếu muốn cho gia đình và bạn bè xem ứng dụng, bạn cần có một giải pháp lưu trữ. Thật may là chúng tôi có một lựa chọn tuyệt vời dành cho bạn! Tiếp tục đọc.

Bây giờ, bạn đã sẵn sàng cho chương tiếp theo.

Các lần lặp lại tiếp theo

Bây giờ là lúc bạn lưu mã ở đâu đó để phòng trường hợp mã bị hỏng. Nếu muốn, bạn có thể lặp lại một lần. Ví dụ: tác giả rất thích cú nhảy đôi của Super Mario, vì vậy, bạn có thể thêm nội dung như sau:

The game is great, thanks! Please allow for my character to double jump.

Bạn có thể điều chỉnh mọi thứ theo ý muốn! Có thể bạn muốn lưu tên nhân vật để đạt điểm số cao hơn hoặc tăng tốc độ theo thời gian để làm cho trò chơi khó hơn, v.v. Tiếng Anh là ngôn ngữ duy nhất bạn có thể dùng để viết câu lệnh!

Lưu ý: Gemini thường chỉ cung cấp cho bạn thay đổi mà bạn cần áp dụng (ví dụ: đây là thay đổi cho hàm XYZ). Bạn có thể đặt câu lệnh để câu lệnh cung cấp cho bạn toàn bộ mã đã cập nhật, chẳng hạn như

"Please give me the entire updated code, not just the changed function"

. Điều này sẽ giúp bạn dễ dàng cắt và dán hơn.

Chú ý

Bạn nên đánh dấu trang cho cuộc trò chuyện với Gemini. Có thể bạn muốn đổi tên thành "p5js my first game" hoặc viết đường liên kết cố định đến Gemini, chẳng hạn như " https://gemini.google.com/app/abcdef123456789" để dùng sau.

4. Hãy chạy mã này cục bộ

Đến thời điểm này, bạn phải có:

  • Một cửa sổ trình duyệt Gemini đang mở với một số mã hoạt động.
  • Một cửa sổ trình duyệt p5.js đang mở có một trò chơi đang hoạt động
  • Môi trường lập trình cục bộ đã cài đặt npm.

Đây là phần khó hơn của lớp học lập trình. Bạn phải có một số kinh nghiệm lập trình cơ bản.

Cài đặt các phần phụ thuộc

Nếu bạn thiếu npmnode, thì cách tốt nhất là cài đặt npm thông qua một số trình quản lý phiên bản, chẳng hạn như nvm . Làm theo hướng dẫn cài đặt dành cho hệ điều hành của bạn.

Chúng tôi cũng giả định rằng bạn đang sử dụng một IDE mã hoá. Chúng ta sẽ sử dụng mã Visual Studio trong ảnh chụp màn hình và ví dụ, nhưng bạn có thể dùng bất kỳ mã nào.

Thiết lập môi trường cục bộ

Đây là thời điểm bạn có thể tạo cấu trúc tệp của riêng mình.

Một tập lệnh thiết lập được đưa ra chỉ nhằm mục đích minh hoạ. Bạn có thể thực hiện việc này theo cách thủ công bằng cách tạo thư mục và tệp:

# This works for Mac and Linux. For Windows, please use other tools.
mkdir my-first-vibecoding-project/
cd my-first-vibecoding-project/
git init 
touch README.md PROMPT.md 
mkdir public/
cd public/ 
touch index.html sketch.js style.css
git add .
# Skipping quotes which can be tricky
git commit -a -m committing_empty_skeleton

Cấu trúc thư mục cuối cùng sẽ có dạng như sau:

my-first-vibecoding-project/
├── PROMPT.md
├── README.md
└── public
    ├── index.html
    ├── sketch.js
    └── style.css

Bạn cũng có thể tìm thấy thông tin này tại đây.

Bây giờ, hãy mở trình soạn thảo mã mà bạn yêu thích (ví dụ: code my-first-vibecoding-project/) rồi bắt đầu dán nội dung của editor.p5js.org vào 3 tệp trong public/:

  • README.md Tại đây, bạn có thể đặt đường liên kết cố định đến cuộc trò chuyện với Gemini và đây là nơi bạn đặt trang đích cho ứng dụng khi ứng dụng ra mắt.
  • PROMPT.md Tại đây, bạn có thể muốn thêm tất cả câu lệnh của mình, được phân tách bằng một đoạn văn H2. Nếu muốn giải thích lý do bạn đưa ra một câu lệnh nào đó, bạn có thể đặt câu lệnh đó trong 3 dấu nháy ngược ( ví dụ).
  • **public/index.html** sao chép mã HTML của bạn vào đây
  • **public/sketch.js** sao chép mã JS của bạn vào đây
  • **public/style.css** sao chép mã CSS của bạn vào đây

Thư mục công khai có thể lưu trữ các thành phần bổ sung, chẳng hạn như một tệp PNG tuỳ chỉnh.

5. Thiết lập và triển khai lên Firebase

Thiết lập Firebase (chỉ lần đầu)

Đảm bảo bạn đã cài đặt npm trong máy.

Trong một cửa sổ dòng lệnh, hãy nhập một trong các lệnh sau (cả hai đều hoạt động):

# to install on the machine (requires privilege)
npm install -g firebase-tools
# to install locally (low privilege needed but might need to repeat a few times)
npm install firebase-tools

Giờ đây, bạn có thể gọi lệnh firebase. Nếu bạn gặp vấn đề, hãy tham khảo tài liệu công khai.

Khởi chạy Firebase

Trong phần này, chúng ta sẽ thiết lập dịch vụ lưu trữ Firebase. Đây là một quy trình rất đơn giản, nhưng có thể bạn sẽ mất một chút thời gian để làm quen với quy trình này trong lần đầu tiên.

Đảm bảo bạn đang ở trong thư mục ngay phía trên thư mục public/ chứa các tệp của bạn. Danh sách (ls -al hoặc dir) sẽ có dạng như sau:

$ ls 
PROMPT.md
README.md
public/
  • [bước 1] Trên bảng điều khiển, hãy nhập: firebase init

dc4baa436d63efac.png

  • Di chuyển con trỏ xuống "Hosting: .." (Lưu trữ: ..) rồi nhấn PHÍM CÁCH, sau đó nhấn ENTER. (Tại sao? Vì đây là câu hỏi trắc nghiệm, nên bạn cần chọn và chuyển sang trang tiếp theo)
  • [bước 2] Giờ đây, bạn có thể chọn một dự án hiện có (lựa chọn 1) hoặc tạo một dự án mới (lựa chọn 2):

955ab96f94b97b28.png

  • Lưu ý: Nếu bạn có một Dự án trên đám mây hiện có, thì dự án đó có thể không phải là dự án Firebase. Dự án Firebase là một nhóm nhỏ của dự án GCP. Bạn cần làm thêm để biến chúng thành dự án Firebase. Đây là mục đích của (lựa chọn 3).
  • Nếu chưa quyết định, hãy sử dụng "Create a new project" (Tạo dự án mới) và thêm một số tên như "p5js-YOURNAME-YOURAPP" (ví dụ: "p5js-riccardo-tetris").

9fb1e7c9f7d68f25.png

  • [bước 3] What would you like to call your project? (defaults to your project ID) (p5js-riccardo-tetris)
  • Nhấn phím ENTER.

30d2cda68c45befc.png

  • [bước 4] ? What do you want to use as your public directory? (public)
  • Nhấn ENTER (chúng tôi thiết lập public/ có mục đích)

54bcc6fe2dd0e14e.png

  • [bước 5] ? Configure as a single-page app (rewrite all urls to /index.html)? No
  • nhấn ENTER (không)

af930401d3775c.png

  • [bước 6] ? Set up automatic builds and deploys with GitHub? No
  • Nhấn ENTER – KHÔNG

81e017d4e3a5f7e6.png

  • [bước 7] ? File public/index.html already exists. Overwrite? (y/N)
  • Nhấn ENTER (không).
  • CẢNH BÁO Điều này có thể dẫn đến lỗi; nếu bạn ghi đè, index.html mới sẽ không tương thích với p5js!

Nếu mọi thứ hoạt động bình thường, bạn sẽ thấy như sau:

98ff444361607aae.png

Các thao tác này sẽ tạo ra một số tệp:

.firebaserc
.gitignore
firebase.json
public/404.html

Cụ thể, .firebaserc phải có mã dự án của bạn mà bạn có thể kéo theo cách lập trình bằng mã này: cat .firebaserc | jq .projects.default -r

Cảnh báo: Kiểm tra index.html. Nếu dài hơn 16 dòng và/hoặc có từ firebase trong đó, thì có nghĩa là bạn đã vô tình ghi đè các tệp p5js. Không sao cả, bạn chỉ cần nhớ lấy lại tệp index.html cũ từ git hoặc từ trình chỉnh sửa p5js.

Thử nghiệm cục bộ

Để giảm độ trễ của vòng hồi tiếp, trước tiên, bạn nên thử các thao tác cục bộ.

Để làm như vậy, bạn có thể dùng bộ CLI mạnh mẽ của nhóm Firebase. Ví dụ:

$ firebase emulators:start

sẽ khởi động một máy chủ web trên cổng 5000 ( http://127.0.0.1:5000/ ) để bạn có thể kiểm thử cục bộ trước khi đẩy.

Triển khai cho Firebase

Bây giờ là lúc thực hiện lệnh cuối cùng:

$ firebase deploy

be5c455df84ac20.png

Thao tác này sẽ kích hoạt một số hành động. Một vài dòng cuối cùng sẽ có nội dung như sau:

$ firebase deploy
[...]
✔  hosting[YOUR_PROJECT]: release complete 
✔  Deploy complete! 

Project Console: https://console.firebase.google.com/project/YOUR_PROJECT/overview
Hosting URL: https://YOUR_PROJECT.web.app

Thao tác này sẽ cung cấp cho bạn URL lưu trữ. Hãy dùng thử ngay!

Nếu quá trình triển khai thành công nhưng bạn thấy một số trang trống hoặc quá trình triển khai bị lỗi, bạn có thể làm một số việc sau:

  • Mở "Công cụ dành cho nhà phát triển" của trình duyệt, tìm lỗi và yêu cầu Gemini giúp bạn khắc phục lỗi đó bằng một câu lệnh như sau:
I've deployed the script correctly with Firebase, but I now see a blank page with this error:

[ paste detailed JS console error ]

♾️ Lặp lại!

Bạn có thể lặp lại các bước này bao nhiêu lần tuỳ thích. Bạn có thể tiếp tục đưa ra câu lệnh cho đến khi hài lòng với kết quả.

99420f90bf14d04d.png

Bạn cần lưu ý một số điều sau:

  1. Vòng lặp lặp lại nhanh hơn nhiều trong Gemini > p5.js > vòng lặp Gemini so với trong Gemini > máy chủ lưu trữ cục bộ > triển khai vào Cloud Run > ứng dụng kiểm thử trên trình duyệt (nhấn làm mới).
  2. Sử dụng git để tạo phiên bản cho cả câu lệnh và mã. Bạn có thể muốn quay lại lời nhắc N và mã N. Đặc biệt, bạn nên git commit mọi sketch.js mà bạn đẩy lên, vì lỗi có thể ẩn nấp mà không bị phát hiện ở đó.

Xin lưu ý rằng một số trò chơi hoạt động tốt với bàn phím nhưng không hoạt động tốt với chuột hoặc thao tác nhấn trên điện thoại di động. Đây là thời điểm thích hợp để cải thiện mã.

6. Mẹo tạo câu lệnh

Một số mẹo từ việc tạo khá nhiều trò chơi.

Lập phiên bản cho câu lệnh

Có thể bạn sẽ thấy lỗi trong câu lệnh ban đầu. Có phiên bản git của ứng dụng. Có một số đường dẫn mã ở đây:

  1. Nếu bạn thích những gì mình thấy và muốn lặp lại với Gemini bằng các câu lệnh phụ tiếp theo, thì bạn có thể theo dõi tất cả những câu lệnh đó ở một nơi nào đó (câu lệnh 1,2,3 – ví dụ 1 gồm 3 câu lệnhexample2).
  2. Nếu không quá coi trọng ứng dụng do câu lệnh 1 tạo ra, bạn có thể muốn hoàn thiện câu lệnh, loại bỏ mã và khởi động lại bằng mã đã sửa đổi (câu lệnh 1 phiên bản 1, câu lệnh 1 phiên bản 2, câu lệnh 1 phiên bản 3,...)

Tất nhiên, bạn có thể kết hợp 2 phương pháp này.

Chức năng trên thiết bị di động

Tuỳ thuộc vào trò chơi bạn tạo, bạn có thể cần tương tác với người dùng. Cuộc tương tác này có cần bàn phím không? Hoặc có thể sử dụng bằng cách chỉ cần nhấn vào màn hình (ví dụ: bằng thiết bị di động)? Hãy nêu rõ điều này trong lời nhắc. Bạn có thể phải tạo một số nút trên bàn phím (xem ví dụ về Tetris 3D của tôi). Xem thêm dungemoji rắc rối về khả năng tương thích với thiết bị di động.

Gửi ý kiến phản hồi về lỗi JavaScript / ảnh chụp màn hình trực tiếp cho Gemini

Vì Gemini không thể xem hoạt động tương tác của bạn với p5js, hãy nhớ dán mọi lỗi Javascript vào Gemini. Xin lưu ý rằng Gemini là mô hình đa phương thức, vì vậy, nếu có thay đổi về giao diện người dùng (chẳng hạn như giảm kích thước tiêu đề hoặc giảm điểm số), bạn cũng có thể đính kèm ảnh chụp màn hình của trò chơi! Việc nhận phản hồi về mã chưa bao giờ thú vị đến thế!

b0bacf73c058c4e5.png

7. Xin chúc mừng!

🎉 Chúc mừng bạn đã hoàn thành lớp học lập trình này.

Chúng ta đã thấy việc tạo một trò chơi bằng Gemini dễ dàng như thế nào và Firebase cung cấp một giải pháp lưu trữ dễ dàng để duy trì và chia sẻ trò chơi của bạn với những người khác.

b730ed7192ac3d1c.png

Nội dung đã đề cập

  • Tạo trò chơi thông qua Gemini 2.5.
  • Triển khai lên Firebase

Giờ là lúc 👥 khoe thành tích này! Bạn có thể chia sẻ trò chơi mới nhất của mình (your-project.web.app) trên LinkedIn hoặc Twitter kèm theo thẻ bắt đầu bằng # #VibeCodeAGameWithGemini (và có thể gắn thẻ tác giả trên LinkedIn)? Điều này sẽ giúp chúng tôi biết mức độ hấp dẫn của lớp học lập trình này và có thể viết thêm những lớp học lập trình tương tự!

Tôi muốn có thêm!

Nếu bạn muốn tham khảo thêm tài nguyên, hãy xem các trò chơi và câu lệnh sau:

Một số trò chơi mẫu mà bạn có thể tạo:

Trò chơi hoàn chỉnh có thể trông như sau:

  • Một trò chơi Tetris 3D
  • Trò chơi ngôn ngữ
  • Bản sao giả mạo
  • Một bản sao của Pac-Man.

Một lần nữa, tiếng Anh là giới hạn!

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