Réaliser un RPG en C avec SDL et FMOD

Ce forum stocke les fichiers téléchargeables. Consultez le réglement du forum pour plus d'informations.

Modérateur: Comtois

Réaliser un RPG en C avec SDL et FMOD

Messagepar MrCool » 04 Juil 2005, 20:07

Je réunis ici tous les fichiers nécessaires au fonctionnement du RPG construit pas à pas avec l'article Réaliser un RPG en C avec SDL et FMOD disponible sur le wiki.

  • mediapack: contient toutes les ressources (images, son, musique, structure du projet) nécessaire au fonctionnement du programme.
Fichiers joints
mediapack.zip
(924.55 Kio) Téléchargé 3171 fois
Avatar de l’utilisateur
MrCool
Hello World, I'm new !
 
Messages: 1924
Inscription: 13 Mar 2005, 00:57
Localisation: Rouen / Paris

démo n°1: afficher une carte

Messagepar MrCool » 05 Juil 2005, 14:19

Cette démo illustre l'étape n°3 sur la conception d'un système de cartes (lire l'article)

L'archive contient l'exécutable mais SDL.dll et fmod.dll doivent être présent pour que le programme fonctionne (à télécharger ici et ici).

Comment l'utiliser?

  • Utilisez les flèches pour vous déplacer sur la carte.
  • "échap" pour quitter le programme
  • "f1" pour réaliser une impression d'écran


Après avoir lancé le programme, la carte générée sera automatiquement sauvegardée dans le répertoires "maps". Vous pouvez recompiler le programme pur tester la fonction "LoadMap" qui permettra de charger la carte.

Dans main.c:

Remplacer:
Code: Tout sélectionner
RandomizeMap(&map,100,100,"tiles\\mchip0.bmp");
SaveMap(&map, "map\\save.map", "musique\\Opening1.mid", "tiles\\mchip0.bmp");

Par:
Code: Tout sélectionner
LoadMap(&map, "map\\save.map");


Image
Fichiers joints
demo1.zip
(206.5 Kio) Téléchargé 2606 fois
Avatar de l’utilisateur
MrCool
Hello World, I'm new !
 
Messages: 1924
Inscription: 13 Mar 2005, 00:57
Localisation: Rouen / Paris

démo n°2: l'éditeur de carte

Messagepar MrCool » 09 Juil 2005, 14:25

Un éditeur de carte simple pour générer rapidement des cartes pour le projet. Cette démo illustre l'étape n°4.

Utilisation
  • l: chargement
  • s: sauvegarde
  • f: remplissage avec la tuile sélectionnée
  • flèches: défilement de la carte
  • page haut/page bas: défilement de la bibliothèque de tuiles (zone gauche)


Clic gauche pour sélectionner une tuile et changer la tuile sur la carte, clic droit pour changer la caractéristique du tile (tile traversable/non-traversable).

Le chargement et la sauvegarde des cartes se font systématiquement dans le fichier map\save.map. Comme indiqué dans l'article, il est nécessaire de recompiler l'éditeur pour changer le chipset, la musique ou bien la taille de la carte.

Avertissement

Vous devez posséder les deux dlls suivantes pour que la démo fonctionne: sdl.dll et fmod.dll.

Version linux

Une version pour linux est disponible. Merci à Mister K.

Un problème subsiste, je n’ai pas trouvé les bonnes options avec Anjuta pour que le programme s’installe correctement avec "make install" (il n’arrive pas à créer les répertoires tiles, map et musique) donc arrêtez vous au "make" et aller dans le répoire /src pour trouver l’éxécutable.

L'archive sur pinguinaute.org

Image
Fichiers joints
rpg2d_éditeur_de_cartes_linux_anjuta.zip
(514.52 Kio) Téléchargé 801 fois
rpg2d éditeur de cartes.zip
(119.63 Kio) Téléchargé 1976 fois
Avatar de l’utilisateur
MrCool
Hello World, I'm new !
 
Messages: 1924
Inscription: 13 Mar 2005, 00:57
Localisation: Rouen / Paris

Démo n°3: les sprites et les collisions

Messagepar MrCool » 13 Juil 2005, 16:53

Cette démo illustre la gestion des sprites et des collisions de expliqués dans l'étape n°4.

L'archive contient l'exécutable mais SDL.dll et fmod.dll doivent être présent pour que le programme fonctionne.

Comment utiliser la démo?

  • Utilisez les flèches directionnelles pour déplacer le héro
  • "f1" pour réaliser une capture d'écran
  • "échap" pour quitter


Modification du programme

Dans la fonction "main()", le code pour que la carte soit chargée à partir de fichiers est le suivant:

Code: Tout sélectionner
InitSprite(&libsprite);
LoadSprite(&libsprite,"map\\01.sprite");
LoadMap(&map, "map\\01.map");
SDL_EnableKeyRepeat(10,10);


Vous pouvez également générer une carte totalement aléatoire en remplaçant le code par celui-ci:

Code: Tout sélectionner
InitSprite(&libsprite);
SpriteStaticData(&libsprite);
SaveSprite(&libsprite,"sprites\\player.bmp","map\\01.sprite");

RandomizeMap(&map,100,100,"tiles\\mchip0.bmp");
SaveMap(&map, "map\\save.map", "musique\\Opening1.mid", "tiles\\mchip0.bmp");

SDL_EnableKeyRepeat(10,10);


Image
Fichiers joints
rpg2d_sprites.zip
(251.6 Kio) Téléchargé 2010 fois
Avatar de l’utilisateur
MrCool
Hello World, I'm new !
 
Messages: 1924
Inscription: 13 Mar 2005, 00:57
Localisation: Rouen / Paris

Messagepar MrCool » 20 Juil 2005, 16:31

Cette démo illustre la gestion des événements et des PNJ illustrés dans l'étape N°6.

Comment utiliser la démo?

Le principe est le même que précédemment.

La touche espace permet de déclencher certains événements (dialogue, téléportation ou autre).

Easter eggs

Si vous lisez l'article, que vous étudiez le code source ou bien avec un peu de chance... vous pourrez:
  • lire le magnifique test de dialogue dans le fichier "stdout.txt" (il sera créé si l'événement se déclenche)
  • être téléporté à un autre endroit de la carte principale
  • ou découvrir... *tindindin* la carte secrète... :D


Modification du programme

Comme précédemment, les fichiers events sont générés par le programme.
Puis la fonction main est modifiée pour charger le fichier généré (ici "01.event" et accessoirement "empty.event").

Comme précédemment, vous pouvez intervertir les lignes commentées et les autres afin de pouvoir faire générer les fichiers au lieu de les charger à partir de votre disque dur.

Code: Tout sélectionner
LoadSprite(&libsprite,"map\\01.sprite");
/*
InitSprite(&libsprite);
SpriteStaticData(&libsprite);
SaveSprite(&libsprite,"sprites\\player.bmp","map\\01.sprite");
*/


LoadMap(&map, "map\\01.map");
/*
RandomizeMap(&map,100,100,"tiles\\mchip0.bmp");
SaveMap(&map, "map\\save.map", "musique\\Opening1.mid", "tiles\\mchip0.bmp");
*/


LoadEvent(&libevent,&map,&libsprite,"map\\01.event");
/*
InitLibEvent(&libevent,&map,&libsprite);
EventStaticData(&libevent,&map,&libsprite);
SaveEvent(&libevent,&map,&libsprite,"son\\tornade.wav","map\\01.event");
*/


SDL.dll et fmod.dll sont nécessaires pour que cette démo fonctionne.

Image

Mise à jour:
28/07/2005: correction d'un bug (segfault lors du changement de carte) et amélioration de la fonction chargeant et sauvegardeant les événements.
Fichiers joints
rpg2d_events.zip
(433.67 Kio) Téléchargé 1420 fois
Avatar de l’utilisateur
MrCool
Hello World, I'm new !
 
Messages: 1924
Inscription: 13 Mar 2005, 00:57
Localisation: Rouen / Paris

démo n°5: interface, inventaire et boutiques

Messagepar MrCool » 28 Juil 2005, 11:58

Toujours selon le même principe, voici la cinquième démo associée à la série d'articles Réaliser un rpg avec SDL et FMOD et plus particulièrement l'étape n°7


Attention, la DLL SDL_ttf.dll est nécessaire en plus des précédentes pour faire tourner cette démo.

Toutes les DLLs nécessaires sont réunies dans le pack ci-dessous.


RPG 2D: Generator

Un outil de développement supplémentaire est également présent dans cette démo: le générateur de fichiers .map, .sprite et .event.
Il s'agit d'un petit outil à recompiler qui permet de générer les niveaux que vous souhaitez très facilement.


Version linux

Une version pour linux est disponible. Merci à Mister K.

Un problème subsiste, je n’ai pas trouvé les bonnes options avec Anjuta pour que le programme s’installe correctement avec "make install" (il n’arrive pas à créer les répertoires tiles, map et musique) donc arrêtez vous au "make" et aller dans le répoire /src pour trouver l’éxécutable.

L'archive sur pinguinaute.org



Image
Image
Fichiers joints
rpg2d_gui_linux_anjuta.zip
(1008.04 Kio) Téléchargé 632 fois
rpg2d_gui.zip
(793.41 Kio) Téléchargé 1299 fois
Avatar de l’utilisateur
MrCool
Hello World, I'm new !
 
Messages: 1924
Inscription: 13 Mar 2005, 00:57
Localisation: Rouen / Paris

Pack DLL

Messagepar MrCool » 28 Juil 2005, 11:59

Pour ceux qui auraient des problèmes de compatibilité entre DLL et pour les autres... voici le pack de DLL.

Il contient:
  • fmod.dll
  • SDL.dll
  • SDL_ttf.dll


A décompresser dans le même répertoire que les démo afin de les faire fonctionner.
Fichiers joints
pack dll.zip
(416.42 Kio) Téléchargé 749 fois
Avatar de l’utilisateur
MrCool
Hello World, I'm new !
 
Messages: 1924
Inscription: 13 Mar 2005, 00:57
Localisation: Rouen / Paris

démo n°6: les combats tour par tour, fondus enchaînés et coffres.

Messagepar MrCool » 14 Aoû 2005, 01:56

Dans cette sixième démo, l'accent est mis sur les combats. Il s'agit d'un système très simple où qui ne gère que deux combattants.

Ce système sommaire permet malgré tout d'implémenter les combats de A à Z en un seul article.

Lire l'article associé

L'ensemble des médias, dlls et exécutable sont inclus à l'archive.

Nouveautés

Parmi les nouveautés, il y a évidemment les combats! Dans la carte principale, vous avez une chance sur 100 de tomber sur un fantôme (monstre moyennement fort). Dans la carte au Nord, vous avez une chance sur 100 de tomber sur un dragon (très très fort!).

Dans la carte à gauche, il n'y a pas de monstres ni à l'intérieur des maisons.

Dans la maison au Nord, vous pouvez ouvrir un coffre. Différents PNJ sont égalements disposés un peu partout.

Image
Image
Fichiers joints
rpg2d_combats.zip
(3.96 Mio) Téléchargé 3567 fois
Avatar de l’utilisateur
MrCool
Hello World, I'm new !
 
Messages: 1924
Inscription: 13 Mar 2005, 00:57
Localisation: Rouen / Paris


Retourner vers Forum stockage

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

cron