GitHub - byorgey/swarm: Resource gathering + programming game
Extracto
Resource gathering + programming game. Contribute to byorgey/swarm development by creating an account on GitHub.
Resumen
Resumen Principal
Swarm es un proyecto de código abierto alojado en GitHub que combina elementos de juego de recolección de recursos con programación educativa. Desarrollado por el usuario byorgey, este juego permite a los usuarios interactuar con un entorno virtual donde deben recolectar recursos mientras programan acciones específicas para sus agentes. La naturaleza del proyecto como herramienta de aprendizaje de programación lo convierte en una plataforma valiosa para desarrolladores y estudiantes interesados en lógica computacional y automatización. El enfoque en la programación como mecanismo central del gameplay diferencia a Swarm de otros juegos de recursos tradicionales, integrando conceptos de algoritmos, control de flujo y resolución de problemas. La disponibilidad del código fuente bajo licencia abierta fomenta la colaboración comunitaria y permite personalizaciones según las necesidades específicas de cada usuario. La estructura del proyecto en GitHub facilita la contribución de desarrolladores mediante la creación de issues, pull requests y documentación colaborativa, estableciendo un ecosistema de desarrollo sostenible.
Elementos Clave
- Mecánica de Recolección de Recursos: El juego incorpora sistemas clásicos de gestión donde los jugadores deben optimizar la recolección y utilización de recursos para progresar, combinando estrategia con programación práctica
- Componente Educativo de Programación: Swarm se posiciona como herramienta pedagógica que enseña conceptos de programación mediante la interacción lúdica, permitiendo aprender sintaxis, estructuras de control y lógica algorítmica de manera contextualizada
- Plataforma GitHub para Desarrollo Colaborativo: El proyecto utiliza GitHub como infraestructura central para gestión de versiones, seguimiento de errores y contribuciones comunitarias, siguiendo prácticas estándar de desarrollo de software moderno
- Enfoque en Automatización de Agentes: Los jugadores programan comportamientos específicos para sus unidades dentro del juego, lo que implica el desarrollo de habilidades de pensamiento computacional y diseño de algoritmos eficientes para tareas automatizadas
Análisis e Implicaciones
La convergencia entre gamificación y educación técnica que presenta Swarm representa una tendencia creciente en el desarrollo de herramientas de aprendizaje interactivo. Este enfoque tiene el potencial de transformar la manera en que se enseñan conceptos complejos de programación, haciendo el proceso más accesible y atractivo para audiencias diversas. La naturaleza open-source del proyecto multiplica su impacto educativo al permitir adaptaciones específicas para diferentes contextos de enseñanza y niveles de habilidad.
Contexto Adicional
El proyecto Swarm se enmarca dentro de una categoría emergente de juegos serios (serious games) que buscan combinar entretención con objetivos educativos o de entrenamiento. Su disponibilidad gratuita en GitHub lo convierte en un recurso democrático para instituciones educativas y autodidactas que buscan alternativas innovadoras al aprendizaje tradicional de programación.
Contenido
Swarm is a 2D programming and resource gathering game. Program your robots to explore the world and collect resources, which in turn allows you to build upgraded robots that can run more interesting and complex programs.
The implementation is still in an early stage, but planned features include:
- Practically infinite 2D procedurally generated worlds
- Simple yet powerful programming language based on the polymorphic lambda calculus + recursion, with a command monad for describing first-class imperative actions
- In-game tutorial
- Multiple game modes:
- In Classic mode, you start with the ability to produce only very basic, limited robots; collecting resources allows you to bootstrap your way into programming more sophisticated robots that can explore more of the world, collect more resources, etc.
- Hardcore mode is like Classic mode, but you start with only a limited number of robots. If they get stuck or you run out of resources, it's game over!
- Sandbox mode places no restrictions: program robots to your heart's content using whatever language features you want, without worrying about collecting resources.
- In Challenge mode, you attempt to program robots in order to solve pre-designed puzzles or challenges.
- Future versions might also have multiplayer modes, with co-op or PvP play over a network...?
Installing and Playing
Warning: Swarm is still in an early stage; it's missing many of the planned features, there is no winning condition, and the gameplay is not very deep yet. But you can program cute little robots, and hey, that's all that really matters, right?
NOTE: Swarm requires a POSIX-style environment that supports
terminfo. On Linux and OSX, the below instructions should work
natively. On Windows, see the comments on this GitHub
issue for instructions
getting it to work under the Windows Subsystem for Linux.
The recommended way to install Swarm at the moment is as follows:
-
Clone the Swarm repository, e.g.
git clone https://github.com/byorgey/swarm.git -
If you don't already have the
stacktool:-
Get the
ghcuptool, a handy one-stop utility for managing all the different pieces of a Haskell toolchain. -
Use
ghcupto installstack:
-
-
It is recommended that you use a relatively large terminal window (e.g. 132 columns x 43 rows or larger).
- To find out the size of your terminal, you can type
stty size.
- To find out the size of your terminal, you can type
-
Now use
stackto build and run Swarm:cd /path/to/the/swarm/repo stack run -
Go get a snack while
stackdownloads a Haskell compiler and all of Swarm's dependencies. -
Have fun! At the moment, you probably want to take a look at the tutorial to help get you started. Eventually there will be an in-game tutorial.
Community
Check out the COMMUNITY page for ways to connect with others in the community.
If you want to contribute, you're most welcome! There are lots of ways to contribute, regardless of your Haskell background. For example, even someone with no Haskell experience whatsoever could still help with e.g. game design, playtesting, and level design for challenge mode. Check out the CONTRIBUTING file for more specific information about how to contribute.
Fuente: GitHub
