GAMOPAT
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

WIP Jeu de plateforme MD

+13
ichigobankai
NassimO
TotOOntHeMooN
vincent2105
Tryphon
lincruste
philip
fourchette
F.L
Stef
Monos
ShiningBZH
Kivutar
17 participants

Page 3 sur 4 Précédent  1, 2, 3, 4  Suivant

Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Invité Mar 1 Aoû 2017 - 12:02

Ah c'est ce truc là Kaot  ?!
Même pas remarqué ! Very Happy

Moi ça ne me gène pas du tout.
Après, ça n'a rien à voir avec SPR_update() effectivement, mais les dernières mises à jour du SgdK de Stef avec la gestion Yorder.
Faire une compilation avec une version antécédente, la 1.2 par exemple et voir ce que cela donne.
Si c'est OK, faire un report à STEF et attendre ! Wink

Invité
Invité


Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Tryphon Mar 1 Aoû 2017 - 12:11

Oui, c'est un bug qui n'influe pas sur le gameplay et qui est visuellement quasi-imperceptible. Mais connaissant le souci de perfectionnisme de Stef, je suis sûr qu'il jettera un œil au problème Very Happy
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Invité Mar 1 Aoû 2017 - 12:19

Certainement Tryphon ! Wink
Faut juste faire un test de compilation avec la 1.2 et constatez si tout est OK !
Avec mon Wifi des Alpes, c'est pas la peine d'y compter !  Razz
avatar
Invité
Invité


Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par philip Mar 1 Aoû 2017 - 14:48

Tryphon a écrit:
philip a écrit:Voilà, c'est son positionnement du SPR_update()

Je pense pas, ça le fait sur le sample sprite de Stef et le update() est bien placé.

(mais l'OP a posté son code quelque part ? Je le vois pas...)
Non, il ne l'a pas posté. J'ai regardé la vidéo posté par kaot, et effectivement, les soldats à terre subissent un décalage lors du défilement vertical du décors... La démo sprite de sgdk, je ne vois pas ce phénomène mais j'ai les yeux qui fatigue. J'ai testé sur émulateur le jeu de PF de Kivutar, et les sprites ennemis jouent effectivement du moonwalk, surtout quand on fait du va et vient, cela saute aux yeux. 

Je n'ai jamais rencontré ce problème. Pour en avoir le coeur net, j'ai retrouvé le vieux sgdk 0.90 avec lequel j'ai fait un concept de toki, j'ai désactivé les déplacements des ennemis du jeu, et en faisant des va et vient tout reste bien impeccable... Donc pour moi, le problème ne vient pas de sgdk, du moins jusqu'à la version 1.21
philip
philip
Docteur *
Docteur *

Masculin Nombre de messages : 2079
Age : 53
Localisation : 31350
Date d'inscription : 10/04/2011

http://philip-md.blogspot.fr/

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Tryphon Mar 1 Aoû 2017 - 16:18

Si, ça le fait sur le sprite sample, mais c'est beaucoup moins marqué. Du coup il est possible qu'il y ait autre chose en plus de ce problème. Mais y'a clairement quelque chose de bizarre...
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Stef Mer 2 Aoû 2017 - 9:50

Je regarderai tout ça au retour de mes vacances car c'est louche.
Je pense que le SPR_update() se termine trop tard parfois (après le vblank) d'où le soucis de décalage.

Théoriquement il faut faire dans ce sens pour éviter tout problème de synchro entre sprites et plan :

// met à jour la map sans modifier le scroll hard en lui meme
MAP_update();
SPR_update();

VDP_waitVSync();

// met à jour le scroll hardware
Scroll_update();

A note que le scroll hardware peut être mis à jour dans la routine du vint s'il y en a une mais il faut etre sur que le SPR_update sot termine à ce moment là (avec un flag ou autre).
Je corrigerai l'exemple "sprite" si besoin :)
Stef
Stef
Interne
Interne

Masculin Nombre de messages : 5082
Age : 44
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par ichigobankai Mer 2 Aoû 2017 - 12:06

J'avais failli posté dans ce sens, à savoir si vous (ceux qui dev sur MD) regardiez la charge par frame. Car si ca dégueule, forcément on perd la synchro etc.
ichigobankai
ichigobankai
Patient incurable

Masculin Nombre de messages : 1922
Age : 44
Localisation : 49
Date d'inscription : 04/04/2011

https://www.2minds.fr

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Tryphon Mer 2 Aoû 2017 - 12:23

Si le SPR_update bloque les interruptions (je suppose que c'est le cas ?) alors ça se verrait avec gens (le r57shell-mod montre les VInt ratées), mais ce n'est pas le cas...
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Invité Mer 2 Aoû 2017 - 13:11

Bref ...
Merci Stef, vais tester dès que j'ai le PC en main. Wink
avatar
Invité
Invité


Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Kivutar Mer 2 Aoû 2017 - 21:38

Voilà une vidéo qui montre bien le bug, sans avoir besoin de passer au ralenti:




Théoriquement il faut faire dans ce sens pour éviter tout problème de synchro entre sprites et plan :

// met à jour la map sans modifier le scroll hard en lui meme
MAP_update();
SPR_update();

VDP_waitVSync();

// met à jour le scroll hardware
Scroll_update();

Alors j'ai essayé ça. Et ça règle effectivement le souci.
Encore merci pour votre aide précieuse les gars !

J'aurais jamais trouvé ça tout seul Mr. Green
Kivutar
Kivutar
Patient en incubation

Masculin Nombre de messages : 53
Age : 39
Localisation : Pertuis
Date d'inscription : 07/07/2017

http://www.lakka.tv

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Invité Mer 2 Aoû 2017 - 22:13

good job thumleft
avatar
Invité
Invité


Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Tryphon Jeu 3 Aoû 2017 - 9:24

Stef a écrit:
// met à jour la map sans modifier le scroll hard en lui meme
MAP_update();
SPR_update();

VDP_waitVSync();

// met à jour le scroll hardware
Scroll_update();

Je crains d'avoir mal compris un truc alors : le scroll hw est en général calculé d'après les coordonnées du sprite du joueur.

Au moment du waitVsync(), on va avoir les sprites avec les coordonnées de la frame n, mais les offsets du scroll hw de la frame n - 1 (puisque le Scroll_update() est situé après) Confused

Edit : ce n'est d'ailleurs pas ce que tu fais dans le sonic sprite sample :

Code:
while(TRUE)
    {
        handleInput();

        updatePhysic();
        updateAnim();

        // update sprites
        SPR_update();

        VDP_waitVSync();
    }

le updateCamera() (équivalent du Scroll_update() ?) est lancé par updatePhysic(), donc au moment du waitVSync() on a bien des offsets synchro avec la position du sprite du joueur (ce qui n'empêche pas le bug décrit par l'OP, visible uniquement en ralenti extrême).
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Kivutar Jeu 3 Aoû 2017 - 10:27

Si ça peut t'aider, voilà ma runloop après modifications:


Code:
    while(1)
    {
        joy1 = JOY_readJoypad(JOY_1);

        if (pause)
            pause--;
        else
        {
            camera_update(player, ind);

            // Update entities
            Entity *e = entityList;
            while(e) {
                if (e->update != NULL)
                    e->update(e);
                e = e->next;
            }

            // Update items
            Entity *i = itemList;
            while(i) {
                if (i->update != NULL)
                    i->update(i);
                i = i->next;
            }

            detect_collisions();

            SPR_update(sprites);
        }

        VDP_waitVSync();

        VDP_setHorizontalScroll(PLAN_A, camera_x);
        VDP_setHorizontalScroll(PLAN_B, camera_x >> 3);
        VDP_setVerticalScroll(PLAN_A, -camera_y);
        VDP_setVerticalScroll(PLAN_B, shake_y_offset >> 3);
    }

Avant le changement, je faisais mon camera_update juste avant le waitVSync et ce camera_update contenait mes appels à VDP_setScroll.

J'ai donc dû couper mon camera_update en deux. La partie mise à jour de la map se fait avant la mise à jour des personnages. Ce qui lui donne une frame de retart. La mise à jour du scroll se fait juste après le VSync.

Le sample de sonic devrait être corrigé pour éviter ce bug.


visible uniquement en ralenti extrême

Ca dépend de la vitesse de déplacement du personnage lors de la première frame du déplacement je pense. Si ton personnage accélère très vite, comme lors d'un saut, ça deviens très visible. Jette un coup d'oeil à ma vidéo.
Kivutar
Kivutar
Patient en incubation

Masculin Nombre de messages : 53
Age : 39
Localisation : Pertuis
Date d'inscription : 07/07/2017

http://www.lakka.tv

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Stef Jeu 3 Aoû 2017 - 22:08

@Tryphon>En fait oui la position de la caméra doit se faire en fonction de la position du joueur mais comme juste au dessus il faut découper le traitement en 2 (la partie soft ou tu mets à jour le tilemap et la partie hard où tu modifies le scrolling).

En gros :
// mise à jour des objets et de la position du perso principal
physicUpdate();
// mise à jour de la map en fonction de la nouvelle position du perso
// attention à ce niveau le scroll hard est inchangé (seule le tilemap est modifié, et encore, de préférence en ram interne)
mapUpdate();

// mise à jour des sprites, la liste sera balancée au hard au prochain vblank
SPR_update();

// attente vblank
VDP_waitVSync();

// mise à jour du scroll (hardware)
scrollUpdate();

Et normalement ainsi c'est ok car le scroll et les sprites seront mise à jour dans le même vblank :)
Par simplification je ne l'ai pas fait dans mon exemple "sprite" mais je le modifierai car sinon tu peux avoir des soucis de synchro Wink
Stef
Stef
Interne
Interne

Masculin Nombre de messages : 5082
Age : 44
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Kivutar Jeu 3 Aoû 2017 - 22:14

Dans cet ordre là, ça ne fonctionne pas pour moi.

Il faut vraiment que je fasse le mapUpdate avant de mettre à jour la position des personnages.

Ca semble vraiment pas logique.

Mais le résultat ne trompe pas.

Au fait, j'ai mis à jour la rom, la map est un peu plus grande, avec des plateformes mouvantes et des leviers.
Kivutar
Kivutar
Patient en incubation

Masculin Nombre de messages : 53
Age : 39
Localisation : Pertuis
Date d'inscription : 07/07/2017

http://www.lakka.tv

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Stef Ven 4 Aoû 2017 - 17:17

Possible que ton mapUpdate prenne trop de temps et laisse passer une frame de temps en temps, du coup tes sprites seront desync si tu appelles SPR_update avant...
Stef
Stef
Interne
Interne

Masculin Nombre de messages : 5082
Age : 44
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Kivutar Sam 5 Aoû 2017 - 12:07

Ah OK je comprend mieux.

C'est quo la façon la plus propre d'afficher du texte avec des sprites ? Je dois me servir des fonts ou je fais juste un sprite avec une lettre par animation ?

EDIT: Pour l'instant je fais avec des sprites.

Ca donne ça:

WIP Jeu de plateforme MD - Page 3 GAAAABJRU5ErkJggg==
Kivutar
Kivutar
Patient en incubation

Masculin Nombre de messages : 53
Age : 39
Localisation : Pertuis
Date d'inscription : 07/07/2017

http://www.lakka.tv

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Stef Sam 5 Aoû 2017 - 16:03

SGDK n'a pas vraiment d'aide pour écrire du texte avec les sprites. Tu dois le faire "à la main", par contre tu peux utiliser la font interne histoire de ne pas encombrer la VRAM avec plusieurs font (tu peux remplacer la font interne avec la tienne si celle par défaut ne convient pas).
Si tu regardes le code de SGDK pour l'affichage du texte tu verras cette boucle :
*d++ = TILE_FONTINDEX + (*s++ - 32);

le "TILE_FONTINDEX + (*s - 32)" permet de transformer un caractère (*s ici) par l'index du tile correspondant en VRAM.
donc en gros tu dois positionner tes sprites de 8x8 les uns derriere les autres en les faisant pointer sur le bon tile pour construire des mots.


Dernière édition par Stef le Dim 6 Aoû 2017 - 16:34, édité 1 fois
Stef
Stef
Interne
Interne

Masculin Nombre de messages : 5082
Age : 44
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Kivutar Sam 5 Aoû 2017 - 22:02

OK merci, bon à savoir. Ca a l'air abordable. Si je sature ma VRAM, je passerai à cette méthode.
Kivutar
Kivutar
Patient en incubation

Masculin Nombre de messages : 53
Age : 39
Localisation : Pertuis
Date d'inscription : 07/07/2017

http://www.lakka.tv

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Hpman Dim 6 Aoû 2017 - 3:49

Certains jeux gèrent ça "à l'envers", avec un sprite fixe et une mise à jour des tiles en vram quand le compteur change.

Sur un jeu avec peu de texte ça évite de charger une font complète.
avatar
Hpman
Patient contaminé

Masculin Nombre de messages : 670
Age : 46
Localisation : Lille
Date d'inscription : 22/08/2014

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Tryphon Dim 6 Aoû 2017 - 9:41

+1 Hpman

De toute façon, s'il y a beaucoup de texte, tu passes pas par les sprites.
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Invité Dim 6 Aoû 2017 - 12:00

Hpman a écrit:Certains jeux gèrent ça "à l'envers", avec un sprite fixe et une mise à jour des tiles en vram quand le compteur change.

Sur un jeu avec peu de texte ça évite de charger une font complète.
Et ça permet aussi de pas sacrifier une partie d'un plan pour faire un hud .
avatar
Invité
Invité


Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Kivutar Lun 7 Aoû 2017 - 23:29

Le point de sauvegarde:

WIP Jeu de plateforme MD - Page 3 W9X6gf7G0fMWAAAAABJRU5ErkJggg==
Kivutar
Kivutar
Patient en incubation

Masculin Nombre de messages : 53
Age : 39
Localisation : Pertuis
Date d'inscription : 07/07/2017

http://www.lakka.tv

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Tryphon Mar 8 Aoû 2017 - 0:26

Toujours aussi mignon :)
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Kivutar Mar 8 Aoû 2017 - 1:49

Merci !

Il y a une façon facile de gérer les sauvegardes dans SGDK?
Kivutar
Kivutar
Patient en incubation

Masculin Nombre de messages : 53
Age : 39
Localisation : Pertuis
Date d'inscription : 07/07/2017

http://www.lakka.tv

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Tryphon Mar 8 Aoû 2017 - 9:28

Mmmh, aucune idée...
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par fourchette Mar 8 Aoû 2017 - 9:50

Si tu parles de sauvegarde sur la cartouche, c'est très simple grâce à l'utilisation des fonctions commençant par SRAM_

Dans le principe,
- on active le mode lecture ou écriture
- suivant le mode, on lit ou écrit à la position voulue en mémoire un octet, mot ou entier long
- on désactive le mode d'accès

edit : penser à paramétrer le fichier rom_head.c


Dernière édition par fourchette le Mar 8 Aoû 2017 - 10:01, édité 2 fois
avatar
fourchette
Patient en incubation

Masculin Nombre de messages : 84
Age : 54
Localisation : L'ion
Date d'inscription : 10/10/2009

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Tryphon Mar 8 Aoû 2017 - 9:58

Bon à savoir, merci :)
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Kivutar Ven 11 Aoû 2017 - 18:49

J'ai avancé sur le jeu.

Je suis en train de refaire le costume du perso, ce sera une Miko.

Le point de sauvegarde aussi deviens plus élaboré avec une animation sympa où le perso bois du thé et croque un onigiri avec des sakura qui tombent du ciel (lol).

J'ai aussi ajouté plus de maps et de transitions entre les maps (vers le haut, vers le bas).

Par contre, ça segfault de temps en temps au changement de maps, et j'ai un souci avec ma camera qui arrive rarement, mais qui arrive quand même.

Je pense que j'ai besoin d'une bonne revue de code pour ce qui est de la gestion de la mémoire, et peut être aussi pour la camera et mes pentes. Y aurait il une bonne âme pour se faire un compte sur bitbucket et lire mon code SVP ?
Kivutar
Kivutar
Patient en incubation

Masculin Nombre de messages : 53
Age : 39
Localisation : Pertuis
Date d'inscription : 07/07/2017

http://www.lakka.tv

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par philip Sam 12 Aoû 2017 - 2:48

Je n'utilise pas sprite engine, et je ne suis pas le plus doué de l'hôpital, mais pour la pente, peut-être inclure dans un tableau les valeurs Y. Et en fonction de X de ton personnage joueur, appliquer la valeur Y préenregistrés dans le tableau. Puis avec un pointeur sur tableau pour optimiser. Faudra que j'essaie de relever ce défi un jour. Pour regarder la vram il y a plusieurs ému comme:
http://gendev.spritesmind.net/forum/viewtopic.php?f=7&t=2264
philip
philip
Docteur *
Docteur *

Masculin Nombre de messages : 2079
Age : 53
Localisation : 31350
Date d'inscription : 10/04/2011

http://philip-md.blogspot.fr/

Revenir en haut Aller en bas

WIP Jeu de plateforme MD - Page 3 Empty Re: WIP Jeu de plateforme MD

Message par Kivutar Ven 25 Aoû 2017 - 9:53

J'ai réussi à régler la plupart des bugs du jeu. J'ai quand même des crash de temps en temps au changement de map.

Mais du coup j'ai pu continuer à ajouter des trucs, et le perso a maintenant une ombrelle qui lui permet de planer ou de se protéger en position accroupie :

WIP Jeu de plateforme MD - Page 3 HxqVyxt0W06uAAAAAElFTkSuQmCC
Kivutar
Kivutar
Patient en incubation

Masculin Nombre de messages : 53
Age : 39
Localisation : Pertuis
Date d'inscription : 07/07/2017

http://www.lakka.tv

Revenir en haut Aller en bas

Page 3 sur 4 Précédent  1, 2, 3, 4  Suivant

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum