MSX Village forum

La Place des Développeurs The Maze of Galious remake

Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 21/08/2012 à 21h24
[ EDIT Walter : suite de la discussion extraite du sujet "Vos jeux MSX préférés" ]







Old Snake :




-Maze Of Galious - J'ai un portage PC de ce jeu en cours (oui je sais il en existe déjà un, mais le mien est moins pire :D )







Tu parles du portage de Brain Games ?



http://www.braingames.getput.com/mog/



Ils ont mis la barre assez haut (multi-plateformes, thèmes graphiques et sonores et pas de bugs).



Le pied, ça serait d'en faire un en 3D (avec caméra fixe en vue latérale, comme l'original).





[edit:ortho] Edité par Visiteur Le 21/08/2012 à 21h26
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 22/08/2012 à 02h42
@ TurboSEB Eh oui malgré les quelques ignominie commises (Green Beret, TMHT), Konami a été le seul éditeur à produire des jeux de qualité sur MSX 1. Dommage qu'ils se soient reposé sur leur notoriété pour la plateforme MSX 2.

@Venom : Oui je parle du portage de Brain Games.
Sans bug ? supprime les répertoires de thème ou remplace les par des images 24 bits et redis mois que c'est sans bug.
Limité aux image PCX 256 Couleurs. La routine de lecture du fichier PCX est à pleurer : les commentaires en français expliquent tout

fp=fopen(nombre,"rb"); //J'ouvre mon fichier
if (fp==NULL) { // en cas d'échec je retourne une image vide largeur zero et hauteur zéro qui fait tout planter au lieu de proposer une image générique.
imgWidth=0;
imgHeight=0;
image=NULL;
return 1;
} // if
// le lecture du header est a mourir de rire : on se contente de lire les octets pour avancer dans le fichier un partant du principe qu'on a un PCX 8 avec les spécifications suivantes : 10 PCX Zsoft uniquement, version 3.0 encodage RLE, 8 bits par pixels alors que la version 3 intègre le PCX 24 Bits
/* Cabecera: */
if (fgetc(fp)!=10 || fgetc(fp)!=5 || fgetc(fp)!=1) {
return false;
}
if (fgetc(fp)!=8) {
return false;
}

/* Detecta la parte superior de la ventana(inservible!). */
a=fgetc(fp);
b=fgetc(fp);
imgWidth=a+b*256;
a=fgetc(fp);
b=fgetc(fp);
imgHeight=a+b*256;


/* Ancho y imgHeight: */
a=fgetc(fp);
b=fgetc(fp);
imgWidth=a+b*256+1;
a=fgetc(fp);
b=fgetc(fp);
imgHeight=a+b*256+1;
columnas=imgWidth;
filas=imgHeight;

Programmé avec SDL qui si elle à le mérite d'être portable a été faite avec les pieds. Je ne parle même pas du code qui semble avoir été fait sur basic amstrad CPC. Je l'ai allégé de plus de 75% avant de décider de repartir de la version originale MSX
La gestion des collisions est à ch:oups (a essayer sur les plateformes mobiles, pour ceux qui aiment les bains de lave).
Je ne parle même pas de la librairie SDL sound qui si on lui balance certains formats de fichier qu'elle est censé supporter plante joyeusement lors de la phase initsound.
La génération des pattern est une horreur : le pauvre gars qui a programmé ça s'est fadé une ligne de code par element graphique :

//Ladrillos rojos://
tiles[n_tiles++]=new CTile(tiles_bmp,TILE_SIZE_X*4, 0, TILE_SIZE_X, TILE_SIZE_Y, 0);

1217 lignes de codes que j'ai réduites à :

for(i=0;i<256;i++) {
tiles[i]=new CTile(walls_bmp,16*x,16*y,16,16,tileState[i]);
x++;
if (x>=40) {x=0;y=y+1;}
} /**/

