ÖbEngine
Introduction
Il y a bien longtemps de cela, j’ai posté sur ZdS un post parlant d’un jeu vidéo en cours de création :
https://zestedesavoir.com/forums/sujet/2244/jeu-de-plateforme-en-python-melting-saga/?page=1
Depuis, à force d’essayer de rendre mon code le plus générique possible, je me suis retrouvé avec un moteur sur les bras.
D’ailleurs je n’utilise plus Python mais C++ désormais !
Ayant appris le C++ pendant la création de moteur j’ai du faire beaucoup de refactorisation et le code a encore sur certains fichiers, une qualité de code inégale (qui se réduit de jours en jours cependant !)
J’ai donc franchi le cap et ai décidé de me consacrer au peaufinement du moteur avant de me remettre à travailler sur le jeu (qui sera fait avec ce moteur du coup).
Je travaille donc sur les deux en parallèle, faire le jeu m’aide à trouver les features manquantes et faire le moteur m’aide à faire le jeu, les deux sont plutôt complémentaires !
Fonctionnalités
"Bon t’es bien gentil mais il peut faire quoi ton moteur ?" - Détracteur anonyme
Alors avant tout il faut savoir que c’est un moteur purement 2D ! On dit au revoir à la 3ème dimension elle est ici inexistante.
Cela permet une certaine simplification de l’API du moteur et de se concentrer sur des outils 2D uniquement.
Mais donc en gros, que propose mon moteur ?
- Un éditeur de map
- Un gestionnaire d’animations (scriptables)
- Un système de lumière
- Un système de particules
- Un système de script Lua
- Plein d’outils pour des jeux 2D (Interfaces de dialogues etc..)
- Un système de layers avec possibilité de faire de la parallaxe
- Un gestionnaire d’expressions mathématiques
- Un langage de données fait maison (Un peu comme le JSON)
- Collisions polygonales avancées
- Console de développement ingame avec débugger
- Gestion d’input réseau
- Système de trajectoire
- Gestionnaire de paquets pour étendre les fonctionnalités du moteur
- Toolkit intégré pour faciliter le développement avec le moteur
Et voici des features prévues pour des versions futures :
- Edition de maps collaboratives
- Gestion complète du réseau (jeux multijoueurs)
- Meilleur système de lumière
- Gestion / Composition de shader
- Meilleur système de particules
- Animations squelettales
- Intégration simple d’objets 3D (Tout en restant sur un monde en 2 dimensions)
Comme j’adore réinventer la roue, j’ai adopté en effet un langage de données fait maison baptisé "Vili".
Ça ressemble un peu au JSON tout en embarquant quelques fonctionnalités fort sympathiques :
- Héritage
- Ranges
- Templates
- Bien d’autres encore !
Licenses
Le moteur est sous la licence MIT, vous êtes libre de modifier, vendre ou faire ce que vous voulez du moteur.
Vili est également sous la licence MIT.
Dépendences
Il est vrai que j’adore réinventer la roue mais il y en a certaines (de roues) que je n’ai pas eu le temps de réinventer, en voici la liste :
Externes
- SFML (Version 2.4) (Licence zlib/png) (Affichage / Input / Réseau / Audio)
- Lua (Version 5.3) (Licence MIT) (Scripting)
Internes (Fournies avec le moteur)
- clip (Licence MIT) (Gestion du presse papier)
- clipper (Licence Boost Software) (Intersection des polygones)
- (Code modifié) any (Licence Apache 2.0) (Conteneur générique)
- 11zip (Licence MIT) (Wrapper de minizip fait par moi-même basé sur le wrapper de Vili Peter)
- Kaguya (Licence Boost Software) (Binding Lua)
- zlib&minizip (Licence zlib (étonnant)) (Gestion des archives zip)
- rlutil (Unlicense) (Coloration de la console)
- tinydir (Licence BSD2) (Listing filesystem) (Bientôt remplacé par C++17)
- Vili (Licence MIT) (Fichiers de données)
Version 1.0
La version 1.0 n’est pas encore sorti, pour l’instant le moteur est en alpha mais vous pouvez déjà le compiler !
La version 1.0 devrait sortir très prochainement, le temps pour moi de nettoyer le code.
Je fournirais également probablement ce soir des précompilés !
Pourquoi je poste ça ici ?
J’en appelle à votre aide membres de cette communauté agrumesque !
Réaliser un moteur demande beaucoup de temps et cela laisse peu de temps pour faire des tests !
Si vous avez le temps et que vous souhaitez m’aider à réaliser le moteur, vous pouvez :
- Proposer des features
- Reporter les bugs rencontrés sur le Github (Issues)
- Essayer de créer des jeux avec le moteur et me faire des retours (positifs ou négatifs)
- Faire des pull request avec des fonctionnalités pour le moteur de votre cru
- Créer de la documentation sur le moteur
- Créer des paquets pour le moteur (Libs / Assets / Jeux)
Si de votre côté vous avez besoin d’aide pour réaliser des jeux avec le moteur, je suis à votre disposition !
Vous pouvez me contacter sur Discord, voici mon ID : Sygmei#9480
Si vous avez un souci avec le moteur vous pouvez checker le log.txt créé dans le même répertoire que l’exécutable, il vous donnera des indications sur la source de l’erreur (Et si vous ne trouvez pas par vous même vous pouvez m’envoyer votre log.txt).
Merci beaucoup d’avoir lu jusqu’au bout J’espère que vous aurez une bonne expérience avec le moteur si d’aventure vous souhaitez le tester !