ObEngine

Moteur de jeu 2D en C++

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

ÖbEngine

Logo temporaire

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 !

Github du moteur

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 !

Édité par Mizugola

+20 -0
Auteur du sujet

Merci beaucoup :) ! Comme promis mais en retard, je vous dépose les exécutables pour tester le moteur (Seulement pour Windows pour l’instant).

https://meltingsaga.xyz/download/engine/0.99.3/ObEngine.zip

Si vous voulez vérifier que tout fonctionne, téléchargez ce jeu d’exemple : https://meltingsaga.xyz/packages/bf.opaque et placez le dans le dossier Package du moteur.

Ensuite, lancez cmd, accédez au dossier dézippé du moteur, tapez la commande suivante : ObEngine -mode toolkit Une petite interface en console devrait apparaitre, tapez ensuite : package install bf.

Si tout ce passe bien, l’interface devrait vous dire que le package bf a été installé et vous demande si vous voulez accorder la permission <Mount>, tapez Y et finalement tapez exit pour fermer le toolkit.

Vous pouvez simplement ensuite double-cliquer sur ObEngine.exe et le jeu devrait se lancer !

Si vous avez des soucis avec le moteur n’hésitez pas à venir m’en parler sur Discord (Sygmei#9480) ou laisser une Issue sur Github (https://github.com/Sygmei/ObEngine) !

+1 -0

C’est beau tout ça :) Je me demandais, le moteur peut servir à faire des jeux 2D avec vue "du dessus" comme des anciens jeux Zelda ou des choses comme Stardew Valley par exemple ? (ma question est sans doute bête, je suis disoli :s).

+0 -0

Oki merci :) Je ne suis pas encore sûre de l’utiliser pour mon propre projet de jeu vidéo que j’ai commencé avec SFML, mais je vais regarder un peu :D

Édité par Aresky

+0 -0

Mon problème est plus un manque de connaissances car il y a beaucoup (beaucoup) de choses que je ne comprends pas trop. Jusqu’à présent je ne faisais que de petits jeux et voir toutes ces choses me parait très compliqué :o

Édité par Aresky

+0 -0
Auteur du sujet

Comme l’a souligné tleb ça fonctionne sous Linux ! Si l’envie te prend de faire un jeu je te conseille d’attendre la 1.0 :D D’autre part, hésite pas à m’ajouter sur Discord pour qu’on en discute (ça n’engage en rien évidemment :p)

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte