Partage

[Programme] Shaak

Un jeu de rôle comme vous n'en avez jamais vu !

20 avril 2011 à 22:05:28

Histoire du jeu

Bonjour je m'appelle Alexandre, j'ai 15 ans (à l'écriture du post) et suite à la lecture du cours sur le langage C de m@teo21, j'ai tout d'abord décidé de créer une mini calculette mais je n'y suis pas très bien arrivé. Suite à tout ça j'ai décidé de relire plusieurs fois et entièrement le cours. Tout ceci a porté ses fruits puisque j'ai beaucoup mieux compris le cours. Au final je n'ai jamais fini ma calculette (qui plus est était en console) et je me suis mis a faire un petit jeu de rôle nommé Shaak. Il faut avouer que j'ai mis un certain temps à le développer mais aujourd'hui il est enfin jouable et finissable.


Description du jeu

Le jeu côté joueur

Shaak est un mini jeu de rôle. Il se déroule sur 6 cases.

  • case 1 : ici se trouve le magasin, la fontaine pour se soigner, de quoi acheter des potions, des armes et des armures.
  • case 2 à 5 : Ici se trouvent des monstres de niveau 1 et 2 pour la case 2, 2 et 3 pour la case 3, 3 et 4 pour la case 4 et 4 et 5 pour la case 5.
  • case 6 : Ici se trouve le boss de fin de jeu. Battre ce boss revient à gagner la partie

A chaque fois que vous battez un monstre, vous gagnez de l'or et de l'expérience.

Le jeu côté développeur

Ce jeu bénéficie de différentes petites prouesses techniques telles que :
  • instauration des accents dans la console à l'aide de wchar.h (table ASCII étendue)
  • instauration de musiques grâce à la bibliothèque FMOD
  • existence de système d'expérience, de niveau et d'argent
  • codes triches pour s'amuser un peu (tapez é au lieu de taper n au tout début du jeu)

ATTENTION : Si vous utilisez les codes triches, si par hasard vous entrez autre chose qu'un nombre toutes les valeurs demandées ensuite seront mises à 0. Ça peut être pratique si vous voulez passer les dernières questions rapidement mais faites quand même attention ;)


Autres informations :

Historique

20/04/2011 : Achèvement de Shaak en console et présentation du jeu sur le forum du sdz
29/04/2011 : Commencement de la version graphique du projet
01/05/2011 : Création d'un topic sur mon problème d'écriture avec SDL_ttf
10/05/2011 : Présentation du projet sur le topic du concours de programmes SDL
22/05/2011 : Création des liens de téléchargement de la version "qui marche" en SDL
24/06/2011 : Résolution du problème d'écriture avec SDL_ttf (eh ben c'est pas trop tôt :-° )

Liens utiles

Version en console :
Jeu compilé pour Windows (14.9 Mo)
code source avec le CodeBlocksProject et les ressources (15.4 Mo)
Code source uniquement (12.3 Ko)

Version graphique :
Abandonnée pour le moment

Concours SDL :
topic du concours de SDL auquel Shaak est inscrit
message de présentation de Shaak sur le topic du concours

explications rapides des bibliothèques utilisées

wchar.h :
Permet de mettre des accents en console. Le type char occupant un octet est remplacé par le type wchar_t occupant 4 octet sur la plupart des ordinateurs. Pour en savoir plus alles voir le tuto de zarthur qui m'a tout appris sur les accents en console.

fmod.h :
Je n'en ai pas une connaissance parfaite mais en tout cas cette bibliothèque permet de gérer toute l'interface sonore d'un programme que les sons soient courts ou longs. J'utilise une fonction dans autre.h appelée musicPlay pour... jouer une musique :p Je pense à rajouter des bruitages un de ces quatre.

windows.h :
Dans cette bibliothèque spécifique à windows, j'utilise une fonction : Sleep(millisecondes_a_attendre). La fonction change légèrement si vous utilisez linux ou mac.
En parlant de fonctions spécifiques à windows, j'utilise aussi system("cls"); qui me permet d'effacer le texte à la console. L'équivalent unix est system("clear");

time.h :
J'utilise ce fichier uniquement pour initialiser la fonction rand() qui me permet de tirer un nombre au sort entre MIN et MAX avec la formule suivante : (rand() % (MAX - MIN + 1)) + MIN; comme le dit m@teo21 dans son cours sur le langage c ici

