Chuyển đến nội dung chính
Hướng dẫn AI

Xây dựng và khám phá thế giới mở rộng bằng AI với Infinite Pokémon

Tìm hiểu cách thiết lập Infinite Pokémon bằng Node.js hoặc trợ lý AI, bắt đầu thế giới chơi đơn hoặc nhiều người, sử dụng bản xem trước hướng dẫn không có AI, cấu hình việc tạo bản đồ và bảo vệ dữ liệu lưu lâu dài. Hướng dẫn này cũng giải thích thiết kế do máy chủ kiểm soát, tích hợp Codex, các phím điều khiển, bản sao lưu, tùy chọn Docker và những lưu ý khi lưu trữ từ xa.

Xây dựng và khám phá thế giới mở rộng bằng AI với Infinite Pokémon

Infinite Pokémon là gì?

Infinite Pokémon là một nguyên mẫu TypeScript có thể chơi được, thuộc thể loại RPG bắt sinh vật phong cách Pokémon với đồ họa pixel và thế giới liên tục. Thử nghiệm cốt lõi của trò chơi là một thế giới có thể tiếp tục được viết thêm trong lúc bạn chơi. Một bộ công cụ AI cục bộ sử dụng lịch sử đã ghi lại trong cuộc phiêu lưu của bạn để đề xuất các địa điểm, nhân vật, cuộc hội thoại, lựa chọn quần xã sinh vật và mạch truyện sắp tới.

Lối chơi Infinite Pokémon và tính năng tạo thế giới có Codex hỗ trợ

Dự án không cho phép AI kiểm soát trạng thái trò chơi có thẩm quyền. Việc di chuyển, va chạm, trận đấu, túi đồ, tiến trình và các quy tắc chơi khác đều được máy chủ thực thi. Các đề xuất của AI phải vượt qua việc kiểm tra lược đồ, bản đồ và dependency trước khi được đưa vào thế giới. Những địa điểm đã ghé thăm vẫn ổn định, trong khi các điểm đến mới có thể được tạo và lưu vào bộ nhớ đệm trước mặt người chơi.

Quan trọng: Infinite Pokémon là một dự án người hâm mộ mang tính thử nghiệm, chỉ dành cho mục đích giáo dục và phi thương mại. Đây không phải là sản phẩm Pokémon chính thức và không liên kết với Nintendo, Creatures, GAME FREAK hoặc The Pokémon Company.

Cách thế giới liên tục hoạt động

  1. Máy chủ vẫn giữ quyền quyết định. Các đề xuất của AI không thể di chuyển người huấn luyện, trao chiến thắng, bỏ qua va chạm hoặc trực tiếp thay đổi tiến trình.
  2. Thế giới ghi lại các sự kiện thực tế. Mỗi lượt chơi lưu bản đồ, lựa chọn, ký ức của NPC, người chơi, tác vụ tạo nội dung và lịch sử sự kiện trong cơ sở dữ liệu SQLite cục bộ.
  3. Codex đề xuất nội dung sắp tới. Tiến trình Codex cục bộ trên máy chủ đọc một ảnh chụp bất biến và tạo ra các đề xuất có giới hạn, tương thích với engine hiện tại.
  4. Việc xác thực bảo vệ môi trường chạy. Lược đồ và kiểm tra bản đồ quyết định nội dung được đề xuất có thể được chấp nhận hay không.
  5. Checkpoint hỗ trợ phân nhánh. Tiếp tục từ một checkpoint cũ sẽ tạo một nhánh riêng với cơ sở dữ liệu, ký ức và ngữ cảnh tạo nội dung riêng.

Hiện tại, hệ thống sử dụng các mẫu bản đồ đã được xác thực và tạo sẵn thay vì lối chơi thực thi tùy ý do AI viết. Bộ công cụ có thể cung cấp tên, mô tả, hồ sơ NPC, lời chào, lựa chọn quần xã sinh vật, mạch truyện và các đặc điểm địa hình có giới hạn. Hình ảnh sinh vật, vật phẩm và phương tiện mới có thể được kết xuất từ các công thức pixel-art đã được xác thực, nhưng tính năng nhập hình ảnh được tạo từ bên ngoài chưa được triển khai.

