AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -40%
Tefal Ingenio Emotion – Batterie de cuisine 10 ...
Voir le deal
59.99 €

 

 OniDev Library - Game Engine C++

Aller en bas 
+18
Mass
Mobi
Térence
Termite
DeinDall
Oculus
Morwenn
D-z
master47
Craki
arthuro
robinlife
louckas
Manju
-Coco-
Sekigo Le Magnifique
Caly
onilink_
22 participants
Aller à la page : Précédent  1, 2, 3, 4, 5, 6  Suivant
AuteurMessage
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMer 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
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMer 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>

_________________
OniDev Library - Game Engine C++ - Page 4 Runningpotato1OniDev Library - Game Engine C++ - Page 4 TvF6GED OniDev Library - Game Engine C++ - Page 4 MdetltS
Revenir en haut Aller en bas
Invité
Invité




OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMer 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.
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMer 12 Sep 2012 - 21:28

Oui je fais du Qt mais je t'arrive pas à la cheville gnii
Donc oui je veux bien que tu m'explique rapidement comment faire ca awesome

(et j'ai éditer mon précédent post, ca peut t'intéresser)
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyJeu 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.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyJeu 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 mrgreen2
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.

_________________
OniDev Library - Game Engine C++ - Page 4 Runningpotato1OniDev Library - Game Engine C++ - Page 4 TvF6GED OniDev Library - Game Engine C++ - Page 4 MdetltS
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyJeu 13 Sep 2012 - 17:56

Ben en les escapant, pardi... Ou à coups de &lt; et autres.

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyJeu 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.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMar 18 Sep 2012 - 14:56

Le truc c'est que le texte coloré cpas pour l'éditeur que je le veux, mais quand tu fait un drawText en codant x)

Sinon, un truc qu'a rien a voir mais bon mrgreen2
http://host-a.net/u/onilink_/verlet_lawl.7z

Edit:
http://host-a.net/u/onilink_/verlet_test2.7z

_________________
OniDev Library - Game Engine C++ - Page 4 Runningpotato1OniDev Library - Game Engine C++ - Page 4 TvF6GED OniDev Library - Game Engine C++ - Page 4 MdetltS
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMar 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.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMar 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

_________________
OniDev Library - Game Engine C++ - Page 4 Runningpotato1OniDev Library - Game Engine C++ - Page 4 TvF6GED OniDev Library - Game Engine C++ - Page 4 MdetltS
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMar 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 mrgreen2
Revenir en haut Aller en bas
DeinDall
Utilisateur confirmé: Rang ****
DeinDall


Messages : 858
Localisation : Quimper

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMar 18 Sep 2012 - 19:47

bienvenu au club des adorateurs d'oni_ Very Happy
bon sinon, c'est beau comme d’habitude hein Wink bien que toujours le même plantage à la fermeture meybon.

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


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

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMar 18 Sep 2012 - 20:11

Merci merci gnii

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 :/

_________________
OniDev Library - Game Engine C++ - Page 4 Runningpotato1OniDev Library - Game Engine C++ - Page 4 TvF6GED OniDev Library - Game Engine C++ - Page 4 MdetltS
Revenir en haut Aller en bas
Invité
Invité




OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMar 18 Sep 2012 - 20:27

je crois que j'ai trouvé la véritable identité d'onilink

Spoiler:
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMar 18 Sep 2012 - 21:01

Tu parle, le mec de la photo c'est un gignol par rapport à notre Oni mrgreen2
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 ?
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMar 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.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMar 18 Sep 2012 - 21:54

Jerry pour l'architecte rire

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 Razz
/**** 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!

_________________
OniDev Library - Game Engine C++ - Page 4 Runningpotato1OniDev Library - Game Engine C++ - Page 4 TvF6GED OniDev Library - Game Engine C++ - Page 4 MdetltS
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
arthuro


Messages : 1483
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMar 18 Sep 2012 - 22:35

C'est beau!
En plus on peux déchiré le tissus.

_________________
OniDev Library - Game Engine C++ - Page 4 PochetteOniDev Library - Game Engine C++ - Page 4 Signature.php?gid=588
D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMar 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.7z

Touches:
P : pause
Space : générer une toile
Enter : générer un tissus

_________________
OniDev Library - Game Engine C++ - Page 4 Runningpotato1OniDev Library - Game Engine C++ - Page 4 TvF6GED OniDev Library - Game Engine C++ - Page 4 MdetltS
Revenir en haut Aller en bas
Invité
Invité




OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMar 18 Sep 2012 - 22:57

OniDev Library - Game Engine C++ - Page 4 1348001822-happy-face

je voulais faire un smiley Sad

Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMar 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)

_________________
OniDev Library - Game Engine C++ - Page 4 Runningpotato1OniDev Library - Game Engine C++ - Page 4 TvF6GED OniDev Library - Game Engine C++ - Page 4 MdetltS
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
arthuro


Messages : 1483
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMar 18 Sep 2012 - 23:22

> Sachem: j'ai pensé à:
OniDev Library - Game Engine C++ - Page 4 Masque-de-scream-scary-movie

> 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. Smile

_________________
OniDev Library - Game Engine C++ - Page 4 PochetteOniDev Library - Game Engine C++ - Page 4 Signature.php?gid=588
D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMer 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 ?)
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMer 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

_________________
OniDev Library - Game Engine C++ - Page 4 Runningpotato1OniDev Library - Game Engine C++ - Page 4 TvF6GED OniDev Library - Game Engine C++ - Page 4 MdetltS
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMer 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.
Revenir en haut Aller en bas
Craki
Utilisateur confirmé: Rang ****
Craki


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

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMer 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) ?

_________________
OniDev Library - Game Engine C++ - Page 4 357g46o
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyMer 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.

_________________
OniDev Library - Game Engine C++ - Page 4 Runningpotato1OniDev Library - Game Engine C++ - Page 4 TvF6GED OniDev Library - Game Engine C++ - Page 4 MdetltS
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyVen 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.zip

J'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

_________________
OniDev Library - Game Engine C++ - Page 4 Runningpotato1OniDev Library - Game Engine C++ - Page 4 TvF6GED OniDev Library - Game Engine C++ - Page 4 MdetltS
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 EmptyDim 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.7z

Soucis:
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

_________________
OniDev Library - Game Engine C++ - Page 4 Runningpotato1OniDev Library - Game Engine C++ - Page 4 TvF6GED OniDev Library - Game Engine C++ - Page 4 MdetltS
Revenir en haut Aller en bas
Contenu sponsorisé





OniDev Library - Game Engine C++ - Page 4 Empty
MessageSujet: Re: OniDev Library - Game Engine C++   OniDev Library - Game Engine C++ - Page 4 Empty

Revenir en haut Aller en bas
 
OniDev Library - Game Engine C++
Revenir en haut 
Page 4 sur 6Aller à la page : Précédent  1, 2, 3, 4, 5, 6  Suivant
 Sujets similaires
-
» Blender Game Engine
» [Logiciel] OniDev
» computer control library
» GMSource Engine
» Nu,Pogodi-Electronic mini game on Game Maker

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