AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 OniDev Library - Game Engine C++

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1, 2, 3, 4, 5, 6
AuteurMessage
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: OniDev Library - Game Engine C++   Jeu 19 Nov 2015 - 9:42


Nouveau module au programme: User Interface


Layouts


-Form (en haut a gauche)
-VBox (en haut a droite)
-HBox (au milieu)
-Grid (en bas)


Size Policy


-Widgets étirables horizontalement
-Widgets étirables verticalement


Spacers


-Spacers horizontaux ou verticaux


Signals / Slots

Possibilité de relier un signal (event de widgets) a un slot (fonction ou méthode) facilement grâce a la puissance de c++11.
Ex:
Code:
checkbox->stateChanged.connect([](int state) { printf("State changed (%d)\n", state); });
button->clicked.connect(&MyWindow::clickedOnButton, this);


Démo

http://wyvup.com/?c=A2aprQE
(utilisez les flèches du clavier pour changer la taille de la fenêtre)

Code:
   auto* vbox1 = setLayout<VBoxLayout>();
    auto* hbox1 = vbox1->addWidget<HBoxLayout>();
    auto* form  = hbox1->addWidget<FormLayout>();
    auto* slider   = form->addRow<Slider>("Slider:");
    auto* checkbox = form->addRow<CheckBox>("CheckBox:", "");
    auto* button   = form->addRow<PushButton>("Button:", "Button");
    
    slider->sliderMoved.connect([](float x){printf("%f ", x);});
    slider->sliderReleased.connect([](){printf("\n");});
    checkbox->stateChanged.connect([](int state) { printf("State changed (%d)\n", state); });
    button->clicked.connect(&MyWindow::clickedOnButton, this);
    
    auto* vbox = hbox1->addWidget<VBoxLayout>();
    vbox->addWidget<PushButton>("Button");
    vbox->addWidget<PushButton>("Button");
    vbox->addWidget<PushButton>("Button");
    
    auto* hbox = vbox1->addWidget<HBoxLayout>();
    hbox->addWidget<PushButton>("Button");
    hbox->addWidget<PushButton>("Very Large Button");
    hbox->addWidget<PushButton>("Button");
    
    auto* grid = vbox1->addWidget<GridLayout>();
    grid->addWidget<PushButton>(0, 0, "Button");
    grid->addWidget<PushButton>(1, 0, "Button");
    grid->addWidget<PushButton>(2, 0, "Button");
    grid->addWidget<PushButton>(0, 1, "Very Large Button");
    grid->addWidget<PushButton>(1, 1, "Button");
    grid->addWidget<PushButton>(2, 1, "Button");
    grid->addWidget<PushButton>(0, 2, "Button");
    grid->addWidget<PushButton>(1, 2, "Button");
    grid->addWidget<PushButton>(2, 2, "Button");

Nb: Le moteur utilise des pointeurs intelligents (unique_ptr) pour mémoriser les widgets dans une fenêtre ou un layout.
Ainsi il n'y a rien a gérer au niveau de la mémoire. C'est la fenêtre qui s'occupe de détruire les widgets qu'elle contiens.


Avancement

Les bases sont fonctionnelles, le système de widgets/layouts est opérationnel (peut être quelques mini bugs encore mais rien de terrible).
Au programme:
-faire plus de widgets, car la y a presque rien
-menus
-scroll areas
-onglets
-finir système de fenêtres
-fenetres predeterminées (warning, erreur, informations...)
-parcours d'arborescences graphique
-optimiser le rendu en utilisant un vertex buffer
-pack un thème dans un unique fichier avec possibilité d’intégrer le fichier dans l’exécutable

_________________
                 
Revenir en haut Aller en bas
Craki
Utilisateur confirmé: Rang ****
avatar

Messages : 1469
Localisation : Dans l’univers de métamatière

MessageSujet: Re: OniDev Library - Game Engine C++   Jeu 19 Nov 2015 - 18:55

Tu m’as volé mon projet.

_________________
Revenir en haut Aller en bas
Chlorodatafile
Utilisateur confirmé: Rang *****
avatar

Messages : 2925
Localisation : Belfort
Projet Actuel :
Paralights

MessageSujet: Re: OniDev Library - Game Engine C++   Jeu 19 Nov 2015 - 19:07

