2 Punkte von GN⁺ 2024-10-23 | 1 Kommentare | Auf WhatsApp teilen
  • Counter-Strike: Football ist ein kompetitiver Multiplayer-FPS, in dem zwei Teams von Fußballfans darum kämpfen, mehr Runden zu gewinnen
  • Die Teams sind in Attackers und Defenders aufgeteilt; die Defenders müssen ihr fan base sanctuary vor dem graffiti bomb ball der Attackers schützen
  • Die Bedingungen für einen Rundensieg hängen von Eliminierung, Bombenplatzierung, Entschärfung und Überleben bis zum Zeitablauf ab; sobald die Bombe platziert ist, wird der Runden-Countdown auf 40 Sekunden gesetzt
  • Ausführbare Dateien sind in der neuesten Release-Version als assets für das jeweilige Betriebssystem verfügbar; wer aus dem Quellcode bauen möchte, muss den Electron-Client und den PHP-Server jeweils ausführen
  • Das Projekt nimmt per Pull Request Beiträge von Personen mit Kenntnissen in html/css/js/php sowie 3D-Modellierung, Texturierung und Animation an

Spielüberblick

  • Counter-Strike: Football ist ein kompetitiver Multiplayer-FPS, in dem zwei Teams von Fußballfans gegeneinander antreten, um mehr Runden als das andere Team zu gewinnen
  • Der Download des Spiels ist unter Download game verfügbar
  • Laut den Badges oben im README werden Tests, Code coverage 100% und Mutation score 100% angezeigt

Teams und Rundenziele

  • Die Teams bestehen aus Attackers und Defenders
  • Ziel der Defenders ist es, in jeder Runde zu verhindern, dass die Attackers das fan base sanctuary mit einem graffiti bomb ball beschädigen

Siegbedingungen

  • Die Defenders gewinnen die Runde unter folgenden Bedingungen:
    • Sie eliminieren alle Attackers-Spieler, bevor die Bombe platziert wird
    • Sie entschärfen die Bombe, bevor sie explodiert
    • Beim Ablauf der Rundenzeit lebt mindestens 1 Spieler, und die Bombe wurde nicht platziert
  • Die Attackers gewinnen die Runde unter folgenden Bedingungen:
    • Sie eliminieren alle Defenders-Spieler, bevor die Rundenzeit abläuft
    • Sie platzieren die Bombe vor Ablauf der Rundenzeit und verhindern, dass die Defenders sie entschärfen
  • Wenn die Attackers vor Ablauf der Rundenzeit die graffiti bomb platzieren, wird der Runden-Countdown auf 40 Sekunden gesetzt
    • Die Defenders benötigen 30 Sekunden, um die Bombe zu entschärfen
    • Bei Verwendung eines defuse kit beträgt die Entschärfungszeit 35 Sekunden

Installation und Ausführung

  • Ausführbare Dateien für die jeweiligen Betriebssysteme gibt es im latest release
  • Der Client wird im Ordner electron/ mit npm-Befehlen gestartet
    cd electron/
    npm install
    npm run dev
    
  • Der Server wird nach der Installation der Composer-Abhängigkeiten über die PHP-CLI gestartet
    composer install -a --no-dev
    php cli/server.php 2 # will start server waiting for 2 players to connect
    

Beitragen

  • Das Projekt sucht Mitwirkende mit Kenntnissen in html/css/js/php
  • Auch Personen mit Fähigkeiten in 3D-Modellierung, Texturierung und Animation können sich per Pull Request an der Verbesserung des Spiels beteiligen

1 Kommentare

 
GN⁺ 2024-10-23
Meinungen auf Hacker News
  • Ein Electron-Client mit einem PHP-Server – beeindruckend. Ich habe PHP seit der Zeit, als es noch nicht einmal richtige Namespaces gab, lange nicht mehr angefasst, aber das ist wirklich erstaunlich.
    Ein enormer Aufwand, und ich bekomme Lust, in meiner Freizeit an diesem Projekt mitzuhelfen. Es sollte mehr solche verrückten Projekte geben.

    • Das erinnert mich an den Rat, ein Spiel zu bauen, das einem Spaß macht.
    • Mir geht es ähnlich. Ein in PHP geschriebener Echtzeit-Game-Server ist wirklich faszinierend.
      Ich kannte nur altes PHP und PHP aus einigen CMS, an Echtzeitprojekte hätte ich nie gedacht – erstaunlich.
    • Bei Electron bin ich raus.
    • Tatsächlich hätte man das auch schon vor 15 Jahren bauen können. Als Kind kannte ich nur PHP und etwas Visual Basic, also habe ich CLI-Server in PHP gebaut.
      Mit socket_select() konnte man asynchrone Server bauen; die Funktion wurde in PHP 4.1 hinzugefügt.
      https://www.php.net/manual/en/function.socket-select.php
      Schon vor 15 Jahren gab es Drittanbieter-Erweiterungen, die PHP Threads hinzufügten, aber sie waren ziemlich fehlerhaft.
  • Zur Info: Die Client-Seite liegt unter www/assets. https://github.com/solcloud/Counter-Strike/tree/master/www/a...
    Es gibt außer threejs keine Abhängigkeiten, kein TypeScript und keine Build-Pipeline. Es macht einfach Spaß, den Code zu lesen.

  • Laut GitHub-Sprachstatistik sind es 82 % PHP, 15 % JS plus etwas HTML/CSS; ich frage mich, womit der eigentliche Client gebaut ist.
    Liegt der in einem anderen Repository, oder ist alles in PHP implementiert? Falls ja, wäre das beeindruckend.
    Die Beschreibung als „gewaltarmes Spiel“ ist ziemlich witzig für ein Spiel, in dem man Leuten ins Gesicht schießt, Bomben legt/entschärft und überlebt, während auf einen geschossen wird.
    Außerdem frage ich mich, ob OP schon einmal einen Fußballplatz gesehen hat. Es gibt einige Linien, die nicht zu den Kreuzen passen, aber Fußball ist ja nicht der Kern, also ist es wohl nicht so wichtig.

    • Es steht ja nicht fest, dass man schießen muss. Man kann auch die Charisma-Route wählen und die Terroristen überzeugen, die Bombe nicht zu platzieren.
    • Ich bin nicht grundsätzlich moralisch gegen gewalttätige Videospiele, aber ich wünschte, es gäbe bei Big-Budget-Spielen mehr Kreativität.
      Es ist eines der interaktivsten Medien der Gesellschaft, und jedes Jahr fließen Milliarden Dollar in noch ein „Mann schießt mit Waffe: Waffen-Edition“.
      Kleiner Exkurs, aber dieses Projekt ist trotzdem enorm beeindruckend, und da ich CS tausende Stunden gespielt habe, ist es cool, so etwas zu sehen.
    • Den Client-Code findet man unter www: https://github.com/solcloud/Counter-Strike/tree/master/www
      Der Client besteht zu großen Teilen aus JavaScript, für die Grafik wird Three.js verwendet.
    • Genau, der gesamte Code liegt in diesem einen Repository.
      Bei der Beschreibung der Tierzerstörung bin ich wohl etwas über die Stränge geschlagen.
      Den Hinweis zu den Kreuzen mag ich. Vielleicht habe ich einfach einen etwas schrägen Humor, oder es liegt daran, dass ich in Europa aufgewachsen bin und amerikanische Filme mit Football-Spielern in Helmen gesehen habe.
      Wenn wir noch mehr in Richtung Witz gehen wollen: Es gibt auch ein PHP-CLI-Interface (https://github.com/solcloud/Counter-Strike/blob/master/cli/c...)
      Allerdings ist die Wahrscheinlichkeit groß, dass man die Frau im roten Kleid, die im Stadion liegt, nicht sieht, wenn der Terminal-Emulator keine schicke Matrix-artige Schriftart hat.
  • Sehr cool. Nebenbei: Zumindest die Screenshots erinnern mich stark an das PC-Spiel Extreme Paintbrawl aus den 90ern.
    Als Kind habe ich es wirklich geliebt; ein paar Jahre später erfuhr ich dann, dass es als „eines der schlechtesten Videospiele aller Zeiten“ gilt.
    https://en.wikipedia.org/wiki/Extreme_PaintBrawl

    • Ein Freund hatte dieses Spiel, und wir hatten zusammen richtig viel Spaß damit.
    • Liebe ist ein sehr spezielles Gefühl; um diesen ersten Platz würde ich jederzeit kämpfen.
  • Open-Source-Code ist gut, aber was Spiele wirklich brauchen, ist offene Art. Die meisten Open-Source-Spiele tun sich beim Look and Feel schwer.

    • Stimme zu. Aber sowohl Programmierung als auch Art gut zu beherrschen, ist eine ziemlich seltene Fähigkeit, und dann kommen Audio und Animation noch als eigene Bereiche dazu.
  • Könnt ihr eine Lizenzdatei hinzufügen?

    • Könnte ich wohl, aber ich bin kein Anwalt und habe keine Lust, mit Gaben und seinen Anwälten ein Date zu haben.
      Dates mit Gabe, gooseman und Jess wären okay. Wenn ihr Vorschläge habt, teilt sie gern.
  • Obwohl mehrere Leute seit Stunden darum bitten, eine Lizenz hinzuzufügen, ist es immer noch nicht Open Source.
    Etwas, das nicht Open Source ist, Open Source zu nennen, ist wirklich nicht okay und schadet freier und Open-Source-Software.

    • Es ist Open Source. Der Source liegt direkt im Repository und ist für jeden lesbar.
      Es kann Open Source sein, ohne freie Software zu sein, und es kann Open Source sein, ohne eine Lizenz zu haben. Wenn der Besitzer den Code für die Welt zum Lesen geöffnet hat, ist es Open Source.
    • Wie soll man es dann nennen? Source-available?
    • https://github.com/solcloud/Counter-Strike/blob/master/LICEN...
    • Man kann sagen: „Lieber Autorin, eine passende Lizenz ist für offene Software wichtig. Sonst kann es rechtliche Probleme geben.“
    • Ja ja, ich schade Open Source. Ich entschuldige mich bei Open Source.
  • Es ist cool, dass das als Open Source veröffentlicht wurde. Es ist ein großartiger Ausgangspunkt für Leute, die 3D-Spieleentwicklung ausprobieren wollen.

  • Eine Version von Counter-Strike 1.6 mit Open-Source-Assets wäre schön.
    So ähnlich wie OpenArena für Quake, nur eben für CS 1.6.
    Man könnte es vielleicht auf https://github.com/Velaron/cs16-client aufbauen.

  • Es gibt einige wirklich beeindruckende Open-Source-Spiele. Durch eine Freundesgruppe, die Spiele mag, habe ich letztes Jahr BAR (Beyond All Reason) kennengelernt, und in Bezug auf Tiefe, Grafik und Optimierung ist es wirklich beeindruckend.
    Diese Zukunft gefällt mir.

    • Ich habe BAR vor ein paar Wochen entdeckt, und obwohl ich mich nicht mehr wirklich als Gamer bezeichnen würde und Echtzeitstrategiespiele nie besonders mochte, habe ich inzwischen schon über 50 Stunden Spielzeit.
      Ich bin sehr beeindruckt vom Detailgrad und der sorgfältigen Umsetzung. Durch das hohe Maß an Kontrolle und die Automatisierungsmöglichkeiten dürfte es ziemlich gut zu technisch orientierten Leuten passen.
      Wenn ihr mitspielen wollt: Mein Benutzername im Spiel ist [ZWD]_jaan. Fügt mich gern hinzu; ich kann euch die Grundlagen zeigen, und auch wenn ich noch Anfänger bin, können wir Koop spielen oder eine Anfänger-Lobby suchen.
    • BAR ist wirklich großartig. Wenn ihr Spiele wie Total Annihilation/Supreme Commander mögt, solltet ihr es euch unbedingt ansehen.
      Man kann das Spiel leicht mit Lua modifizieren, und für ein freies/Open-Source-Spiel scheint die Community ziemlich groß zu sein.