1

bonjour,
fenix à l'air bien simpa pour commencer à programmer et je voulais avoir des info sur comment programmer en fenix sous linux et mac (mac moins..) ,
j'ai télécharger le paquet fenix dans les dépots avec tous les plugins mais noob que je suis j'arrive pas à le lancer . il n'y a pas d'interface graphique ? comment ca marche ? bref j'y connais rien et je cherche des réponse tongue

et ensuite comment faire pour que ca tourne sous gp2x ?


edit : je me suis renseigner et il me faut un IDE c'est ca ? il y a des IDE fenix sous linux ?

2

es tu passe par le site france de la communauté Fenix: http://div.france.free.fr/

3

j'ai trouver de quoi tous faire marcher sous linux maintenant j'ai plus qu'a me plonger dans le peut de doc qui existe et d'étudier les sources de quelque jeux ... et sur le site de la communauté fr il n'y a pas encore beaucoup de doc mais merci quand même tongue

4

voilà le topic approprié smile

Je te mets les petites choses que j'ai appris et compris en 2 semaines de programmation avec fenix. ( je fais un récapitulatif des liens en fin de post)
Pour l'install sur linux, c'est effectivement dans les dépots, on y trouve le compilateur et l'interpréteur mais je ne sais pas si il y a les outils pour créer les map et les fpg.
Certains font tourner ça avec wine. J'ai choisi une méthode un peu plus bourrin, j'ai installé un xp dans VirtualBox ( d'ailleurs je suis surpris de voir l'intégration dans le bureau linux avec le mode seamless).

Comme ide, il existe flamebird sous windows qui est vraiment pas mal. il offre une gestion de projet, un debugger, un compil&run en un clic de souris, il permet de visualiser les .fpg, il y a un autocomplétion des fonctions et des variables créées et il comporte une aide ( en espagnol sic) qui dépanne pas mal ( vive reverso.fr pour la tard ) Pour faciliter le fonctionnement sur windows, il suffit de faire attention à bien installer fenix dans c:/fenix. flamebird ira chercher le compilateur

Concernant la documentation, il y a le site fenixdocs qui est un wiki des fonctions ( la plupart). Sur le site des fenix packs, on trouve également pas mal de sources à télécharger pour comprendre et apprendre. Concernant la communauté française, elle vient de renaitre après une période d'inactivité. LE site est a nouveau fonctionnel depuis 15 jours, laissons lui le temps, d'autant qu'il devrait intégrer un glossaire similaire à fenixdocs.

Autre point de départ, spécial gp2x, fenixonfire. on y trouve un début de tut en anglais écrit par evil dragon mais qui s'arrete au hello world, dommage !! Et quelques sources sympas.
Sinon chercher le pack de jeu sur les archives gp2x, certains jeux sont dispos avec les sources. Ca permet aussi de voir un peu ce qu'on peut faire en fenix. essayer par exemple le jeu Bang, un jeu de tir façon western vraiment bien fichu.
Par contre attention dans ce pack, il y a pas mal de jeu ou la notion de sortie du jeu a été oublié, obligeant d'éteindre la console.

Dernière chose importante :
en plus de télécharger fenix pour windows ou linux, il faut aussi le télécharger pour gp2x. Mais il faut surtout faire correspondre les versions. Si on compile sur une version plus récente, ca ne va pas tourner sur gp2x. Le pack conseillé est ultimate fenix, qui intègre la version 0.92a. La dernière version de fenix pour windows est la 0.93 (j'ai mis un moment pour trouver pourquoi ca tournait pas sur gepette ). Il suffit donc de télécharger la 0.92a et remplacer les exe.

Voilà pour le début...

Concernant fenix :

différents fichiers dans le rep /fenix:
fxc -> le compilateur
fxi -> l'interpréteur
fpg -> pour transformer les images en fpg
toutes les dll, des lib de fonctions, on y trouve du sdl, du ogg..

les .prg sont les fichiers sources.
les .dcb sont les fichiers compilés, c'est eux qu'on envoie à fxi pour lancer le jeu.
les .fpg :
plutot que d'utiliser des images séparées, on utilise des fpg qui sont des librairies d'images. cela rend beaucoup plus simple la gestion des graphismes puisqu'il suffit de charger un fois le fpg et ensuite de demander au programme d'afficher tel ou tel image qu'il contient en l'appelant par son numéro. A cela s'ajoute la notion de point de controle, on peut sur une image définir le point de référence pour les placement, les rotations.
Sous windows, le plus simple est d'utiliser fpgedit qui fait tout ça graphiquement.

Une fois le code tapé et le jeu fonctionnel sur pc, il faut bien sur le mettre sur la gepette. l'interpréteur est assez léger, on peut donc le mettre avec chaque programme pour faciliter les choses.
la logique est donc d'avoir l'interpréteur, le .dcb, les .fpg et les sons dans un répertoire. reste plus qu'a écrire un fichier .gpe pour lancer le jeu depuis la gp2x.

Voila comment je procède : je crée un repertoire du nom du jeu, j'y copie le répertoire runtime qu'on trouve dans le pack ufenix. ce répertoire contient ufxi l'interpréteur et le mmuhack.
je place les donnés du jeu dans un autre répertoire et le dcb et .gpe à la racine du répertoire du jeu.
Soit par exemple :

/mon_jeu
-------------/runtime
-------------------->ufxi
-------------------->mmuhack
-------------/data
-------------------->mes .fpg,, mes sons.....
------>mon_jeu.dcb
------>mon_jeu.gpe

Pour le .gpe, il suffit de créer le document dans gedit ou kate par exemple. voici le code pour mon_jeu :

#!/bin/sh
cd runtime
./ufxi ../mon_jeu.dcb
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu

Ensuite on copie tout sur la gepette et on execute !!

les liens :
http://www.mediafire.com/?4ngtnwzgzdx Fenix pour windows, fpg edit, et flamebird
http://downloads.sourceforge.net/fenix/fenix092a-win32-binary.zip?modtime=1176489247&big_mirror=0 la version 0.92a pour remplacer la 0.93
http://archive.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,14,2332 ufenix pour gp2x
http://archive.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,27,1343 des jeux
http://www.fileden.com/files/2008/1/5/1681903/1_Basic.rar exemples de code simples ( afficher un sprite, le faire bouger)
http://www.fileden.com/files/2008/1/5/1681903/2_Medium.rar un peu plus avancés, exemples de fonctions, d'effets grpahiques..
http://massmirror.com/906b4630f416dc9807974fe255bb39a1.html des jeux complets commentés.

a ajouter qu'il existe un sous forum fenix sur gp32x.com, certainement un sur le gp32spain et sur booleansoup.
Et pour finir avec les liens, simplement aller faire un tour sur le site de ruckage qui fait tous ses jeux en fenix. le pacman livré avec les f200 c'est lui.http://www.muddymonkey.co.uk/

5

Bon comme j'ai le temps ce soir, voici un petite mise en route pour qui voudrait se lancer dans fenix. si ca peut servir:

tout programme commence par PROGRAM et le nom du programme:
PROGRAM mon_jeu; (c'est un point virgule smile

on déclare ensuite les variables globales, variables utilisés dans tout le programme
GLOBAL
int ma_variable_1;
int ma variable_2;
END

suit la boucle principale qui commence par BEGIN et se termine par END et dans laquelle on va placer le code.
BEGIN
tout mon code
END

On va par exemple y inclure en premier les fonctions pour créer un affichage sur la gp2X ex :
BEGIN
// initialisation de l'écran

set_mode(320,240,16);

set_fps(0,0);
END

les commentaires se place dans le code précédés de // pour des blocs plus important on peu utilisé /* mon commentaire */ comme en C
set_mode est la fonction créant l'affichage. 320,240 correspond à 320 par 240 pixels soit la résolution de la gp2X. 16 pour indiquer quon travaille avec des couleurs 16 bits.
set_fps permet de fixer le nombre de fps et le frameskip si il doit y en avoir un. par défaut, si on ne met pas la fonction, le fps est fixé à 25 frame par seconde et 0 frameskip. le mettre à 0 permet de tourner avec le framerate maximum.

Si on a créé un fichier .fpg, on peut par exemple de charger à la suite. imaginons le cas suivant, un programme qui affiche l'image d'intro de votre jeu, joue une chanson son,écrit un message à l'écran et attends que l'utilisateur appuie sur start et joue un son pour continuer . si c'est fait, on passe à l'écran de jeu.
Au préalable, on fait un fichier .fpg qui contient l'image d'intro . On va déclarer des variables pour stocker le fpg, la chanson et le son. ce n'est pas obligatoire, il existe différentes façon de procédés, notamment pour les images. pour moi c'est plus simple de procéder comme ça, surtout si on doit travailler avec beaucoup d'images et de sons.

Voici le bout de code commentés. ( a tester et vérifier, j'écris ça sans avec flamebird et fenix sous la main smile

PROGRAM mon_jeu; // jusqu'ici tout va bien

GLOBAL
int mon_fpg;
int mon_son;
int ma_chanson;
END

BEGIN
// initialisation de l'écran

set_mode(320,240,16);

set_fps(30,0);
mon_fpg=load_fpg("chemin/vers/mon/fichier/mon_fpg.fpg"); // on charge le fichier fpg en mémoire avec la fonction load_fpg
mon_son=load_wav("chemin/vers/mon/son/mon_son.wav"): // on charge le son avec load_wav
ma_chanson=load_song("chemin/vers/ma/chanson/ma_chanson.ogg); // on charge la chanson avec load_song, le fichicer est donc en .ogg

put_screen(mon_fpg,1); // on affiche en fond d'écran l'image n° 1 de notre fichier fpg
play_song(ma_chanson,-1); // on joue la chanson chargée et stockée dans la variable ma chanson. l

// le chiffre correspond au nombre de répétition, 0 pour une fois, 1 pour la jouer 2 fois...... et -1 pour la jouer en boucle

write(0,160,150,1,"Press Start"); // write permet d'écrire à l'écran, 0 c'est l'id du texte, 160, 150 les coordonnées x et y, 1 l'alignement du texte et "Press Start" le texte à afficher

frame; // très important, frame; demande au programme d'afficher à l'écran ce qui vient d'etre préparé. si on l'avais oublié, on aurai entendu le son mais pas vu l'image.

// si on lance le prorgamme maintenant, on va se rendre compte que le son ets joué l'image affiché et que le programme s'arrete, on va donc créer une boucle avec deux actions
// si on appuie sur start, on sort de la boucle et on poursuit le programme
// si on appuie select on quitte le programme. ( et ca c'est super important !!!! )

// il existe comme dans tout langage plusieurs type de boucle. ici on va utilisé une simple loop car on n'a pas de conditions d'execution particulière donc :

LOOP
IF (key(_enter)) // si on appuie sur start... ( _enter correspond au start de la console)
play_wav(mon_son,0); // ... on joue le son une fois et ......
break; // .... on sort de la boucle. break permet de sortir de la boucle et donc d'exécuter la suite du programme.
END
IF (key(_space))
exit;
END
frame; je rajoute un frame ici, dans le cas ou par exemple à l'interieur de la boucle on avait demandé au programme d'effectuer des actions sur les graphismes genre sprites sui bougent, texte qui clignote.
END // fin de la boucle

// si on a appuyé sur start on se retrouve donc ici mais l'écran contient toujours des informations. on peut nettoyer le tout en utilisant clear_screen()
// c'est pas forcemment utile car il y a de grandes chances qu'on demande maintenant au programme d'afficher une autre image en fond. placée par exemple dans un autre fichier fpg
// je préfère bien séparé les fpg pour les raisons qui vont suivre..
// si tel est le cas il faudra néanmoins effacer le texte sinon il restera affiché soit :

delete_texte(0); // on efface le texte dont l'id est 0

// la gp2x étant limité en mémoire, prenez l'habitude de décharger de celle-ci ce qui ne sert plus ( d'ou la multiplication des fichiers fpg ) c'est pas utile pour un petit jeu mais on sait jamais smile

unload_song(ma_chanson); // décharge la chanson et l'arrete par la même occasion,
unload_fpg(mon_fpg); // même chose pour le fpg

// on poursuit ensuite le programme, par exemple en chargeant un nouveau fpg et en affichant une image.. en lancant un process...

END // super important, il indique la fin du programme.

voili voilou soit le code suivant sans les comentaires :

PROGRAM mon_jeu;
GLOBAL
int mon_fpg;
int mon_son;
int ma_chanson;
END

BEGIN
set_mode(320,240,16);
set_fps(30,0);
mon_fpg=load_fpg("chemin/vers/mon/fichier/mon_fpg.fpg");
mon_son=load_wav("chemin/vers/mon/son/mon_son.wav"):
ma_chanson=load_song("chemin/vers/ma/chanson/ma_chanson.ogg);

put_screen(mon_fpg,1);
play_song(ma_chanson,-1);
write(0,160,150,1,"Press Start");
frame;

LOOP
IF (key(_enter))
play_wav(mon_son,0);
break;
END
IF (key(_space))
exit;
END
frame;
END

delete_texte(0);
unload_song(ma_chanson);
unload_fpg(mon_fpg);

END

voilà, en espérant que cela puisse donner envie de s'essayer un peu à fenix. c'est super accessible même pour les non programmeurs
Bon là évidement il n'y a pas grand chose, des que je trouve le temps je complèterai un peu en parlant des process. un process est un ensemble d'action qu'on appelle dans notre programme. ils sont crées dans le fichier prg mais hors de la boucle principale. on peut par exemple créer un process pour l'affichage et le déplacement du héros de notre jeu et un autre pour afficher les ennemis.

Bon code à tous !!


EDIT : le code est normalement indenté mais ça passe pas sad

6

cool merci ca à répondu à beaucoup de mes questions merci beaucoup , et si la communauté fr c'est re formé il y a 15 jours j'ai bien choisis le moment pour apprendre fenixtongue

par contre ca me fait un peut chier d'installer windows pour programmer (un peut le monde à l'envers la nan ? triso )

j'ai réussi a coder pong ! c'est pas un grand exploit mais bon tongue

bon quelque question , dans ... eu par exemple n'importe quel zelda 2D , il y a une grande map avec des maison des arbre etc etc ... comment on peut faire pareil avec fenix ? il faut ce crée son propre éditeur de map ? ou je sais pas... j'ai surement pas encore le niveau de faire des jeux comme ca mais c'est juste pour me renseigner tongue
sinon encore merci , bon je retourne à mes expérience et j'essaye de faire faire tirer des balles à ce pàç!è§ de vaisseau

7

héhé, plusieurs possibilités pour ce genre de chose. ll doit probablement même déjà exister des éditeurs de carte ou des moteur rpg en fenix. Sinon je vois plusieurs façons..

pour un game play genre dofus ou on passe de carte en carte et une façon un peu bourrin, tu peux mettre en fond une grosse image et définir des zones de collisions. ou mettre en fond le terrain et placer des sprites de batiments ou autres sur celui ci. ca permet de faire des trucs super détaillés mais c'est pas forcement pratique.
en extrapolant tu peux employer un scrolling pour te déplacer sur une carte plus grande que l'écran.

sinon pour un moteur type zelda, je pense que le mieux est d'utiliser un tableau. tu crées des sprites carrés pour tout, quitte a devoir en placer les un a cotés des autres pour former un batiment ou autre. par exemple, un sprite carré d'herbe, un sprite chemin, un sprite bordure de chemin droite, un bordure de chemin gauche...
prenons par exemple des sprites de 64 pixels de coté. pour remplir l'écran de la gp2x qui fait 320 pixels il faut donc 5 sprites de long et 3 de haut ( on laisse le bas pour afficher les pdv, l'inventaire...

on va donc créer un tableau de 5 x 3 pour placer les sprites. dans un fpg, on aura ceci :
001 -> herbe
002 -> chemin
003 -> bordure droite
004 -> bordure gauche.

pour une carte de la dimension de l'écran qui est une prairie traversé d'un chemin,on crée don un tableau qui donnerai
[1,3,2,4,1]
[1,3,2,4,1]
[1,3,2,4,1]

on demande ensuite au programme de lire ce tableau et d'afficher les sprites correspondant.

pour une carte beaucoup plus grande on fait un plus grand tableau et on affiche les 15 sprites remplissant l'écran en fonction de la position du perso sur la carte et donc dans le tableau.

voilà,