Logicielsmoto.com
http://www.logicielsmoto.com/phpBB/

Outillage pour développement de jeux sur TO8
http://www.logicielsmoto.com/phpBB/viewtopic.php?f=3&t=620
Page 14 sur 40

Auteur:  Bentoc [ 22 Sep 2021, 13:00 ]
Sujet du message:  Re: Outillage pour développement de jeux sur TO8

Le but initial étant de pouvoir afficher de grandes maps variées en terme de décors, j'utilise un affichage par bloc de 16x8, ça permet d'avoir un tileset "contenu".

Comme tu le dis un affichage par ligne serait plus performant pour le scroll, mais on n'aurait pas assez de place pour les maps de Rick.
Ceci dit c'est une idée qui pourrait s'appliquer dans d'autres cas.

Auteur:  Fool-DupleX [ 22 Sep 2021, 22:59 ]
Sujet du message:  Re: Outillage pour développement de jeux sur TO8

J'observe qu'il y a un scroll vertical mais pas horizontal. De vague mémoire (j'y ai beaucoup joué !), je crois que c'est aussi comme ça dans le rick dangerous d'origine ? Mais ma question, c'est plutot est-ce que ce serait possible d'avoir aussi le scroll horizontal ? Je pense toujours à un jeu d'aventure type Zelda, c'est pour ca que je pose cette question (encore que dans Zelda, toute la carte se deplace a chaque mouvement du personnage, pas aux extremites de l'ecran - mais le scroll en limite d'ecran m'irait bien aussi pour un tel jeu)

Auteur:  Samuel Devulder [ 22 Sep 2021, 23:06 ]
Sujet du message:  Re: Outillage pour développement de jeux sur TO8