Ca poutre ! Very Happy Je crève d'envie de voir le code derrière. rire Great Job ! Wink

_________________

Paralights, Brocchinia, CBNA <= Projets Actuel
Programmeur fondateur du Carnastudio, mâchouilleur de code.
Revenir en haut Aller en bas
http://chlorodatafile.tumblr.com/
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: OniDev Library - Game Engine C++   Jeu 19 Nov 2015 - 21:01

Merci, j’espère que j'arriverais a tout finir :p (enfin surtout a tout finir avant 10 ans)

_________________
                 
Revenir en haut Aller en bas
Mobi
Utilisateur confirmé: Rang ****
avatar

Messages : 1256
Localisation : Dijon

MessageSujet: Re: OniDev Library - Game Engine C++   Jeu 19 Nov 2015 - 22:03

Marche pas ton exemple oni ça fait crash explorer.exe

_________________
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1322
Localisation : Grenoble / Méribel
Projet Actuel : CBNA

MessageSujet: Re: OniDev Library - Game Engine C++   Jeu 19 Nov 2015 - 23:31

Très fortement inspiré de Qt ? cool
J'aime beaucoup l'API et le rendu graphique que tu as en ce moment.

C'est sympa les syntaxes :
Code:
widget->signal.connect(lambda);
widget->signal.connect(Widget2::slot,widget2);

Je pense que je la préfère à celle de Qt:
Code:
connect(widget1,&Widget1::signal,lambda);
connect(widget1,&Widget1::signal,widget2,&Widget2::slot);

(On voit que c'est un peu plus court ^^, pas besoin de redonner le type de widget1 devant la méthode)
Tu pourrais peut-être au lieu d'appeler la méthode connect sur widget->signal faire que widget->signal soit un objet
qui implemente operator() ?
Sa donnerais :
Code:
widget->signal(lambda);
widget->signal(Widget2::slot,widget2);
Je ne sais pas ce qui est le mieux.

Sinon, petite question HS qui me taraude :
pourquoi auto* ?
Code:

auto* slider   = form->addRow<Slider>("Slider:");
Il y a une raison à ne pas utiliser simplement auto ?

_________________

D'autres jeux :
In The Cube
In the cube 2


Dernière édition par arthuro le Ven 20 Nov 2015 - 14:22, édité 1 fois
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: OniDev Library - Game Engine C++   Ven 20 Nov 2015 - 9:07

Ouai l'API en elle même je pompe pas mal Qt, par contre j'étais allé voir la source et j'ai rien piffé du coup j'ai pas pu m'en aider malheureusement (a l'époque j'avais déjà essayé de faire ce module, mais je bloquais complètement sur le système de layouts, j'avais fait un truc dégueulasse qui marchait mais avait des performances minables).
En tout cas si j'arrive a avoir un Qt like lite je serais bien content, car Qt est généralissime mais voila le poids du SDK, c'est l'artillerie lourde :p

Pour les signaux c'est pas con du tout, le l'ajouterais comme ça y aura le choix.

Pour le auto* c'est juste une histoire de préférence, j'aime voir quand je manipule un pointeur.
(de base auto est pas trop recommandé si tu veux pas trop t’emmêler en plus Razz)

Merci pour les remarques en tout cas :p


Mobi> Ah *****, j'ai du me fail sur un truc, je te filerais une version debug sur l'irc.

_________________
                 
Revenir en haut Aller en bas
Asu
Utilisateur confirmé: Rang ****
avatar

Messages : 895

MessageSujet: Re: OniDev Library - Game Engine C++   Ven 20 Nov 2015 - 16:38

onilink_ a écrit:
Ouai l'API en elle même je pompe pas mal Qt, par contre j'étais allé voir la source et j'ai rien piffé du coup j'ai pas pu m'en aider malheureusement (a l'époque j'avais déjà essayé de faire ce module, mais je bloquais complètement sur le système de layouts, j'avais fait un truc dégueulasse qui marchait mais avait des performances minables).
En tout cas si j'arrive a avoir un Qt like lite je serais bien content, car Qt est généralissime mais voila le poids du SDK, c'est l'artillerie lourde :p
Le détail c'est que Qt fait appel à win32/gtk/etc. pour l'ui non? ça en sera le cas pour onilib?
Revenir en haut Aller en bas
[TheDarkTiger]
Modérateur
avatar

Messages : 7371
Localisation : Essonne

MessageSujet: Re: OniDev Library - Game Engine C++   Ven 20 Nov 2015 - 19:33

Et voilà...
Après avoir recodé son chargeur PNG parceque l'autre était trop lent, après avoir lancé son jeu parceque ****, les gens savent plus en faire, Onilink recode Gtk parceque, mince, ils pourraient faire un truc qui rame pas !

(exemple testé sur mon PC (core I5, Win7) fonctionnel et bien fluide comme il faut ^^)

_________________
Bonne chance pour vos projets actuels ! Prêt à aider ceux qui en ont besoin ^^
l'antique http://www.membres.lycos.fr/thedarkminousite/
Bienvenue au 2516eme utilisateur : Gyratine !
Revenir en haut Aller en bas
http://www.membres.lycos.fr/thedarkminousite/
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: OniDev Library - Game Engine C++   Ven 20 Nov 2015 - 20:42

Ahah merci :p
Mais je cherche pas a surpasser Qt ou Gtk, mais faire un module pratique et léger pour ceux qui pourraient en avoir besoin (cas assez rare tout de même) dans un jeu. Après j'avoue que dans l'idéal, si ça pouvait remplacer ce genre de framework ce serait cool, mais Qt est tellement gros qu'il faudra que je me lève tôt pour prétendre pouvoir apporter au moins 10% de son contenu Razz

Soundii a écrit:
onilink_ a écrit:
Ouai l'API en elle même je pompe pas mal Qt, par contre j'étais allé voir la source et j'ai rien piffé du coup j'ai pas pu m'en aider malheureusement (a l'époque j'avais déjà essayé de faire ce module, mais je bloquais complètement sur le système de layouts, j'avais fait un truc dégueulasse qui marchait mais avait des performances minables).
En tout cas si j'arrive a avoir un Qt like lite je serais bien content, car Qt est généralissime mais voila le poids du SDK, c'est l'artillerie lourde :p
Le détail c'est que Qt fait appel à win32/gtk/etc. pour l'ui non? ça en sera le cas pour onilib?

Alors ça aucune idée, je pense que non vu qu'ils ont un système de thèmes assez poussé, et de widgets customs, ainsi que la possibilité de rendre une fenêtre dans un buffer opengl, ce qui devrait pas être possible en natif je suppose.
De ce que j'ai compris ils se débrouillent a aller récupérer le thème natif de l'os sur lequel ils sont pour l'utiliser comme skin.

