2 điểm bởi GN⁺ 2024-10-23 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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 AttackersDefenders; 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 AttackersDefenders
  • 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

 
GN⁺ 2024-10-23
Ý 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

    • Làm mình nhớ đến câu hãy làm một trò chơi mà bản thân thấy vui khi làm
    • Mình cũng cảm thấy tương tự. Máy chủ game thời gian thực viết bằng PHP thật sự rất thú vị
      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ờ
    • Nếu là Electron thì mình xin bỏ qua
    • Thực ra 15 năm trước cũng đã có thể làm được. Hồi nhỏ mình chỉ biết PHP và Visual Basic, nên từng hay viết server CLI bằng PHP
      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.1
      https://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ị

  • 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

    • Không có quy định nào nói là nhất định phải bắn. Có thể đi theo tuyến charisma, thuyết phục khủng bố từ bỏ việc đặt bom
    • Mình không phản đối về mặt đạo đức với bản thân video game bạo lực, nhưng mong các game kinh phí lớn có nhiều sáng tạo hơn
      Đâ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
    • Code client có thể xem trong www: https://github.com/solcloud/Counter-Strike/tree/master/www
      Client dùng khá nhiều JavaScript, còn đồ họa dùng Three.js
    • Đúng vậy, toàn bộ code nằm trong một repository duy nhất này
      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

    • Bạn mình có game này, và bọn mình đã chơi cùng nhau rất vui
    • Tình yêu là một cảm xúc rất đặc thù, nên mình sẵn sàng tranh luận bất cứ lúc nào về vị trí số 1 đó
  • 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

    • Đồng ý. Nhưng giỏi cả lập trình lẫn art là một năng lực khá hiếm, chưa kể âm thanh và animation lại là những mảng riêng nữa
  • Có thể thêm file giấy phép được không?

    • Có thể thì được, nhưng mình không phải luật sư và cũng không muốn hẹn hò với Gaben cùng các luật sư của ông ấy
      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ở

    • Nó đúng là nguồn mở. Source nằm ngay trong repository để ai cũng đọc được
      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ở
    • Vậy nên gọi là gì? Công khai mã nguồn?
    • https://github.com/solcloud/Counter-Strike/blob/master/LICEN...
    • Chỉ cần nói “Thưa tác giả, với phần mềm mở thì giấy phép phù hợp rất quan trọng. Nếu không có thể phát sinh vấn đề pháp lý” là được
    • Ừ ừ, tôi đang gây hại cho nguồn mở đây. Xin lỗi nguồn mở nhé
  • 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 biết đến BAR vài tuần trước, và dù giờ cũng không hẳn là gamer, cũng chưa từng thích game chiến thuật thời gian thực, vậy mà đã vượt quá 50 giờ trong game
      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ới
    • BAR thật sự xuất sắc. Nếu thích các game kiểu Total Annihilation/Supreme Commander, rất đáng để thử
      Có 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