2 points par GN⁺ 2025-08-24 | 1 commentaires | Partager sur WhatsApp
  • Librebox est un moteur de jeu 3D open source basé sur Luau qui vise la compatibilité d’API avec Roblox
  • Les développeurs peuvent disposer d’une propriété complète, du moteur jusqu’au code, sur leurs jeux
  • Le projet est actuellement au stade de démo et prend en charge le rendu de scène essentiel, le déplacement de caméra et la création de parties de base
  • Les prochaines versions ajouteront notamment la physique, les entrées utilisateur et le support multiplateforme
  • La licence est MIT : le projet est entièrement gratuit et peut être modifié et redistribué librement

Présentation de Librebox

  • Librebox est un moteur de jeu 3D open source construit sur Luau
  • Son objectif principal est de fournir une API similaire à Roblox afin de garantir au maximum la compatibilité du code Luau existant
  • Les développeurs conservent la propriété et la liberté sur le moteur lui-même comme sur la logique du jeu, ce qui permet un développement sans dépendance à une plateforme

Pourquoi Librebox ?

  • Il permet une utilisation libre du moteur et la maîtrise de sa propriété
  • Les développeurs déjà familiers de Roblox ou de Luau peuvent réutiliser leur code presque sans modification
  • Il devient possible de construire sa propre plateforme et de distribuer, modifier et monétiser librement

Principaux exemples de code

  • Exemple : création d’une part, rotation et changement de couleur
    • Voir le fichier examples/part_example.lua
    • Comme avec du code Luau/Roblox classique, il est possible de gérer presque de la même manière la création de parts, la couleur, la position, la rotation et les boucles

Résumé des fonctionnalités prises en charge (version démo)

  • Rendu de scène, éclairage, ombres, skybox
  • Rendu des objets dans game.Workspace
  • Fonctions de déplacement de caméra de base
  • Support du système d’instances et des principaux types de données
    • CFrame, Vector3, Color3, Random, etc.
    • Instance.new, duplication/destruction de parts, contrôle des propriétés
  • Services côté client
    • Workspace, Camera, Lighting, RunService, etc.
    • Support des événements RenderStep/HeartBeat
  • Support des scripts Luau et ordonnanceur
    • Coroutines, événements, tâches asynchrones (task.spawn, task.wait, etc.)
  • Gestion des fenêtres et optimisation du plein écran

Plateformes et extension

  • Actuellement disponible uniquement sur Windows
  • S’appuie sur raylib, ce qui facilite le portage vers d’autres OS
  • Distribué sous forme d’exécutable autonome

Fonctionnalités prévues à l’avenir

  • Moteur physique et détection de collision
  • Support des modèles/meshes, images, GUI et matériaux
  • GUI à l’écran, réplication/multijoueur (serveur)
  • UserInputService, ContextActionService, etc.
  • Mise en place d’un éditeur et d’un écosystème complet serveur/client

Vision et avenir

  • Un moteur open source totalement autonome avec une ambition proche de Godot et Unity
  • Permettre un développement libre avec mon jeu, mon code, sans dépendance à une plateforme
  • Projet d’extension à tous les domaines : éditeur, serveur, distribution et monétisation
  • API utilisateur et code source librement réécrits

Licence et droits d’auteur

  • Licence MIT
  • Utilise uniquement des licences open source, dont Luau (moteur de Roblox, MIT) et raylib (zlib/libpng)
  • Projet indépendant, sans lien avec des plateformes commerciales ni avec des tiers
  • N’inclut aucun code propriétaire ni ressources/sources externes

Contact et communauté

  • E-mail : librebox.developers@gmail.com
  • Tout le monde peut l’utiliser, donner son avis, le modifier et y contribuer

Stack technique

  • Composé de C++, Lua, Luau, Python, C, CMake, etc.

Importance et avantages comparatifs

  • Moteur open source indépendant pour l’écosystème Roblox/Lua
  • Offre une liberté de création, de propriété et de monétisation souvent limitée sur les plateformes commerciales existantes
  • Avec son code source entièrement ouvert, sa compatibilité d’API et sa démo sous Windows, il convient bien à la création de jeux et de contenus 3D basés sur Lua

Conclusion

  • Un moteur de jeu réunissant gratuité, open source, compatibilité et liberté, ce qui en fait une option attrayante pour les développeurs juniors et le développement de jeux multiplateformes

1 commentaires

 
GN⁺ 2025-08-24
Avis Hacker News
  • Librebox n'en est encore qu'au stade de démo, n'implémente qu'une toute petite partie de l'API Roblox, et il lui manque encore beaucoup de fonctionnalités comme le serveur ou le réseau
    • Si j'étais dans l'équipe de développement, je commencerais par implémenter le serveur et le réseau, car les ajouter plus tard devient généralement vraiment difficile
  • Je trouve que c'est une tentative originale et je leur souhaite bonne chance ; j'espère qu'ils ne se feront pas attaquer par le service juridique de Roblox, car cela pourrait avoir une bonne utilité du côté d'un client natif Linux. Sober, très utilisé actuellement, est un logiciel propriétaire, et Vinegar, utilisé auparavant, a été bloqué à cause de problèmes liés aux hackers Linux
    • Roblox pourrait essayer d'engager des poursuites, mais personnellement ce projet me paraît clairement légal. En matière de légalité, je lui donnerais une meilleure note que VLC Media Player (à cause des questions de brevets), et bien meilleure qu'un émulateur NES. Je le placerais en dessous d'Android, mais Oracle a tout de même déjà poursuivi Android. (Je ne suis pas avocat)
    • Quand on voit les priorités du service juridique de Roblox, on a l'impression qu'un projet comme celui-ci passe avant le problème d'exploitation des enfants au sein de Roblox
  • Quelqu'un a mentionné l'absence de :WaitForChild(), en disant que c'était plutôt une bonne chose
    • En réalité, ce n'est pas un gros problème, juste une petite commodité, et c'est mieux que le busy waiting. Il arrive souvent qu'on ne puisse pas garantir qu'un objet existera avant l'exécution du code ; on peut alors reproduire un comportement similaire soi-même comme ceci : while not parentObj:FindFirstChild("childObj name") do wait() end. Si je me souviens bien, la fonction wait() est d'au moins 1/30 de seconde par frame ; pour quelque chose de vraiment immédiat, il faudrait l'exécuter à chaque heartbeat
  • Il y a une quantité énorme de contenus générés par les utilisateurs enfermés dans Roblox ; on sent qu'il y a vraiment beaucoup de ressources
    • Les contenus de type Club, en particulier, doivent absolument être libérés
  • Impossible de trouver la moindre information sur le développeur dans le dépôt (github). Même le serveur Discord n'a pratiquement rien dans ses salons, et il n'y a qu'un seul compte lié au projet avec le rôle de développeur. Le code source montre un vrai travail, ce n'est pas juste un README posé là. Malgré tout, l'ensemble paraît un peu étrange
    • Les projets solo fonctionnent souvent comme ça
    • Dans une lecture bienveillante, je dirais qu'il cache son identité par crainte de problèmes juridiques. Roblox est tout de même une très grande entreprise valorisée à 81 milliards
  • Si on ne peut pas utiliser les Robux, personnellement ça ne m'intéresse pas beaucoup. En fait, le vrai cœur du problème, c'est Robux (le système monétaire) ; le moteur lui-même n'a rien de si spécial
    • Si beaucoup de développeurs n'arrivent pas à quitter ROBLOX, c'est parce qu'ils ont appris très jeunes à utiliser les outils ROBLOX, s'y sont perfectionnés, puis que ces compétences sont devenues des compétences de niche inutilisables dans la plupart des autres moteurs de jeu. À partir de là, le choix se résume à recommencer de zéro dans un nouvel environnement comme Unity, ou à continuer à produire des résultats de haut niveau dans ROBLOX comme avant. C'est aussi parce qu'ils y ont accumulé des amis et une réputation dans leurs communautés respectives. Honnêtement, ce qui m'étonne surtout, c'est qu'une alternative compatible avec l'API arrive aussi tard
    • Cela pourrait donner aux développeurs l'occasion de publier leurs jeux Roblox comme jeux autonomes et d'échapper au verrouillage de la plateforme. Bien sûr, savoir si les utilisateurs actuels les suivront est une autre question
    • Je n'aime pas Roblox, mais j'ai entendu dire que les outils de création de Roblox sont en réalité assez bien aboutis
  • Je trouve ce dépôt plutôt cool
  • Je me demande si cela peut réellement aider pour les tests en local ou pour améliorer la QA. Récemment, en essayant de faire tourner des tests jest sur une app react-lua, j'ai voulu utiliser Lemur (archivé) sur Lune, et j'avais même créé un test runner qui affichait la sortie in-game. Le problème, c'est que Roblox Studio ne fonctionne toujours pas très bien sous Linux avec le paquet vinegar, donc pouvoir simplement faire tourner RobloxStudio.exe --place game.rbxlx --script test_runner.lua --keep-open pour afficher en continu la sortie console aurait été extrêmement pratique.
    • J'avais envisagé d'ajouter loadPlaceFile au dépôt Lemur, puis je me suis arrêté en me demandant si c'était vraiment le bon endroit ; c'est à ce moment-là que j'ai découvert Librebox, et maintenant j'espère aller dans cette direction pour tester en CI local, avec Jest, des apps react-lua
    • À noter qu'il existe aussi une bêta de l'Open Cloud Engine API de Roblox permettant d'exécuter du code Luau dans un place. [Beta] Open Cloud Engine API for Executing Luau
    • Les avantages de lancer les tests en local : captures d'écran et enregistrements vidéo en cas d'échec, retour immédiat, et possibilité d'entrer directement dans la session de jeu en cas d'échec avec l'option -i ou en mode interactif