Tính năng chính

  • Bản đồ, sự kiện, lựa chọn cốt truyện và ký ức NPC được duy trì theo từng lượt chơi.
  • Di chuyển, va chạm, trận đấu, túi đồ và tiến trình do máy chủ quyết định.
  • Khám phá một người chơi bằng kết nối Codex cục bộ trên máy chủ.
  • Bản xem trước hướng dẫn gồm năm khu vực cố định, không gọi model và không tiêu tốn token.
  • Chế độ nhiều người chơi host và tham gia, hỗ trợ tối đa tám kết nối đồng thời và 64 người huấn luyện được lưu.
  • Độ sâu chuẩn bị bản đồ có thể cấu hình từ 0 đến 3.
  • Các lô tạo nội dung có thể cấu hình từ một đến tám khối đồng thời.
  • Điều khiển xem trạng thái hàng đợi, thử lại và hủy các điểm đến chưa hoàn tất.
  • Checkpoint bất biến và các nhánh dòng thời gian biệt lập.
  • Cửa hàng, hồi phục, chạm trán hoang dã, người huấn luyện trên tuyến đường, xe đạp, nhà trẻ và trứng lai.
  • Quy trình trên trình duyệt, Electron desktop chạy từ mã nguồn và Docker Linux tùy chọn.

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

Đối với quy trình cục bộ thông thường, hãy cài đặt Node.js 22.13 trở lên. Các phiên bản Node.js từ 22.13 đến 22.15 đều được hỗ trợ, mặc dù sao lưu cơ sở dữ liệu sẽ sử dụng phương án dự phòng VACUUM INTO của SQLite, tạm thời chặn hoạt động, khi API sao lưu trực tuyến mới hơn không khả dụng.

Docker là tùy chọn. Bạn không cần cài đặt Codex CLI toàn cục riêng vì các dependency thời gian chạy đã bao gồm Codex CLI 0.153.4. Cầu nối ưu tiên CLI cục bộ của dự án để tránh việc một tệp thực thi toàn cục cũ hơn làm thay đổi khả năng tương thích.

Tùy chọn 1: Thiết lập bằng trợ lý AI

Cách thiết lập nhanh nhất là cài đặt skill khởi chạy của repository bằng Skills CLI:

npx skills add Shellishack/infinite-pokemon --skill infinite-pokemon

Sau đó yêu cầu Codex hoặc một trợ lý AI tương thích:

Sử dụng $infinite-pokemon để thiết lập và khởi động trò chơi giúp tôi.

Skill khởi chạy hướng dẫn agent thực hiện các bước sao chép những tệp còn thiếu, kiểm tra điều kiện tiên quyết, cài đặt dependency, build dự án và khởi chạy. Chỉ cài đặt skill sẽ không khởi chạy phần mềm. Cần có mã nguồn repository; npx skills add infinite-pokemon không phải là bí danh toàn cục được hỗ trợ.

Bạn có thể xem skill khởi chạy trên GitHub trước khi sử dụng.

Tùy chọn 2: Cài đặt và chạy thủ công

Sao chép hoặc tải repository, mở terminal tại thư mục gốc rồi chạy:

npm install
npm run build
npm start

Mở bảng điều khiển host riêng tư tại http://127.0.0.1:8788. SQLite tích hợp sẵn của Node có thể in cảnh báo thử nghiệm; dự án đã dự kiến cảnh báo này.

Kết nối Codex và bước vào thế giới

  1. Chọn Chơi một người.
  2. Chọn Kết nối với Codex nếu kết nối cục bộ chưa được xác minh.
  3. Xem lại và ủy quyền thông báo sử dụng token được hiển thị.
  4. Hoàn tất đăng nhập nhà cung cấp nếu được yêu cầu.
  5. Chờ quá trình xác minh nonce ngắn. Sau khi thành công, trò chơi sẽ tự động vào bản đồ khởi đầu.