Fool-DupleX a écrit:
J'observe qu'il y a un scroll vertical mais pas horizontal. De vague mémoire (j'y ai beaucoup joué !), je crois que c'est aussi comme ça dans le rick dangerous d'origine ?

Oui c'est comme ca
phpBB [video]

Ca fait parti de l'image de marque du jeu (rick est un jeu "vertical") et on retrouve ce scroll sur toutes les plateformes:
phpBB [video]

phpBB [video]

phpBB [video]


Sauf sur MSX, mais là tout est moche:
phpBB [video]


A noter: les bruitages font beaucoup à l'ambiance du jeu, je trouve perso. Les versions dont les bruitages ne sont pas les mêmes sont vraiment moins bien.

Auteur:  Bentoc [ 22 Sep 2021, 23:13 ]
Sujet du message:  Re: Outillage pour développement de jeux sur TO8

Oui pas de problème pour un scroll horizontal avec le système mis en place, c'est juste qu'il n'y en a pas dans Rick.
Dans qq jours je ferai une map type zelda si tu veux comme ça je montrerai le scroll dans les deux directions sur une grande carte.
Tu as raison, étant donné que le framerate tombe à 10fps lors du scroll, mieux vaut l'utiliser pour les transitions que de faire un scroll à chaque mouvement.

(Edit) merci sam pour le recensement !

Auteur:  Fool-DupleX [ 23 Sep 2021, 17:21 ]
Sujet du message:  Re: Outillage pour développement de jeux sur TO8

Punaise, le graphisme sur Sinclair, il est ultra-chiadé, j'adore :love:

Auteur:  Samuel Devulder [ 23 Sep 2021, 18:01 ]
Sujet du message:  Re: Outillage pour développement de jeux sur TO8

On aurait presque envie de le faire pour MO5, n'est-ce pas :)
(mais je crois qu'il utilise les attributs de demi-intensité)

Auteur:  Fool-DupleX [ 23 Sep 2021, 18:08 ]
Sujet du message:  Re: Outillage pour développement de jeux sur TO8

Mais carrément ! :up:

Auteur:  adnz [ 25 Sep 2021, 22:09 ]
Sujet du message:  Re: Outillage pour développement de jeux sur TO8

Pratiquement au pixel comme sur amiga, et le color clash est super bien géré on dirait que y'en n'a même pas (à part le perso, normal ;) )
mais moi aussi cette version spectrum m'a bien surpris :good:

Auteur:  Bentoc [ 30 Sep 2021, 10:13 ]
Sujet du message:  Re: Outillage pour développement de jeux sur TO8

Je bosse sur l'intégration des graphismes en RLE pour enrichir le moteur de rendu des sprites.
Cela permettra de gagner de la place par rapport à certains cas ou les sprites compilés n'ont pas d'interet (menus, images statiques, ...)
Je suis reparti du format map (pas le header mais juste la partie données compressées) et j'ai ajouté la notion de pixel transparent de la manière suivante :


Code:
nn xx              ; run of n consecutive identical bytes (2 to 255) or non-identical bytes (1), value xx
00 nn xx xx xx ... ; run of n consecutive non-identical bytes (2 to 255), values xx follow
00 01 xx           ; apply write ptr offset xx 1 to 254 (decode should use abx to apply offset)
00 01 ff xx xx     ; apply write ptr offset xx 1 to 32767      
00 00              ; end of bitplane   


j'utilise la balise 00 01 xx (3 octets) qui n'a pas d'intérêt dans le format MAP d'origine, car déjà couvert par la balise 01 xx (2 octets)
Du coup je peux encoder l'usage des 16 couleurs ainsi que les déplacements du pointeur de destination.

Une autre idée pour le format ou ça vous semble bon ?
Je ne cherche pas la compatibilité MAP, c'est juste pour pas réinventer la roue ...

Auteur:  Bentoc [ 30 Sep 2021, 14:36 ]
Sujet du message:  Re: Outillage pour développement de jeux sur TO8

Après quelques essais, le format suivant semble plus efficace en terme de taille :

Code:
        // nn xx              ; run of n consecutive identical bytes (2 to 254) or non-identical bytes (1), value xx
      // 00 nn xx xx xx ... ; run of n consecutive non-identical bytes (2 to 255), values xx follow
      // ff xx              ; apply write ptr offset xx (1 to 255) (decode should use abx to apply offset)
      // ff 00 xx xx        ; apply write ptr offset xx (1 to 32767)      
      // 00 00              ; end of bitplane   


Sur mon jeu de test, les images prennent 2 fois moins de place avec ce format par rapport aux sprites compilés.
reste à voir la rapidité d'affichage ;-)

Auteur:  Samuel Devulder [ 30 Sep 2021, 19:09 ]
Sujet du message:  Re: Outillage pour développement de jeux sur TO8

Citation:
// ff 00 xx xx ; apply write ptr offset xx (1 to 32767)

Pourquoi 32767 ? tu peux aller jusqu'à 65535, non ? (bon en pratique ca n'a pas d'intérret.

Quelque part je pense que les répétitions ne sont jamais très nombreuses horizontalement. Du coup je me demande si en travaillant au niveau bit tu ne peux pas être encore plus compact:
Code:
bits
00000000 -> fin
0nnnnnn0 XX -> répète XX nn+1 fois (1 à 64 inclus)
0nnnnnn1  -> n octets transparents
10nnnnnn XX YY ... -> recopie XX YY ... (nn + 1 octets)
11xxxxxx XX --> saute au dessus des 1 +xxxxxxXX (14 bits = 16384 octets, soit une page RAM)
ou dans le même genre. Le décodage peut être assez rapide
Code:
LOOP
  LDB ,Y+
  BMI  L1xxxx
  BPL  L0xxxx
  RTS
L1xxxx
  LSLB
  BPL  L10xxx
  LDD -1,Y
  LEAY 1,Y <-- beurk lent, mais rare
  LEAY 1,X <-- beurk lent, mais rare
  ANDA #%00111111
  LEAX D,X
  BRA LOOP
L10xxx
  LDA ,Y+
  STA ,X+
  SUBB #2 <-- ben oui on a fait LSL
  BGE  L10xxx
  BRA LOOP
L0xxxx
  LSRB
  BCC L0xxx0
  ABX
  BRA LOOP
L0xxx0
  LDA ,Y+
LOOP2
  STA ,X+
  DECB
  BGE LOOP2
  BRA LOOP
on doit pouvoir faire encore mieux en utilisant les codes long pour les trucs rares comme "FIN" et "saut sur 14 bits".

Auteur:  Bentoc [ 30 Sep 2021, 19:49 ]
Sujet du message:  Re: Outillage pour développement de jeux sur TO8

Merci !

Oui c'est vrai compte tenu de l'entrelacement les répétitions sont plus courantes en vertical. D'ailleurs le format MAP encode dans le sens vertical puis horizontal si j'ai bien compris ...

Pour le déplacement je voulais dire +-15 bits : -32768,32767
(le négatif c'est pour le positionnement de départ car la référence de position est centrée dans le moteur)

Je termine de debug ma routine actuelle et je me penche sur le code que tu m'a envoyé.

Auteur:  Bentoc [ 30 Sep 2021, 22:35 ]
Sujet du message:  Re: Outillage pour développement de jeux sur TO8

Bon j'ai oublié un léger détail ... il faut que j'encode les cas de pixels partiellement transparent (à gauche ou à droite). la transparence ne peut pas être gérée par l'index couleur ;-) c'est la que ça va se compliquer !
il va falloir effectivement passer par un encodage bit à bit.

Edit : ou alors justement j’utilise un id de couleur comme indice de transparence. Charge a l’encodeur via une balise de positionner un code couleur non utilisé sur un segment de l’image pour indiquer au décodeur quel est l’index de transparence. Pour encoder on cherche la séquence la plus longue jusqu’à ce que tous les indexes de couleurs aient été utilisés et on prend la dernière couleur trouvée comme indice de transparence. On fait ça sur chaque segment jusqu’à la fin du fichier.

Autre solution : on gere les quantités répétées et les offsets de déplacement en nibble et pas en byte …

Auteur:  Samuel Devulder [ 30 Sep 2021, 23:32 ]
Sujet du message:  Re: Outillage pour développement de jeux sur TO8

Pour la transparence tu peux avoir un code supplémentaire qui réalise un masque et/ou. Il servira au debut et aux fins de lignes.
  • 00 000000 => fin
  • 00 nnnnnn => skip(n unsigned 6 bits)
  • 01 000000 (and) (or) => masque (code supplémentaire en tenant compte que skip(0) sert à rien
  • 01 nnnnnn (byte) => repéte byte nnnnn fois (6 bits unsigned)
  • 10 nnnnnn (b1) .. (bn+1) ==> recopie les n+1 octets
  • 11 000000 => inutilisé peut servir plus tard
  • 11 nnnnnn (byte) => skip(14 bits signés)
Code:
LOOP
  LDA ,Y+
  LSLA
  BCC L0x
  BPL L10x
L11x (skip 14 bits)
  LSLA 
  ASRA     extension de signe
  ASRA     extension de signe
  BEQ INUTILISE
  LDB ,Y+
  LEAX D,X
  BRA LOOP
L10x (recopie)
  LDB ,Y+
  STB ,X+
  SUBA #2
  BCC L10x
  BRA LOOP
L0x
  BEQ FIN
  BMI L01x
SKIP (saute 6 bits)
  LDB -1,Y
  ABX
  BRA LOOP
L01x
  ANDA #%00111111
  BEQ MASK
  LDB ,Y+
REPETE (répète octet)
  STB ,X+
  SUBA #2
  BCC  REPETE
  BRA LOOP
MASK
  LDB ,Y+
  ANDB ,X
  ORB ,Y+
  STB ,X+
  BRA LOOP

Auteur:  Bentoc [ 01 Oct 2021, 08:36 ]
Sujet du message:  Re: Outillage pour développement de jeux sur TO8

bien vu, ça va faire gagner pas mal de place.

Le fait que le nombre de répétitions, ou l'offset soit codé sur moins de bits n'est pas gênant, on a rarement de grandes répétitions ou de grands sauts.

Page 14 sur 40 Heures au format UTC + 1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/