HN comparte: juego tipo Counter-Strike de código abierto
(github.com/solcloud)- 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
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.
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.
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.
start.js(https://github.com/solcloud/Counter-Strike/blob/master/www/a...)El punto de entrada del servidor es
server.php(https://github.com/solcloud/Counter-Strike/blob/master/cli/s...)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.
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í.
www: https://github.com/solcloud/Counter-Strike/tree/master/wwwEl cliente tiene mucho JavaScript, y usa Three.js para los gráficos.
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
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.
¿Puedes agregar un archivo de licencia?
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.
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.
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.
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.Es fácil modificar el juego con Lua y, para ser un juego libre y open source, parece tener una comunidad bastante grande.