| | 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 |
---|
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: OniDev Library - Game Engine C++ Mer 12 Sep 2012 - 20:15 | |
| Ok, super ! J'ai jamais compris comment faire un logiciel de traitement de texte en c++ puisque je sais pas mettre en gras, changer la couleur du texte sélectionné.... Et pour les fonctions sur les tableaux, je trouve ca vraiment pratique ; regarde toutes les fonctions php et compare à celles de GM... En tous cas c'est bien parti pour dépasser GM.... EDIT : ca me fait penser ; j'ai fait un éditeur de regex ; ca pourra t'être utilise pour ton colorisateur syntaxique. Donc si tu veux, envoie moi un mp ; je l'ai fait en php mais il est pas encore en ligne puisqu'il est destiné à mon site et que celui-ci n'est pas prêt ; donc soit je te passe les sources php (mais il faut que t'ai wampee) ; soit je l'héberge temporairement sur un autre site ; soit je le traduit en c++. Donc à toi de voir si tu le veux et dans quel format. _________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Dernière édition par Térence68 le Mer 12 Sep 2012 - 21:26, édité 1 fois |
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Mer 12 Sep 2012 - 21:25 | |
| Boh la c'est pas aussi complexe que faire une appli de traitement de texte :p D'ailleurs si tu fait un peut de Qt ce que tu dit est assez simple avec.
Pour ce qui est des fonctions dont tu parle, y en a pas mal dans la <algorithm> |
| | | Invité Invité
| Sujet: Re: OniDev Library - Game Engine C++ Mer 12 Sep 2012 - 21:26 | |
| si ta lib sera capable de charger, gérer les modèles 3D, ainsi que les fonctionnalité de transformation, déplacement, rotations et éclairage, je pourrais surement l'utiliser pour mon projet. |
| | | Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: OniDev Library - Game Engine C++ Mer 12 Sep 2012 - 21:28 | |
| Oui je fais du Qt mais je t'arrive pas à la cheville Donc oui je veux bien que tu m'explique rapidement comment faire ca (et j'ai éditer mon précédent post, ca peut t'intéresser) |
| | | D-z Utilisateur confirmé: Rang *****
Messages : 1611 Localisation : Montpellier
| Sujet: Re: OniDev Library - Game Engine C++ Jeu 13 Sep 2012 - 17:40 | |
| Les balises c'est le mieux pour le texte mis en forme je pense. Peut-être même un ersatz de xHTML/CSS, histoire de pouvoir faire ses propres balises. _________________ Home is not a place, it's a feeling.
|
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Jeu 13 Sep 2012 - 17:51 | |
| Ouai, mais dans ce cas il faudra une syntaxe pour insérer des '<' sans que ce soit perçu comme un début de balise. Mais ouai je vois pas comment faire mieux :p sachem> Alors j'ai déjà fait un loader 3ds, OpenGL gère les transformation d'une manière proche de GM mais avec des noms de fonctions moins chiants. Me reste que l'éclairage a simplifier et ça devrais être bon pour toi :p Térence68> Bah je fait l'éditeur de code sous Qt et il gère les regex Donc merci encore mais ce ne me seras pas utile :p Sinon regarde l'exemple Syntaxe Highlighting fournis avec Qt, ça devrais répondre a tes questions. |
| | | D-z Utilisateur confirmé: Rang *****
Messages : 1611 Localisation : Montpellier
| Sujet: Re: OniDev Library - Game Engine C++ Jeu 13 Sep 2012 - 17:56 | |
| Ben en les escapant, pardi... Ou à coups de < et autres. _________________ Home is not a place, it's a feeling.
|
| | | Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: OniDev Library - Game Engine C++ Jeu 13 Sep 2012 - 18:32 | |
| Ok je regarderais l'exemple que tu m'as refilé... Après pour les balises ; puisque Qt gère le html dans les labels tu peux essayer de faire : [code]<span color="red">Le texte en bleu</span> Après j'ai jamais essayé sur Qt mais en html pur ca marche. |
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Mar 18 Sep 2012 - 14:56 | |
| |
| | | D-z Utilisateur confirmé: Rang *****
Messages : 1611 Localisation : Montpellier
| Sujet: Re: OniDev Library - Game Engine C++ Mar 18 Sep 2012 - 19:30 | |
| Ça tourne super bien, à part que quand je ferme la fenêtre graphique, la console reste ouverte une seconde, puis Windows me signale que le programme ne répond plus.
Sinon, chez moi quand je déchire un truc ça explose pas dans toute la pièce, je crois que tu as oublié quelque chose :p _________________ Home is not a place, it's a feeling.
|
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Mar 18 Sep 2012 - 19:37 | |
| Ah ouai c'est vrai que mon système de fenêtrage a un bug >< Je comptait le refaire de toute façon, l'est trop lourd pour rien la :p
Et ouai c'est fait un peu a l'arrache, mais c'était plus pour le délire qu'autre chose x) Je vais quand même essayer de régler ça histoire de ... :b |
| | | Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: OniDev Library - Game Engine C++ Mar 18 Sep 2012 - 19:40 | |
| "Un peu fait à l'arrache" ???? Tu te fous de ma gueule ? Sérieux comment t'as fait ca ? Je suis en train de chialer tellement c'est beau ! Tu es mon maitre désormais |
| | | DeinDall Utilisateur confirmé: Rang ****
Messages : 858 Localisation : Quimper
| Sujet: Re: OniDev Library - Game Engine C++ Mar 18 Sep 2012 - 19:47 | |
| bienvenu au club des adorateurs d'oni_ bon sinon, c'est beau comme d’habitude hein bien que toujours le même plantage à la fermeture meybon. |
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Mar 18 Sep 2012 - 20:11 | |
| Merci merci - Térence68 a écrit:
- Tu te fous de ma gueule ? Sérieux comment t'as fait ca ?
Bah j'ai rien inventé, j'utilise l'integration de verlet. Fait une recherche sur google avec les mots clé suivants: -verlet physics -verlet integration -integration de verlet et tu verras bien, rien de sorcier :p Et ouai pour le plantage je vais essayer de régler ça rapidement :/ |
| | | Invité Invité
| Sujet: Re: OniDev Library - Game Engine C++ Mar 18 Sep 2012 - 20:27 | |
| je crois que j'ai trouvé la véritable identité d'onilink - Spoiler:
|
| | | Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: OniDev Library - Game Engine C++ Mar 18 Sep 2012 - 21:01 | |
| Tu parle, le mec de la photo c'est un gignol par rapport à notre Oni Et sinon moi quand je quitte, j'ai effectivement la console qui reste une seconde mais il me dit pas "le programme ne répond plus". Edit : quand je cherche verlet sur google, je tombe sur des trucs de maths et physique ; donc ce sont des fonctions en prog' ou des trucs de maths ? Et si ce sont des maths, vu que je suis en seconde, est-ce que c'est de mon niveau ? |
| | | D-z Utilisateur confirmé: Rang *****
Messages : 1611 Localisation : Montpellier
| Sujet: Re: OniDev Library - Game Engine C++ Mar 18 Sep 2012 - 21:25 | |
| Bouark la page wiki. En gros c'est le système classique avec vecteurs accumulateurs et intégration linéaire ? _________________ Home is not a place, it's a feeling.
|
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Mar 18 Sep 2012 - 21:54 | |
| Jerry pour l'architecte - Térence68 a écrit:
- Edit : quand je cherche verlet sur google, je tombe sur des trucs de maths et physique ; donc ce sont des fonctions en prog' ou des trucs de maths ? Et si ce sont des maths, vu que je suis en seconde, est-ce que c'est de mon niveau ?
En gros, a chaque step tu recalcule la vélocité, et tu l'utilise pour calculer l'inertie de ta particule: /**** Verlet Integration ******/ // la vélocité seras la distance entre le point au temps t et le point au temps t-1 float velX = x - previousX; float velY = y - previousY; // on met un peu de friction velX *= 0.99; velY *= 0.99; // Et la position de la particule au temps t+1 seras // position + velocité + (acceleration * DeltaT²)/2 // DeltaT étant la durée d'un step, soit 1000/fps => 16ms pour 60fps float nextX = x + velX + 128 * accX; // x + velX + accX*16*16/2; float nextY = y + velY + 128 * accY; // Affin d'avoir la position a t-1 dans un step previousX = x; previousY = y; // Position t+1 x = nextX; y = nextY; // On remet l'accélération a 0 accX = 0; accY = 0; Ensuite pour les contraintes c'est plus compliqué. On peut résoudre la contrainte avec de l'algèbre linéaire. J'ai pas trop cherché a comprendre cette partie, j'ai juste pompé la résolution /**** Constraints ******/ // Pour chaque particule p1, étant attachée a une particule p2, on calcule la distance entre les deux particules diffX = p1.x - p2.x diffY = p1.y - p2.y d = sqrt(diffX * diffX + diffY * diffY) // équivalent a point_distance(p1.x, p1.y, p2.x, p2.y) // On calcule la différence entre la taille de la contrainte et la distance entre les deux particules: difference = (dist - d)/d // Pour chaque particule, on fait une translation de la moitié de la distance requise en fonction de leur distance au repos: translateX = diffX * 0.5 * difference translateY = diffY * 0.5 * difference p1.x += translateX p1.y += translateY p2.x -= translateX p2.y -= translateY Et ça donne ce que j'ai montré dans la démo! |
| | | arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: OniDev Library - Game Engine C++ Mar 18 Sep 2012 - 22:35 | |
| C'est beau! En plus on peux déchiré le tissus. |
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Mar 18 Sep 2012 - 22:41 | |
| Un bon défouloir x) Sinon j'ai amélioré le moteur, et fait un système de toiles d'araignées. Y a encore quelques soucis mais c'est déjà mieux :p http://host-a.net/u/onilink_/verlet_spiderweb1.7zTouches: P : pause Space : générer une toile Enter : générer un tissus |
| | | Invité Invité
| | | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Mar 18 Sep 2012 - 23:09 | |
| Smiley ablationné.
Jsuis sur qu'un faisant un système de texture pour les mailles ça pourrais donner un truc sympa x) |
| | | arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: OniDev Library - Game Engine C++ Mar 18 Sep 2012 - 23:22 | |
| > Sachem: j'ai pensé à: > onlink, oué avec des texture à l'intérieur, je suis sur que ça peut être génial. Et tu peux aussi ajouter de la lumière en fonction de l'orientation du carrée. ( pour la normale d'un point sur l’arrête d'un carré, tu prend le produit vectoriel des deux vecteurs (droite et bas)) Tu connais bien OpenGl, ça peut le faire. |
| | | Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: OniDev Library - Game Engine C++ Mer 19 Sep 2012 - 7:21 | |
| Ok merci de m'avoir répondu ! Mais vu que t'utilise un objet pour chaque particule, ca fait pas un peu lourd ? J'ai pas encore testé la nouvelle version, je l'essayerais ce soir.
(Par contre j'ai pas capté le rapport avec la OniLib, tu va y intégrer les verlets ?) |
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Mer 19 Sep 2012 - 10:49 | |
| - Térence68 a écrit:
- Ok merci de m'avoir répondu ! Mais vu que t'utilise un objet pour chaque particule, ca fait pas un peu lourd ?
En GML ce serais lourd oui. Mais en C++ un objet c'est juste une structure composée de variables et de méthodes (y a pas de surcouche, on commence avec un truc vide). Ici chaque particule fait 60 octets (et c'est pas optimisé), et les opérations sont plutôt simples. - Térence68 a écrit:
- (Par contre j'ai pas capté le rapport avec la OniLib, tu va y intégrer les verlets ?)
Bah c'est fait avec la onilib, et j'aimerais bien l'integrer si un jour j'arrive a faire un truc plus complet/optimisé. Au pire je le mettrait juste dans les fichiers d'exemples, bien commenté. D'ailleurs je viens de remarquer une fuite de mémoire... Corrigé ici: http://host-a.net/u/onilink_/verlet_spiderweb1.7z |
| | | D-z Utilisateur confirmé: Rang *****
Messages : 1611 Localisation : Montpellier
| Sujet: Re: OniDev Library - Game Engine C++ Mer 19 Sep 2012 - 18:46 | |
| Tiens, je savais pas que ça s'appelait une intégration de Verlet ça. _________________ Home is not a place, it's a feeling.
|
| | | Craki Utilisateur confirmé: Rang ****
Messages : 1496 Localisation : Dans l’univers de métamatière
| Sujet: Re: OniDev Library - Game Engine C++ Mer 19 Sep 2012 - 22:00 | |
| C'est plutôt vague, les infos qu'on trouve sur Verlet. En gros c'est pour calculer la future position d'un objet ayant une énergie cinétique et une accélération ? Et l'accélération sert juste a exercer une force (comme une collision ou une gravitation) ? _________________ |
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Mer 19 Sep 2012 - 22:36 | |
| - Citation :
- The Verlet integration is a way of numerically integrating the equations of motion. [...]basically, the Verlet integration describes the movement of a point trough time
Je saurais pas dire mieux :p Pour approfondir, un lien sympa. |
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Ven 18 Oct 2013 - 23:50 | |
| Après un long moment sans nouvelles, je viens donner un peu la progression de la librairie :b Je bosse actuellement sur un gros jeu, qui se voudra par la suite être commercialisé. Il me sert a évaluer la onilib et voir ce qu'elle donne en situation réelle. C'est assez important étant donné qu'elle sera le pilier d'onidev. Depuis que j'ai commencé le jeu j'ai donc pas mal modifié la librairie, afin de faire mon moteur de jeu de la manière la plus simple possible. J'ai réussi a faire un système très proche de GameMaker, qui gère les events, collisions et instances de manière totalement automatique. Voici un exemple du moteur de collision (qui utilise des polygones, et que je viens de 'presque' finaliser aujourd'hui). - Code:
-
#include <onidev/object.h> #include <onidev/mask/polygon.h> #include <onidev/mask/rectangle.h>
enum { obj_none = -1, obj_player, obj_shapi, obj_poly, obj_number };
class Player : public Object { public: static RectangleShape rect; Player(double x, double y) : Object(x, y, obj_player, &rect) { } void step() { if(keyCheck(vk_right)) x++; if(keyCheck(vk_left)) x--; if(keyCheck(vk_up)) y--; if(keyCheck(vk_down)) y++; if(mouseCheck(mb_left)) { x = mouse_x; y = mouse_y; } } void draw() { bool shapi = placeMeeting(x, y, obj_shapi); bool popo = placeMeeting(x, y, obj_poly); if(shapi && popo) glColor3ub(128,128,128); else if(shapi) glColor3ub(255,0,0); else if(popo) glColor3ub(0,128,255); rect.draw(x, y, true); glColor3ub(255, 255, 255); } };
RectangleShape Player::rect(0, 0, 32, 48);
class Shapi : public Object { double angle; public: static ConvexPolygon polyTemplate; ConvexPolygon poly; Shapi(double x, double y) : Object(x, y, obj_shapi, &poly), angle(0), poly(polyTemplate) { } void step() { if(keyCheck(vk_space)) { angle += 2; poly.rotate(polyTemplate, angle); } if(mouseCheck(mb_right)) { x = mouse_x; y = mouse_y; } } void draw() { bool player = placeMeeting(x, y, obj_player); bool popo = placeMeeting(x, y, obj_poly); if(player && popo) glColor3ub(255,0,128); else if(player) glColor3ub(255,128,0); else if(popo) glColor3ub(128,0,255); poly.draw(x, y); glColor3ub(255,255,255); } };
static const double t1[] = {134,35, 164,134, 34,126, 0,0}; ConvexPolygon Shapi::polyTemplate(t1, 4, true);
class Poly : public Object { double angle; public: static Polygon polyTemplate; Polygon poly; Poly(double x, double y) : Object(x, y, obj_poly, &poly), angle(0), poly(polyTemplate) {} void step() { angle ++; poly.rotate(polyTemplate, angle); } void draw() { if(placeMeeting(x, y, obj_shapi)) glColor3ub(0,128,0); poly.draw(x, y); glColor3ub(255,255,255); } };
double t2[] = {0,0, 16,128, 160,240, 192,144, 112,32, 192,144, 160,240, 272,240, 240,144, 240,144, 272,240, 416,128, 432,0, 320,32}; int nt2[] = {5, 4, 5};
Polygon Poly::polyTemplate(t2, nt2, 3, true); Et le main: - Code:
-
int main() { int wid=640, hei=480; windowCreate(wid, hei);
setSynchronization(true); setView(0, 0, 0, wid, hei); setViewport(0, 0, 0, wid, hei);
initializeObjectEngine(obj_number); new Player(16, 16); new Shapi(320, 240); new Poly(320, 240); while(windowIsOpen()) { ioHandle();
if(keyCheck(vk_escape)) break;
glClear(GL_COLOR_BUFFER_BIT); viewUpdate(0); gameStep(); screenRefresh(); } destroyAll(); terminateObjectEngine();
return 0; } - Spoiler:
Executable: http://host-a.net/u/onilink_/demoPolygones1.zipJ'explique un peu le fonctionnement des objets: Dans une enum, on liste les objets, ce qui permettra par la suite d'utiliser leur 'object_index' comme sous GM (genre pour quand on fait un placeMeeting par ex). - Code:
-
enum { obj_none = -1, object0, object1, object2... obj_number}; Pour chaque objet on crée une classe dérivée de Object: - Code:
-
class Object0 : public Object { public: Object0(double x, double y) : Object(x, y, object0, &mask) { } void step() { } void draw() { } }; On passe a Object les coordonnées, l'object_index et le masque. Pour le masque il s'agit d'un pointeur, ainsi on peut passer n'importe quel type de masque qui a été implémenté dans la librairie. Actuellement il est possible d'utiliser des rectangles, masques de pixels, disques, polygones... même si je n'ai pas encore finis l’interaction entre chaque type (il faut aussi penser que chaque masque peut être tourné, ça fait pas mal de boulot). Pour crée une instance d'objet il suffit de faire un new Object(x, y, params..); Pour la détruire un simple delete suffit. Il est possible de crée plusieurs instances en même temps, et les détruire toutes en même temps, ou une a une avec new[] et delete[]. Les instances crées seront listées dans un tableau spécial géré par l'engine, et les même fonctions que GM pourront alors être utilisées, comme instanceNumber, instanceFind, placeMeeting, instancePlace, etc... Actuellement je fait un système de collisions avec les tiles (donc par matrice -> vitesse constante -> très très rapide contrairement a GM). Pour ce qui est des nouveautés, en plus de ce dont j'ai parlé ci dessus, le système de view a été implémenté, et il fonctionne exactement comme GM, avec la possibilité d'avoir plusieurs views dans le même fenetre, la possibilité de zoomer, suivre un objet, scroller, etc... J'espère pouvoir sortir un démo de la lib le plus rapidement possible :p |
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: OniDev Library - Game Engine C++ Dim 5 Jan 2014 - 21:24 | |
| Hello, je passe poster un petit build que j'ai du faire aujourd'hui, au cas ou des personnes seraient intéressées: http://www.mediafire.com/download/esd29cabf85tlde/OniDev+Library+2014+01+05.7zSoucis: Gros manque de fonctionnalités, comme l'audio, le réseau, ou tout simplement certaines fonctions basiques que je n'ai pas encore pensé ou eu le temps d'intégrer. Le système d'affichage par depth n'est pas encore intégré. La doc est totalement incomplete, et mis Fr/Eng (petit oubli de ma part). Points forts: Permet de faire rapidement un jeu car possède: -un système de sprite très efficace, vous pouvez charger une multitude de sprites en 2 lignes de codes, et les afficher avec un simple drawSprite a la GM. Les sprites sont automatiquement découpés, collés dans une metatexture... -un système d'instances objet très proche de GM, avec gestion auto des collisions, les fameuses fonctions instanceFind & co. -un système de maps qui permet d'afficher des tiles et de gérer les collisions objets/tiles Les tiles peuvent même avoir des masques de types pixel perfect, polygon, disk en plus de rectangle. -Possibilité d'afficher du texte, création de font depuis une font ttf (merci lib freetype) -un systeme de views (pas opérationnel a 100% mais permet de facilement faire bouger la caméra) Après y a tout plein d'autres fonctionnalités, comme la manipulation d'images, les path, les FBO, shaders... Le pack ci dessus contiens quelques exemples: -Un petit shmup fait a l'arrache -Un petit moteur de plateformes -Manipulation d'images -Dessin de sprites -Affichage de texte -projet template Les binaires ont été compilés avec MinGW4.8.1, donc compatibles C++0x. J’espère que ça plaira a ceux qui testerons, dans tous les cas n'hesitez pas a commenter si vous avez des conseils/critiques :b Edit: Je viens de remarquer que le projet codeblocks n'as pas enregistré les links... Pensez donc a ajouter: -lwinpthread -static-libgcc -static-libstdc++ -lonidev -lgdi32 -luser32 -lkernel32 -lopengl32 -lfreetype dans Project > Build options > od > Linker Settings > Other linker options |
| | | Contenu sponsorisé
| Sujet: Re: OniDev Library - Game Engine C++ | |
| |
| | | | OniDev Library - Game Engine C++ | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |