HN ra mắt: Trò chơi mã nguồn mở giống Counter-Strike
(github.com/solcloud)- Counter-Strike: Football là một game FPS nhiều người chơi mang tính cạnh tranh, trong đó hai đội cổ động viên bóng đá tranh nhau số vòng thắng
- Các đội được chia thành Attackers và Defenders; Defenders phải bảo vệ fan base sanctuary khỏi graffiti bomb ball của Attackers
- Điều kiện thắng vòng phụ thuộc vào việc tiêu diệt đối phương, đặt bom, gỡ bom, hoặc sống sót đến hết thời gian; nếu bom được đặt, bộ đếm ngược của vòng sẽ được đặt thành 40 giây
- File thực thi có thể tải theo từng OS từ bản phát hành mới nhất; nếu muốn tự build từ source, cần chạy riêng client Electron và server PHP
- Dự án đang nhận pull request từ những người đóng góp về html/css/js/php cũng như dựng mô hình 3D, tạo texture và animation
Tổng quan trò chơi
- Counter-Strike: Football là một game FPS nhiều người chơi mang tính cạnh tranh, nơi hai đội cổ động viên bóng đá chiến đấu với mục tiêu thắng nhiều vòng hơn đối thủ
- Có thể tải game tại Download game
- Theo các badge ở đầu README, dự án hiển thị đã vượt kiểm thử, Code coverage 100%, Mutation score 100%
Đội và mục tiêu của từng vòng
- Các đội gồm Attackers và Defenders
- Mục tiêu của Defenders trong mỗi vòng là ngăn Attackers phá hoại fan base sanctuary bằng graffiti bomb ball
Điều kiện chiến thắng
- Defenders thắng vòng trong các trường hợp sau
- Loại bỏ toàn bộ người chơi Attackers trước khi bom được đặt
- Gỡ bom trước khi bom nổ
- Khi hết thời gian vòng, có ít nhất 1 người còn sống và bom chưa được đặt
- Attackers thắng vòng trong các trường hợp sau
- Loại bỏ toàn bộ người chơi Defenders trước khi hết thời gian vòng
- Đặt bom trước khi hết thời gian vòng và ngăn Defenders gỡ bom
- Nếu Attackers đặt graffiti bomb trước khi hết thời gian vòng, bộ đếm ngược của vòng sẽ được đặt thành 40 giây
- Defenders cần 30 giây để gỡ bom
- Nếu dùng defuse kit, thời gian gỡ bom là 35 giây
Cài đặt và chạy
- File thực thi theo từng OS có thể tải từ latest release
- Client được chạy bằng các lệnh npm trong thư mục
electron/cd electron/ npm install npm run dev - Server được chạy bằng PHP CLI sau khi cài đặt các dependency của Composer
composer install -a --no-dev php cli/server.php 2 # will start server waiting for 2 players to connect
Cách đóng góp
- Dự án đang tìm người đóng góp biết html/css/js/php
- Những người có năng lực về dựng mô hình 3D, tạo texture và animation cũng có thể tham gia cải thiện game thông qua pull request
1 bình luận
Ý kiến trên Hacker News
Máy chủ PHP với client Electron nghe thật ghê gớm. Mình đã không đụng đến PHP lâu rồi, kể từ thời nó còn chưa có namespace đúng nghĩa, nên chuyện này thật sự đáng kinh ngạc
Một nỗ lực khổng lồ, và khiến mình muốn giúp dự án này trong thời gian rảnh. Cần có thêm nhiều dự án điên rồ như thế này
Mình chỉ biết PHP ngày xưa và PHP trong một số CMS, chứ chưa từng nghĩ đến dự án thời gian thực, nên khá bất ngờ
Dùng
socket_select()là có thể tạo server bất đồng bộ, và hàm này đã được thêm vào từ PHP 4.1https://www.php.net/manual/en/function.socket-select.php
15 năm trước PHP cũng đã có extension bên thứ ba để thêm thread, nhưng rất nhiều lỗi
Nhân tiện, phần client nằm dưới
www/assets. https://github.com/solcloud/Counter-Strike/tree/master/www/a...Không có dependency nào ngoài threejs, cũng không có TypeScript hay build pipeline. Chỉ đọc code thôi cũng thấy thú vị
start.js(https://github.com/solcloud/Counter-Strike/blob/master/www/a...)Điểm vào phía server là
server.php(https://github.com/solcloud/Counter-Strike/blob/master/cli/s...)Nhìn thống kê ngôn ngữ trên GitHub thì thấy PHP 82%, JS 15%, thêm một chút HTML/CSS, nên mình tò mò client thật sự được làm bằng gì
Nó nằm ở repository khác, hay tất cả đều được triển khai bằng PHP? Nếu vậy thì ấn tượng thật
Mô tả “game ít bạo lực” nghe khá buồn cười đối với một game bắn vào mặt người khác, đặt/gỡ bom, và cố sống sót trong lúc bị bắn
Ngoài ra cũng tò mò không biết OP đã từng thấy sân bóng đá chưa. Có khá nhiều đường kẻ không hợp với dấu chữ thập, nhưng bóng đá không phải trọng tâm nên chắc cũng không quá quan trọng
Đây là một trong những phương tiện tương tác nhất mà xã hội có, vậy mà mỗi năm hàng tỷ đô lại đổ vào một phiên bản khác của “anh chàng cầm súng bắn súng: phiên bản súng ống”
Hơi lạc đề một chút, nhưng dự án này vẫn cực kỳ ấn tượng, và vì mình đã chơi CS hàng nghìn giờ nên thấy thứ như vậy thật tuyệt
www: https://github.com/solcloud/Counter-Strike/tree/master/wwwClient dùng khá nhiều JavaScript, còn đồ họa dùng Three.js
Mình có hơi phấn khích với phần mô tả phá hủy động vật
Mình thích nhận xét về dấu chữ thập. Có lẽ khiếu hài hước của mình hơi kỳ, hoặc có thể do lớn lên ở châu Âu và xem phim Mỹ có các cầu thủ bóng bầu dục đội mũ bảo hiểm
Nếu đi sâu hơn theo hướng đùa thì còn có cả giao diện PHP CLI nữa (https://github.com/solcloud/Counter-Strike/blob/master/cli/c...)
Tuy nhiên nếu terminal emulator không có font kiểu Matrix thật ngầu, có khả năng bạn sẽ không thấy được cô gái mặc váy đỏ nằm trên sân
Rất tuyệt. Nói thêm ngoài lề, ít nhất ảnh chụp màn hình làm mình nhớ rất nhiều đến game PC thập niên 90 Extreme Paintbrawl
Hồi nhỏ mình rất thích nó, rồi vài năm sau mới biết nó bị đánh giá là “một trong những video game tệ nhất mọi thời đại”
https://en.wikipedia.org/wiki/Extreme_PaintBrawl
Code nguồn mở thì tốt, nhưng thứ game thật sự cần là art mở. Phần lớn game nguồn mở gặp khó ở ngoại hình và cảm giác
Có thể thêm file giấy phép được không?
Hẹn hò với Gabe, gooseman, Jess thì được. Nếu có đề xuất gì thì mong mọi người chia sẻ
Đã vài giờ trôi qua kể từ khi nhiều người bảo hãy thêm giấy phép, nhưng vẫn chưa phải nguồn mở
Gọi thứ không phải nguồn mở là nguồn mở thật sự không ổn, và gây hại cho phần mềm tự do/nguồn mở
Không nhất thiết phải là phần mềm tự do mới có thể là nguồn mở, và không có giấy phép vẫn có thể là nguồn mở. Nếu chủ sở hữu mở code cho thế giới đọc thì đó là nguồn mở
Việc công khai thứ này dưới dạng nguồn mở thật tuyệt. Nó là điểm khởi đầu tuyệt vời cho những ai muốn thử phát triển game 3D
Ước gì có một phiên bản Counter-Strike 1.6 với asset nguồn mở
Kiểu giống OpenArena của Quake nhưng dành cho CS 1.6
Có lẽ cũng có thể xây trên https://github.com/Velaron/cs16-client
Có khá nhiều game nguồn mở thật sự ấn tượng. Nhờ một nhóm bạn thích game, năm ngoái mình biết đến BAR (Beyond All Reason), và nó thật sự ấn tượng về chiều sâu, đồ họa và tối ưu hóa
Mình thích tương lai kiểu này
Mình rất ấn tượng với mức độ chi tiết và cách triển khai kỹ lưỡng. Mức độ điều khiển và khả năng tự động hóa cao nên có vẻ khá hợp với những người thiên về kỹ thuật
Nếu muốn chơi cùng thì username trong game của mình là
[ZWD]_jaan. Cứ kết bạn, mình có thể giới thiệu các khái niệm cơ bản; mình vẫn còn mới nhưng có thể chơi co-op hoặc tìm lobby cho người mớiCó thể sửa game dễ dàng bằng Lua, và với một game tự do/nguồn mở thì cộng đồng có vẻ cũng khá lớn