autre.h :
Celui là est un fichier à moi. J'ai plusieurs fonctions à moi :
  • scans(chaine_de_caractere, taille_de_la_chaine_de_caractere) : fonction équivalente à scanf("%s", chaine_de_caractere) sauf qu'elle est protégée contre le buffer overflow. Pour en savoir plus allez voir le chapitre sur la saisie de texte sécurisée de m@teo21
  • scanc(&caractere) : équivalent de scanf("%c", &caractere) sauf qu'elle est sans bugs. Pour en savoir plus regardez le TP du pendu de m@teo21. De plus, sous windows, cette fonction n'attend pas d'appui sur entrée. Ça permet de rendre le jeu plus réactif.
  • scand(&nombre) : équivalent de scanf("%d", &nombre). Juste pour gagner du temps en tapant la fonction et pour homogénéiser les noms de mes fonctions d'input.
  • wscanc(&caractere) : équivalent de scanc(&caractere) sauf que wscanc gère les accents
  • ecrire(texte) : Cette fonction prend comme argument une chaîne de caractères formatée et d'autres variables si besoin derrière. Pour faire simple, elle fonctionne comme printf sauf qu'elle colore toutes les variables en fonction de leur type et gère les "%o" (invention de ma part) qui me servent à forcer un changement de couleur dans le texte facilement.
Si vous voulez recompiler tout ça sous unix, pensez à enlever le #define WINDOWS dans constantes.h

Sachez que je maîtrise bien le C, FMOD et la SDL (pour l'instant je n'ai pas trouvé d'utilité à la SDL dans mon cas).
Si vous avez des critiques constructives, des idées d'améliorations ou encore que vous avez détecté un bug, n'hésitez pas : postez un commentaire.

-
Edité par alexandre.tsu.manuel 13 juillet 2016 à 2:49:34

qry = 2b || !2b
20 avril 2011 à 23:23:29

vraiment sympas ! je suis moi aussi en train d'apprendre a faire un programme de ce genre . ton rpg est vraiment complet et les musiques rajoutent un coté fort sympathique a l'ensemble.
21 avril 2011 à 0:37:17

pas mal ,trop court mais je pense que tu as du mettre du temps a le faire alors je te mets la note de 13.9/20 ce qui est tres bon pour mes critiques habituels
Supergun - Un 2 Players Arena . Live coding sur twitch.tv/Uriopass
21 avril 2011 à 0:43:25

Salut,
Alors déjà bien joué :)

Je te mets la note de 15.5/20 parce que tu as du galérer!
Combien de temps a tu mis pour faire ce projet?
Combien de temps d’expérience avant?

Merci de me répondre :)
Sinon encore un fois bien joué :p
21 avril 2011 à 2:56:28