Quá trình xác minh không tải kỹ năng hay đọc tệp; quá trình này chỉ yêu cầu xác nhận nonce và phản hồi ok. Sau khi kết nối, các bản đồ lân cận sẽ được chuẩn bị trong nền theo độ sâu tạo đã cấu hình. Việc xác minh, các lần thử không thành công và quá trình tạo trong nền có thể tiêu tốn hạn mức của nhà cung cấp; các giới hạn và chi phí thông thường của nhà cung cấp vẫn được áp dụng.

Kết nối hợp lệ sẽ được dùng lại. Sau khi khởi động lại một lượt chơi đã được phê duyệt, trò chơi sẽ kiểm tra đăng nhập cục bộ bằng một lời nhắc xác nhận ngắn khác. Nếu kiểm tra không thành công, giao diện sẽ quay lại thao tác kết nối.

Chơi Không Cần Codex Bằng Bản Xem Trước Hướng Dẫn

Để thử các cơ chế mà không cần quyền truy cập nhà cung cấp hoặc sử dụng token, hãy chọn Single player, sau đó chọn Play tutorial preview trên màn hình kết nối Codex.

Bản xem trước gồm năm khu vực ngoài trời đã được chuẩn bị cùng các phòng trong nhà tương ứng:

  • Willowbrook: quảng trường thị trấn, các khu vườn, phòng thí nghiệm của Giáo sư Fern và một ngôi nhà riêng.
  • Whisperwood Trail: những hàng cây rậm rạp, lối đi quanh co, khoảng trống và một căn nhà gỗ của kiểm lâm.
  • Cloverbank River: đồng hoa, một con sông, cây cầu gỗ và một nhà nghỉ.
  • Sunbreak Coast: vùng nước rộng, lối đi ven bờ, đường ván và một trạm ven biển.
  • Waystone Terraces: các tuyến đường zíc zắc, bậc đá, những cột trụ đổ và một chòi lưu trữ.

Bản xem trước không gọi mô hình và không tạo bản đồ hay kế hoạch NPC mới. Tại ranh giới của bản xem trước, bạn có thể kết nối Codex và tiếp tục cùng một lượt lưu để khám phá đầy đủ. Huấn luyện viên, các bản đồ đã mở và tiến trình hướng dẫn của bạn sẽ được giữ nguyên. Các lượt lưu bản xem trước là riêng tư và tách biệt khỏi thế giới gốc cho đến khi được nâng cấp; chế độ nhiều người chơi chỉ khả dụng sau khi Codex được kết nối và xác minh.

Điều Khiển Cơ Bản và Lối Chơi

  • Di chuyển bằng WASD hoặc các phím mũi tên.
  • Đứng ngay cạnh NPC, biển báo, vật phẩm hoặc máy tính trong phòng, quay mặt về phía đó rồi nhấn E hoặc Space.
  • Đứng ở vị trí chéo gần đối tượng sẽ không thể tương tác.
  • Đi vào cửa tòa nhà đang nhìn thấy, hoặc quay mặt về phía cửa từ ô liền kề rồi nhấn E.
  • Nhấn Escape hoặc START để mở menu đội hình, túi đồ, hồ sơ huấn luyện viên, nhật ký, bản đồ và lưu trò chơi.
  • Nhấn Escape lần nữa để đóng menu.

Con người, biển báo, hàng rào, tường và đồ nội thất cản trở việc di chuyển. Khi tương tác, hãy quay mặt về phía vật thể thay vì cố đi xuyên qua nó. Cỏ cao có thể kích hoạt các cuộc chạm trán hoang dã, huấn luyện viên đưa ra thử thách, còn người hướng dẫn cung cấp bài luyện tập cho người mới. Những người chăm sóc trong nhà có thể hồi phục cho đội của bạn.

Các nơi trú ẩn có thể có thương nhân và người giữ vườn ươm. Bạn có thể mua vật tư, mua một chiếc Bicycle hoặc ghép đôi hai bạn đồng hành cấp độ-5 để tạo ra một quả trứng lai. Các menu bổ sung như CODEX, NURSERY, RIDES và RECORDS có thể mở từ START.

Cấu Hình Tạo Bản Đồ

