MSX Village forum

La Place des Développeurs Projet GOS Et oui, encore trop d'ambitions ^^

aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 10/12/2020 à 02h27
Si je rode à nouveau sur le village, c'est pas juste pour parler technique (même si c'est toujours sympa d'apprendre de nouveaux trucs). ^^
En fait, ça faisait un bout de temps que je me disais que s'il y a un domaine que j'affectionne mais où le MSX n'a pas excellé à l'époque, c'est bien les jeux de sport (mise à part l'excellent Pennant Race 2 et les Track & Field).
Du coup, j'ai envie de combler ce vide. :)
J'avais d'abord dans l'idée de faire un jeu de tennis, mais n'ayant pas trouvé de sprites qui me plaisent sur le net, je me suis rabattu sur... le foot.
Techniquement, c'est très compliqué car on a besoin d'un grand terrain et de 22 personnages !
J'ai fait un premier test très sommaire (vous pouvez essayer la ROM) qui utilise 2 pages statiques dans le VRAM pour le terrain (256x512px) et des sprites bitmap en 16x16.
L'avantage, c'est que le terrain pourrait être joli et très détaillé vu que c'est un bitmap (les joueurs pourraient même facilement laisser des traces dans l'herbe), et que je n'ai pas besoin de gérer le scrolling en déplaçant des données. J'ai "juste" à jouer sur le registre de scrolling vertical et, là où ça devient plus technique, changer la page affichée en plein milieu de l'affichage de l'image.
Le gros problème, c'est que je ne peux pas faire de double-buffering (écrire dans une page pendant que j'affiche l'autre) car j'ai plus de place en VRAM. :oups
Du coup, je dessine en même temps que l'image s'affiche et c'est compliqué de ne pas avoir les sprites qui se mettent à scintiller.
De toute façon, même en limitant le nombre de personnage qui bougent, ça semble compliqué de gérer 22 personnages.
Je vais tester une solution hybride avec des sprites hardware en plus des bitmaps, mais je pense que LA solution c'est... d'être plus raisonnable. :D
Je vais donc certainement plutôt tenter le Futsal, la version 5v5 du foot qui se joue sur de petits terrains.
Avec un terrain de 256x384 en double buffer et à 30 Hz (donc 2 frames pour déplacer les sprites bitmaps), ça devrait déjà être bien plus réaliste.
Voilà, c'est tout pour le moment.
Je vous tiendriez au courant de l'avancé du projet.


On est toujours ignorant avant de savoir.
Github    
Bastion Rebel Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/09/2013 à 07h42

Messages: 1717

Le 10/12/2020 à 07h14
allez kick off !!!


TURBO-R FS-A1ST 512/128ko MSX2+ NMS 8250 F4 /Fix Audio /Ram 1/4Mb VDP9958 VRAM 192ko 2FDD SANYO WAVY PHC35J MSX2 NMS 8280 Ram 4Mb VDP9938 VRAM 192ko 2FDD NMS 8250 128/128ko 2FDD VG8235/39 128/128ko 1FDD SONY HB-F700D MSX1 MC810 32/16k VG 8020 64k HB75F 64k HX-22 64k RS232/ CX5M 32k HB501F EXT : My Exp 4X/[b] MegaFlashSCC 512ko/BERT R2/BEER CF/SUNRISE 2CF/FUNRICE V2.01/MAXIOL/MEGASCSI HDD-CD/SDMSX 1SD/FMPAC SRAM/NMS1205+1160/RS 232 Harukaze/GR8NET/DOS2/ HOMER V2 RAM512ko/Floppy Pack/MAXduino/ROM1664/FM Pak /GR8NET /AMIGA/ PC/ RaspB Pi(B) / ARDUINO
E-mail    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 10/12/2020 à 07h25
22 personnages ça me semble compliqué en effet.
j'ai pas souvenir de jeux de foot 8bits avec autant joueurs.
il y en avait combien sur Konami Soccer ?

en tout cas je croise les doigts pour que tu ailles au bout de ce projet ^^


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10328

Le 10/12/2020 à 09h23
Citation :
il y en avait combien sur Konami Soccer ?


14 joueurs car il y a les 2 gardiens de but



:noel
Site web    
granced Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 09/10/2009 à 09h18

Messages: 1501

Le 10/12/2020 à 10h56
aoineko :

En fait, ça faisait un bout de temps que je me disais que s'il y a un domaine que j'affectionne mais où le MSX n'a pas excellé à l'époque, c'est bien les jeux de sport (mise à part l'excellent Pennant Race 2 et les Track & Field)


Ouah l'autre hé... 3 Hyper sports, 2 Hyper Olympic (ou Track & Field effectivement), Konami's football, Konami's tennis et Konami's Ping pong et je ne compte pas les jeux de bagnole. Là je te trouve difficile ;)


MSX un jour, MSX toujours ! :D
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10328

Le 10/12/2020 à 12h03
ok ils ne sont pas tout bons ( les jeux ) mais le MSX a bien son lot de sportifs à la maison ;)

https://www.generation-msx.nl/software/result?q=&searchtype=&ge%5B%5D=Sport+games&p=2


:noel
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 10/12/2020 à 18h28
Ah oui, j'ai oublié Konami Ping Pong qui était vraiment bien.
Mais dans les sports populaires (foot, tennis, basket, volley, etc.) c'est la dèche (qualitativement).
En tout cas, c'est mon avis. ^^


On est toujours ignorant avant de savoir.
Github    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10328

Le 10/12/2020 à 18h33
en tout cas moi je trouve que ton terrain est grand ou bien que les joueurs sont trop petits

ça va être dur de tenir 1h30 ;)

sinon je vois bien une équipe de snatchers jouer contre des humains


:noel
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 10/12/2020 à 21h39
JIPEMSX :
en tout cas moi je trouve que ton terrain est grand ou bien que les joueurs sont trop petits


Pour du 11v11, c'était au contraire déjà trop petit.
Là je vise plus du 7v7, voir du 5v5 donc ça ira très bien avec mon terrain en 256x384.
J'ai fait un plan de la VRAM et tout semble tenir (les 2 terrains pour le double-buffering, les sprites bitmap des 2 équipes, les sprites hardware et les zones où je backup le terrain avant de dessiner sous les joueurs).
Si tout va bien, je n'utiliserai les sprites hadwares que pour le score et le timer.
Reste à voir combien de personnages je suis capable de faire bouger à 30 ou 25 Hz...


On est toujours ignorant avant de savoir.
Github    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 11/12/2020 à 00h54
J'ai presque fini le double-buffering.
Reste plus qu'un p'tit soucis de décalage entre les frames à régler... mais ça fait un bug tellement joli que ça fait presque mal au cœur de le corriger :lol


On est toujours ignorant avant de savoir.
Github    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5791

Le 11/12/2020 à 06h00
Beau projet, mais y a du taf :glass
Je pense surtout a IA, game play, 1,2 joueurs, vs computer,.... Ah oui j'oublier :oups,...... La Baballe, c'est prévu ? :D car ça aussi ça va prendre du travail système :)

Bon, je ne m'attend pas a tout les joueurs bougent systématiquement vers la balle, sinon ça ressemblera plutôt à une mêler de rugby :lol

Donc j'imagine que Ça sera au tour par tour, genre tout est statique qd la Baballe bouge et seul le joueur a la Baballe et le joueur sélectionné adverse peut bouger ? Tandis que les autres joueurs adverses non sélectionnés se comporteront soit en défenseurs avec positions pré définis et les joueurs de la Baballe en attaque.. Car si c'est trop prévisible, ça, ressemblera plus à un jeu d'échec. Je ne veux pas embrouillé les esprits, mais c'est plus complexe, la gestion des "sprites" questions IA et game play que ça en a l'air :|

En mode de jeu caché, j'imagine un mode entraînement ou les joueurs des 2 équipes alignés doivent traversé le terrain qui est en cour de tonte, (avec déplacement d'un joueur à la fois et la tondeuse qui traverse latéralement) le premier qui arrive au bout à gagné la manche. Et à chaque manche on rajoute une tondeuse :oups:oups:oups...... Un Frog Foot quoi :lol
Comme IA, la tondeuse (de la ligne concernée) sera attirée par la Baballe, il y a moyen de se la jouer stratégie pour éliminer avec la tondeuse les joueurs de l'équipe adverse :p:oups

Bon... Vous savez tous que j'adore le foot :siffle...... Surtout quand c'est amusant :lol
Edité par TurboSEB Le 11/12/2020 à 06h40



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 11/12/2020 à 10h23
Pour chaque personnage qui bouge, j'ai trois manip en VRAM (restauration du fond à l'ancienne place, backup du fond à la nouvelle place et dessin du personnage).
Sans optimisation, je peux faire bouger 4 personnages par frame mais pour le moment je fais toute mes opérations en 16x16 alors que la partie utile est quasiment 50% plus petite.
Je pense donc pouvoir faire bouger ~8 personnages par frame. Voir le double si je me mets à 25/30 Hz (en affichant qu'une frame sur 2).
C'est de la théorie, mais en tout cas pour le moment je désespère pas (encore) de faire un jeu type "action".


On est toujours ignorant avant de savoir.
Github    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 12/12/2020 à 11h47
Si c'était du Basic...

1) Du Screen 5 devrait suffire.
2) Le scrolling Horizontal hardware VDP (27) est très facile a mettre en oeuvre.
3) Un terrain d'une longueur de 512x192 serait doublement intéressant.
4) Le terrain pourrait être aisément construit sous forme de bribes verticales.
- La page 0 => page visible 256x192 / La page 1 "moitié Gauche du terrain 256x212" / La page 2 "Moitié Droite du terrain 256x212" / La page 3 "256x212 entièrement disponible!"
- Une copie de bribes depuis les page 1 ou 2 vers la page 0 permet de se débarrasser d'un "nécessaire double buffering"
- Des bribes verticales de 2 pixels permettent un scroll horizontal sans saccade apparente.
- Les scrolling diagonaux doivent se faire par "Pas de 1 pixels" (1 pixel Vertical puis 1 Horizontal) pour rester cohérent au scrolling horizotal par "Pas de 2 pixels".
- La limitation verticale de l'image "visible (focale!)" en 192 permet un petit scrolling "hardware" vertical de 44 pixels. (nulle besoin de repositionner "Y Sprites")
- Le scrolling Horizontal fait "scroller" les Sprites horizontalement sur 512 pixels totalement gratuitement. (nulle besoin de repositionner "X Sprites")

Au final:
Seuls X et Y du "ballon" et du/des "Héros" répondants aux contrôles du/des joueur/s doivent être reconsidérés à chaque "cycle"
Seul la bribe "droite" ou "gauche" doit être "COPY" à chaque cycle.
Seul VDP(27) est sollicité pour scroller un total de 256 pixels horizontaux.
Un petit scroll de 44 pixel verticaux sans solliciter de ressources juste parce que la "focale" est de 192 pixels alors que le "background fait 212".

Point Négatif => faut un VDP 9958 (Msx2+) pour bénéficier de ce hardware :p

Bref... Ca reste seulement mon point de vu avec une approche sous Basic :fou

Je m'en va :jesors Edité par igal Le 12/12/2020 à 11h53


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 12/12/2020 à 21h20
J'aimerai resté sur du MSX2.
Avec la technique que j'utilise (scrolling vertical hardware et changement de page en cours d'affichage), j'ai 0 travaille du VDP pour le terrain.
Seuls les personnages et la balle ont besoin d'être redessiner quand ils bougent.
Là, j'arrive à faire bouger 14 personnages en 3-4 frames sans optimisation.
Mon objectif c'est de faire tenir ça en 2 frames (pour être à 25/30 images par seconde), ce qui me semble réaliste.

Actuellement, j'ai un problème que je n'arrive pas à régler c'est que le changement de page en cours d'affichage via une interruption du HBlank bug quand mon écriture sur la page non visible est trop long (ça affiche une zone de VRAM qui n'est pas censé être visible).
Ca ne devrait pas influer normalement... :(
Je creuse le problème


On est toujours ignorant avant de savoir.
Github    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 13/12/2020 à 09h56
aoineko :
Avec la technique que j'utilise (scrolling vertical hardware et changement de page en cours d'affichage), j'ai 0 travaille du VDP pour le terrain.


N'ayant aucune expérience autre que le Basic Msx, peux tu me dire si il existe "une opération" ou "série d'opérations" équivalente à ton processus permettant de "scroller" depuis la [page 0] à la [page 1]?

Encore une fois, En basic, soit j'affiche directement un bloc depuis une source stockée sur un média comme je sais le faire avec les "Bribes d'une image" comme si c'était "streamé" en live, soit je fais une copie d'image depuis une [page Non visible] vers la [page visible] que je fais scroller :oups





Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie