2 points par GN⁺ 2024-10-23 | 1 commentaires | Partager sur WhatsApp
  • 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 npm
    cd 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

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

    • Ça me rappelle le conseil de créer un jeu qu’on peut s’amuser à développer
    • Je ressens un peu la même chose. Un serveur de jeu temps réel écrit en PHP, c’est vraiment intéressant
      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
    • Si c’est Electron, je passe mon tour
    • En réalité, c’était déjà possible il y a 15 ans. Quand j’étais plus jeune, je ne connaissais guère que PHP et Visual Basic, alors je faisais des serveurs CLI en PHP
      Avec socket_select(), on pouvait créer des serveurs asynchrones, et cette fonction a été ajoutée dans PHP 4.1
      https://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

  • 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

    • Rien ne dit qu’il faut forcément tirer. On peut prendre la voie du charisme et convaincre les terroristes de renoncer à poser la bombe
    • Je ne suis pas moralement opposé aux jeux vidéo violents en soi, mais j’aimerais voir plus de créativité dans les jeux à gros budget
      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
    • Le code client est visible dans www : https://github.com/solcloud/Counter-Strike/tree/master/www
      Le client est largement en JavaScript, et les graphismes utilisent Three.js
    • Oui, tout le code est dans ce dépôt unique
      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

    • Un ami avait ce jeu, et on s’était vraiment bien amusés ensemble
    • L’amour est un sentiment très particulier ; je pourrais me battre à tout moment pour cette première place
  • 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

    • D’accord. Mais être bon à la fois en programmation et en art, c’est une compétence assez rare, et il y a aussi les domaines distincts de l’audio et de l’animation
  • Peut-on ajouter un fichier de licence ?

    • C’est possible, mais je ne suis pas avocat et je n’ai pas envie de sortir avec Gaben et ses avocats
      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

    • C’est bien open source. Le code source est directement dans un dépôt que tout le monde peut lire
      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
    • Alors comment faut-il l’appeler ? Source disponible ?
    • https://github.com/solcloud/Counter-Strike/blob/master/LICEN...
    • Il suffit de dire : « Cher créateur, une licence appropriée est importante pour les logiciels ouverts. Sinon, cela peut poser des problèmes juridiques »
    • Oui, oui, je suis en train de nuire à l’open source. Mes excuses à l’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

    • J’ai découvert BAR il y a quelques semaines, et alors que je ne suis plus vraiment joueur et que je n’ai jamais particulièrement aimé les jeux de stratégie en temps réel, j’ai déjà dépassé les 50 heures en jeu
      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ébutants
    • BAR est vraiment excellent. Si vous aimez les jeux du type Total Annihilation/Supreme Commander, ça vaut clairement le coup d’y jeter un œil
      Le jeu se modifie facilement avec Lua, et pour un jeu libre et open source, sa communauté semble assez grande