Présentation HN : un jeu open source inspiré de Counter-Strike
(github.com/solcloud)- Counter-Strike: Football est un FPS multijoueur compétitif dans lequel deux équipes de supporters de football s’affrontent pour remporter le plus de manches
- Les équipes sont divisées entre Attackers et Defenders ; les Defenders doivent protéger leur fan base sanctuary contre la graffiti bomb ball des Attackers
- Les conditions de victoire d’une manche varient selon l’élimination, la pose de la bombe, son désamorçage ou la survie jusqu’à la fin du temps imparti ; si la bombe est posée, le compte à rebours de la manche est fixé à 40 secondes
- Les exécutables peuvent être téléchargés dans la dernière release sous forme d’assets par OS ; pour compiler depuis les sources, il faut lancer séparément le client Electron et le serveur PHP
- Le projet accepte les contributions via pull request en html/css/js/php ainsi qu’en modélisation 3D, texturing et animation
Présentation du jeu
- Counter-Strike: Football est un FPS multijoueur compétitif dans lequel deux équipes de supporters de football s’affrontent avec pour objectif de gagner plus de manches que l’équipe adverse
- Le jeu est disponible au téléchargement via Download game
- D’après les badges en haut du README, les tests, Code coverage 100% et Mutation score 100% sont indiqués
Équipes et objectifs des manches
- Les équipes sont composées des Attackers et des Defenders
- L’objectif des Defenders est d’empêcher, à chaque manche, les Attackers de dégrader le fan base sanctuary avec la graffiti bomb ball
Conditions de victoire
- Les Defenders gagnent la manche dans les cas suivants :
- éliminer tous les joueurs Attackers avant que la bombe soit posée
- la désamorcer avant qu’elle n’explose
- avoir au moins 1 survivant à la fin du temps de la manche et aucune bombe posée
- Les Attackers gagnent la manche dans les cas suivants :
- éliminer tous les joueurs Defenders avant la fin du temps de la manche
- poser la bombe avant la fin du temps de la manche et empêcher les Defenders de la désamorcer
- Si les Attackers placent la graffiti bomb avant la fin du temps de la manche, le compte à rebours de la manche est fixé à 40 secondes
- Les Defenders ont besoin de 30 secondes pour désamorcer la bombe
- avec un defuse kit, le temps de désamorçage est de 35 secondes
Installation et exécution
- Les exécutables par OS sont disponibles dans la latest release
- Le client se lance depuis le dossier
electron/avec des commandes npmcd electron/ npm install npm run dev - Le serveur se lance avec la CLI PHP après installation des dépendances Composer
composer install -a --no-dev php cli/server.php 2 # will start server waiting for 2 players to connect
Comment contribuer
- Le projet recherche des contributeurs connaissant html/css/js/php
- Les personnes ayant des compétences en modélisation 3D, texturing et animation peuvent aussi participer à l’amélioration du jeu via pull request
1 commentaires
Commentaires sur Hacker News
Un serveur PHP avec un client Electron, c’est incroyable. Je n’ai pas vraiment touché à PHP depuis l’époque où il n’y avait même pas de vrais namespaces, donc ça me surprend vraiment
C’est un travail énorme, et ça donne envie d’aider ce projet sur son temps libre. Il devrait y avoir davantage de projets aussi fous
Je ne connaissais que l’ancien PHP et celui de certains CMS, et je n’aurais pas pensé à des projets temps réel, donc c’est surprenant
Avec
socket_select(), on pouvait créer des serveurs asynchrones, et cette fonction a été ajoutée dans PHP 4.1https://www.php.net/manual/en/function.socket-select.php
Il y a 15 ans, il existait aussi une extension tierce qui ajoutait les threads à PHP, mais elle était pleine de bugs
Pour info, le côté client se trouve sous
www/assets. https://github.com/solcloud/Counter-Strike/tree/master/www/a...Il n’y a aucune dépendance en dehors de threejs, pas de TypeScript ni de pipeline de build. C’est juste plaisant de lire le code
start.js(https://github.com/solcloud/Counter-Strike/blob/master/www/a...)Le point d’entrée côté serveur est
server.php(https://github.com/solcloud/Counter-Strike/blob/master/cli/s...)D’après les statistiques de langages de GitHub, il y a 82 % de PHP, 15 % de JS, avec un peu de HTML/CSS, et je me demande avec quoi le client est vraiment fait
Est-ce dans un autre dépôt, ou bien tout est-il implémenté en PHP ? Si c’est le cas, c’est impressionnant
La description de « jeu peu violent » est amusante pour un jeu où l’on tire au visage, pose/désamorce des bombes et essaie de survivre sous les tirs
Au passage, je me demande aussi si l’OP a déjà vu un terrain de football. Il y a pas mal de lignes qui ne vont pas avec les croix, mais comme le football n’est pas le cœur du sujet, ce n’est sans doute pas très important
C’est l’un des médias les plus interactifs de notre société, et chaque année des milliards de dollars partent encore dans un énième « homme qui tire avec un fusil : édition armes à feu »
Petite digression, mais ce projet reste extrêmement impressionnant, et comme j’ai joué des milliers d’heures à CS, c’est chouette de voir ce genre de chose
www: https://github.com/solcloud/Counter-Strike/tree/master/wwwLe client est largement en JavaScript, et les graphismes utilisent Three.js
Je me suis un peu emballé avec la description de destruction d’animaux
J’aime bien la remarque sur les croix. J’ai peut-être un sens de l’humour un peu étrange, ou bien c’est parce qu’en grandissant en Europe, j’ai vu des films américains avec des joueurs de football américain casqués
Pour pousser encore plus la blague, il y a aussi une interface CLI en PHP (https://github.com/solcloud/Counter-Strike/blob/master/cli/c...)
Mais si votre émulateur de terminal n’a pas une jolie police façon Matrix, vous risquez de ne pas voir la femme en robe rouge allongée sur le terrain
Très cool. À côté de ça, au moins les captures d’écran me rappellent beaucoup le jeu PC des années 90 Extreme Paintbrawl
Je l’adorais quand j’étais enfant, puis j’ai découvert quelques années plus tard qu’il était considéré comme « l’un des pires jeux vidéo de tous les temps »
https://en.wikipedia.org/wiki/Extreme_PaintBrawl
Le code open source, c’est bien, mais ce dont un jeu a vraiment besoin, c’est d’assets graphiques ouverts. La plupart des jeux open source ont du mal sur l’apparence et les sensations
Peut-on ajouter un fichier de licence ?
Un rendez-vous avec Gabe, gooseman et Jess, d’accord. Si vous avez des suggestions, partagez-les
Plusieurs personnes demandent depuis des heures d’ajouter une licence, et ce n’est toujours pas open source
Appeler open source quelque chose qui ne l’est pas n’est vraiment pas acceptable, et nuit au logiciel libre et open source
Un logiciel peut être open source sans être un logiciel libre, et il peut être open source même sans licence. Si le propriétaire a ouvert le code au monde pour qu’il soit lu, c’est open source
C’est chouette de l’avoir publié en open source. C’est un excellent point de départ pour les personnes qui veulent essayer le développement de jeux 3D
Ce serait bien d’avoir une version de Counter-Strike 1.6 avec des assets open source
Un peu comme OpenArena pour Quake, mais pour CS 1.6
On pourrait peut-être la construire au-dessus de https://github.com/Velaron/cs16-client
Il existe pas mal de jeux open source vraiment impressionnants. Grâce à un groupe d’amis amateurs de jeux, j’ai découvert BAR (Beyond All Reason) l’an dernier, et il est vraiment impressionnant par sa profondeur, ses graphismes et son optimisation
Ce futur me plaît
Je suis très impressionné par le niveau de détail et la qualité minutieuse de l’implémentation. Le niveau de contrôle et les possibilités d’automatisation sont élevés, ce qui devrait plutôt bien convenir aux profils techniques
Si vous voulez jouer ensemble, mon nom d’utilisateur en jeu est
[ZWD]_jaan. Ajoutez-moi en ami et je peux vous présenter les bases ; je suis encore débutant, mais on peut faire une partie en coop ou trouver un lobby pour débutantsLe jeu se modifie facilement avec Lua, et pour un jeu libre et open source, sa communauté semble assez grande