Page 1 sur 3

Engine2D

Publié : ven. 19/juil./2019 14:40
par G-Rom
Bonjour à tous, ca fait quelque temps que je bosse en solo sur un petit moteur 2D sans prétention en c++ , j'ai du commencer en 2014...
depuis peu, j'ai adapter une partie de mon travail sur purebasic, les premiers résultat me plaisent.
l'idée , est d'avoir un framework 2D simple d'utilisation avec un système de hiéarchisation ( parent / enfant ) et un accès aux shaders.
le système de hiéarchisation permet par exemple d'animer "un squellette".
L'état actuel du moteur ne permet pas de sortir encore un programme "en production", mais il pose les jalons de ce que je désire voir en PB / 2D.

Y a t'ils des gens parmis vous , qui sont intéresser par cela ? Vous pouvez téléchargé une "alpha" du moteur ici :

--- UNIQUEMENT WINDOWS X86 ---
https://cdn.discordapp.com/attachments/ ... stable.rar

Le moteur est une dll avec un .lib pour l'import & le .pbi


Le moteur est compatible Linux / Mac , je n'utilise pas d'api spécifique au OS , il utilise SFML pour l'affichage, ce n'est pas un "bête" portage de fonctions
il y a bien plus dans le moteur , gestion avancée des resources , système parent / enfant , compression & encryption des assets , input / action manager , etc...

A court terme , le moteur aura de nouvelles features :

- Quadtree interne pour gestion de collision.
- GameStateManager pour l'organisation de votre code , vous allez voir, ca va simplifier vos créations de jeu / application et clarifier votre code.
- Support du joystick dans InputAction
- Ajout du son
- Ajout des cameras 2D
- Documentation auto générée à partir du code.

à plus long terme :

- Sauvegarde et chargement des noeuds de scenes
- Ajout de box2D pour la physique
- Tilemap & autotiling
- Réplication de noeud à travers le réseau
- implémentation de imgui

A très court terme :

- Meilleur gestion de l'écran , possibilité de switch plein écran / mode fenetré
- Amélioration des "Texture"
- Amélioration des "Shader"
- Amélioration des "Sprite"
- Amélioration des "Text2D"


Ce qui me plait dans le moteur :

- Chargement asynchrone des ressources
Les ressource ce chargent dans un thread séparé , le moteur ne bloque pas sur de long loading.
il est possible de récupéré l'état du chargement en s'abonnant aux messages du moteur. ( voir 03-SimpleSprite.pb )
et de faire de beau écran de loading.