Mở START → SESSION để điều chỉnh cách tạo. Độ sâu tạo bản đồ xác định máy chủ chuẩn bị thế giới trước bao xa:

  • Độ sâu 0: tạo khi đến nơi.
  • Độ sâu 1: chuẩn bị bốn bản đồ xung quanh; đây là mặc định.
  • Độ sâu 2: chuẩn bị 12 bản đồ.
  • Độ sâu 3: chuẩn bị 24 bản đồ.

Công việc trong hàng đợi ưu tiên các bản đồ gần người chơi nhất và sử dụng lại các bản đồ đã lưu trong bộ nhớ đệm. Những điểm đến chưa sẵn sàng sẽ hiển thị trạng thái thực tế trong hàng đợi hoặc trạng thái tạo thay vì giả vờ đã hoàn tất. Có sẵn các nút thử lại và hủy.

Kích thước lô tạo mặc định là ba khối đồng thời và có thể đặt từ một đến tám. Hãy chọn một nếu bạn thích tạo tuần tự hoặc muốn giới hạn công việc đồng thời. Độ sâu và mức đồng thời cao hơn có thể chuẩn bị nhiều lãnh thổ hơn, nhưng cũng có thể làm tăng mức sử dụng nhà cung cấp và hoạt động tạo.

Tạo Lượt Lưu, Điểm Kiểm Tra và Nhánh

Mở START → SAVES để quản lý các lượt chơi và điểm kiểm tra bất biến. Chọn SAVE sẽ tạo một điểm kiểm tra. Nếu bạn tiếp tục từ một điểm kiểm tra cũ hơn, trò chơi sẽ tạo một nhánh riêng thay vì ghi đè dòng thời gian ban đầu.

Mỗi nhánh có lịch sử thế giới, ký ức NPC, ngữ cảnh tạo và cơ sở dữ liệu tự động lưu riêng. Các sự kiện xảy ra sau đó trong lượt chơi ban đầu sẽ không trở thành ký ức trong nhánh mới. Nhờ vậy, bạn có thể khám phá các kết quả thay thế mà vẫn giữ lại cuộc phiêu lưu ban đầu.

Các lượt lưu trong trình duyệt được liên kết với một token phiên không thể đọc được, được lưu cho trình duyệt và nguồn hiện tại. Việc thay đổi hostname, scheme hoặc port, hoặc xóa bộ nhớ trình duyệt, có thể khiến trình duyệt khách mất liên kết với một huấn luyện viên. Trò chơi không cung cấp giao diện khóa khôi phục thủ công.

Làm Máy Chủ Một Phiên Nhiều Người Chơi

  1. Từ màn hình tiêu đề, chọn Multiplayer → Host session.
  2. Kết nối và xác minh phiên Codex của máy chủ nếu cần.
  3. Mở START → SESSION để tìm địa chỉ khách.
  4. Chỉ chia sẻ địa chỉ trò chơi dành cho khách với những người chơi đáng tin cậy.

Bạn cũng có thể bắt đầu một mình rồi chọn Enable multiplayer từ menu Session sau đó. Khách chọn Multiplayer → Join session và nhập một địa chỉ như http://HOST_LAN_ADDRESS:8787 hoặc URL HTTPS của máy chủ. Biệt danh là văn bản nhân vật tùy chọn, không phải tài khoản.

Chỉ máy chủ kết nối Codex và cung cấp hạn mức tạo. Khách dùng chung lượt chơi và lịch sử hiện tại của máy chủ nhưng không bao giờ tự kết nối với Codex. Chọn Return to single player sẽ đóng các kết nối khách hiện tại và ngăn các lượt tham gia công khai mới, đồng thời giữ nguyên các lượt lưu phía máy chủ.

Hiểu Hai Cổng Mạng

  • 0.0.0.0:8787 là dịch vụ trò chơi dành cho khách. Chỉ mở quyền truy cập công khai khi chế độ nhiều người chơi được bật.
  • 127.0.0.1:8788 là bảng điều khiển máy chủ riêng dành cho kết nối Codex, cài đặt tạo nội dung và các tùy chọn sao lưu.

Tuyệt đối không công khai hoặc reverse-proxy cổng 8788. Không để khách truy cập tiến trình Codex, thư mục thông tin xác thực hoặc các API của máy chủ. Nếu sử dụng proxy hoặc tunnel, chỉ chuyển tiếp dịch vụ khách trên cổng 8787.

Để lưu trữ trên internet, repository có sẵn một cấu hình Caddy mẫu chỉ proxy cổng 8787 và hỗ trợ WebSocket. Proxy phải giữ nguyên header Host ban đầu để thực hiện kiểm tra cùng nguồn. Tính năng duyệt NAT tự động và relay được lưu trữ không được tích hợp.

Chạy phiên bản Phát triển hoặc Desktop

Để phát triển, hãy chạy máy chủ TypeScript và middleware Vite cùng lúc:

npm run dev

Để mở cửa sổ máy chủ Electron, trước tiên hãy build dự án rồi chạy:

npm run build
npm run desktop

Chế độ Electron là một shell desktop chạy từ mã nguồn, không phải trình cài đặt đóng gói. Chế độ này yêu cầu Node.js có trong PATH, hoặc một đường dẫn tuyệt đối được cung cấp qua NODE_BINARY. Nhấn F11 để bật/tắt toàn màn hình, hoặc khởi động trực tiếp ở chế độ toàn màn hình:

npm run desktop:fullscreen

Thiết lập Docker tùy chọn cho Linux

Cấu hình Compose được cung cấp nhắm đến Docker Engine trên Linux và sử dụng mạng của máy chủ. Cấu hình này cố ý không chứa ánh xạ cổng, để listener quản trị loopback vẫn có thể truy cập cục bộ mà không được đặt trên giao diện bridge.

docker compose build
docker compose up -d
docker compose exec game node node_modules/@openai/codex/bin/codex.js login --device-auth

Tự hoàn tất việc xác thực với tư cách chủ máy chủ. Volume world-data lưu thế giới tại /app/data, còn codex-private lưu thông tin xác thực và cấu hình tại /home/node/.codex. Hãy giữ nguyên cả hai volume và bảo vệ codex-private như thông tin đăng nhập tài khoản.

Kiểm tra lỗi máy chủ bằng:

docker compose logs game

docker compose stop giữ nguyên các volume. Không chạy down --volumes nếu bạn muốn giữ lại thế giới. README khuyến nghị sử dụng các lệnh native thay vì cấu hình Compose này trên Windows và macOS.

Sao lưu và khôi phục thế giới

npm start native lưu dữ liệu trong ./data. Electron sử dụng thư mục world bên trong vị trí dữ liệu người dùng của ứng dụng. Đặt INFINITE_DATA_DIR thành một đường dẫn tuyệt đối nếu bạn muốn nhiều phương thức khởi chạy cùng sử dụng một thế giới.

Để sao lưu cơ sở dữ liệu trực tuyến nhanh chóng, hãy mở START → SESSION → World settings → Back up world. Bản sao lưu được ghi vào backups/. Bản sao lưu bao gồm trạng thái cơ sở dữ liệu nhưng không bao gồm mọi tệp ngữ cảnh, nhật ký tạo nội dung hoặc thông tin xác thực Codex riêng tư.

Để tạo bản lưu trữ hoàn chỉnh:

  1. Dừng máy chủ một cách an toàn.
  2. Sao chép toàn bộ thư mục dữ liệu, bao gồm các thư mục xem trước nếu cần.
  3. Khôi phục bản sao vào một thư mục riêng.
  4. Đặt INFINITE_DATA_DIR thành thư mục đã khôi phục.
  5. Khởi động lại và kết nối lại Codex khi cần.

Tuyệt đối không thay thế cơ sở dữ liệu đang hoạt động hoặc tách cơ sở dữ liệu khỏi các tệp SQLite WAL đang hoạt động. Giữ bản lưu trữ gốc cho đến khi đã xác minh thế giới được khôi phục.

Biến cấu hình hữu ích

  • INFINITE_DATA_DIR: cơ sở dữ liệu thế giới, snapshot, nhật ký và bản sao lưu.
  • PORT: cổng trò chơi dành cho khách; mặc định là 8787.
  • ADMIN_PORT: cổng bảng điều khiển máy chủ loopback; mặc định là 8788.
  • CODEX_EXECUTABLE: tùy chọn ghi đè executable hoặc codex.js; các shell wrapper sẽ bị từ chối.
  • CODEX_HOME: tùy chọn chỉ định thư mục thông tin xác thực và cấu hình Codex do máy chủ sở hữu.
  • NODE_BINARY: executable Node.js được Electron sử dụng.
  • INFINITE_MAP_TIMEOUT_MS: thời hạn tạo cho mỗi bản đồ; mặc định là 180000 và tối đa là 600000.

Mẹo nâng cao

Chuyển tiếp quản trị từ xa một cách riêng tư

Trên máy chủ từ xa, hãy xác thực Codex từ shell riêng tư của người vận hành:

node node_modules/@openai/codex/bin/codex.js login --device-auth

Sau đó chuyển tiếp cổng quản trị loopback từ máy tính của bạn:

ssh -N -L 127.0.0.1:8788:127.0.0.1:8788 operator@your-server

Mở http://127.0.0.1:8788 trên máy cục bộ. Kết nối SSH này là tunnel quản trị chỉ dành cho chủ sở hữu, không phải proxy trò chơi công khai.

Sử dụng các bộ kiểm thử trước khi thay đổi engine

npm test
npm run build
npm run test:movement
npm run test:gameplay
npm run test:preview
npm run test:saves
npm run test:streaming
npm run test:variety
npm run test:e2e
npm run test:desktop

Các fixture xác định trước kiểm tra cơ chế trò chơi mà không cần gọi provider. Các kiểm tra trình duyệt về chuyển động và gameplay sử dụng bản xem trước đã chuẩn bị và xác nhận rằng không có lệnh gọi Codex nào diễn ra.

Chỉ đặt lại khi cần thiết

Thao tác Settings → Full game reset trên màn hình chính khác với việc quản lý bản lưu. Sau khi xác nhận bằng RESET, thao tác này sẽ xóa tất cả lượt chơi, checkpoint, nội dung đã tạo, tiến trình và cài đặt trò chơi. Thao tác này cũng xóa phê duyệt Codex của trò chơi, mặc dù CLI Codex vẫn đang đăng nhập.

Giới hạn hiện tại

Infinite Pokémon là một nguyên mẫu, chưa phải bản phát hành hoàn chỉnh. Khả năng tạo nội dung vẫn bị giới hạn bởi dung lượng lưu trữ hữu hạn, giới hạn của nhà cung cấp, thời gian tạo và vốn từ hiện tại của engine. Địa hình sử dụng các mẫu đã được xác thực, còn AI không tạo ra các cơ chế thực thi tùy ý. Tính năng giao dịch, hệ thống trung tâm dịch vụ và Võ đường hoàn chỉnh, cũng như nhập hình ảnh được tạo từ bên ngoài, đều được mô tả là công việc trong tương lai chứ chưa phải tính năng hiện tại.

Giới hạn nhiều người chơi gồm tám kết nối đồng thời và 64 huấn luyện viên được lưu là các giới hạn triển khai, không phải bằng chứng về khả năng mở rộng ở quy mô internet. Việc lưu trữ trên internet cũng yêu cầu quản trị viên cấu hình tường lửa, DNS, HTTPS, chuyển tiếp cổng hoặc đường hầm riêng tùy trường hợp.

Kết luận

Infinite Pokémon kết hợp một lõi RPG đáng tin cậy, do máy chủ kiểm soát, với khả năng mở rộng thế giới có giới hạn nhờ AI hỗ trợ. Hãy bắt đầu bằng bản xem trước không cần token, kết nối Codex khi bạn sẵn sàng mở rộng hành trình khám phá và sử dụng các checkpoint để thử nghiệm những tương lai khác nhau. Khi triển khai nhiều người chơi hoặc từ xa, hãy giữ riêng tư bảng điều khiển máy chủ và thông tin xác thực, chỉ công khai dịch vụ dành cho khách, đồng thời duy trì bản sao lưu đầy đủ của thư mục dữ liệu.

Truy cập kho lưu trữ Infinite Pokémon trên GitHub để xem mã nguồn, tài liệu, ghi chú triển khai, các kỹ năng, thông tin ghi công và tuyên bố miễn trừ trách nhiệm.