Kỹ sư phần mềm Mark Russinovich, Giám đốc Công nghệ (CTO) của Microsoft Azure, vừa giới thiệu DoomPaint - dự án cho phép người dùng chơi DOOM ngay trong Microsoft Paint - ứng dụng vẽ được cài đặt sẵn trên Windows.

DOOM từ lâu đã nổi tiếng là tựa game có thể chạy trên vô số thiết bị và nền tảng khác nhau. Với DoomPaint, Mark Russinovich tiếp tục mở rộng danh sách đó bằng cách biến Microsoft Paint thành màn hình hiển thị của trò chơi.
Tuy nhiên, DoomPaint không chạy DOOM trực tiếp bên trong Paint. Thay vào đó, dự án sử dụng ViZDoom - một phiên bản của ZDoom phục vụ nghiên cứu AI - để xử lý trò chơi ở chế độ nền, sau đó liên tục gửi từng khung hình sang Paint để hiển thị. Chương trình mặc định tải tập đầu tiên của DOOM1.WAD (phiên bản shareware), còn các màn chơi khác sử dụng dữ liệu từ dự án mã nguồn mở Freedoom.
Hiện DoomPaint đã được phát hành trên GitHub theo giấy phép MIT. Khi khởi chạy, chương trình sẽ tự động tạo môi trường Python, cài đặt các thư viện cần thiết và mở thẳng vào màn chơi mà không hiển thị menu hoặc màn hình tiêu đề. Tuy nhiên, do phải liên tục truyền từng khung hình sang Paint, hiệu năng không phải lúc nào cũng ổn định.

Trong DoomPaint, Microsoft Paint chỉ đóng vai trò hiển thị hình ảnh, còn toàn bộ logic trò chơi được xử lý bởi ViZDoom. Mỗi khung hình được sao chép vào Clipboard rồi dán vào Paint để tạo hiệu ứng hiển thị theo thời gian thực.
Để tránh lỗi khi Paint chưa kịp đọc dữ liệu mới từ Clipboard, Russinovich sử dụng công nghệ OLE (Object Linking and Embedding) để quản lý việc truyền dữ liệu hình ảnh giữa hai chương trình.
Ngoài ra, do Paint luôn là cửa sổ đang hoạt động nên các phím điều khiển sẽ mặc định được gửi đến ứng dụng này. Để khắc phục, DoomPaint sử dụng kỹ thuật Low-Level Keyboard Hook nhằm chặn tín hiệu bàn phím và chuyển chúng sang ViZDoom, giúp người chơi điều khiển nhân vật bình thường.
Việc cho phép người dùng chơi DOOM thông qua Paint bằng cách tận dụng các cơ chế khác nhau của Windows là một sáng tạo độc đáo của Mark - người đã làm việc tại Microsoft hơn 20 năm và rất am hiểu về Windows. Mã nguồn và giải thích chi tiết về cách hoạt động của dự án hiện đã được công bố trên GitHub, bạn có thể vào đường link "DoomPaint" để tìm hiểu thêm hoặc tự trải nghiệm.