2 puntos por GN⁺ 2024-10-23 | 1 comentarios | Compartir por WhatsApp
  • Counter-Strike: Football es un FPS multijugador competitivo en el que dos equipos de aficionados al fútbol compiten por ganar más rondas
  • Los equipos se dividen en Attackers y Defenders, y los Defenders deben proteger el fan base sanctuary de la graffiti bomb ball de los Attackers
  • Las condiciones de victoria de cada ronda se dividen entre eliminación, colocación de la bomba, desactivación o supervivencia hasta que se acabe el tiempo; si la bomba es colocada, la cuenta regresiva de la ronda se fija en 40 segundos
  • El ejecutable puede descargarse como asset para cada sistema operativo desde la última release, y para compilar directamente desde el código fuente hay que ejecutar por separado el cliente Electron y el servidor PHP
  • El proyecto está recibiendo pull requests de personas que puedan contribuir en html/css/js/php y en modelado 3D, texturizado y animación

Resumen del juego

  • Counter-Strike: Football es un FPS multijugador competitivo en el que dos equipos de aficionados al fútbol se enfrentan con el objetivo de ganar más rondas que el rival
  • La descarga del juego está disponible en Download game
  • Según las insignias en la parte superior del README, aparecen test, Code coverage 100% y Mutation score 100%

Equipos y objetivo de las rondas

  • Los equipos están compuestos por Attackers y Defenders
  • El objetivo de los Defenders es impedir en cada ronda que los Attackers dañen el fan base sanctuary con la graffiti bomb ball

Condiciones de victoria

  • Defenders ganan la ronda en las siguientes condiciones
    • Eliminan a todos los jugadores de Attackers antes de que se coloque la bomba
    • Desactivan la bomba antes de que explote
    • Al menos 1 jugador sobrevive cuando termina el tiempo de la ronda y la bomba no fue colocada
  • Attackers ganan la ronda en las siguientes condiciones
    • Eliminan a todos los jugadores de Defenders antes de que termine el tiempo de la ronda
    • Colocan la bomba antes de que termine el tiempo de la ronda y evitan que los Defenders la desactiven
  • Si los Attackers colocan la graffiti bomb antes de que termine el tiempo de la ronda, la cuenta regresiva de la ronda se fija en 40 segundos
    • Los Defenders necesitan 30 segundos para desactivar la bomba
    • Si se usa un defuse kit, el tiempo de desactivación es de 35 segundos

Instalación y ejecución

  • Los ejecutables para cada sistema operativo pueden descargarse desde la latest release
  • El cliente se ejecuta con comandos npm desde la carpeta electron/
    cd electron/
    npm install
    npm run dev
    
  • El servidor se ejecuta con PHP CLI después de instalar las dependencias de Composer
    composer install -a --no-dev
    php cli/server.php 2 # will start server waiting for 2 players to connect
    

Cómo contribuir

  • El proyecto está buscando personas que sepan html/css/js/php
  • Quienes tengan habilidades de modelado 3D, texturizado y animación también pueden participar para mejorar el juego mediante pull requests