Merci beaucoup pour vos critiques positives. au fait pour la date de commencement j'ai noté la date de création de chacun de mes headers en commentaire donc pour le jouer.h qui était le premier header que j'ai fait je l'ai créé le 06/02/11 à 15h54
Bien sûr j'ai été souvent découragé et j'ai fait pas mal de pauses :D
En plus j’étaie en fait un peu en train de continuer à apprendre le C en parallèle et qu'en plus de ça mon ordi faisait souvent des sales erreurs de compilation pas évidentes à repérer pour un débutant comme par exemple les différents bugs de la fonction scanf("%c", &caractere). Enfin bon avec tout ça, pas évident de faire un truc qui marche mais c'était facile à partir du moment où les potions étaient en partie faites et où le combat était possible car tout le reste n'était que de petites améliorations. Sinon vous n'auriez pas de petites idées pour ajouter des trucs intéressants. J'ai pensé à instaurer un système de quêtes et un agrandissement de la ville où j'ajouterai par exemple une taverne pour les quêtes, je mettrai la fontaine à l'extérieur et j'ajouterai un magasin de magie pour ceux qui auraient choisis une classe de magicien en début de jeu (j'instaurerai donc un système de classe de personnage (guerrier, nécromancien, magicien, archer, assassin, etc...) Et encore je pensai aussi mettre d'autres villes. Mais ça c'est pour dans longtemps puisqu'il faudrai que j'instaure bien plus de cases et là je pourrai utiliser la SDL et faire une grande carte. Enfin bon c'est encore du domaine de l'impossible pour l'instant :-°
qry = 2b || !2b
21 avril 2011 à 9:11:39

Je vais suivre le projet car tu a l'air motiver, vu ta motivation tu pourrais faire quelque chose de bien avec sa :p

Bref le système de quête serais vraiment génial ainsi que des races différentes.
Et pourquoi pas une sorte de banque qui permettrais de stoker ses inventaire et les récupérer quand on meurt?

Tous sa ne sont que des hypothèse et c'est TON projet :)
Alors je te souhaite encore bonne chance, et je suis le projet :D
21 avril 2011 à 11:10:41

Salut,

J'aime bien l'idée d'un RPG sur 6 cases. T'as pas visé trop haut et ainsi tu as pu produire quelque-chose de jouable. Bonne démarche.

Niveau améliorations, j'imaginerais passer sur un plateau 6x6, avec une case magasin, une case forêt, une case désert, etc... avec des petits graphismes sympa (pixel art) en 2d.

Je suis prêt a te donner un coup de main si ça t'intéresse (zCoach)

Bonne continuation.
21 avril 2011 à 13:22:16

@leblognouveau80 : Excellente idée la banque ! Je vais rapidement la mettre en place.
@Lukhan : C'est avec plaisir que j'accepte cette proposition de zCoaching (au passage je suis zCoach en C standard, HTML et CSS) parce que je pense que je vais avoir beaucoup de mal avec les images pour en trouver des bonnes et vu que je suis nul en pixel art si tu pouvais même m'en faire quelques uns (ce ne serai donc plus du Zcoaching mais une pure coopération) ce serai pas mal et le projet pourrai avancer plus vite.
qry = 2b || !2b
21 avril 2011 à 14:09:04

Ouaou c'est vraiment bien fais , seule bémols c'est que quand je finis un combat case 2 , je décide de redécendre case 1 pour me régénérer mais a chaque fois je suis obliger de repasser par la case 2 et op encore un monstre !

J'en profite pour corrigée une petite faute dans ton 1er message , tas mis j'ai 15 ... Met 15 ans ;)
21 avril 2011 à 14:20:05

Citation : sismic

Ouaou c'est vraiment bien fais , seule bémols c'est que quand je finis un combat case 2 , je décide de redécendre case 1 pour me régénérer mais a chaque fois je suis obliger de repasser par la case 2 et op encore un monstre !

J'en profite pour corrigée une petite faute dans ton 1er message , tas mis j'ai 15 ... Met 15 ans ;)


pour la faute c'est corrigé et pour l'autre problème si je comprend bien tu va en case 3 (monstres niv 2 et 3) et tu te retrouve obligé de passer par la case 2 (monstres niv 1 et 2) avant de revenir au magasin (case 1) c'est ça ? Sache que ça fait partie du jeu et que je pense que ce serai bien trop facile si l'on pouvait retourner au magasin "comme ça nimporte où". En revanche tu viens de me donner une idée de nouvelle potion. Ce serai une potion de téléportation qui te téléporte à la case de ton choix à n'importe quel moment du jeu même en combat.
qry = 2b || !2b
21 avril 2011 à 14:39:21

Oui voila c'est ça !


Heureux de t'avoir donnée un nouvelle idée pour améliorer ton jeu :D:p:)
21 avril 2011 à 15:17:08

Très sympa comme petit projet. En plus la musique donne un effet très agréable. (d'ailleurs, tu les as trouvées où ? )

Bonne chance pour la suite :)
SmoothIRC, le réseau IRC qu'il est bien (présentation sur OC)
21 avril 2011 à 17:28:29

Les musiques sortent du top 100 de jamendo.com
J'en ai juste retouché une : celle du combat contre un monstre, en fait j'ai du couper la première minute car la musique mettait trop de temps à commencer. Pour couper la musique j'ai utilisé mp3 direct cut
qry = 2b || !2b
29 avril 2011 à 19:19:15

