Bonsoir !
Je vous présente mon p'tit jeu a moi ! ![]()
Ce p'tit jeu a moi est un RPG. Et donc, ce n'est pas un PETIT jeu.
Bref. J'ai déjà créer un topic, mais le modo me conseil de créer un topic avec THE TITRE.
En sachant que le titre de mon futur jeu n'est pas encore choisit : [C/Make]RPG <- me semble bien
(j'ai voulu mettre THE RPG a la base, mais bon
)
Bon, les points sur les I immédiatement. Histoire d'être clair dès le début :
--------------- Le Code ! ------------------
Je développe un RPG en C.
Avec la SDL, Pthread, Fmod, et c'est tout pour le moment ![]()
L'histoire n'est pas encore écrite, les idées sont là.
Pourquoi en C ?! Parce que je suis sadomasochiste !
Pourquoi pas en C++ ?! Parce que j'ai déjà 3000 lignes de code et que ça me ferait ch*** de tout réécrire.
Qu'est-ce que ton "moteur" gère et fait actuellement ?!
Il gère :
- Le monde, les maps et ces chargements.
- Il gère une pseudo collision, qui doit-être retravaillé.
- Il gère les Musiques et sons.
- Les Thread bien entendu ![]()
- Les textes a l'écran.
- Les entrées textes du clavier (pour donner un nom a sa sauvegarde par exemple, ou pour son personnage
)
La gestion de la souris (pour les futurs différents bouton de - l'interface
)
- Les images/Tiles/Background bien entendu
et leurs animations (tout est fonctionnel pour ça, il manquera peut-être un ou deux détails pour les combats, mais rien de particulier
)
Un "pseudo" héro, sans vie, ni âme (bref, un cube sur une map quoi
)
et tout est fait pour m'arranger, me simplifier la vie.
Par exemple, pour les musiques :
MusicInit(MusiqueACharger)
ThreadLoad(PlayMusic, &pointeurMusic)
ThreadClose()
CloseMusic()
C'est comme ça dans la pratique et pour le moment ça me semble correct
, ça se supprime avec le reste (si c'est un ennemi qui meurt, l'ennemi se détruit et tout ce qui est lié avec
).
Donc pour moi, pour le moment, tout fonctionne simplement ![]()
même la gestion des maps quoi
while(boucleprincipal)
mapscrooling() (scrooling/chargement etc.)
maprefresh() (<-affichage)
... et voilà ma gestion des maps
Bref. Tout fonctionne plutôt bien là
--------------- Le Style ! ------------------
Pour ce qui est de la taille des Tiles, a la base je devait faire du 16x32... mais sa me semble un chouilla trop petit.
Et j'hésite entre deux choix graphiques. Soit un style "Snes/GBA"... soit un style "cartoon" avec des images en "3D".
Si c'est Snes/GBA :
Euh... perso a par du pixel, par pixel je ne sais pas faire grand chose
Si je fait tout en 3D : Les différentes Tiles et objets du jeu seront réalisés sous Blender
ensuite on fait un rendu selon la taille de l'objet, et si il est animé on colle tout en un bout et ça devrait être très facile
(dans la théorie c'est facile en faite
)
--------------- Les maps ! ------------------
Ma gestion de la MAP MONDE :
Ma map monde sera "ouverte", un monde ouvert quoi. Sans chargement, tout au scrolling. Bref. Comme un Continent de World of Warcraft
Les maps seront ainsi et c'est un exemple : (j'ai générer ça a partir d'un code sous console et j'ai exagéré 2500 fichiers
) :
Et voilà, là on imagine une map monde (d'1M de case pour le coup
) qui se charge au fur et a mesure.
Parce que c'est plus simple je trouve. Plus simple pour gérer les mini-quête, mini-scénarios etc.
Si je doit détruire une maison après quête, je charge le morceau adéquate.
Si on regarde le nom des maps c'est ça :
map-0-0-1-0-0
Les deux premiers zero sont les coordonnées pour savoir quoi charger.
Le 1 correspond au scénario principal.
Le troisième zero corresponds au sous-scénario.
Le dernier s'occupe de l'ID de la map (donjon, monde etc.)
On imagine que la map : 150-65-1-0-0 contient une maison, trois PNJ et 2-3 mobs passifs. Je réalise la quête d'un odieux roi, je termine ma quête.
Le jeu charge la map 150-65-1-1-0-0 :
et en revenant voir ces trois paysans et je me retrouve face a 5 mobs agressifs, une ferme détruite des débris partout et une musique différente
Il existe surement plus simple, mais j'ai envie de faire comme ça
---------- Les mécanismes ! --------------
Je ne suis pas encore certains des différents mécanisme de jeu.
Mais dans l'idée les combats se passeront dans un autre écran, autre que le monde, bref comme les vieux FF ou pokemon par exemple
(Tour par Tour
)
Hum. Le joueur se déplacera par case, ça changera peut-être avec le temps, mais pour le moment tout est gérer par case
(avec les flèches uniquement, ou avec les flèches et la souris pour choisir sa direction etc.
)
Les bestioles seront sur la map monde, si vous ne les touchez pas et si ils ne vous touchent pas, aucun combat ne débutera
Il existera des parchemins et spells pour tué un monstre sur la map monde sans faire de combat (OS), mais vous gagnerez moins d'xp et aucun objet ne pourra être pris
(vue que pendant un combat il y aura entre 1 et 5 monstres et que sur la map monde, un seul monstre sera afficher, il y aura surement 70% d'xp en moins)
Il existera aussi des buffs qui pourront-être lancer avant un combat (pas pendant). Par exemple, un buff bonus contre les dégâts de Feu, qui dure 3 tours. Ou encore un parchemins rares qui nous ressuscite si le groupe meurt face a un boss coriace
(mais faudra y réfléchir a deux fois avant de l'utilisé
)
Le système de sauvegarde sera ainsi : une seule sauvegarde, pas de multi-sauvegarde comme skyrim par exemple
. (C'est pour ça qu'il faudra y réfléchir a deux fois avant d'utilisé un parchemin rare
)
------------------- Ce qui est encore théorique ----------------
Il existera 3 races jouables, chacune des 3 races débutera a un endroit différent pour la même trame scénaristique, on aura donc droit a 3 visions de l'histoire différente (va falloir s'accrocher put***
).
La trame principal ne sera qu'une partie de l'histoire ![]()
Il y aura des quêtes, sous-quêtes etc. partout avant et après avoir terminé le jeu.
Pas de classe prédéfinit, vous choisirez votre classe, avec les points que vous disposerez dans vos stats et en fonction de la guilde que vous choisirez
Seulement 3-5 spells pourront être utilisé pendant un combat, vous devrez les choisir avant de débuté celui-ci (il existera deux-trois raccourcis mémoire qui retiendront vos combinaisons de spell
).
entre Deux et Quatre compagnons devraient vous accompagnez pendant le combat.
Pour ce qui est des Stats, il y aura les stats de base (intel, force, bonus contre le feu etc.). Vous pourrez choisir ou placer vos points, entre un et trois points (c'est a définir) par niveau
)
dans l'idée et la théorie, il y aura aussi trois autres stats sur lequel je travail actuellement (sur papier
) qui sont : La faim, la fatigue et l'poid que peut porter le personnage (genre si il a 650 armes euh...
). Mais ce n'est pas encore certains
.
La fatigue se répercute pendant un combat avec moins de dégâts de magie/dist. (par exemple)
Pour la Faim, c'est pareils, lié a la fatigue
dont moins de dégâts au cac.
Le poids sera lié a la fatigue, plus lourd sera votre personnage et plus vite il se fatiguera.
Et si je ne change pas d'avis, j'intégrerai le lua pour gérer certains évènements qui seront liés a la map
Hum. Une image du développement actuel :
Le scrolling :
cute:
voilà pour le moment ![]()
sa me parait bien perso
(en même temps, qui n'aime pas ces propres projets ?
)
Trop de smiley tue les smileys
Bon courage ça m'a l'air bien parti
( pourquoi pas faire en Java ou C++ par contre ? )
T'es conscient que c'est illisible pour un non-initié à la prog ?
t'aurais pas une petite video de ce que tu as deja fait ?
ce serait vraiment cool ![]()
dstarMDA Voir le profil de dstarMDA
Posté via mobile le 8 avril 2012 à 08:24:52 Avertir un administrateur
T'es conscient que c'est illisible pour un non-initié à la prog ? "
ouais, bon, peut-être
je vais faire supprimer le topic par un modo alors et ouvrir une sorte de blog ou j'expliquerai tout... je devait m'occuper il était 6 heures du matin
Fred_Oo : ![]()
A part les chargements et transitions de la map que tu vois sur la dernière image (+ un theme musicale de FFV <- histoire d'avoir un peu d'ambiance quoi, ça me faisait ch** de toujours voir les mêmes carrer gris
)) tu ne verras pas grand chose
dans quelques semaines si tu veux ![]()
et ben ça a l'air compliqué tout ça, j'y connais rien mais bonne chance
Bonne chance ![]()
T'as déjà fait d'autres jeux?
tu pourrais limite faire un dungeon RPG dans un monde ouvert en fait
Bonne chance.
Bon, j'ai du mal a avancer ![]()
donc pour le fun et pour changer je me suis fait une pseudo interface de combat avec une barre d'action type mmo
Pour ce qui est des maps, le son d'ambiance fonctionne (ambiance forêt etc. fonctionne), les collision, les pnj chargent (ce sont les carrer orange, ouais faut beaucoup d'imagination
).
Ce qui me manque ce sont les tiles pour les maps et un éditeur de map ! Je commence un éditeur d'animation a côté, histoire de simplifié la gestion des animations
ensuite l'interface utilisateur et les combats
(l'image des "combats" actuels, j'ai fait ça en début de mois pour me changer les idées... )
et je manque de temps
, aujourd'hui c'est repos pour moi mais depuis bientôt deux semaines je suis IRL au boulot
)
"et je manque de temps , aujourd'hui c'est repos pour moi mais depuis bientôt deux semaines je suis IRL au boulot )"
tu n'aurais pas dû partir sur du C (même C++) pour faire un projet comme ça qui demande peu de ressources machines.
du c# ou du java aurait trés bien fait l'affaire et t'aurais simplifié beaucoup de choses.
si tu n'as pas trop avancé, tu devrais réfléchir à changer de language?
Je trouve que j'ai un peu beaucoup avancé
Mes maps chargent, c'est un monde ouvert, les pnj chargent, les messages de quête aussi (manque l'affichage quoi
), les pnj, les spells, animations w_w
me manque du lua ici et là et ensuite je m'attaque au sprite/tiles etc. et aux scripts des différents objets etc. w_w (scripts des différentes scènes aussi)
en théorie j'ai terminée le plus gros quoi ![]()
vue que ce ne sont que des détails après
et comme je l'ai déjà dit, c'est juste pour l'hf, je fait une démo, je la poste sur le web, je suis content et je m'attaque a autre chose ensuite (j'ai une idée d'un put*** de FPS en 3D et tout
)
Mais il apprendra bien plus en le faisant en C. Personellement je n aime pas ce langage, mais ça reste un des meilleurs pour la gestion des ressources. Sinon tu pourrais aussi essayer de le faire en html5, en te basant sur le monde de firefox. Bon courage en tout cas ![]()
"mais ça reste un des meilleurs pour la gestion des ressources"
un jeu est suffisamment compliqué à programmer, pour avoir en plus a gérer les allocations mémoire, surtout pour ce type de jeu qui n'est pas exigeant au niveau performance.
"en théorie j'ai terminée le plus gros quoi
vue que ce ne sont que des détails après
et comme je l'ai déjà dit, c'est juste pour l'hf, je fait une démo, je la poste sur le web, je suis content et je m'attaque a autre chose ensuite (j'ai une idée d'un put*** de FPS en 3D et tout )"
ok bon, oublies ce que j'ai dit.. ![]()
Pour ce type de jeu oui, mais au moins il va apprendre beaucoup de choses. On voit bien avc minecraft, l optimisation est juste ignoble. Avec du C our C++ ça aurait été tout autre. Après, le C++ est certainement un bon compromis.
" On voit bien avc minecraft, l optimisation est juste ignoble"
le plus important c'est d'aller au bout du projet , même pour un jeu le plus simple possible (morpion) et quelque soit le langage utilisé la dessus 90% des gens qui s'essayent au développement de jv échoue.
pourquoi tu ri ? hein ? ![]()
j'ai dit une connerie ?!
Je m'en fout de toute façon, vous avez surement fait des études pour ça, pas moi, c'est pour le fun et en amateur
"pour avoir en plus a gérer les allocations mémoire"
mais je les gères les allocations mémoires, vous inquiétez pas, j'ai eut une fuite a un époque mais c'est régler + tout me semble bon pour le moment
La fuite a eut lieu pendant le coding des chargements des maps. La map est découper en plusieurs petits bouts, et quand j'arrive a l'extrémité d'un bout, je charge la suite, et pendant le chargement de cette suite, l'ancien petit bout ne se vidait pas, pendant que le nouveau se chargeait... se qui fait que je pouvais me retrouver avec 200mb de mémoire pompé ![]()
le plus important c'est d'aller au bout du projet , même pour un jeu le plus simple possible (morpion) et quelque soit le langage utilisé la dessus 90% des gens qui s'essayent au développement de jv échoue. "
ouais et le type s'est fait des millions avec une optimisation de merde qui plus est
pour le moment c'est opti, tout est fait pour que se soit opti. Je peut pas faire mieux dans l'immédiat
Par exemple, au chargement d'un pnj au lancement du jeu ou pendant le pré-chargement du cache des maps, je ne charge pas le contenu de la quête en un coup, mais uniquement l'ID + la position du curseur de la quête a lire. Si le joueur se déplace jusqu'au pnj et lui parle, là les informations de quête charge et s'affiche
et sa prends moins d'une seconde a faire (pour le moment
)
si sa pompe trop au fur et a mesure que le temps passe, je charge en fonction de la position du joueur
si le joueur se trouve au centre "des maps" charger, toutes les informations se chargent, si il ne s'y trouve plus, je vide tout
ma gestion des maps est ainsi actuellement :
0 0 0
0 1 0
0 0 0
Je charge 9 morceaux de maps qui seront afficher, 8 morceaux sont pré-charger et correspondent a ce qu'on ne voit pas encore d'afficher
1 est la position du joueur et le joueur ne quittera jamais cette position
, les maps défilent sous les pieds du joueur, si la map "actuel" quitte les pieds du joueur, la "mémoire" des PNJ se vident ne gardant que l'ID de la quête et son curseur, pendant les pnj de la nouvelle map concerné se chargent
bref, tout ça pour dire que je fait tout pour que se soit opti dès le début ![]()