2 points par GN⁺ 2024-09-09 | 1 commentaires | Partager sur WhatsApp
  • Qu’est-ce que coreCore ?

    • coreCore est une méthode expérimentale d’écriture de jeux vidéo sous la forme d’un outil et moteur de création de jeux d’action-RPG, avec un éditeur de propriétés
    • Il utilise un système de composants simple, où les composants sont des vecteurs Clojure de la forme [keyword value]
    • Les différentes entités sont composées de maps Clojure
    • Les effets de bord dans le jeu sont traités via des composants comme [:tx/foo param], dans une structure similaire à Datomic
    • L’état global du jeu est stocké dans un unique atom appelé app/state, et les entités existent elles aussi comme des atoms à l’intérieur de l’atom principal
    • L’intégralité du contenu de l’application est stockée dans resources/properties.edn, validée avec des schémas Malli et modifiable via une interface GUI
  • Captures d’écran

  • Comment démarrer le développement

    • Saisir la commande suivante :
      • lein dev
    • L’application démarre et effectue aussi les opérations suivantes :
      • démarrage du serveur NREPL
      • à la fermeture de l’application (ESC dans le menu principal), clojure.tools.namespace recharge les fichiers modifiés et redémarre l’application
      • en cas d’erreur, il suffit de corriger le problème et d’appeler dev-loop/restart! sans avoir à redémarrer la JVM
      • dans VIM, on peut lier la touche F5 à la commande suivante : nmap <F5> :Eval (do (in-ns 'dev-loop)(restart!))
  • Licence du code

    • Fourni sous licence MIT
  • Licence des assets

Résumé de GN⁺

  • coreCore est un outil permettant de créer facilement des jeux d’action-RPG, en gérant l’état du jeu avec un système de composants simple
  • Le stockage de tout l’état du jeu dans un seul atom et l’édition des propriétés via une interface GUI en font un outil utile pour les développeurs
  • Il est proposé sous licence MIT, mais les assets utilisés sont propriétaires
  • Parmi les outils aux fonctionnalités similaires, on peut citer RPG Maker ou Unity

1 commentaires

 
GN⁺ 2024-09-09
Commentaires sur Hacker News
  • Il est intéressant de voir différentes approches du développement de jeux

    • Bevy (moteur ECS en Rust) : bien au début, mais peut poser beaucoup de problèmes d’implémentation et devenir complexe
    • Unity : le système de game objects et de composants modulaires est pratique
    • Godot : la hiérarchie orientée objet et le langage intégré étaient jugés insatisfaisants
    • Pygame : adapté aux petits projets, procédural, mais permet de construire des couches orientées objet ou fonctionnelles
    • Clojure : l’implémentation fonctionnelle est intéressante
  • Ce projet GitHub paraît ridicule aux développeurs de jeux

    • l’approche universitaire semble exagérée
    • les captures d’écran sont laides
  • Le projet prétend simplifier le développement de jeux, mais utilise beaucoup de jargon

    • vecteurs Clojure, Datomics, atoms, transactions, schémas Malli, etc.
  • Ce projet semble avoir échoué

    • structure excessivement conçue et manque d’architecture claire
    • il a été codé sans direction claire, faute d’histoire de jeu
  • Ce dépôt, presque sans documentation, a suscité beaucoup de discussions

    • le code ressemble plus à un projet qu’à un moteur de jeu
    • l’éditeur de propriétés est intéressant
    • il semble avoir été upvoté à cause du titre
  • On voit souvent un « je veux créer un jeu » se transformer en création d’un moteur de jeu

    • on tombe dans l’idée que si l’on écrit d’abord le code du moteur, le reste de la création du jeu sera plus facile
    • créer un moteur peut être plus amusant que créer un jeu
    • optimiser le moteur procure une gratification plus rapide
    • tentative d’utiliser le moteur Phaser js pour afficher rapidement quelque chose d’interactif à l’écran
  • J’adore Clojure, mais je me demande si un langage fonctionnel avec des structures de données immuables est adapté au développement de jeux

  • L’état du jeu est stocké dans un seul atom, et les entités y sont elles-mêmes stockées sous forme d’atoms

    • je me demande si cette utilisation des « atoms » est courante en Clojure
  • Il serait intéressant d’analyser les données « temps/complexité consacrés au moteur de jeu » vs « complexité/intérêt du jeu produit »

    • je m’attends à ce que la diversité des jeux créés avec de simples systèmes de templates/moteurs diminue
  • Il existe déjà Core, une plateforme commerciale de création de jeux fonctionnant avec Unreal Engine 4