Bonjour, juste pour prévenir que je suis en train de préparer l'interface graphique. La carte principale est déssinée sur papier, ses graphiques sont en train d'être faits. Voici toutes les améliorations prévues pour Shaak :
  • Quêtes
  • Banque suivant le principe de fonctionnement demandé précédemment par leblognouveau80
  • Sous terrain caché pour une quête (sa position est dévoilée lors d'une quête)
  • Classes de personnages (pour l'instant : magicien, guerrier et archer)
  • Magasins de vente d'objets d'attaques uniques (style bombes)
  • Création de temple de compétences (pour améliorer son attaque, sa défense ou ses chances de ne pas rater d'attaques ou de coup critiques)
  • Création d'un casino
  • Carte de 8 cases x 10 cases (chaque case fait 50px²) avec certains terrains franchissables (herbe, route, pont) et d'autres non (eau, bâtiments)

Qu'en penses vous ?
qry = 2b || !2b
29 avril 2011 à 19:24:05

Et tu va la faire avec quelle bibliothèque ton interface graphique ?
SmoothIRC, le réseau IRC qu'il est bien (présentation sur OC)
29 avril 2011 à 19:50:04

Citation : tsunami33


<puce>Création d'un casino</puce>



Ca fait pas trop médiéval-fantastique ça...
29 avril 2011 à 19:59:03

Citation : Scronchh

Et tu va la faire avec quelle bibliothèque ton interface graphique ?

Avec la SDL pour les graphiques et FMOD pour les musiques.

Citation : Lukhan

Citation : tsunami33


<puce>Création d'un casino</puce>



Ca fait pas trop médiéval-fantastique ça...


Oui c'est vrai :D mais bon c'est plus amusant avec et puis j'adapterai les jeux du casino au besoin.
qry = 2b || !2b
30 avril 2011 à 3:18:20

je télécharge et je te dis ce que j'en pense.
Mais ça a l'air bien fait !
30 avril 2011 à 13:40:55

Citation : ch@rle$B

je télécharge et je te dis ce que j'en pense.
Mais ça a l'air bien fait !


Pour l'instant tu va être un peu déçu je pense vu que tout est encore en console :D
qry = 2b || !2b
30 avril 2011 à 13:42:35

Mais ça n'en reste pas moins très réussi ;)
SmoothIRC, le réseau IRC qu'il est bien (présentation sur OC)
30 avril 2011 à 17:27:40

Voici les premières images et la carte du jeu en avant première.
EDIT : sismic va faire le reste des graphiques.
qry = 2b || !2b
30 avril 2011 à 17:29:32

Cela va très vite changer c'est pas définitif
1 mai 2011 à 8:03:48

(désolé pour le retard)
C'est très bien fait même si c'est en console, musique bien choisie, menu bien fait.
Par contre les combats un peu trop répétitifs je trouve (enfin ce n'est que le début, je pense que sa va être amélioré)
5 mai 2011 à 18:53:22

on attend la version 2.0 !!!
Supergun - Un 2 Players Arena . Live coding sur twitch.tv/Uriopass
6 mai 2011 à 1:06:02

elle arrive ! Je viens de résoudre un problème monumental d'écriture de texte en fenêtre (eh oui la SDL ne va pas à la ligne, même si on met un \n. Effarent non ?)
qry = 2b || !2b
6 mai 2011 à 2:20:45

Je n'ai jamais vu un jeu où les musiques étaient si bien choisies !!

Très bon choix, notamment pour Ehma et Obsidian shell ;-)
6 mai 2011 à 16:52:12

Merci beaucoup ! En fait j'avais enregistré vraiment beaucoup de chansons au début. Une bonne vingtaine si vous voulez savoir. Et encore j'avais pris cette vingtaine sur à peu près 200 chansons. Après j'ai refait un tri sélectif et j'ai gardé celles là. Il n'y en a qu'une que j'ai modifié, c'est celle du combat. J'ai coupé juste une minute et demi au début parce que la musique mettait du temps à commencer.
qry = 2b || !2b
6 mai 2011 à 19:18:58

Citation : tsunami33

Un jeu de rôle comme vous n'en avez jamais vu !



Sûr, et encore plus pour les aveugles de naissance. :-°
6 mai 2011 à 19:24:35

Citation : Sbirematqui

Citation : tsunami33

Un jeu de rôle comme vous n'en avez jamais vu !



Sûr, et encore plus pour les aveugles de naissance. :-°



:lol::lol::lol:
qry = 2b || !2b

[Programme] Shaak

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
  • Editeur
  • Markdown