begin process at 2012 05 27 19:07:29
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

OpenGL

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

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


 Information sur la source

Note :
7 / 10 - par 4 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :OpenGL Niveau :Débutant Date de création :06/07/2004 Date de mise à jour :12/08/2004 18:31:55 Vu / téléchargé :5 954 / 618

Auteur : kenjimax

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (30)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
C'est le debut d'un jeu en openGL programmé entierement par..... tadaaaaa moi... Personne n'a voulu m'aider, mais bon, j'ai pas fait trop d'efforts non plus ;)

Donc, le jeu est programmé, une fois n'est pas coutume en C++. Au programme langage Objet (mais pas d'heritage...le code est un peu....primitif), loader TGA de Funto ! (un grand merci a toi...je sais j'arrete pas :)  ), FMOD et bien sur GLUT (j'y arrive pas sans...)

Il me reste a faire la gestion des combats et des PNJ(mais le code est deja pret).

L'interet du code c'est qu'il est entierement reutilisable ! Il suffit de regarder un peu le fichier "carte.cpp", une carte est definie de la maniere suivante :

map->objet[3] = new element(TEXTURE, pos_x, taille_x, pos_y, taille_y, franchissable ?, etc...);
, etc...

La gestion des collision est alors automatique ! C'est genial non ? Ah !? tout le monde fait comme ca ? ahhhh....ok....

L'executable du jeu est disponible ici : http://kenjimax.free.fr/rpgbeta4.zip


 Conclusion

Je ne mettrai mon code a jour qu'une fois que le jeu sera completement terminé...mais je pense que mon zip contenant les sources sera alors trop gros... Je le mettrai donc sur mon forum :

http://www.allende.fr.st (pub+=1000;)

Remerciements à Funto : pour son loader de texture et ses commenctaires et son aide et ..., Albert0 : pour sa source super claire de st@r battle qui m'a permi de progresser, tous ceux a qui j'ai piqué les sprites..., la jolie demoiselle en photo a coté du lit dans la maison de gauche, cartman pour avoir sculpté son corps et tous ceux que j'oublis !

Le seul truc qu'on peut faire dans le jeu c'est se balader entre deux maisons et les visiter ! (et ecouter la super musique midi : redredwine de UB40 ;)  )
Le jeu est a prendre au second degré, bien entendu...Il contient(dra) de nombreuses allusions à des copains à moi, il est donc normal que vous ne compreniez pas tout ! (pour l'instant y a que ALBAN, c'est un mec dont je me moque en disant qu'il est gros...alors qu'il fait 70K pour 1m75, c'est normal, non ? Un peu enrobé je l'accorde...)

Les touches sont tres simples : les touches directionnelles + "espace"(pour donner des coups d'epee)

A bientot tout le monde !
Laissez des commentaires ! (si je vous saoul avec mes blagues a deux balles dans mes sources, dites le ;)  )

PS : une derniere chose, mon code n'est pas commenté du tout ! Il est donc un peu.... incomprehensible...c'est ca ! Mais je vais le commenter des que le jeu sera fini...(je vais le finir celui la, c'est promi !)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

12 août 2004 18:31:55 :
Il manquait un fichier dans le zip et le jeu a pas mal avancé donc je remet une nouvelle source. Le jeu est toujours telechargeable avec les textures et les musiques sur http://kenjimax.free.fr/rpg1-1.zip

 Sources du même auteur

Source avec Zip Source avec une capture OPENGL 2D SIMULATION MOUVEMENT BROWNIEN
Source avec une capture PGA : RPG EN C++/OPENGL
Source avec une capture FRACTALE(S) TPE (OPENGL // GLUT)
Source avec Zip CONVERTISSEUR "BEAUFORT, KM/H, M/S", ORIENTÉ OBJET, CONSOLE...
Source avec Zip Source avec une capture METEROID IV // JEU SOUS OPENGL (DEVC++)

 Sources de la même categorie

Source avec Zip Source avec une capture AFFICHER DES COURBES DE BEZIER par shorzy
Source avec Zip Source avec une capture BASE/MOTEUR 3D EN QT/OPENGL (COMPLET ET FONCTIONNEL!) POUR U... par envi33
Source avec Zip Source avec une capture CLASSE AVEC OPENGL - OBJETS 3D ET ANIMATIONS par rasta63
Source avec Zip Source avec une capture LETTRES 3D AVEC OPENGL ET QT par opossum_farceur
Source avec Zip CUBE 3D GLUT32 VC++ ET DEVC++ par bobby03

Commentaires et avis

Commentaire de kenjimax le 06/07/2004 01:32:03

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 :
<a href=http://kenjimax.free.fr/rpgbeta4.zip </a>

Commentaire de Xs le 06/07/2004 09:28:45

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

Commentaire de kenjimax le 06/07/2004 11:21:41

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

Commentaire de Cyberboy2054 le 06/07/2004 11:48:46

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

Commentaire de kenjimax le 06/07/2004 12:43:25

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

Commentaire de AmK le 06/07/2004 15:17:14

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

Commentaire de AmK le 06/07/2004 16:41:04

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 ?

Commentaire de kenjimax le 06/07/2004 18:50:02

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

Commentaire de kenjimax le 06/07/2004 18:52:08

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 !

Commentaire de AmK le 06/07/2004 18:55:20

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 !

Commentaire de AmK le 06/07/2004 18:58:25

au fait les blagues à 2 balles je les trouve ou exactement dans tes sources ???

Commentaire de kenjimax le 06/07/2004 19:29:13

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.

Commentaire de Funto66 le 06/07/2004 22:26:59

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...;)

Commentaire de Achoum le 07/07/2004 10:11:46

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

Commentaire de kenjimax le 07/07/2004 12:36:45

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

Commentaire de kenjimax le 07/07/2004 12:40:49

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.

Commentaire de kenjimax le 07/07/2004 12:40:49

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.

Commentaire de Funto66 le 07/07/2004 16:56:59

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???

Commentaire de kenjimax le 07/07/2004 19:09:05

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

Commentaire de Funto66 le 08/07/2004 00:47:35

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 ^^

Commentaire de kenjimax le 08/07/2004 01:31:58

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.

Commentaire de kenjimax le 08/07/2004 01:37:39

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 ! ;)

Commentaire de Kirua le 10/07/2004 16:11:51

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 ;)

Commentaire de kenjimax le 08/08/2004 23:18:16

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 !

Commentaire de Xs le 08/08/2004 23:25:47

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

Commentaire de Kirua le 08/08/2004 23:52:19

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.

Commentaire de zozo le 10/08/2004 16:38:15

Salut !

Je crois qu'il manque un fichier sources dans le fichier zip.
Il manquerait pas un fichier appelé timer.cpp dans le zip ?

Commentaire de kenjimax le 12/08/2004 18:27:44

Oui je suis desolé, la source n'est pas compilable, je modifie ca tout de suite.

Commentaire de kenjimax le 12/08/2004 18:37:39

Le jeu a pas mal avancé, pour le telecharger http://kenjimax.free.fr/rpg1-1.zip

Commentaire de Heakons le 13/06/2005 02:32:47

Moi je me pose qu'une question, comment faire un éditeur de map?

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales