Voir la version complète : [NDS] Stone Age
Stone Age
ALPHA
http://hdxs.free.fr/stoneage/screenshot3.jpg
Version alpha (http://hdxs.free.fr/stoneage/StoneAge.nds) (.nds) Version alpha (http://hdxs.free.fr/stoneage/StoneAge.sc.nds) (.sc.nds) Version alpha (http://hdxs.free.fr/stoneage/StoneAge.ds.gba) (.ds.gba)
Présentation :
Stone Age est mon premier jeu réalisé sur Nintendo Dual Screen avec PAlib :wub:. Il s'agit du "portage" d'un jeu ayant été édité sur de nombreux ordinateurs (Atari, Amiga, PC...)
Galerie d'image :
http://hdxs.free.fr/stoneage/screenshot1.jpghttp://hdxs.free.fr/stoneage/screenshot2.jpghttp://hdxs.free.fr/stoneage/screenshot3.jpg
Autres informations :
Je vous invite donc sur cette page pour de plus amples informations :
Home Page (http://hdxs.free.fr/index.php?rub=stoneage)
Merci
hdxs
N64Francois
27/03/2006, 15h32
Pour un premier projet tu assures (j'ai essayé sur emulateur).
Je ne connaissais pas ce jeu, le principe est simple et ça me plait bien.
Concernant l'animation de ton dragon, rien ne t'oblige à utiliser PA_StartSpriteAnim, tu peux te créer un compteur et mettre à jour les Gfx de ton sprite avec PA_UpdateSpriteGfx
Quel est ton problème au juste ?
Ca va etre sympa cette adaptation :)
Pour l'anim de ton personnage, si effectivement tu utilises ça :
PA_StartSpriteAnim(0,0,0,0,0)
ça risque de pas bien fonctionner :D
Regarde le prototype de la fonction (chopé dans la doc en ligne de pa_lib
http://www.palib.info/Doc/PAlibDoc%20Fr/group___sprite.html#ga21 )
void PA_StartSpriteAnim (bool screen, u8 sprite, s16 firstframe, s16 lastframe, s16 speed)
Donc quand tu lui passes que des 0, tu demandes à la PAlib d'animer le sprite 0, sur l'écran 0 (celui du bas) de la frame 0 à la frame 0 (en gros de ne pas l'animer donc) avec la vitesse max. =_=
Courage pour la suite ;)
C'est sympa comme tout ^^. Bonne continuation!
Dr.Vince
27/03/2006, 16h11
ça à l'air sympa ce ptit puzzle game.
par contre pourquoi l'avoir fait sur DS et pas sur GBA ? on va se servir du stylet par la suite ? car je vois pas l'utilisation qu'on va pouvoir en faire.
en tout cas c'est super pour un début !!
le dev reprend vie petit à petit sur PA, ça fait plaisir !
et si t'as des questions, plutot que de mettre sur ton site en bas de page de te MP sur PA pour avoir de l'aide bah post directement dans ton topic, c'est fait pour ça à la base
tout d'abord merci pour vos messages ca me motivera quand je bloque dans mon code :)
FAB :
Code: PA_StartSpriteAnim(0,0,0,0,0)ça risque de pas bien fonctionner
hihi oui je sais j'ai tout mis à 0 exprès, j'aurais du mettre PA_StartSpriteAnim() :lol:
DR VINCE :
pourquoi sur DS ? bonne question, parce qu'à la base je souhaitais faire des niveaux de 2 écrans et je suis malheureusement restreint à 128 pixels donc celà m'est impossible ; ensuite oui, le stylet sera utile car dans le jeu original on peut déclencher les "cases bougeantes" à distance pour résoudre le puzzle (celà n'est pas le cas dans les 2 premiers niveaux) donc je ferais 2 versions, une DS avec stylet, et une GBA (en utilisant select pour passer en mode curseur) par exemple :)
pour mon problème d'animation je pense avoir réussi, je vous tiens au courant de la prochaine update
Update
-Le dragon est maintenant animé
-Les cases "fragiles" se brisent après votre passage
-3ème niveau créé (impossible à finir car fonctionnalité manquante)
Bodom-Child
28/03/2006, 11h27
Ton jeu est vraiment très bien en tout cas, pour quelqu'un qui, comme tu dis, "débute"!
J'espère vraiment que tu le termineras :)!
Tembargo
28/03/2006, 11h37
Bon courage, ça s'annonce prometteur !! ;)
Que de souvenirs en revoyant les images de ce fabuleux jeu...
Le truc qui me fait un peu peur, c'est les musiques (qui étaient géniales sur STE). Tu penses pouvoir les adapter sur DS ?
En tout cas, bon courage :wub:
@Totoro: aucuns problèmes ce sont des mods et j'ai pu les récupérer facilement, pour l'instant PAlib les lit correctement mais bug si on se sert de l'écran tactyle, il faudra attendre la prochaine release :)
@Bodom-Child: Oui je débute en C mais j'ai commencé à bidouiller sur Amstrad, ensuite sur Atari en GFA Basic, puis sur PC QBasic, Visual Basic... bref que du Basic :)
Génial, je ne pensais pas que c'était des simples .mod :)
Bobby Sixkilla
28/03/2006, 17h49
C'est une référence à This is Spinal Tap? :lol:
C'est une référence à This is Spinal Tap? :lol:
He he he :lol:
Update voir le premier message SVP
@Bobby j'ai rien compris à ton allusion ;) tu m'expliques
Je viens de tester, ça reste jouable :)
Mais ne serait t-il pas possible de "rotater" les niveaux à 90° et de profiter des 2 écrans? (je dis ça, mais je n'ai pas fait le calcul (d'ailleur je ne connais pas la résolution de la DS :-' )). Dans ce cas, il faudra trouver une solution pour le BG...
Rahh, la musique, j'adore ^^ (par contre, elle me semble de moins bonne qualité que sur STE... est-ce du aux HP de la DS ou au player de mod ? (ou à mes souvenirs buggants :rolleyes: ))
Un détail, mais je verrais mieux le bouton A pour sélectionner dans le menu, plutôt que le B :)
Super boulot pour un premier essai :thumb_yel
(J'arrive pas à trouver une doc sur la DS, pour savoir les trucs du style la réso des écrans, les différents modes, les tailles possibles des sprites, ect... je trouve des morceaux par-ci par-là dans les forums... mais pas une doc qui résume tout ça, ça existe?)
Salut,
Je suis débutant en C et j'utilise PAlib :wub: pour faire le "portage" du jeu Stone Age
J'aurais besoin de votre avis SVP, auparavant j'utilisais les sprites originaux du jeu en 16*16, mais cà m'obligait à revoir totalement la conception des niveaux car ceux-ci sont concus pour être de 20 cases en horizontal et 11 en vertical soit une taille globale de 320*176; si je veux respecter les niveaux je dois donc réduire mes cases en 12*12 soit 240*132, j'ai donc fait une version pour avoir votre avis sur la "lisibilité" du jeu
PS:
- Le 3ème niveau est maintenant finissable car j'ai inclu en partie l'utilisation du curseur pour déplacer des plaques bougeantes à distance, utiliser "R" pour activer/désactiver le mode curseur et "L" pour bouger la plaque que vous avez choisi
- Les cases bougeantes ont une flêche représentant les directions possibles mais elles apparaisent mal du fait de la réduction en 12*12, je vais les refaire
Je vous invite donc sur cette page pour de plus amples informations et pour télécharger la ROM :
http://hdxs.free.fr/index.php?rub=stoneage
Merci
hdxs
tourne la ds sur le cote :)
Bobby Sixkilla
29/03/2006, 18h08
@Bobby j'ai rien compris à ton allusion ;) tu m'expliques
C'était en référence au film culte "This is Spinal Tap", un vrai documentaire sur un faux groupe de rock. :) A un moment, dans le film, le groupe fait un album-concept "Stone Age", c'est assez drole... :D Regarde le film. ;)
@bobby : ah ok, j'avais cherché sur google mais j'avais pas capté :)
Bon j'ai besoin d'un coup de main :cry: :cry: :cry:
dans le jeu, il y a 7 types de cases bougeantes, 4 pour chacune des directions (haut, bas, gauche, droite) à usage unique, 2 pour l'axe horizontal à usage illimité, 2 pour l'axe vertical à usage illimité, et enfin 1 qui peut aller dans tout les directions à usage illimité
choice étant soit égal à "0" pour bouger le dragon, "1" pour bouger le curseur
code pour bouger une case de type "9" étant une plaque qui bouge exclusivement à droite et à usage unique :
if(Choice==0&&Pad.Held.Right&&Level[PlayerTileY][PlayerTileX]==9) {
while(!Collision) {
if (Level[PlayerTileY][PlayerTileX+t]!=0) {
Collision=true;
// On recule d'une tile par rapport à la tile de collision
t--;
// On change l'attribut de l'ancienne tile par 0 (vide)
Level[PlayerTileY][PlayerTileX]=0;
// On change l'attribut de la nouvelle tile par 2 (sol)
Level[PlayerTileY][PlayerTileX+t]=2;
PlayerTileX+=t;
for(p=PlayerPositionX;p<(PlayerPositionX+(t*12));p+=2) {
PA_SetSpriteXY(0,(Sprites[PlayerTileY][PlayerTileX-t]),p+2,PlayerPositionY);
PA_SetSpriteXY(0,1,p+2,PlayerPositionY);
PA_WaitForVBL();
Counter++;
}
PlayerPositionX+=t*12;
}
t++;
}
Collision=false;
}
code pour bouger une case de type "5" étant une plaque qui bouge exclusivement à gauche et à usage unique :
if(Choice==0&&Pad.Held.Left&&Level[PlayerTileY][PlayerTileX]==5) {
while(!Collision) {
if (Level[PlayerTileY][PlayerTileX-t]!=0) {
Collision=true;
// On recule d'une tile par rapport à la tile de collision
t--;
// On change l'attribut de l'ancienne tile par 0 (vide)
Level[PlayerTileY][PlayerTileX]=0;
// On change l'attribut de la nouvelle tile par 2 (sol)
Level[PlayerTileY][PlayerTileX-t]=2;
PlayerTileX-=t;
for(p=PlayerPositionX;p>(PlayerPositionX-(t*12));p-=2) {
PA_SetSpriteXY(0,(Sprites[PlayerTileY][PlayerTileX+t]),p-2,PlayerPositionY);
PA_SetSpriteXY(0,1,p-2,PlayerPositionY);
PA_WaitForVBL();
Counter++;
}
PlayerPositionX-=t*12;
}
t++;
}
Collision=false;
}
donc à partir des portions ci-dessous, j'ai fait ceci pour les cases "12" bougeant sur l'axe horizontal autant de fois que l'on veut :
if(Choice==0&&Pad.Held.Right&&Level[PlayerTileY][PlayerTileX]==12) {
while(!Collision) {
if (Level[PlayerTileY][PlayerTileX+t]!=0) {
Collision=true;
// On recule d'une tile par rapport à la tile de collision
t--;
// On change l'attribut de l'ancienne tile par 0 (vide)
Level[PlayerTileY][PlayerTileX]=0;
// On change l'attribut de la nouvelle tile par 2
Level[PlayerTileY][PlayerTileX+t]=12;
PlayerTileX+=t;
for(p=PlayerPositionX;p<(PlayerPositionX+(t*12));p+=2) {
PA_SetSpriteXY(0,(Sprites[PlayerTileY][PlayerTileX-t]),p+2,PlayerPositionY);
PA_SetSpriteXY(0,1,p+2,PlayerPositionY);
PA_WaitForVBL();
Counter++;
}
PlayerPositionX+=t*12;
}
t++;
}
t=1;
Collision=false;
}
if(Choice==0&&Pad.Held.Left&&Level[PlayerTileY][PlayerTileX]==12) {
while(!Collision) {
if (Level[PlayerTileY][PlayerTileX-t]!=0) {
Collision=true;
// On recule d'une tile par rapport à la tile de collision
t--;
// On change l'attribut de l'ancienne tile par 0 (vide)
Level[PlayerTileY][PlayerTileX]=0;
// On change l'attribut de la nouvelle tile par 12
Level[PlayerTileY][PlayerTileX-t]=12;
PlayerTileX-=t;
for(p=PlayerPositionX;p>(PlayerPositionX-(t*12));p-=2) {
PA_SetSpriteXY(0,(Sprites[PlayerTileY][PlayerTileX+t]),p-2,PlayerPositionY);
PA_SetSpriteXY(0,1,p-2,PlayerPositionY);
PA_WaitForVBL();
Counter++;
}
PlayerPositionX-=t*12;
}
t++;
}
t=1;
Collision=false;
}
j'ai beau me creuser la tête, je trouve pas d'où vient le problème :(
pour mieux comprendre "le bug" je vous invite à télécharger la dernière release du jeu ici : http://hdxs.free.fr/index.php?rub=stoneage level 2 et 4
j'espère que quelqu'un pourra m'aider, merci d'avance
hdxs
Tu as résolu ce problème?
non et pas moyen de me faire aider :cry:
Bobby Sixkilla
04/04/2006, 01h24
T'inquiète, il y a bien un programmeur qui va passer dans le coin... ^^
J'viens de poster sur le forum de PAlib en section francophone (je suis pas assez bon pour décrire le bug en anglais... en francais aussi d'ailleurs :) )
J'croise les doigts pour qu'une bonne âme me débloque et que je puisse finir ce projet :lol:
PS: si quelqu'un veut bien prendre quelques minutes de son temps, je fournis le code si celà peut faire avancer les choses
merci d'avance
Dr.Vince
07/04/2006, 18h51
rajoute des commentaires dans le bout de code qui pose problème
détail bien le bug
et envoie moi tout ça en MP, je verrais ce que je peux faire.
vBulletin® v.3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org