| OniDev Library - Game Engine C++ | |
|
+18Mass Mobi Térence Termite DeinDall Oculus Morwenn D-z master47 Craki arthuro robinlife louckas Manju -Coco- Sekigo Le Magnifique Caly onilink_ 22 participants |
|
Auteur | Message |
---|
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Jeu 19 Nov 2015 - 10: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 / SlotsPossibilité 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émohttp://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. AvancementLes 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 |
|
| |
Craki Utilisateur confirmé: Rang ****
Messages : 1496 Localisation : Dans l’univers de métamatière
| Sujet: Re: OniDev Library - Game Engine C++ Jeu 19 Nov 2015 - 19:55 | |
| Tu m’as volé mon projet. _________________ |
|
| |
Chlorodatafile Utilisateur confirmé: Rang *****
Messages : 2929 Localisation : Belfort Projet Actuel :
Paralights
| Sujet: Re: OniDev Library - Game Engine C++ Jeu 19 Nov 2015 - 20:07 | |
| Ca poutre ! Je crève d'envie de voir le code derrière. Great Job ! |
|
| |
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Jeu 19 Nov 2015 - 22:01 | |
| Merci, j’espère que j'arriverais a tout finir :p (enfin surtout a tout finir avant 10 ans) |
|
| |
Mobi Utilisateur confirmé: Rang ****
Messages : 1256 Localisation : Dijon
| Sujet: Re: OniDev Library - Game Engine C++ Jeu 19 Nov 2015 - 23:03 | |
| Marche pas ton exemple oni ça fait crash explorer.exe _________________ |
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1480 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: OniDev Library - Game Engine C++ Ven 20 Nov 2015 - 0:31 | |
| Très fortement inspiré de Qt ? 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 ?
Dernière édition par arthuro le Ven 20 Nov 2015 - 15:22, édité 1 fois |
|
| |
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Ven 20 Nov 2015 - 10: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 ) 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. |
|
| |
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: OniDev Library - Game Engine C++ Ven 20 Nov 2015 - 17: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? |
|
| |
[TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: OniDev Library - Game Engine C++ Ven 20 Nov 2015 - 20: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 ^^) |
|
| |
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Ven 20 Nov 2015 - 21: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 - 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. |
|
| |
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Dim 20 Déc 2015 - 17: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=A2eVRHcPar 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 |
|
| |
[TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: OniDev Library - Game Engine C++ Dim 20 Déc 2015 - 17: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) |
|
| |
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Dim 20 Déc 2015 - 17:38 | |
| |
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1480 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: OniDev Library - Game Engine C++ Dim 20 Déc 2015 - 17: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.
|
|
| |
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Dim 20 Déc 2015 - 19: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. |
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1480 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: OniDev Library - Game Engine C++ Dim 20 Déc 2015 - 21: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é.
|
|
| |
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Dim 20 Déc 2015 - 21: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).
|
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1480 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: OniDev Library - Game Engine C++ Mar 22 Déc 2015 - 23: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. |
|
| |
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Mer 23 Déc 2015 - 10: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 C'est une refonte totale ça a plus rien a voir. |
|
| |
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Jeu 24 Déc 2015 - 23:40 | |
| Un autre petit port pour le fun: http://madmass.mype.fr/oni/jewels/jewels.htmlJ'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; } |
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1480 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: OniDev Library - Game Engine C++ Sam 26 Déc 2015 - 12:04 | |
| C'est quand même plus sympa de ne pas avoir à distribuer des binaires pour chaques systèmes d'exploitation. |
|
| |
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Sam 26 Déc 2015 - 14: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. |
|
| |
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Dim 31 Jan 2016 - 22: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...) |
|
| |
[TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: OniDev Library - Game Engine C++ Mar 2 Fév 2016 - 20:27 | |
| J'adore toujours l'effet que packers des ressources automatiquement donnes. (oulà, mon Français est bancale aujourd'hui...) |
|
| |
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Mar 2 Fév 2016 - 20:39 | |
| Faut s'amuser a trouver le plus long mot :p
|
|
| |
Contenu sponsorisé
| Sujet: Re: OniDev Library - Game Engine C++ | |
| |
|
| |
| OniDev Library - Game Engine C++ | |
|