1 comentarios

 
GN⁺ 2024-10-23
Opiniones en Hacker News
  • Un cliente Electron con un servidor PHP suena increíble. Hace mucho que no toco PHP desde la época en que ni siquiera tenía namespaces decentes, y esto de verdad sorprende.
    Es un esfuerzo enorme y me dan ganas de ayudar con este proyecto en mi tiempo libre. Necesitamos más proyectos así de locos.

    • Me recuerda a eso de hacer un juego que sea divertido de crear.
    • Siento algo parecido. Un servidor de juego en tiempo real escrito en PHP es realmente interesante.
      Solo conocía el PHP de antes y el de algunos CMS; nunca se me habría ocurrido usarlo para un proyecto en tiempo real, así que sorprende.
    • Si es Electron, paso.
    • De hecho, hace 15 años ya se podía hacer. De chico solo sabía algo de PHP y Visual Basic, así que solía hacer servidores CLI en PHP.
      Con socket_select() se podía crear un servidor asíncrono, y esa función se agregó en PHP 4.1.
      https://www.php.net/manual/en/function.socket-select.php
      Hace 15 años también había una extensión de terceros para agregar threads a PHP, pero tenía muchos bugs.
  • Como referencia, el lado del cliente está bajo www/assets. https://github.com/solcloud/Counter-Strike/tree/master/www/a...
    No tiene dependencias aparte de threejs, ni TypeScript ni pipeline de build. Simplemente es divertido leer el código.

  • Viendo las estadísticas de lenguajes de GitHub, tiene PHP 82%, JS 15% y un poco de HTML/CSS, así que me pregunto con qué está hecho realmente el cliente.
    ¿Está en otro repositorio, o está todo implementado en PHP? Si es así, es impresionante.
    La descripción de “juego de baja violencia” da risa para un juego en el que disparas a la cara, plantas/desactivas bombas y sobrevives mientras te disparan.
    Además, me pregunto si el OP alguna vez vio una cancha de fútbol. Hay bastantes líneas que no encajan con las marcas de cruz, pero como el fútbol no es lo central, supongo que no importa mucho.

    • No está escrito en piedra que tengas que disparar. También puedes ir por la ruta de carisma y convencer a los terroristas de que no planten la bomba.
    • No me opongo moralmente a los videojuegos violentos en sí, pero me gustaría que hubiera más creatividad en los juegos de gran presupuesto.
      Es uno de los medios más interactivos que tiene la sociedad, y cada año se gastan miles de millones de dólares en otro “hombre que dispara armas: edición armas”.
      Me desvié un poco, pero este proyecto igual es tremendamente impresionante, y como jugué miles de horas de CS, está genial ver algo así.
    • El código del cliente se puede ver en www: https://github.com/solcloud/Counter-Strike/tree/master/www
      El cliente tiene mucho JavaScript, y usa Three.js para los gráficos.
    • Sí, todo el código está en este único repositorio.
      Admito que me emocioné un poco con la descripción de destrucción de animales.
      Me gusta la observación sobre las marcas de cruz. Tal vez mi sentido del humor sea algo raro, o quizá sea porque crecí en Europa viendo películas estadounidenses con jugadores de fútbol americano usando cascos.
      Si llevamos más lejos la broma, también hay una interfaz CLI en PHP (https://github.com/solcloud/Counter-Strike/blob/master/cli/c...)
      Aunque, si tu emulador de terminal no tiene una fuente estilo Matrix genial, es probable que no puedas ver a la mujer del vestido rojo acostada en el estadio.
  • Muy bueno. Como comentario aparte, al menos las capturas de pantalla me recuerdan mucho al juego de PC de los 90 Extreme Paintbrawl.
    De chico me encantaba, y años después me enteré de que lo consideraban “uno de los peores videojuegos de todos los tiempos”.
    https://en.wikipedia.org/wiki/Extreme_PaintBrawl

    • Un amigo tenía este juego y nos divertimos muchísimo jugándolo juntos.
    • El amor es una emoción muy particular; podría pelear por ese primer puesto en cualquier momento.
  • El código open source está bien, pero lo que los juegos realmente necesitan es arte abierto. La mayoría de los juegos open source sufren en su apariencia y sensación.

    • Estoy de acuerdo. Pero ser bueno tanto en programación como en arte es una habilidad bastante rara, y además están los campos separados de audio y animación.
  • ¿Puedes agregar un archivo de licencia?

    • Podría, pero no soy abogado y no tengo ganas de tener una cita con Gaben y sus abogados.
      Una cita con Gabe, gooseman y Jess sí estaría bien. Si tienen sugerencias, compártanlas.
  • Ya pasaron varias horas desde que varias personas pidieron que agregaran una licencia, y todavía no es open source.
    Llamar open source a algo que no lo es está muy mal y perjudica al software libre y open source.

    • Sí es open source. El código fuente está ahí en el repositorio para que cualquiera lo lea.
      Puede ser open source aunque no sea software libre, y puede ser open source aunque no tenga licencia. Si el propietario abrió el código al mundo para que se lea, es open source.
    • Entonces, ¿cómo habría que llamarlo? ¿código fuente publicado?
    • https://github.com/solcloud/Counter-Strike/blob/master/LICEN...
    • Bastaría con decir: “Estimado creador, una licencia adecuada es importante para el software abierto. De lo contrario, pueden surgir problemas legales”.
    • Sí, sí, estoy dañando al open source. Mis disculpas al open source.
  • Está buenísimo que hayan publicado esto como open source. Es un excelente punto de partida para quienes quieran probar el desarrollo de juegos 3D.

  • Sería genial tener una versión de Counter-Strike 1.6 con assets open source.
    Algo parecido a OpenArena para Quake, pero para CS 1.6.
    Tal vez se podría construir sobre https://github.com/Velaron/cs16-client

  • Hay varios juegos open source realmente impresionantes. Gracias a un grupo de amigos a los que les gustan los juegos, el año pasado conocí BAR (Beyond All Reason), y es realmente impresionante en profundidad, gráficos y optimización.
    Me gusta este futuro.

    • Conocí BAR hace unas semanas y, aunque ya ni me considero gamer ni nunca me gustaron los juegos de estrategia en tiempo real, ya superé las 50 horas dentro del juego.
      Me impresiona mucho el nivel de detalle y lo cuidadosa que es la implementación. Por el nivel de control y las posibilidades de automatización, siento que encaja bastante bien con gente de perfil técnico.
      Si quieren jugar juntos, mi usuario dentro del juego es [ZWD]_jaan. Agréguenme y puedo explicarles los conceptos básicos; todavía soy principiante, pero podemos jugar cooperativo o buscar una sala para novatos.
    • BAR es excelente. Si te gustan juegos como Total Annihilation/Supreme Commander, vale mucho la pena verlo.
      Es fácil modificar el juego con Lua y, para ser un juego libre y open source, parece tener una comunidad bastante grande.