moyennant une refonte de la structure des patterns, vu que tous ne font pas la même taille et en répétant la séquence ci-dessus 4 fois.

Bref au départ je voulais juste me recompiler une version ou je puisse mettre du graphisme HD 24 bits, et du coup je suis reparti de zéro. Edité par Visiteur Le 22/08/2012 à 02h44
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 22/08/2012 à 02h57
Venom :
Le pied, ça serait d'en faire un en 3D (avec caméra fixe en vue latérale, comme l'original).


Toi t'as lu dans mes pensées :lol
   
pegase Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/11/2009 à 21h52

Messages: 974

Le 22/08/2012 à 09h38
Tiens, c'est bizarre ce langage ressemble à ce que je connais .. c’est quoi exactement ?
De plus, il aurait pu utiliser des librairies png qui sont gratuites.
Mais ça sent le programme de bidouilleur, ça : rien de dynamique et surtout du pissage de code sans trop de réflexions au préalable...

Peg'


Rétro ... mais pas trop !
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 22/08/2012 à 10h35
pegase :
Tiens, c'est bizarre ce langage ressemble à ce que je connais .. c’est quoi exactement ?

De plus, il aurait pu utiliser des librairies png qui sont gratuites.

Mais ça sent le programme de bidouilleur, ça : rien de dynamique et surtout du pissage de code sans trop de réflexions au préalable...



Peg'


Hello Pegase,

On dirait pas mais c'est du c++ :D. Tu as tout à fait raison, même dans le pire des cas il aurait pu utiliser SDL_Image, au mieux les lib png. Quand j'ai injecté ca dans visual studio, j'ai cru halluciner : variables en double, redefinitions de macro et cerise sur le gateau fonctions inutiles.

Les fichiers des salles : ça se visite.

J'ai passé une semaine à nettoyer et à factoriser le code, avant de me dire que je ferai mieux de repartir à zero et tout refaire.

J'ai un exe qui fonctionne avec resources intégrées (images, sons pièces), pour l'instant j'ai viré le système de thème qui est vraiment à chier.

Pour le reste tu as également raison c'est du pissage de code.

A mon avis ça devait être son galop d'essai. Ses autres remakes sont moins pourris. Je ne suis pas allé voir dans le code, mais de visu je dirai qu'il exploite mieux les lib SDL. Enfin il a le mérite de l'avoir fait.

Les sources sont en libre téléchargement sur le site (Le lien est sur le message de Venom).
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 22/08/2012 à 10h46
Old Snake :




Pour le reste tu as également raison c'est du pissage de code.





Moi ça me choque quand on critique de la sorte le travail des autres.

Franchement, on s'en fou de la façon dont le gars à codé son jeu. Tant que ca fait le job, et que ca fait pas planté la bécane

que ce soit codé avec des moufles et des crottes de nez j'en ai rien à cirer !

Après libre à toi de faire mieux si l'envie t'en prends...

Je sais par expérience que parfois quand ça fait ch:oups et qu'on a pas envie se prendre la tête le pissage de code à la neuneu c'est plus facile... et tant que ça marche je ne vois pas ce qu'il y a à redire.



Enfin c'est mon avis, après chacun pense ce qu'il veut. Perso quand un gars fait un truc pour le fun, et pour la communauté, je dis bravo et je vais zieuter pour voir si c'est propre dedans ! :siffle


banniere-ericb59e
Site web    
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 22/08/2012 à 10h46
Old Snake :




Sans bug ? supprime les répertoires de thème ou remplace les par des images 24 bits et redis mois que c'est sans bug.







C'est pas un bug, c'est une caractéristique.

Il faut utiliser un certain format d'image, c'est tout. Prends n'importe quel jeu du commerce et essaie de faire du modding sans respecter son format de fichier, et tu auras les mêmes problèmes.



D'autre part, «loadpcx» est une classe membre de la classe «Bitmap». Rien ne t'empêche d'agrémenter cette dernière classe d'un fallback en cas de format non supporté (en utilisant le mécanisme d'exceptions du c++).











Code :


    fp=fopen(nombre,"rb"); //J'ouvre mon fichier
    if (fp==NULL) { // en cas d'échec je retourne une image vide largeur zero et hauteur zéro qui fait tout planter au lieu de proposer une image générique.
        imgWidth=0;
        imgHeight=0;
        image=NULL;
        return 1;
    } // if 





Je ne vois pas où est le problème.

Il renvoie un nombre différent de zéro, ce qui par convention indique une erreur.

Il faut donc tester le résultat de la fonction, et interrompre le programme en indiquant le problème.

Le reste est là pour faire planter le plus rapidement possible le programme, pour ceux qui ne testeraient pas les valeurs de retour (ce qui n'est pas bien).



En cas d'erreur sur des fonctions bas niveau, il ne faut pas tenter de redresser la barre. Il faut faire planter le plus rapidement possible. Un plantage n'est pas grave si il est constant et reproductible. Ce que tu proposes (retourner une image si on ne trouve pas le fichier) est un contournement qui va poser encore d'autres problèmes et alourdir le code. Par exemple, que faire si ton image générique n'est pas trouvée ?



Mais je le répète, il laisse une chance de lancer une exception et d'utiliser une autre routine de chargement avec son code de retour. Autrement, il aurait fait ça:



Code :


  fp=fopen(nombre,"rb");
  assert (fp && "file not found);













Citation :




// le lecture du header est a mourir de rire : on se contente de lire les octets pour avancer dans le fichier un partant du principe qu'on a un PCX 8 avec les spécifications suivantes : 10 PCX Zsoft uniquement, version 3.0 encodage RLE, 8 bits par pixels alors que la version 3 intègre le PCX 24 Bits







Mêmes remarques que plus haut.



Tout ce qu'on peut lui reprocher, c'est de n'avoir pas utilisé SDL_Image.

D'ailleurs c'est étrange, parce que c'est dans les libs au link:



Code :


LDFLAGS = `sdl-config --libs` -lSDL_image -lSDL_mixer -lSDL_sound











Citation :




Programmé avec SDL qui si elle à le mérite d'être portable a été faite avec les pieds.







Faut appeller Sam pour lui proposer tes services, ou passer à la SFML qui est encore plus buggée.











Citation :




La gestion des collisions est à ch:oups (a essayer sur les plateformes mobiles, pour ceux qui aiment les bains de lave).







Je ne l'ai pas essayé sur autre chose que Linux et Windows.









Code :


La génération des pattern est une horreur : le pauvre gars qui a programmé ça s'est fadé une ligne de code par element graphique : 

//Ladrillos [url=rojos://]rojos://[/url] 
    tiles[n_tiles++]=new CTile(tiles_bmp,TILE_SIZE_X*4, 0, TILE_SIZE_X, TILE_SIZE_Y, 0);





Bizarre… peut être du code généré (bien que là, je n'en vois pas l'intêret) ?









Code :


1217 lignes de codes que j'ai réduites à : 

for(i=0;i<256;i++) {
    tiles[i]=new CTile(walls_bmp,16*x,16*y,16,16,tileState[i]);
    x++;
    if (x>=40) {x=0;y=y+1;}
    } /**/





À propos, pourquoi avoir remplacé des macro bien identifiées (TILE_SIZE) par des nombres magiques ?







Citation :




Bref au départ je voulais juste me recompiler une version ou je puisse mettre du graphisme HD 24 bits, et du coup je suis reparti de zéro.







Je comprends ta réaction, mais il eut été plus sympa de faire un commit sur le svn. Edité par Visiteur Le 22/08/2012 à 10h49
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 22/08/2012 à 10h53
Venom :
ne vois pas où est le problème.

Il renvoie un nombre différent de zéro, ce qui par convention indique une erreur.

Il faut donc tester le résultat de la fonction, et interrompre le programme en indiquant le problème.

Le reste est là pour faire planter le plus rapidement possible le programme, pour ceux qui ne testeraient pas les valeurs de retour (ce qui n'est pas bien).



En cas d'erreur sur des fonctions bas niveau, il ne faut pas tenter de redresser la barre. Il faut faire planter le plus rapidement possible. Un plantage n'est pas grave si il est constant et reproductible. Ce que tu proposes (retourner une image si on ne trouve pas le fichier) est un contournement qui va poser encore d'autres problèmes et alourdir le code. Par exemple, que faire si ton image générique n'est pas trouvée ?



Mais je le répète, il laisse une chance de lancer une exception et d'utiliser une autre routine de chargement avec son code de retour. Autrement, il aurait fait ça:


Bonjour Venom,



Dit donc t'en a fait une sacrée tartine :D

Sur le principe je suis d'accord, mais je pars du principe qu'un programme doit fonctionner dans tout les cas de figure.

Le comportement désiré est le suivant :

Je cherche mon image dans le theme utilisateur :

a: Je le trouve tout baigne

b: je ne le trouve pas -> Je cherche dans le theme par défaut (A noter qu'il a fait ça pour la musique):





Je cherche dans le theme par défaut :

a : je le trouve tout baigne

b : je ne le trouve pas -> La il faut une solution



La il faut une solution :

Ma philosopihie est de toujours intégrer une resource par défaut dans l'exécutable et de regénerer le theme par defaut.



Le choix est discutable (sur un autre sujet car là on dévie), mais c'est comme ça que je travaille. Protection de fichier, je n'ai rien inventé je me cale sur ce qui existe et qui fonctionne.







PS : J'ai modifié les variable pour générer des erreurs et voir sur quelles fonctions elles impactaient, c'est plus simple. Pourquoi un chiffre rond ? parce que ce chiffre sera la base pour les pattern, il sera remplacé par une variable unique. Edité par Visiteur Le 22/08/2012 à 10h56
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 22/08/2012 à 10h55
ericb59 :
Old Snake :




Pour le reste tu as également raison c'est du pissage de code.





Moi ça me choque quand on critique de la sorte le travail des autres.

Franchement, on s'en fou de la façon dont le gars à codé son jeu. Tant que ca fait le job, et que ca fait pas planté la bécane

que ce soit codé avec des moufles et des crottes de nez j'en ai rien à cirer !

Après libre à toi de faire mieux si l'envie t'en prends...

Je sais par expérience que parfois quand ça fait ch:oups et qu'on a pas envie se prendre la tête le pissage de code à la neuneu c'est plus facile... et tant que ça marche je ne vois pas ce qu'il y a à redire.



Enfin c'est mon avis, après chacun pense ce qu'il veut. Perso quand un gars fait un truc pour le fun, et pour la communauté, je dis bravo et je vais zieuter pour voir si c'est propre dedans ! :siffle




La critique je l'accepte également, et souvent elle est acerbe, mais comme on dit, ca fait partie jeu ma pov lucette :siffle Edité par Visiteur Le 22/08/2012 à 10h57
   
pegase Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/11/2009 à 21h52

Messages: 974

Le 22/08/2012 à 11h33
ericb59 :


Moi ça me choque quand on critique de la sorte le travail des autres.

Franchement, on s'en fou de la façon dont le gars à codé son jeu. Tant que ca fait le job, et que ca fait pas planté la bécane

que ce soit codé avec des moufles et des crottes de nez j'en ai rien à cirer !

Après libre à toi de faire mieux si l'envie t'en prends...

Je sais par expérience que parfois quand ça fait ch:oups et qu'on a pas envie se prendre la tête le pissage de code à la neuneu c'est plus facile... et tant que ça marche je ne vois pas ce qu'il y a à redire.



Enfin c'est mon avis, après chacun pense ce qu'il veut. Perso quand un gars fait un truc pour le fun, et pour la communauté, je dis bravo et je vais zieuter pour voir si c'est propre dedans ! :siffle




Ok, ça fonctionne quand tu codes pour toi, et uniquement pour toi. Le truc c'est que de mettre ses sources à dispo n'est plus dans ce contexte.

Reprendre le code de quelqu'un qui a fait ça "par-dessus la jambe" est une véritable horreur .. et je ne te parle pas de l'ajout-modification de médias (comme dans le cas présent).

Après je suis d'accord sur le principe du "ça fait son boulot"', mais franchement, si tu codes pour toi, inutile de le donner aux autres... mais ça reste mon avis perso.



Peg'


Rétro ... mais pas trop !
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5485

Le 22/08/2012 à 11h37
pegase :


Ok, ça fonctionne quand tu codes pour toi, et uniquement pour toi. Le truc c'est que de mettre ses sources à dispo n'est plus dans ce contexte.

Reprendre le code de quelqu'un qui a fait ça "par-dessus la jambe" est une véritable horreur .. et je ne te parle pas de l'ajout-modification de médias (comme dans le cas présent).

Après je suis d'accord sur le principe du "ça fait son boulot"', mais franchement, si tu codes pour toi, inutile de le donner aux autres... mais ça reste mon avis perso.



Peg'




Je suis d'accord pegase. Quand le but est de faire une source qui soit exploitable par d'autres.

Je ne pense pas que c'était le cas ici. Le gars à fait son jeu, et puis il s'est dit j'en ai rien à faire de garder les sources pour moi...

je les mes à disposition... après on prends ou pas...


banniere-ericb59e
Site web    
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 22/08/2012 à 14h17
Mieux vaut des sources male expliquée que pas de source du tout. :siffle Edité par GDX Le 22/08/2012 à 14h17
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 22/08/2012 à 14h40
GDX :
Mieux vaut des sources male expliquée que pas de source du tout. :siffle




C'est pas faux, d'ailleurs j'ai bien dit qu'il avait le mérite de l'avoir fait :siffle
   
pegase Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/11/2009 à 21h52

Messages: 974

Le 22/08/2012 à 16h23
Au final, Old Snake, tu nous refais un Maze of Galious version 24 bits ?
Tu vas améliorer quelque chose genre la résolution, les effets visuels ou autre ?

Peg'


Rétro ... mais pas trop !
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 22/08/2012 à 17h56
pegase :
Au final, Old Snake, tu nous refais un Maze of Galious version 24 bits ?

Tu vas améliorer quelque chose genre la résolution, les effets visuels ou autre ?



Peg'




Oui mais c'est pas pour tout de suite. Le but était bien sur de pouvoir mettre du graphisme qualité photo (Pour le décor j'ai la quasi totalité des textures).

J'ai refait un moteur standard sous directx11 (désolé pour les linuxiens dont je fait partie).

Donc résolution HD (1920x1080) possible, son audio 3D.

J'ai laissé le projet de côté car le nettoyage du code m'a pris trop de temps, et donc il me faut un peu de recul.

Je pense garder quelques partie du code (celles que j'ai déjà modifié).

Reste juste un élément que me manque les personnages, c'est du graphisme 3D, ça prend du temps.

Au départ je m'y suis jeté car je penser que je n'aurai que les routine de gestion d'image à refaire et donc je serai resté sur de la 2D HD, mais là ça va être un peu plus long. Donc je pense le reprendre d'ici quelques mois avec un oeil neuf.

Pour l'instant ce n'est pas une priorité. J'ai envie de refaire du MSX et Vera Cruz en langage compilé va m'occuper pour quelques semaine. Si je vois que ça prend trop de temps je mettrai la version Basic en ligne. Edité par Visiteur Le 22/08/2012 à 17h58
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie