New game

Bonjour,

je viens de commencer la construction de mon premier jeu. Le but du jeu sera de parcourir un donjon pour aller récupérer une épée tous en haut de ce donjon. Les combats se derouleront sous le principe de Port-monstre-trésors sauf qu’il n’y aura trés peu de trésors à découvrir. Les monstres seront : les Trolls, les Gobelins, les Orks, les Mages… Les combats seront gérés au tour par tour. Le joueur ne pourra changer d’armes mais il pourra le faire évolué. Le projet avance !

très bien, poste nous le jeu en développement dès que tu penses que cela peut être intéressant à tester !

ok, mais pour le moent j’en ai un peu marre et j’ai arrete d’ecrire mon jeu. Mais je reprend le travail à la fin des vacances.

Est-ce que le langage C est reconnu par des interpréteur ?

non, cela ne fonctionne pas comme cela. Si tu veux utiliser un interpréteur existant, tu dois écrire dans le langage reconnu par cet interpréteur, qui ne pourra pas être du pur C. (même si parfois cela peut y ressembler sans doute un peu…)
En écrivant un jeu en C, on s’attend à ce que tu produises à la fois l’aventure en question, et l’interpréteur qui va avec, et qui reconnaîtra les commandes tapées par le joueur.

ok, mais pour l’interpréteur c’est bein trp du de l’écrire, je suis débutant, mais je suis sur que ca existe des interpréteurs pour langage C, faut chercher sur le net.

je ne comprends pas trop ce que tu veux faire.

Si c’est un système de jeu d’aventure, en ce cas tu devras écrire toi-même l’interpréteur.

Si c’est un système de stockage de données pour un jeu d’aventure (c’est à dire les lieux, les monstres etc), tu peux t’inspirer d’un code existant.

Si c’est juste pour faire un jeu, comme on a déjà dit il existe déjà des systèmes existants.

On ne veut pas te pousser à choisir telle ou telle autre solution, par contre s’il est possible de coder tout un jeu en C en ne séparant pas le jeu du moteur de jeu, c’est un peu dommage car pour faire un second jeu il faudra tout réécrire.

C’est sans doute pour cela que tu parles d’un interpréteur, mais en ce cas je ne vois pas trop l’intérêt de faire les déclarations de l’univers du jeu en C en utilisant un moteur que tu n’aurais pas écrit toi-même. Par exemple pour le système Livrant ( gfamad.chez-alice.fr/ ) l’auteur a fait un moteur (=interpréteur) en java capable de lire une aventure écrite en langage simplifié. Idem pour Quest, le code de l’aventure est simple, et l’interpréteur l’interprète au fur et à mesure. Il existe une implémentation en C de cet interpréteur, que tu peux consulter ici :
ifarchive.org/if-archive/programming/quest/ (c’est Geas)

Enfin, si tu veux « juste écrire un jeu », et te baser sur quelque chose d’existant, tu peux contacter l’auteur des jeux qui se trouvent ici :
ifarchive.heanet.ie/if-archive/games/pc/french/
(note : je pensais que cela a été écrit en C, mais je me souviens maintenant que l’auteur m’avait dit que c’était en qbasic…)

Si tu programmes en C tu n’as pas besoin d’un interpréteur qui n’a de sens que si tu utilises Inform.

Un interpréteur est une machine virtuelle (comme la Java Virtual Machine) qui permet au programme de fonctionner sur plusieurs plateformes (Windows, Mac, …) sans avoir à être recompilé, or un programme en C doit être compilé pour chaque nouvelle plateforme.

Il ne faut pas non plus confondre l’analyseur syntaxique avec l’interpréteur. L’interpréteur de Z-code utilisé par Inform ne contient pas l’analyseur syntaxique. Autant un interpréteur est compliqué et facultatif, autant un analyseur syntaxique est simple et obligatoire.

L’intérêt de programmer ton jeu sans utiliser un système spécialisé comme Inform est de tout maîtriser (ce n’est pas difficile dans un jeu d’aventure simple), à condition d’écrire le jeu le plus simplement possible. Si tu sépares le code des données ça risque d’être difficile pour une première tentative.

Ceci dit le C n’est pas le langage le plus simple pour manier des chaînes de caractères. Inform non plus d’ailleurs, mais cette partie est déjà gérée par le système. Basic, Python les manient sans difficulté.

Mais ça dépend du type de jeu que tu souhaites réaliser. Si tu prévois beaucoup de combats, les Roguelike t’intéresseront (comme Nethack) et là le langage le plus utilisé est traditionnellement le langage C, et les sources sont disponibles. (Edit: mais même pour un roguelike j’utiliserais Python + probablement Pygame)

je veux construire un nouveau jeu, mais je veut savoir quelle interpréteur
comme ce que vous utulisez sur le site pour jouer à des jeux en ligne, reconnait le langage C.

Tu veux dire, comment faire fonctionner un programme écrit en C dans un navigateur Web, comme dans cette page : ifiction.free.fr/index.php?id=je … back=white ?

oui!

Je n’en connais pas mais ça existe peut-être. Je vais jeter un coup d’oeil sur le Net.

Voici deux discussion sur ce sujet :

clubic.com/forum/java-execut … 12364.html
developpez.net/forums/archiv … 18911.html

En résumé ça a l’air très compliqué. (A moins d’écrire directement en Java. Ce n’est pas très éloigné du C, c’est même pratiquement une évolution de C en passant par C++.)

Par exemple (et encore, si j’ai bien compris, car c’est très vite une usine à gaz) JNI permet d’exécuter du C depuis Java, mais il faut auparavant que l’utilisateur installe ton programme sur son ordinateur, donc aucun intérêt.

L’idéal serait un compilateur C qui génère du Java compilé, ou bien un compilateur C qui génère du code qui permet de fonctionner dans un navigateur Web.

Bref c’est très compliqué, tout ça. En plus, je ne sais pas ce qu’en pensent les autres, mais cette possibilité n’a pas un intérêt gigantesque’ pour ce style de jeu, parce qu’en général il est impossible de sauvegarder une partie. Ce style d’applet est juste un petit bonus pour montrer à quelqu’un qui ne peut pas installer le programme (par exemple le possesseur d’un Mac) à quoi ressemble le programme, mais pas vraiment pour y jouer pour de bon !

En résumé, c’est très compliqué et d’un intérêt limité pour un jeu d’aventure.

Mais si tu veux un jeu multijoueur à base de navigateur web, là c’est plutôt PHP et MySQL qu’il te faut.

Dans ce cas je fais un jeu dédié pour Mac OS X 10.4 PowerPC G5.

si tu utilises un système qui n’est pas très répandu comme le mac (que j’utilise également d’ailleurs), essaye quand même de faire en sorte que que ton code compile sur les autres systèmes existants (windows, linux).

Sinon je pense également que si le but est que cela tourne dans un navigateur web, il faudrait plutôt se pencher du côté de php ou java que le C seul.

Effectivement c’est bien l’ennui avec le C : ton programme doit être recompilé sur chaque plateforme.

A la limite, tu peux peut-être compiler un exécutable compatible DOS, en utilisant un émulateur Windows sur ta machine avec un compilateur comme DJGPP, ou même en choisissant la plateforme cible depuis ton compilateur. Comme ton programme ne devrait pas trop utiliser de fonctions propres à une plateforme donnée (juste lire et imprimer des lignes de texte) ça marchera peut-être. C’est là que l’intérêt de Glk ( eblong.com/zarf/glk/ ), bibliothèque pour C, apparaît : « An I/O library used to make interpreters [et les jeux] more portable ». (ça te semble jouable, Otto, d’utiliser un émulateur ?) En tout cas ça complique, c’est sûr. Mais c’est bien l’inconvénient du C.

Sinon, Java ressemble beaucoup au C tout en étant portable. Et Python est beaucoup plus simple et tout aussi portable, avec une syntaxe très agréable (y compris en venant du C).

Bon courage !

oui, dosbox fonctionne très bien sur la plupart des plateformes à ma connaissance. Mais c’est vrai que java ou python me semblent un poil plus adaptés pour ce genre de chose (pas besoin de se préoccuper des bibliothèques dédiées à chaque plateforme), mais je ne veux peut être pas étourdir notre camarade avec toutes ces suggestions :wink:

pour la compilation sur chaque plateforme, j’ai trouvé la solution, chez moi j’ai deux PC et un Mac! Comme ca j’ai juste a enregistrer le code sur petite disquette CD et a aller le compiler d’ordi en ordi.

mais ce n’est pas forcément aussi simple que cela : certaines bibliothèques C, en particulier pour les opérations basiques de gestion d’entrée / sortie sont spécifiques à Mac, et pas forcément compatible Windows ou Linux, et vice versa. Je pense par exemple sous windows à des bibliothèques genre conio.h, qui ont un équivalent sous unix (macosx ou linux) mais sous un autre nom et dont les appels sont différents (je pense que c’est ncurses qui gère cela)

c’est également pour éviter ce genre de problème que l’on avait conseillé de regarder du côté de GLK qui est un standard multiplateforme pour la gestion des entrées-sorties des jeux d’aventures :
eblong.com/zarf/glk/

en plus sur cette page tu as je crois des exemples et de petits jeux faits avec. Divers systèmes existants, et différents les uns des autres, l’utilisent (par exemple inform, tads ainsi que geas pour quest).

Enfin, si tu veux faire à terme un jeu qui s’exécute autrement que dans une console noire, tu peux ensuite inclure l’aventure dans une fenêtre graphique, avec des décorations autour par exemple, c’est possible avec glk.