HN vorgestellt: Open-Source-Spiel ähnlich Counter-Strike
(github.com/solcloud)- 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 gestartetcd 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
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.
Ich kannte nur altes PHP und PHP aus einigen CMS, an Echtzeitprojekte hätte ich nie gedacht – erstaunlich.
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.
start.jsan (https://github.com/solcloud/Counter-Strike/blob/master/www/a...)Der Einstiegspunkt auf Serverseite ist
server.php(https://github.com/solcloud/Counter-Strike/blob/master/cli/s...)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 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.
www: https://github.com/solcloud/Counter-Strike/tree/master/wwwDer Client besteht zu großen Teilen aus JavaScript, für die Grafik wird Three.js verwendet.
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
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.
Könnt ihr eine Lizenzdatei hinzufügen?
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 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.
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 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.Man kann das Spiel leicht mit Lua modifizieren, und für ein freies/Open-Source-Spiel scheint die Community ziemlich groß zu sein.