2 ポイント 投稿者 GN⁺ 2024-10-23 | 1件のコメント | WhatsAppで共有
  • Counter-Strike: Footballは、2つのサッカーファンチームがラウンド勝利数を競う対戦型マルチプレイヤーFPSゲーム
  • チームはAttackersDefendersに分かれ、DefendersはAttackersのgraffiti bomb ballからfan base sanctuaryを守らなければならない
  • ラウンドの勝利条件は、排除、爆弾設置、解除、時間切れまでの生存の有無に分かれ、爆弾が設置されるとラウンドのカウントダウンは40秒に設定される
  • 実行ファイルは最新リリースからOS別アセットとして入手でき、ソースから直接ビルドするにはElectronクライアントとPHPサーバーをそれぞれ実行する必要がある
  • プロジェクトはhtml/css/js/phpと3Dモデリング・テクスチャリング・アニメーションの貢献者をpull requestで受け付けている

ゲーム概要

  • Counter-Strike: Footballは、2つのサッカーファンチームが相手より多くのラウンドに勝つことを目指して戦う、対戦型マルチプレイヤーFPSゲーム
  • ゲームのダウンロードはDownload gameで提供されている
  • README上部のバッジでは、テスト、Code coverage 100%、**Mutation score 100%**が表示されている

チームとラウンド目標

  • チームはAttackersDefendersで構成される
  • Defendersの目標は、各ラウンドでAttackersがgraffiti bomb ballによってfan base sanctuaryを損なうのを防ぐこと

勝利条件

  • Defendersは次の条件でラウンドに勝利する
    • 爆弾が設置される前に、すべてのAttackersプレイヤーを排除する
    • 爆弾が爆発する前に解除する
    • ラウンド時間の終了時に少なくとも1人が生存しており、爆弾が設置されていない
  • Attackersは次の条件でラウンドに勝利する
    • ラウンド時間が終わる前に、すべてのDefendersプレイヤーを排除する
    • ラウンド時間が終わる前に爆弾を設置し、Defendersに解除させない
  • Attackersがラウンド時間終了前にgraffiti bombを配置すると、ラウンドのカウントダウンは40秒に設定される
    • Defendersが爆弾を解除するには30秒が必要
    • defuse kitを使う場合、解除時間は35秒

インストールと実行

  • OS別の実行ファイルはlatest releaseから入手できる
  • クライアントはelectron/フォルダでnpmコマンドを使って実行する
    cd electron/
    npm install
    npm run dev
    
  • サーバーはComposerの依存関係をインストールした後、PHP CLIで実行する
    composer install -a --no-dev
    php cli/server.php 2 # will start server waiting for 2 players to connect
    

貢献方法

  • プロジェクトはhtml/css/js/phpを知っている貢献者を探している
  • 3Dモデリング、テクスチャリング、アニメーションのスキルがある人も、pull requestでゲーム改善に参加できる

1件のコメント

 
GN⁺ 2024-10-23
Hacker Newsのコメント
  • PHPサーバーにElectronクライアントとはすごい。まともな名前空間すらなかった頃以来、PHPは長いこと触っていなかったけど、これは本当に驚きだ。
    とんでもない労力だし、余暇にこのプロジェクトを手伝いたくなる。こういうぶっ飛んだプロジェクトがもっと増えるべき。

    • 楽しく作れるゲームを作れ、という言葉を思い出す。
    • 自分も同じように感じた。PHPで書かれたリアルタイムゲームサーバーというのが本当に興味深い。
      昔のPHPと、一部CMSでのPHPしか知らなかったので、リアルタイムプロジェクトは思い浮かばなかった。驚きだ。
    • Electronなら自分はパス。
    • 実は15年前でも作れた。子どもの頃、PHPとVisual Basicくらいしか知らなかったので、PHPでCLIサーバーを作ったりしていた。
      socket_select()を使えば非同期サーバーを作れたし、この関数はPHP 4.1で追加された。
      https://www.php.net/manual/en/function.socket-select.php
      15年前にもPHPにスレッドを追加するサードパーティ拡張はあったが、バグが多かった。
  • 参考までに、クライアント側はwww/assets配下にある。https://github.com/solcloud/Counter-Strike/tree/master/www/a...
    threejs以外の依存関係はなく、TypeScriptもビルドパイプラインもない。ただコードを読むのが楽しい。

  • GitHubの言語統計を見ると**PHP 82%、JS 15%**にHTML/CSSが少し混ざっているけど、実際のクライアントは何で作られているのか気になる。
    別のリポジトリにあるのか、それとも全部PHPで実装されているのか? もしそうなら印象的だ。
    「低暴力ゲーム」という説明は、顔に銃を撃ち、爆弾を設置・解除し、撃たれながら生き残るゲームにしては笑える。
    ついでに、投稿者がサッカー場を見たことがあるのかも気になる。十字マークや合っていない線がかなり見えるけど、サッカーが核心ではないので大きな問題ではなさそう。

    • 必ず撃たなければならないと決まっているわけではない。カリスマルートに進んで、テロリストを説得して爆弾設置を諦めさせることもできる。
    • 暴力的なビデオゲームそのものに道徳的に反対しているわけではないが、大規模予算のゲームにはもっと創造性があってほしい。
      社会が持つ最もインタラクティブなメディアの一つなのに、毎年何十億ドルもがまた別の「銃を撃つ男の銃撃ち:銃器エディション」に注ぎ込まれている。
      少し脱線したが、このプロジェクトはやはりものすごく印象的だし、CSを何千時間もプレイしてきたので、こういうものを見るのは素晴らしい。
    • クライアントコードはwwwで見られる: https://github.com/solcloud/Counter-Strike/tree/master/www
      クライアントはJavaScriptが多く、グラフィックにはThree.jsを使っている。
    • そう、すべてのコードはこの単一リポジトリにある。
      動物破壊の説明に自分は少し興奮してしまった。
      十字マークへの指摘は気に入った。ユーモアの感覚が少し変なのかもしれないし、ヨーロッパで育ちながらヘルメットをかぶったアメフト選手が出てくるアメリカ映画を見ていたせいかもしれない。
      さらに冗談寄りに言うと、PHP CLIインターフェースもある(https://github.com/solcloud/Counter-Strike/blob/master/cli/c...)。
      ただし、ターミナルエミュレーターにかっこいいMatrix風フォントがないと、競技場に横たわる赤いドレスの女性は見えない可能性が高い。
  • とてもクール。余談だが、少なくともスクリーンショットは90年代のPCゲームExtreme Paintbrawlをかなり思い出させる。
    子どもの頃は本当に好きだったが、数年後に「史上最悪のビデオゲームの一つ」と評価されていると知った。
    https://en.wikipedia.org/wiki/Extreme_PaintBrawl

    • 友人がこのゲームを持っていて、一緒に本当に楽しく遊んだ。
    • 愛というのは実に特定の感情なので、その1位の座をめぐってならいつでも争える。
  • オープンソースのコードは良いが、ゲームに本当に必要なのはオープンなアートだ。ほとんどのオープンソースゲームは見た目と感触で苦戦する。

    • 同意する。ただ、プログラミングとアートの両方が得意というのはかなり珍しい能力で、さらにオーディオとアニメーションの領域も別にある。
  • ライセンスファイルを追加できる?

    • できるとは思うが、弁護士ではないし、Gabenと彼の弁護士たちとデートしたいわけではない。
      Gabe、gooseman、Jessとのデートなら構わない。提案があれば共有してほしい。
  • 複数の人がライセンスを入れるよう言ってから何時間も経っているのに、まだオープンソースではない
    オープンソースではないものをオープンソースと呼ぶのは本当に良くないし、自由・オープンソースソフトウェアに害を与える。

    • オープンソースで合っている。誰でも読めるようにリポジトリにソースがそのままある。
      自由ソフトウェアでなくてもオープンソースではあり得るし、ライセンスがなくてもオープンソースではあり得る。所有者がコードを世界に開いて読めるようにしたなら、それはオープンソースだ。
    • では何と呼べばいい? ソース公開
    • https://github.com/solcloud/Counter-Strike/blob/master/LICEN...
    • 「作者さん、オープンなソフトウェアには適切なライセンスが重要です。そうでないと法的問題が起きる可能性があります」と言えばいい。
    • はいはい、自分はオープンソースに害を与えているんだね。オープンソースに謝るよ。
  • これをオープンソースとして公開したのは素晴らしい。3Dゲーム開発をやってみたい人にとって、優れた出発点になる。

  • オープンソースのアセットを備えたCounter-Strike 1.6バージョンがあるといい。
    QuakeのOpenArenaに似ているが、CS 1.6向けという感じ。
    https://github.com/Velaron/cs16-clientの上に作ることもできそう。

  • 本当に印象的なオープンソースゲームはいくつもある。ゲーム好きの友人グループのおかげで昨年BAR(Beyond All Reason)を知ったが、奥深さ、グラフィック、最適化の面で本当に印象的だ。
    こういう未来は好きだ。

    • 数週間前にBARを知って、今では特にゲーマーというわけでもなく、リアルタイムストラテジーゲームを好きだったこともないのに、すでにゲーム内時間が50時間を超えた。
      ディテールの水準と丁寧な実装に大いに感心している。操作の自由度と自動化の可能性が高いので、技術志向の人にはかなり合っている感じがする。
      一緒にやりたいなら、ゲーム内ユーザー名は[ZWD]_jaan。フレンド追加してくれれば基本概念を紹介できるし、まだ初心者ではあるが協力ゲームをしたり初心者ロビーを探したりできる。
    • BARは本当に素晴らしい。Total Annihilation/Supreme Commanderのようなゲームが好きなら、ぜひチェックする価値がある。
      Luaでゲームを簡単に改造でき、自由・オープンソースゲームとしてはコミュニティもかなり大きそうだ。