D'ailleurs j'aimerais bien trouver un moyen pour modifier le skin de la fenêtre native, de façon a intégrer totalement mon thème quand y a besoin (genre dans le cas ou tu veux faire un logiciel par ex), j'ai bien pensé a virer les bordures et a dessiner direct tout ça dans la fenêtre, mais je pense pas que ce soit l'idéal (en plus ça oblige d'avoir une view plus grosse).

Sinon pour ma lib je passerais toujours uniquement par opengl. Impossible de faire autrement dans mon cas (pensez aux portages par ex), et inutile surtout.

_________________
                 
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: OniDev Library - Game Engine C++   Dim 20 Déc 2015 - 16:20

Nouvelle plutôt cool, je viens de faire le port web de la lib.
J'ai pas encore pu trop pousser les tests et j'ai pas mal de trucs a corriger dans la lib pour améliorer les perfs, mais ça roule bien.

Petit exemple de port de seedball en html5: http://wyvup.com/?c=A2eVRHc
Par contre, lancez le avec firefox tant qu'il est pas herbergé, car chrome veut pas d'un html/css qui dépend de données a lire a coté (ce qui est le cas pour le .data et le .mem).

J'essayerais de mettre le jeu directement sur le web plus tard, si je trouve un hébergeur ou quand j'aurais accès au ftp de centauri.

Edit:
hop voila direct sur le web http://madmass.mype.fr/oni/SeedBallHtml5/seedball.html

_________________
                 
Revenir en haut Aller en bas
[TheDarkTiger]
Modérateur
avatar

Messages : 7371
Localisation : Essonne

MessageSujet: Re: OniDev Library - Game Engine C++   Dim 20 Déc 2015 - 16:37

Atta atta, je comprends pas là...
C'est un convertisseur C++ => Javascript ?
Ou "juste" un portage de l'onilib ?

(Dans tous les cas, classe O.O)

_________________
Bonne chance pour vos projets actuels ! Prêt à aider ceux qui en ont besoin ^^
l'antique http://www.membres.lycos.fr/thedarkminousite/
Bienvenue au 2516eme utilisateur : Gyratine !
Revenir en haut Aller en bas
http://www.membres.lycos.fr/thedarkminousite/
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: OniDev Library - Game Engine C++   Dim 20 Déc 2015 - 16:38

Yup on code en C++ et ça ressort du js Very Happy
C'est ça qu'est classe.

http://kripken.github.io/emscripten-site/


_________________
                 
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1322
Localisation : Grenoble / Méribel
Projet Actuel : CBNA

MessageSujet: Re: OniDev Library - Game Engine C++   Dim 20 Déc 2015 - 16:51

Félicitations !

Quelques difficultés/remarques a tu sur l'utilisation d'emscripten ?
Moi j'avais déjà essayer de porter quelques jeux, mais sans succès.

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: OniDev Library - Game Engine C++   Dim 20 Déc 2015 - 18:18

Bah rien a redire, c'est extrêmement bien foutu.
Leur package gère les libs de base sans avoir rien a toucher (OpenGL, openAL), s'il te manque des libs mais qu'elle sont sur leur repo emscripten-ports, tu peux les DL et install automatiquement en une ligne de commande et ça même sous windows (alors que d'hab c'est la mort).
Genre pour freetype et sdl2 tout s'est fait de manière magique.

La gestion des fichiers est automatique, tu ajoutes juste un flag au compilo et il te transforme tout le contenu d'un dossier en un fichier .data, ensuite tu peux utiliser toutes les fonctions fopen, dirent etc et ça marche sans avoir a rien modifier (pour la lecture).

Comme j'avais porté ma lib vers linux avec SDL2, tout le fenêtrage s'est compilé directement sans avoir a rien retoucher, j'ai juste eu a ajouter quelques #ifdef __EMSCRIPTEN__ a quelques emplacements ou y avait des fonctions inutiles/inutilisables en web mais le port complet s'est fait très vite.
En fait la ou j'ai passé la plupart du temps c'est a lire la doc et faire des tests :p

Mais le port de la lib s'est fait en moins d'une journée, ce qui est vraiment très court je trouve.
Après j'aurais pas mal de modifications a faire, par ex mon engine commence a avoir un module graphique assez vieux qui utilise des glVertex...

Pour le port du jeu en lui même il faut modifier la boucle principale pour qu'elle soit dans une fonction, ça prend un peu de temps et c'est pas super joli mais c'est pas compliqué a faire. Après j'ai eu quelques bugs liés au moteur que je vais régler mais rien de bien terrible.

Ah et un truc qui m'a fait perdre un peu de temps, obligé de passer par des textures en puissances de 2, sur le coup quand j'ai testé j'avais pas mal de bugs mais j'avais pas pensé a vérifier ça. Faut y penser quoi.

_________________
                 
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1322
Localisation : Grenoble / Méribel
Projet Actuel : CBNA

MessageSujet: Re: OniDev Library - Game Engine C++   Dim 20 Déc 2015 - 20:23

C'est cool.

Heureusement que tu utilisait la SDL2.
Il faut que je vois comment cela peut marcher avec GLFW3. A priori, cela est sensé marché.

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: OniDev Library - Game Engine C++   Dim 20 Déc 2015 - 20:40

Ouai j'ai pris SDL2 exprès pour ça, linux/mac/emscripten, en plus je crois aussi que je pourrais faire android avec.
Pis elle est carrément bien foutu (quand tu vois le désastre que c'était la SDL1, y avait rieeeen).

_________________
                 
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1322
Localisation : Grenoble / Méribel
Projet Actuel : CBNA

MessageSujet: Re: OniDev Library - Game Engine C++   Mar 22 Déc 2015 - 22:43

Tu va peut-être me faire changer d'avis sur la SDL.
Je ne connaissais que la SDL1.

J'ai essayé emscripten avec le module audio de la SFML.
Évidemment, n'ayant que les binaires de la lib, je ne suis pas allé très loin.
Je me demande ce que cela me coûterais d'essayer de porter sfml-audio sur emscripten.
Surement beaucoup j'imagine puisque l'audio est sûrement assez spécifique sur navigateur internet.

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: OniDev Library - Game Engine C++   Mer 23 Déc 2015 - 9:19

Emscripten a déjà OpenAL de porté, et SFML utilise openal.
Perso mon module audio a compilé sans soucis, par contre je ne l'ai pas testé.
Je pense que les sons marchent sans encombre, mais que les musiques ne marchent pas car elle se jouent sur un thread a part (et emscripten ne gère pas les threads).

Sinon ouai SDL1/SDL2 c'est le jour et la nuit Very Happy C'est une refonte totale ça a plus rien a voir.

_________________
                 
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: OniDev Library - Game Engine C++   Jeu 24 Déc 2015 - 22:40

Un autre petit port pour le fun:
http://madmass.mype.fr/oni/jewels/jewels.html

J'en ai profité pour faire un moyen simple d’accéder au callback emscripten de manière portable avec l'aide de Deezee:
Code:
int main()
{
    using namespace od;
    Window win(640, 480, "OniDev app");

    Runner::run([&]() -> bool {
        using namespace od;
        win.ioHandle();

        drawClear();
        win.updateView();
     
        win.screenRefresh();
     
        return true;
    });
 
    return 0;
}

_________________
                 
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1322
Localisation : Grenoble / Méribel
Projet Actuel : CBNA

MessageSujet: Re: OniDev Library - Game Engine C++   Sam 26 Déc 2015 - 11:04

C'est quand même plus sympa de ne pas avoir à distribuer des binaires pour chaques systèmes d'exploitation.

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: OniDev Library - Game Engine C++   Sam 26 Déc 2015 - 13:48

Héhé ouai carrément :p
Sinon j'ai testé le module audio, les sons marchent nickels, la musique non a cause du thread séparé.
Vais devoir modifier un peu ma classe de musique pour pouvoir l'update manuellement donc.

_________________
                 
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: OniDev Library - Game Engine C++   Dim 31 Jan 2016 - 21:23

Je bosse sur une refonte de la classe pour afficher du texte:


Bin packing des caractères dans une unique texture, possibilité d'avoir plusieurs fonts en une seule, d'afficher du texte avec plusieurs styles, tailles, polices, couleurs...
Ça gère aussi l'unicode et donc les caractères japonais, russes, chinois, les ranges customs, etc...

Je bosserais prochainement sur les fonction de détection des collisions avec du texte :p
(pour faire un texte cliquable, un lien, une infobulle quand on survole, etc...)

_________________
                 
Revenir en haut Aller en bas
[TheDarkTiger]
Modérateur
avatar

Messages : 7371
Localisation : Essonne

MessageSujet: Re: OniDev Library - Game Engine C++   Mar 2 Fév 2016 - 19:27

J'adore toujours l'effet que packers des ressources automatiquement donnes.
(oulà, mon Français est bancale aujourd'hui...)

_________________
Bonne chance pour vos projets actuels ! Prêt à aider ceux qui en ont besoin ^^
l'antique http://www.membres.lycos.fr/thedarkminousite/
Bienvenue au 2516eme utilisateur : Gyratine !
Revenir en haut Aller en bas
http://www.membres.lycos.fr/thedarkminousite/
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: OniDev Library - Game Engine C++   Mar 2 Fév 2016 - 19:39

Faut s'amuser a trouver le plus long mot :p

_________________
                 
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: OniDev Library - Game Engine C++   

Revenir en haut Aller en bas
 
OniDev Library - Game Engine C++
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 6 sur 6Aller à la page : Précédent  1, 2, 3, 4, 5, 6
 Sujets similaires
-
» The Lying Game
» Escape the Library : un autre "room escape"
» Game of Thrones
» Créer une cartographie devient vraiment facile avec Google Maps Engine Lite
» EPOXIA ORAGIS, projet jeu de combat Game Maker

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Informations :: Projets-
Sauter vers: