TopGit
Đánh giá repo GitHub

ViZDoom: Nền Tảng Reinforcement Learning Trên Doom

VTopGit review image for Farama-Foundation/ViZDoom
Review by Topgit.dev for Farama-Foundation/ViZDoom, with GitHub repository stats and README context.
Nhận định nhanh

ViZDoom là một nền tảng nghiên cứu reinforcement learning biến trò chơi Doom năm 1993 thành một environment điều khiển dựa trên pixel để huấn luyện AI agent. README ghi nhận tốc độ sync mode lên tới 7000 bước mỗi giây trên một luồng CPU, kèm binding Python chuẩn Gymnasium và một API C++. Hãy chọn ViZDoom nếu bạn cần testbed RL nhanh với wrapper Gymnasium có sẵn; bỏ qua nếu bạn cần engine 3D hiện đại hoặc huấn luyện đa agent quy mô lớn.

Sao
★ 2.1k
Fork
⑂ 447
Người đóng góp
👥 58
Ngôn ngữ
C++
Giấy phép
Xem trong repo
Chủ đề
AI Tools
Cập nhật
Aug 2026
Trang chủ
GitHub

ViZDoom là gì?

ViZDoom là một nền tảng nghiên cứu reinforcement learning xây trên engine ZDoom, cho phép bạn huấn luyện AI bot chơi Doom chỉ bằng screen buffer làm đầu vào. Nó cung cấp một API Python (kèm wrapper Gymnasium/Gym) và một API C++ để xây dựng và chạy scenario, và theo README nó cũng dùng được cho learning from demonstration và apprenticeship learning, chứ không chỉ RL thuần.

Năng lực Chính cho Phát triển AI

  • API Python với wrapper Gymnasium/Gym được cài kèm package, cộng với một API C++ riêng cho cùng simulator - method Python dùng snake_case, C++ dùng camelCase.
  • Sync mode được ghi nhận đạt tới 7000 frame mỗi giây trên một luồng CPU, theo README, nên bản thân simulator không phải là nút thắt trong training loop.
  • Ngoài screen buffer RGB, ViZDoom còn expose depth buffer cho 3D vision, một audio buffer, và tự động gán nhãn cho các object hiển thị trong khung hình.
  • Truy cập danh sách actor/object trong game, hình học map, và text/notification trong game - không chỉ khung hình render.
  • Cả hai chế độ mô phỏng async và sync, ở cấu hình single-player và multiplayer, với resolution và tham số rendering có thể tuỳ chỉnh.
  • Off-screen rendering, ghi lại episode, và time scaling trong game cho async mode đều được tích hợp sẵn.
  • Có thể xây scenario tuỳ chỉnh bằng visual map editor và một scripting language kế thừa từ engine ZDoom, kèm scenario mẫu có sẵn trong repo.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao

Ai được lợi từ ViZDoom?

ViZDoom phù hợp với nhà nghiên cứu và kỹ sư muốn một environment 3D nhanh, dựa trên pixel cho các thử nghiệm deep reinforcement learning và không cần độ chân thực của một game engine hiện đại để có kết quả hữu ích - wrapper Gymnasium có sẵn nghĩa là bạn có thể cắm thẳng vào training pipeline hiện có mà không cần tự viết custom env class. Nó cũng phù hợp với ai đang nghiên cứu nhận thức thị giác hoặc đa phương thức trong RL, vì depth buffer, audio buffer, và nhãn object cung cấp tín hiệu vượt ngoài pixel thô. Đây là lựa chọn kém phù hợp nếu bạn cần một game 3D hiện đại được phát triển tích cực vượt ngoài cơ chế thời Doom, hoặc nếu Windows là nền tảng mục tiêu duy nhất và bạn cần hỗ trợ hạng nhất, được test kỹ trên đó.

Bắt đầu Cài đặt ViZDoom

Trên Linux, `pip install vizdoom` lấy về wheel dựng sẵn cho Python 3.10+ trên cả x86-64 và ARM64; muốn bật audio, bạn cần cài riêng OpenAL qua package manager - `apt install libopenal-dev` trên các distro dựa trên apt (Debian/Ubuntu), hoặc `dnf install openal-soft-devel` trên các distro dựa trên dnf/yum (Fedora/RHEL). Cùng lệnh `pip install vizdoom` chạy được trên macOS, nhưng từ phiên bản 1.3.0 wheel dựng sẵn chỉ nhắm tới Apple Silicon trên macOS 14.0 trở lên; người dùng Mac Intel trên macOS 13.0+ cần ghim bản cũ hơn bằng `pip install vizdoom==1.2.4`. Trên Windows, `pip install vizdoom` hỗ trợ x86-64 với wheel cho Python 3.10+, nhưng README ghi rằng bản Windows được test kém kỹ hơn hai nền tảng còn lại và gợi ý dùng Docker hoặc WSL nếu bạn cần chạy thử nghiệm nghiêm túc hơn. Ngoài các tổ hợp wheel đó, pip sẽ build từ source, cần một compiler hỗ trợ C++11, cùng CMake 3.12 trở lên, Boost 1.54 trở lên, và SDL2, với OpenAL là tuỳ chọn. Gymnasium/Gym wrapper environment được cài tự động cùng package trên mọi nền tảng được hỗ trợ.

Xây dựng và Huấn luyện AI Agent

Code huấn luyện nằm trong thư mục examples của repo chứ không phải một script quick-start duy nhất: ví dụ Python đầy đủ nhất, một số được nối sẵn với PyTorch, TensorFlow, và Theano, trong khi ví dụ C++ bao phủ cùng những scenario đó với số lượng ít hơn. API Python và C++ gần như phản chiếu nhau, khác nhau chủ yếu ở quy ước đặt tên (snake_case ở Python, camelCase ở C++), nên một bản prototype kiểu Gymnasium viết bằng Python có thể chuyển khá trực tiếp sang phía C++ nếu bạn cần port sau này. Wrapper Gymnasium/Gym là thứ hầu hết codebase RL sẽ import trực tiếp - repo có một tài liệu Gymnasium riêng và một script ví dụ để nối nó vào một training loop tiêu chuẩn. Một điểm cần biết trước khi bắt đầu: ViZDoom không thể đi kèm asset gốc của Doom, nên scenario mặc định render bằng đồ hoạ Freedoom; nếu bạn sở hữu bản gốc Doom hoặc Doom II, bạn có thể đặt file doom2.wad của riêng mình vào thư mục làm việc, hoặc trỏ tới bất kỳ WAD nào dựa trên engine Doom bằng method set_doom_game_path/setDoomGamePath.

Điểm mạnh

  • Thực sự nhanh đối với một environment 3D - README ghi nhận tốc độ sync-mode lên tới 7000 bước mỗi giây trên một luồng CPU, điều quan trọng khi một run RL cần hàng triệu bước.
  • Nhiều hơn pixel RGB: depth buffer, audio buffer, gán nhãn object, và dữ liệu map/actor đều được expose, nên nghiên cứu nhận thức không bị giới hạn ở điều khiển qua screen buffer thuần.
  • Wrapper Gymnasium và Gym có sẵn mặc định thay vì là package cộng đồng gắn thêm, nên việc cắm vào code training RL tiêu chuẩn không cần tự viết wrapper env riêng.
  • Được hậu thuẫn bởi hai bài báo peer-reviewed - bài IEEE CIG 2016 giành Best Paper award của hội nghị đó, và bài IEEE Transactions on Games 2019 giành Outstanding Paper award năm 2022 - chứ không chỉ là tuyên bố trong README.
  • Một hệ sinh thái nhỏ các dự án cộng đồng đã xây trên nó (Sample Factory, EnvPool, LevDoom, COOM, HASARD, MazeExplorer), nên bạn không phải người đầu tiên chạy thử nghiệm quy mô lớn hay generalization trên đó.

Cân nhắc và Giới hạn Đã biết

  • Giấy phép không phải một lời cấp phép duy nhất cho tất cả: README nói code gốc của ViZDoom là MIT, nhưng engine ZDoom bên dưới kéo theo code từ nhiều nguồn với các điều khoản giấy phép riêng biệt, nên hãy kiểm tra trang giấy phép của ZDoom trước khi mặc định MIT bao phủ mọi thứ bạn phát hành.
  • Hỗ trợ Windows được README nêu rõ là test kém kỹ hơn bản Linux và macOS, và gợi ý dùng Docker hoặc WSL cho bất cứ thứ gì ngoài các lần chạy thử nhẹ.
  • Wheel dựng sẵn chỉ phủ Python 3.10+; phiên bản Python cũ hơn hoặc distro không được hỗ trợ sẽ rơi về build từ source, cần compiler C++11, CMake, Boost, và SDL2.
  • Người dùng Mac Intel không có wheel dựng sẵn cho phiên bản mới nhất - README ghim họ vào bản 1.2.4 cũ hơn thay vì phiên bản hiện tại.
  • Không có đồ hoạ Doom gốc ngay từ đầu: scenario render bằng đồ hoạ Freedoom trừ khi bạn tự cung cấp file WAD có bản quyền của riêng mình.
  • README không công bố changelog theo phiên bản hay bộ benchmark rộng hơn ngoài con số throughput sync-mode duy nhất, nên việc so sánh hiệu năng giữa các bản ViZDoom không có cơ sở trong nguồn tư liệu này.

Công cụ Liên quan và Lựa chọn Thay thế

DeepMind Lab - một environment nghiên cứu điều hướng 3D khác; đây là điểm so sánh duy nhất mà chính README của ViZDoom đưa ra, qua một dự án cộng đồng (NavDoom) được mô tả là tương tự nó.Sample Factory - một training framework được duy trì tích cực mà README liệt kê là được xây riêng để scale thử nghiệm ViZDoom.EnvPool - một wrapper environment dạng vector hoá mà README ghi nhận giúp đẩy throughput của ViZDoom vượt xa con số single-thread ở trên.MazeExplorer - một công cụ tạo maze cho scenario ViZDoom mà README mô tả là đầy đủ hơn NavDoom đơn giản.LevDoom và COOM - hai bộ benchmark dựa trên ViZDoom mà README liệt kê, lần lượt cho nghiên cứu generalization và continual learning, nếu câu hỏi nghiên cứu của bạn rộng hơn một scenario.

Câu hỏi Thường gặp về ViZDoom

ViZDoom hỗ trợ những ngôn ngữ lập trình nào?

ViZDoom cung cấp API cho Python và C++, với phía Python bao gồm sẵn wrapper Gymnasium và Gym. Hai bề mặt này gần như giống hệt nhau, khác chủ yếu ở quy ước đặt tên - snake_case ở Python, camelCase ở C++.

Tôi có thể dùng đồ hoạ Doom gốc với ViZDoom không?

ViZDoom không thể phân phối hợp pháp đồ hoạ gốc của Doom hay Doom II, nên mặc định render scenario bằng asset Freedoom. Nếu bạn sở hữu bản game gốc, bạn có thể cung cấp file doom2.wad của riêng mình, hoặc trỏ tới bất kỳ WAD nào dựa trên engine Doom qua method set_doom_game_path/setDoomGamePath.

Giấy phép của ViZDoom là gì?

Code gốc của ViZDoom được phát hành theo giấy phép MIT, theo README. Engine ZDoom mà nó xây trên đó kéo theo code từ nhiều nguồn với các điều khoản giấy phép riêng biệt, nên hãy kiểm tra trang giấy phép của chính ZDoom cho phần đó.

ViZDoom có tương thích với environment Gymnasium không?

ViZDoom tương thích với Gymnasium - các wrapper environment được cài tự động cùng package gốc và có sẵn trên mọi nền tảng ViZDoom hỗ trợ, theo README và tài liệu Gymnasium riêng của dự án.

Yêu cầu nền tảng của ViZDoom là gì?

ViZDoom hỗ trợ Linux, macOS, và Windows. Linux có wheel dựng sẵn cho Python 3.10+ trên x86-64 và ARM64, wheel macOS hiện nhắm tới Apple Silicon trên macOS 14.0+ (Mac Intel cần bản 1.2.4 cũ hơn), còn wheel Windows chỉ hỗ trợ x86-64, với README ghi rằng bản Windows test kém kỹ hơn hai nền tảng còn lại.

ViZDoom mô phỏng nhanh tới mức nào?

README của ViZDoom ghi nhận throughput sync-mode lên tới 7000 frame (bước) mỗi giây, chạy trên một luồng CPU duy nhất, và mô tả bản thân simulator là nhẹ, chỉ vài megabyte.

Vấn đề ViZDoom giải quyết

Các nhà nghiên cứu reinforcement learning thử nghiệm điều khiển dựa trên pixel cần một environment đủ rẻ để chạy hàng triệu bước mô phỏng nhưng đủ phức tạp để thực sự thử thách nhận thức thị giác - hầu hết game engine tái sử dụng lại quá nặng cho việc đó hoặc không expose các buffer mà nhà nghiên cứu thực sự cần. ViZDoom giải quyết điều này bằng cách bọc engine ZDoom (engine đứng sau Doom năm 1993) thành một simulator nhẹ, chỉ vài MB, trả về không chỉ screen buffer mà còn depth, nhãn object, và cả audio, để một bot có thể được huấn luyện chỉ bằng thông tin thị giác, đúng như cách README mô tả.

Trường hợp sử dụng tốt nhất

  • Benchmark các thuật toán deep reinforcement learning dựa trên pixel khi bạn muốn một environment 3D nhanh, rẻ thay vì một game engine hiện đại đầy đủ.
  • Nghiên cứu cần nhiều hơn khung hình RGB - depth buffer, nhãn object, hoặc audio - cho công việc nhận thức thị giác hoặc đa phương thức trong một RL agent.
  • Xây scenario huấn luyện tuỳ chỉnh bằng visual editor và scripting language của ViZDoom thay vì chỉ dựa vào các config mẫu có sẵn.
  • Prototype bằng Python theo chuẩn Gymnasium trước khi port một approach đã huấn luyện sang pipeline C++, vì hai API gần như giống hệt nhau.
  • Công trình học thuật trích dẫn các bài báo nền tảng của chính ViZDoom - bài IEEE CIG 2016 (Best Paper award) và bài IEEE Transactions on Games 2019 (Outstanding Paper award năm 2022).

Repo liên quan

Nguồn & ghi công

Dữ kiện, trích dẫn, và thông tin citation lấy từ repository GitHub Farama-Foundation/ViZDoom và README của nó.

Dữ liệu GitHub · đồng bộ lần cuối 12 thg 8, 2026Đánh giá bởi Henry
Về TopGit

Muốn nghe thêm một ý kiến về ViZDoom?

Hỏi một AI đọc được trang này — một cú bấm là có ngay nhận định về ViZDoom.

GitHub