- Pas de gestion ( clavier / souris ) à l'ancienne, ici , on créer "des actions" , inspiré du Godot Engine , on créer simplement des actions :
CreateAction("MoveForward")
BindAction("MoveForward",#E2D_KEYBOARD_UP)
BindAction("MoveForward",#E2D_KEYBOARD_Z)
BindAction("MoveForward",#E2D_JOY_AXIS_Y, 1.0) <- le joystick n'est pas encore supporté.

les 3 touches , lorsqu'elle seront appuyer gérérons l'action "MoveForward"
If Action_pressed("MoveForward")
MoveMyHeroForward()
Endif

- Pas de gestion de résolution de l'écran. Le moteur créer un écran à la taille de celle de l'utilisateur quoi qu'il arrive.
il est possible de changer la résolution interne du moteur ( le moteur ne rend rien à l'écran directement , il passe par une texture intémédiaire pour le rendu )
En l'état actuel , cette partie est encore à améllioré.
Il est aussi possible d'embarqué l'écran dans une fenetre PB , ou dans n'importe quel gadget , même un bouton... l'idéal étant le Canvas , car il renvois les events
clavier au moteur contrairement à un container par exemple.
Il est possible d'embarqué plusieurs écrans dans différents gadget.


Désolé pour le pavé , merci de m'avoir lu, pour ceux que cela intéresse , faite vous connaitre , car si il n'y a personne , je n'irais pas plus loin.
Merci.

Re: Engine2D

Publié : ven. 19/juil./2019 15:50
par falsam
Bonjour G-Rom

OpenAL32.dll introuvable au lancement du premier exemple.

Re: Engine2D

Publié : ven. 19/juil./2019 16:07
par falsam
Si j'ai bien compris, l'utilisateur devra installer cette dll

https://www.openal.org/downloads/ - OpenAL 1.1 Windows Installer (zip)

Je n'utiliserais pas d'autant plus que la dernière version d'OpenAL n'est pas de toute première jeunesse (Version 1.1 Published June 2005)

Re: Engine2D

Publié : ven. 19/juil./2019 17:11
par G-Rom
OpenAL32.dll introuvable au lancement du premier exemple.
Petite coquille de ma part , je vais viré cette dépendance ou faire un lien statique.
Pour ta question que je ne vois plus, oui la version x64 sera dispo sur toute les plateforme auquel j'ai accès pour compilé , linux & windows.

Re: Engine2D

Publié : ven. 19/juil./2019 18:27
par G-Rom
Je viens de me renseigner
Je n'utiliserais pas d'autant plus que la dernière version d'OpenAL n'est pas de toute première jeunesse (Version 1.1 Published June 2005)
OpenAL n'est qu'une spécification , OpenAl soft est l'implémentation : https://github.com/kcat/openal-soft , la dernière màj date d'il y a qq heures.
Concernant la dll , je la distribuerais avec le moteur, la licence m'interdit de la linké statiquement ( PB le fait illégalement d'ailleurs avec Ogre je crois, je ne suis pas sur... )
Voilà, donc une dll de trop pour toi ;)

Re: Engine2D

Publié : ven. 19/juil./2019 18:28
par Shadow
Moi ça m’intéresse :)
Merci.

Re: Engine2D

Publié : ven. 19/juil./2019 21:04
par Ar-S
J'ai manqué de ne pas la télécharger quand j'ai vu "--- UNIQUEMENT WINDOWS X86 ---"
Puis je me suis dit : Il a tout de même du vouloir dire "--- UNIQUEMENT PB X86 ou "--- UNIQUEMENT PB X86 sous WINDOWS ---"
J'ai bien fait :D

Super programme ça pour donner un coup de fouet à la 2D de PB.

Re: Engine2D

Publié : ven. 19/juil./2019 21:28
par G-Rom
Merci Ar-s , oui , pour le moment , je ne compile pas 50 milles programme en même temps , donc effectivement , PB X86 pour le moment , par la suite
je pense faire une UserLib et distribuer en plus des sources c++ , les outils qui m'auront permis de faire la doc & l'userlib.

Re: Engine2D

Publié : sam. 20/juil./2019 8:16
par Mesa
Oui, moi aussi ça m'interesse.

Quel boulot ! Woah.

En effet, ce moteur 2D comblerait un des points faibles de PB.

Bravo.

M.

Re: Engine2D

Publié : sam. 20/juil./2019 18:26
par G-Rom
Merci Mesa.

Mise à jour de l'archive pour pouvoir tester.

- Ajout du début du son.
- Ajout exemples avec shader glsl.

Veuillez noté aussi que les commandes PB_ disparaitrons en vue d'une userlib PB.

Re: Engine2D

Publié : dim. 21/juil./2019 11:33
par Ollivier
G-Rom a écrit :Désolé pour le pavé , merci de m'avoir lu, pour ceux que cela intéresse , faite vous connaitre , car si il n'y a personne , je n'irais pas plus loin.
Merci.
Ton pavé est super ! Tu devrais, si c'est possible, y insérer deux illustrations pour situer le SFML du matériel au soft, et, aussi, pour montrer l'ensemble des périphériques que ton soft offre aux utilisateurs.

Ça fait effectivement 5 ans, que tu as amorcé le thème : à l'époque, le SFML était extrêmement moins répandu. C'était une belle intuition de ta part.

Re: Engine2D

Publié : dim. 21/juil./2019 12:00
par G-Rom
Ollivier a écrit :
G-Rom a écrit :Désolé pour le pavé , merci de m'avoir lu, pour ceux que cela intéresse , faite vous connaitre , car si il n'y a personne , je n'irais pas plus loin.
Merci.
Ton pavé est super ! Tu devrais, si c'est possible, y insérer deux illustrations pour situer le SFML du matériel au soft, et, aussi, pour montrer l'ensemble des périphériques que ton soft offre aux utilisateurs.

Ça fait effectivement 5 ans, que tu as amorcé le thème : à l'époque, le SFML était extrêmement moins répandu. C'était une belle intuition de ta part.
Merci Ollivier, pour les illustrations, je verrais cela plus tard, le moteur ne tourne pas autour de la SFML , d'ailleurs , je pourrais m'en passé ( à l'origine le moteur tourne avec glfw3 & opengl ) , mais je ne voulais pas réinventé la roue , surtout pour le chargements des médias , ( son , image , musique ) , la SFML le faisait bien mieux que moi dans le sens ou elle avait un large choix de formats disponible.
Le moteur sera , quoi qu'il arrive open source , j'espère sortir une version "exploitable" assez rapidement sous forme d'userlib.

Re: Engine2D

Publié : lun. 22/juil./2019 20:20
par Kwai chang caine
Bien que j'y connaisse quedal, j'ai essayé ton code si des fois ça peut te rendre un service, :wink:
Et etant donné qu'avec moi la plupart des codes graphiques marchent jamais :lol:
Et puis ça me fait toujours plaisir de te parler :D

J'ai des codes qui "vibrent" sur les cotés, et qui sautent 8O
C'est le cas de PONG, HierarchieNode
Je suis sous W10 / V5.70 X86

En tout cas merci pour le travail et le futur partage open source 8)

Re: Engine2D

Publié : lun. 22/juil./2019 21:50
par G-Rom
Kwai chang caine a écrit :Bien que j'y connaisse quedal, j'ai essayé ton code si des fois ça peut te rendre un service, :wink:
Et etant donné qu'avec moi la plupart des codes graphiques marchent jamais :lol:
Et puis ça me fait toujours plaisir de te parler :D

J'ai des codes qui "vibrent" sur les cotés, et qui sautent 8O
C'est le cas de PONG, HierarchieNode
Je suis sous W10 / V5.70 X86

En tout cas merci pour le travail et le futur partage open source 8)

Salut KCC, qui vibrent ? tu vois bien quelque chose ? est ce que cela fait effet "vieille tv" ? si oui, c'est le shader qui fait cela, c'est voulu.
La prochaine màj va apporté d'autres fonctions , mon post du haut va grandement évolué dans les prochains jour.

Pour faire simple KCC, ce moteur , permettra à moyen terme d'avoir des sprites "amélioré" , c'est à dire que tu pourras avoir un sprite à l'écran ( par exemple , le corps d'un personnage ) et de "collé" des bras des jambes , etc...
quand tu bouges le corps , tout bouge sans que tu n'est rien à faire de plus qu'a les coller :
un peu dans ce genre là :
Image

Autres les sprites, tu pourras coller des sons , du texte , des émetteurs de particules, ou tu veut, imagine un tracteur 2D , tu pourras facilement mettre un émetteur de particule de fumée sur son pot d’échappement, la fumée suivra indubitablement le pot d’échappement , peu la position , rotation , l'échelle du tracteur...

Je vais aussi intégré imgui , une UI simple mais efficace pour faire des tools :
Image

Re: Engine2D

Publié : lun. 22/juil./2019 22:05
par Shadow
La vache, ça à l'air trop ouf se que tu fais 8O