2 puntos por GN⁺ 2024-09-09 | 1 comentarios | Compartir por WhatsApp
  • ¿Qué es coreCore?

    • coreCore es una forma experimental de crear videojuegos en formato de herramienta y motor para juegos Action-RPG, además de un editor de propiedades
    • Usa un sistema simple de componentes, y los componentes son vectores de Clojure con la forma [keyword value]
    • Las distintas entidades están compuestas por mapas de Clojure
    • Los efectos secundarios dentro del juego se manejan con componentes como [:tx/foo param], similares a la estructura de Datomic
    • Todo el estado del juego se almacena en un solo atom llamado app/state, y las entidades también existen como atoms dentro del atom principal
    • Todo el contenido de la aplicación se guarda en resources/properties.edn, se valida usando esquemas de Malli y puede editarse desde una GUI
  • Capturas de pantalla

  • Cómo empezar a desarrollar

    • Ingresa el siguiente comando:
      • lein dev
    • La aplicación se inicia y también realiza las siguientes tareas:
      • Inicia el servidor NREPL
      • Al cerrar la aplicación (ESC en el menú principal), clojure.tools.namespace recarga los archivos modificados y reinicia la app
      • Si ocurre un error, no hace falta reiniciar la JVM; basta con corregirlo y llamar a dev-loop/restart!
      • En VIM, puedes vincular la tecla F5 al siguiente comando: nmap <F5> :Eval (do (in-ns 'dev-loop)(restart!))
  • Licencia del código

    • Se ofrece bajo la licencia MIT
  • Licencia de los assets

Resumen de GN⁺

  • coreCore es una herramienta para crear fácilmente juegos Action-RPG y usa un sistema simple de componentes para gestionar el estado del juego
  • Almacena todo el estado del juego en un solo atom y permite editar propiedades mediante una GUI, lo que resulta útil para desarrolladores
  • Se ofrece bajo licencia MIT, pero los assets utilizados son propietarios
  • Herramientas con funciones similares incluyen RPG Maker y Unity

1 comentarios

 
GN⁺ 2024-09-09
Comentarios en Hacker News
  • Es interesante ver distintos enfoques para el desarrollo de videojuegos

    • Bevy (motor ECS en Rust): al principio parece bueno, pero puede tener muchos problemas de implementación y volverse complejo
    • Unity: el sistema de game objects y componentes modulares es práctico
    • Godot: la jerarquía OOP y el lenguaje integrado resultaron insatisfactorios
    • Pygame: es adecuado para proyectos pequeños y es procedural, pero permite crear capas OOP o funcionales
    • Clojure: la implementación funcional resulta interesante
  • Este proyecto de GitHub parece ridículo para los desarrolladores de juegos

    • El enfoque académico se siente exagerado
    • Las capturas de pantalla se ven horribles
  • Afirma que puede simplificar el desarrollo de juegos, pero usa demasiada terminología

    • vectores de Clojure, Datomics, átomos, transacciones, esquemas Malli, etc.
  • Parece que este proyecto fracasó

    • Tiene una estructura sobreingenierizada y carece de una organización clara
    • Se programó sin una dirección clara porque no había una historia de juego
  • Este repositorio, que casi no tiene documentación, generó mucha conversación

    • El código parece más un proyecto que un motor de juegos
    • El editor de propiedades es interesante
    • Parece que recibió votos positivos por el título
  • Muchas veces se ve que la idea de "quiero hacer un juego" termina convirtiéndose en hacer un motor de juegos

    • Se cae en la idea de que si primero se escribe el código del motor, el resto del proceso de crear el juego será más fácil
    • Hacer un motor puede ser más divertido que hacer un juego
    • Optimizar el motor da una recompensa más rápida
    • Se intentó usar el motor Phaser js para mostrar rápidamente algo interactivo en pantalla
  • Me encanta Clojure, pero dudo que un lenguaje funcional con estructuras de datos inmutables sea adecuado para el desarrollo de juegos

  • El estado del juego se guarda en un solo átomo y las entidades dentro de él se guardan otra vez como átomos

    • Me pregunto si es común usar "átomos" de esta manera en Clojure
  • Sería interesante analizar datos de "tiempo/complejidad invertidos en el motor del juego" vs "complejidad/interés del juego producido"

    • Espero que la variedad de juegos hechos con sistemas simples de plantillas/motores disminuya
  • Ya existe Core, una plataforma comercial para crear juegos impulsada por Unreal Engine 4