RPG ALLENDE // JEUX EN OPENGL (VERSION BETA 4)

kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007 - 6 juil. 2004 à 01:32
Heakons Messages postés 8 Date d'inscription samedi 15 janvier 2005 Statut Membre Dernière intervention 14 juin 2005 - 13 juin 2005 à 02:32
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/24304-rpg-allende-jeux-en-opengl-version-beta-4

Heakons Messages postés 8 Date d'inscription samedi 15 janvier 2005 Statut Membre Dernière intervention 14 juin 2005
13 juin 2005 à 02:32
Moi je me pose qu'une question, comment faire un éditeur de map?
kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007
12 août 2004 à 18:37
Le jeu a pas mal avancé, pour le telecharger http://kenjimax.free.fr/rpg1-1.zip
kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007
12 août 2004 à 18:27
Oui je suis desolé, la source n'est pas compilable, je modifie ca tout de suite.
cs_zozo Messages postés 1 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 10 août 2004
10 août 2004 à 16:38
Salut !

Je crois qu'il manque un fichier sources dans le fichier zip.
Il manquerait pas un fichier appelé timer.cpp dans le zip ?
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
8 août 2004 à 23:52
le truc des templates c'est aussi que ça explose la taille de l'exécutable, j'ai lu ça sur le site de wx widgets, et ça explique un peu pq un hello world stl avec g++ fait 420 Ko ...

sinon c'est clair que bêtement pour des fonctions super courantes du style Min, Max, Abs, ... si tu veux pas te tapper 15 000 surcharges, t'as tout intérêt à coder ça en template.
cs_Xs Messages postés 368 Date d'inscription mercredi 14 novembre 2001 Statut Membre Dernière intervention 1 septembre 2008
8 août 2004 à 23:25
Salut !

Elles sont super puissantes et super inutilisées des amateurs car elles sont assez difficiles à maitriser (regarde par exemple le calcul d'une valeur par le précompilo, et non in game).

En fait, elles ne sont pas si difficiles, mais bon faut déjà en avoir l'utilité. Dans notre jeu waterball (www.waterball.fr.st) on s'en est servi uniquement pour CDXList et le registre.

cordialement
kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007
8 août 2004 à 23:18
Bah il faut etre negatif si on veut faire progresser.

Les changements de map sont plutot hardcore :D

Mais tous ces problemes s'expliquent par le fait que au debut j'ai commencé a coder pour tester deux ou trois ptits trucs et c'est seulement plus tard, alors que le ode avait deja pas mal avancé que j'ai decidé de pousser le projet un peu plus loin.

Au fait, j'ai une question :

Le C++ propose une onction super puissante : les templates, et pourtant je ne les vois jamais utilisés, il y a une raison ? C'est pourtant bien pratique quand meme !
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
10 juil. 2004 à 16:11
lut,

jai lu aucun comment, je vais probablement repeter des choses, je suis presse, voila pq.

je te conseil de faire du multi-layer pour tes cartes, renseigne-toi, mais ca na rien de sorcier, il sagit juste de dessiner plusieurs couches de la carte par transparence.

pas vu de scrolling

tu devrais mettre la zone de collisions de ton perso (et des arbres) a la base du sprite, et pas sur tout le sprite, cest pas realiste :/

a ce propos, gere le ainsi nomme Z-index, pour que passer derriere un arbre fasse bien apparaitre larbre devant toi, et tu devras faire pareil avec les PNJ. ca cest ds le cas ou tu changerais justement la zone de collision (franchement, il faut ;))

est-ce que tu as un script engine? cest a propos des changements de map, ils sont scripte, ou cest "hardcode"? si cest hardcode, faut repenser larchitecture je pense, parce que tu vas avoir des problemes pour levolutivite, et, accessoirement mais on sen fiche, un exe dune taille barbare.

vala, jai ete que negatif, dsl :p bah pr la route alors: garde la musique ;)
kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007
8 juil. 2004 à 01:37
Quand tu dis que l'heritage ca sert a rien, j'aimerai eclairsir ce point, parce qu'en fait, de temps en temps c'est pratique mine de rien (pour un jeu par exemple ou de toute facon tous les objets ont une position x et une position y, apres tu herites la classe, etc...)
Mais le vrai probleme de l'heritage, c'est que c'est bien pour les vieux qui programment des tableurs, mais, pour les jeux, niveau espace memoire et rapidité, c'est miserable !
quand tu crés un objet a partir d'une classe fille, ca créé un objet de chaques classes parentes ! (sauf classes virtuelles pures). Imagine que tu utilises un multiheritage, ca devient n'importe quoi, il y a un appel à 15 constructeurs...C'est nul ! ;)
kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007
8 juil. 2004 à 01:31
Oui, c'est deja la cas a qqch pret :D

J'ai une fonction qui s'appelle collision et une autre collision_pnj
la premiere est de la forme:
(en gros) :
for(int i =0, i< map->nbr_element; i++)
{
if(hero->pos_x==map->element[i]->pos_x - hero->taille_x && blabla)
{ return 1 } //je sais pas besoin d'accolades....
}

et dans une autre fonction j'ai un appel, qui fait :
if(collision(map_courante, hero)==1) blabla....

Ca revien a peu pres au meme.

Au fait, je te vois jamais sur MSN... :(
Pour te faire plaisir, j'ai fait un joli programme tout propre, mais qui marche pas lol, dans une source un peu plus recente.
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
8 juil. 2004 à 00:47
Bah personne te demande de mettre du polymorphisme et de l'héritage, la plupart du temps ça sert à rien lol.
Le truc c'est de penser objet avant de coder : quelles seront tes classes, quand est-ce qu'elles seront instanciées, et pourquoi.
Sinon si tu crées un objet juste pour avoir la syntaxe objet->collision(), effectivement c'est con.

Non, moi je verrais plutôt, par exemple, chaque "element" qui aurait un pointeur vers la "map_courante" en membre, par exemple, et là tu ferais :
if(mon_element->collision())
// blabla...
ou sinon, sans pointeur membre vers la map courante tu ferais :
if(mon_element->collision(ma_map))
// blabla...

Enfin moi je dis ça mais j'ai pas vraiment étudié le code source donc je sais pas du tout si je dis des conneries ou pas ^^
kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007
7 juil. 2004 à 19:09
Si bien sur ! Mais, dans ce cas, une fonction comme la fonction "void collision (element *chose, carte * map)" je fais comment pour la gerer ? Je la declare comme fonction membre des deux classes ? et je l'apelle comment ? En créant un objet "virtuel" pour avoir une syntaxe objet->collision( hero, map_courante) ?

C'est trop de probleme, pour un resultat equivalent sauf un code moins propre, mais pas forcement mois rapide !
J'avais fait un jeu en mode texte METEROID III, qui etait tres "propre", avec surcharge d'operateur, polymorphisme, encapsulage et heritage, mais...pour ce programme la, ca me donne pas grand chose....enfin je trouve....
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
7 juil. 2004 à 16:56
Et tu trouverais pas plus logique que, quand tu as une classe et des fonctions en rapport avec la classe, tu déclares ces fonctions comme membres de la classe, plutôt que de les laisser externes et en friend???
kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007
7 juil. 2004 à 12:40
Et j'oubliais les fonctions friend, c'est juste au cas ou j'aurai besoin d'utiliser les mots clefs private et protected, ca permet d'avoir acces aux fonctions membres a partir de ces fonctions...si fonction membre il y a.
Mais c'est surtout dans un soucis de clarification des choses, les fonctions friend, sont des fonctions qui ont un rapport direct avec la classe dans la quelle elles sont declarées.
En gros pour l'instant ca sert a rien, mais si jamais je modifie quelquechose, ca servira.
kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007
7 juil. 2004 à 12:40
Et j'oubliais les fonctions friend, c'est juste au cas ou j'aurai besoin d'utiliser les mots clefs private et protected, ca permet d'avoir acces aux fonctions membres a partir de ces fonctions...si fonction membre il y a.
Mais c'est surtout dans un soucis de clarification des choses, les fonctions friend, sont des fonctions qui ont un rapport direct avec la classe dans la quelle elles sont declarées.
En gros pour l'instant ca sert a rien, mais si jamais je modifie quelquechose, ca servira.
kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007
7 juil. 2004 à 12:36
Oui, je sais d'ou provient le probleme du perso qui n'avance pas...C'est un probleme au niveau du timer, pour eviter d'utiliser plusieurs timer, le timer de deplacement du personnage est le meme que celui de l'affichage, alors des que le PC est pas suffisament puissant pour afficher 40fps, le personnage ralenti. Va falloir que je modifie ca...mais j'ai essayé sur un autre pc, un 900Mhz avec geforce2mx et 384moSDRAM, et ca tourne nikel...

Va falloir que je revois ca...

Pour le scrolling, ca complique enormement les choses ! Mais c'est rai que ce sera mieu. Je peux pas le faire pour ce projet, dans un prochain peut etre.

Oui achoum, surement, mais si je te dis que pour faire tes programmes, tu ferais bien mieux de programmer en Q-basic ! Tu me repondrais quoi ? que tu ne sais faire que du C++ et que tu n'as pas le temps de te mettre au Q-basic ! J'ai prevu de me mettre a directX en rentrant des vacances (dans 5 semaines en fait) apres avoir fini ce programme.(Faut que je le distribue au lycee...)

PS --> Ok, je suis quasiement connecté en permanence...mais parfois...ce n'est pas moi ! ;) Mais t'en fait pas, mon petit frere est cool :D
Achoum Messages postés 39 Date d'inscription mercredi 17 avril 2002 Statut Membre Dernière intervention 2 juillet 2005
7 juil. 2004 à 10:11
Pour un jeu en 2D comme sa tu ferais bien mieu d'utiliser le DirectDraw.
Aussi bien au niveau optimisation qu'au niveau fonction....
Voila ....
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
6 juil. 2004 à 22:26
Yep salut kenjimax :)
Je viens de tester et ça a l'air pas mal bravo :) Mais j'ai le même problème qu'AmK avec la vitesse du perso.
Attends je regarde le code voir si je peux trouver d'où vient ce problème (au fait t'as oublié de fournir timer.cpp dans le zip ^^)...bon ben non j'ai pas trouvé (si je pouvais compiler ça aiderait mais bon de toutes façons j'ai la flemme lol).
Sinon faudrait que tu rajoutes un scrolling, pour ça faut considérer une nouvelle origine, celle du monde, et afficher les persos et les objets selon cette origine.

Et pour finir, pourquoi est-ce que tu mets tous ces friend??? ça sert à quelque chose??

En te souhaitant bonne prog...
@++

PS : je t'ai rajouté dans mes contacts MSN, si jamais tu te connectes...;)
kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007
6 juil. 2004 à 19:29
Je les ai viré dans la version que j'ai envoyé....

La prochaine fois je les met, c'est promis !
D'ailleur quand je pense a la fonction afficher_element(), ca me fait plutot penser a la blague de momo...

Je mets a jour des que ca aura un peu avancer dans la gestion des PNJ et des ennemis.
cs_AmK Messages postés 368 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 27 janvier 2010 1
6 juil. 2004 à 18:58
au fait les blagues à 2 balles je les trouve ou exactement dans tes sources ???
cs_AmK Messages postés 368 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 27 janvier 2010 1
6 juil. 2004 à 18:55
eh ben non en fait la je suis pas chez moi , je suis chez un ami c'est une trés vieille machine ( comme celle de funto lol) un bidule de 600mhZ , 64 mo de ram ( pire que Funto) je l'essayerai plus tard sur mon pc ça devrait aller mieux !
kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007
6 juil. 2004 à 18:52
Pour ce qui est de la vitesse du perso, ca me parait bizarre, dans la mesure ou je pense que ton PC est capable d'afficher 40fps d'un jeu en 2D tout pas beau comme le mien !
kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007
6 juil. 2004 à 18:50
Oui, tu as raison, mais j'en ai pas l'interet pour l'instant, alors les private :, protected : je les pases a la trape...

Ca me permet de ne pas faire gaffe aux histoires de classes amis et consorts, cependant je les mets quand meme, au cas ou j'aurai besoin d'utiliser ces mots clefs...
cs_AmK Messages postés 368 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 27 janvier 2010 1
6 juil. 2004 à 16:41
dis je suis tombé sur ça en lisant le code :

class carte
{
public :

element * objet[30];
int numero;
int nombre_element;

friend void charger_carte(carte *map);
friend void changement_carte(carte *map);
friend void afficher_carte(carte *map);


};

je suis pas un prince en poo mais les membres de données comme element * objet[30];
int numero;
int nombre_element;
on feraut pas mieux de les mettre sous le label private ? c'est le principe meme d'une clase non ?
cs_AmK Messages postés 368 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 27 janvier 2010 1
6 juil. 2004 à 15:17
coucou , je viens d'essayer ça , ça a l'air pas mal niveau devellopement , un petit truc il avance trés lentement le perso chez moi en fait pour traverser un seul tile , j'ai l'impression qu'il galere grave !!! enfin bref pour atteindre une porte j'ai mis 4 bonnes minutes !
sinon j'ai decouvert dans ton zip le .h le plus court que je n'ai jamais vu :
//OBJECT.H
#include "element.h"

voila que dire d'autres à part que j'aime bien lire ton code , il me permet de penser à un monde meilleur !!!!! ( bon j'arrette de delirer :))
kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007
6 juil. 2004 à 12:43
Oui j'y ai pensé, mais le jeu le permet !

Je pensais à faire une surcharge des operateurs >> et << avec :

>> : on ecrit l'objet map
<< : on lit l'objet map et on charge les elements

le jeu le permet, il suffit donc de créer l'editeur (suffire....)
Cyberboy2054 Messages postés 173 Date d'inscription jeudi 20 décembre 2001 Statut Membre Dernière intervention 22 août 2008
6 juil. 2004 à 11:48
Le systeme de map est correct mais ce serait mieux si la map etait codée via un éditeur de maps ;)
Un peu plus long certes mais tellement plus compréhensible et facile d utilisation =D
kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007
6 juil. 2004 à 11:21
Merci beaucoup :D

Pour les layers, je suppose que tu parles de la gestion des collisions avec des calques ? Donc une collision pixel perfect ?
Je ne maitrise pas encore ce point, je vais me documenter.

Une petite anecdote :
Je peux pas avancer dans la programmation sans avoir des sprites a mettre, or puisque ceci sont pas mal pris dans secret of mana et que je n'ai pas le tileset, je suis obligé de jouer a l'emulateur..(j'ai le jeu original en plus..) et de faire des impressions ecrans...et en ce moment j'arrive pas a tuer TIGROR un boss...alors je peux plus programmer...
cs_Xs Messages postés 368 Date d'inscription mercredi 14 novembre 2001 Statut Membre Dernière intervention 1 septembre 2008
6 juil. 2004 à 09:28
Sympa !

Pour les collisions, utilise le systeme des layers : aussi simple mais il permet beaucoups plus de choses !

Et pour les maps.... j'avoue que la c'est un peu primitif comme tu dis :D.

Mais je repete : la production globale est sympa, meme excellente !

8/10
kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007
6 juil. 2004 à 01:32
Je repete car c'est pas bien visible, mais l'executable du jeu avec les musiques et les sprites, est disponible ici :

http://kenjimax.free.fr/rpgbeta4.zip

(j'essaye une balise BBcode :)
[URL]http://kenjimax.free.fr/rpgbeta4.zip/URL

une html :