Một bản port Go mới của engine game kinh điển DOOM đã khơi mào một cuộc thảo luận thú vị giữa các nhà phát triển về vị trí của Go trong phát triển game và so sánh với các ngôn ngữ lập trình khác. Dự án có tên GORE , đại diện cho việc chuyển đổi hoàn toàn engine game huyền thoại từ C sang Go , loại bỏ các phụ thuộc nền tảng trong khi vẫn duy trì trải nghiệm gameplay gốc.
Tính năng của dự án GORE:
- Không phụ thuộc nền tảng (chạy được ở bất cứ đâu mà Go chạy được)
- Không có phụ thuộc CGo
- Hỗ trợ nhiều phiên bản DOOM ( DOOM , DOOM II , Ultimate DOOM , Final DOOM )
- An toàn bộ nhớ với bộ thu gom rác của Go
- Hỗ trợ biên dịch chéo
- Yêu cầu Go 1.24+ và các tệp WAD
Sự phù hợp của Go trong phát triển Game
Phản hồi từ cộng đồng cho thấy cảm xúc hỗn hợp nhưng nhìn chung tích cực về việc sử dụng Go để phát triển game. Một số nhà phát triển đánh giá cao rằng dự án này thể hiện các lựa chọn thay thế cho các phương pháp C và C++ truyền thống trong gaming. Cuộc thảo luận làm nổi bật khả năng biên dịch đa nền tảng và các tính năng an toàn bộ nhớ của Go như những lợi thế đáng kể so với các ngôn ngữ cấp thấp hơn.
Tuy nhiên, cuộc trò chuyện cũng đề cập đến những hạn chế của Go trong lĩnh vực gaming. Ngôn ngữ này hiện tại thiếu các thư viện đồ họa và phát triển game phong phú so với các hệ sinh thái đã được thiết lập lâu hơn. Ebitengine , được đề cập trong dự án, dường như là một trong số ít framework phát triển game đáng chú ý có sẵn cho các nhà phát triển Go .
Những Hạn Chế Hiện Tại:
- Chỉ một phiên bản trên mỗi tiến trình do các biến toàn cục
- Các hằng số được xuất ngẫu nhiên từ quá trình chuyển đổi C
- API bên ngoài hạn chế cho việc kiểm tra trạng thái
- Vẫn còn một số khối mã không an toàn
- Hỗ trợ đầu vào hạn chế trong phiên bản terminal
So sánh ngôn ngữ và triết lý thiết kế
Một cuộc tranh luận đặc biệt gay gắt nổi lên xung quanh việc so sánh Go với Python , với các nhà phát triển thảo luận liệu Go có thể được coi là Python 4.0 hay không. Cộng đồng chỉ ra những khác biệt cơ bản giữa các ngôn ngữ - bản chất được biên dịch của Go so với cách tiếp cận thông dịch của Python , và sự tập trung của Go vào đồng thời so với việc Python nhấn mạnh vào tính dễ sử dụng.
Go tập trung vào đồng thời, Python tập trung vào việc làm cho việc thực hiện mọi thứ với code trở nên dễ dàng. Nhiều thứ chỉ cần một dòng trong Python , trong Go lại cần khá nhiều dòng hoặc boilerplate.
Cuộc thảo luận cho thấy rằng trong khi Go cung cấp tính linh hoạt kiểu cấu trúc tương tự như các ngôn ngữ scripting, nó đòi hỏi code dài dòng hơn cho các tác vụ mà các ngôn ngữ khác xử lý một cách ngắn gọn hơn.
Triển khai kỹ thuật và hạn chế
Dự án GORE thể hiện cả điểm mạnh và hạn chế hiện tại của Go . Bản port đã thành công trong việc loại bỏ các phụ thuộc CGo và code đặc thù nền tảng, làm cho nó thực sự đa nền tảng. Tuy nhiên, các nhà phát triển đã lưu ý một số thách thức còn lại, bao gồm sự hiện diện của các biến toàn cục ngăn chặn nhiều phiên bản game và một số khối code unsafe còn lại.
Cách tiếp cận của dự án là chuyển đổi code C sang Go , sau đó dọn dẹp thủ công, đại diện cho một điểm trung gian thú vị giữa chuyển đổi tự động và viết lại hoàn toàn. Phương pháp này bảo tồn cấu trúc của game gốc trong khi làm cho nó phù hợp hơn với phong cách lập trình của Go .
Cuộc thảo luận cộng đồng cho thấy rằng mặc dù Go có thể không phải là lựa chọn đầu tiên cho phát triển game, các dự án như GORE chứng minh tính khả thi của nó cho một số ứng dụng gaming nhất định, đặc biệt là những ứng dụng ưu tiên khả năng tương thích đa nền tảng và an toàn bộ nhớ hơn là hiệu suất thô.
Tham khảo: GORE