Logicielsmoto.com

Nous sommes le 28 Mar 2024, 17:45

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 598 messages ]  Aller à la page Précédente  1 ... 6, 7, 8, 9, 10, 11, 12 ... 40  Suivante
Auteur Message
MessagePosté: 27 Mai 2021, 11:56 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
:bien: c'est fidèle à l'original, super, c'est fluide

Comment ta géré le coté point de fuite de la perpective des sprites qui se rapproche ?
Ta un calcul du genre point de vu(camera) par rapport coordonnées ou une distance du sprite ?

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 27 Mai 2021, 12:14 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Ca marche bien. Ca semble assez fluide pour donner envie de jouer.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 27 Mai 2021, 13:14 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
adnz a écrit:
:bien: c'est fidèle à l'original, super, c'est fluide

Comment ta géré le coté point de fuite de la perpective des sprites qui se rapproche ?
Ta un calcul du genre point de vu(camera) par rapport coordonnées ou une distance du sprite ?


Les objets sont positionnés par un angle et une distance à la camera.
=> les objets sont donc toujours positionnés en arc de cercle, pas en position x,y,z

Chaque image de piste est associée à une liste d'ellipses (centre,rayon), chaque ellipse est définie pour une distance à la caméra.
Ces données de positionnement sont donc précalculées au même titre que les images, elles ont certainement été générées en même temps, car 56 images x 20 ellipses (environ) = 1120 ellipses, je pense pas qu'ils aient fait ça à la main ;-)

On calcule la position xy de l'objet en utilisant :
- l'image de piste en cours qui détermine un sous ensemble d'ellipses
- la distance de l'objet pour sélectionner l'ellipse a appliquer
- l'angle de l'objet ce qui permet de calculer la position sur l'ellipse

Pour l'ombre c'est pareil, sauf qu'on fait x1.25 sur le rayon de l'ellipse (dans la version TO8 je triche ici, mais ça revient au même)

En ce qui concerne la détection de collision, on compare l'angle du personnage avec celui des objets ayant atteint une certaine taille (et donc qui sont proches du personnage).

Si ça vous intéresse je peux détailler tout ça avec le code correspondant.


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 27 Mai 2021, 13:24 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Samuel Devulder a écrit:
Ca marche bien. Ca semble assez fluide pour donner envie de jouer.


Oui je suis soulagé de voir que ça tourne correctement ! J'avais un peu peur que ça rame avec les objets ...
Maintenant il manque encore pas mal de choses comme le score, ...
mais pour le moment tout va bien.

Le code d'origine comporte une certaine complexité liée à la présence des deux personnages car il y a un mode de jeu ou l'on peut jouer à deux :
- l'un peut passer devant l'autre, il devient prioritaire sur la collision
- les scores sont mutualisés
- ...
Tout ça je ne pourrait pas le faire faute de ressource, mais on pourra choisir le perso au démarrage.


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 27 Mai 2021, 14:55 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
tu pense à faire 2 joueurs lol, 1 joueur avec les scores etc.. déjà c'est super ... :)

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 27 Mai 2021, 15:13 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
adnz a écrit:
tu pense à faire 2 joueurs lol, 1 joueur avec les scores etc.. déjà c'est super ... :)


Je vais commencer par ajouter les anneaux :W


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 28 Mai 2021, 21:00 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
Aller c'est les 30 ans de Sonic cette année :D

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 28 Mai 2021, 22:37 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Oui c'est le mois prochain !
Mais pour Sonic 2 c'est novembre 2022 ... je suis large :W


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 18 Juil 2021, 09:18 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Je n'ai pas donné de nouvelles depuis un certain temps mais le projet avance toujours.

Suite aux explications de sam à fxrobin il y a qq jours, il m'est venu une idée pour gagner de très nombreux cycles quand le moteur de jeu est "un peu chargé" ...

=> Encore une fois merci sam ;-)

La boucle principale du moteur actuel est la suivante :
- On attend que le point à l'écran ai terminé de dessiner la page active pour l'automate video
- On change la page active de l'automate par celle de travail
- On exécute le code de contrôle/comportement des objets (sprites), en // l'automate change la page vidéo active quand le point écran est en haut et commence à dessiner la nouvelle page active
- On prépare l'affichage des sprites en fonction des priorités
- On effectue l'effacement des sprites qui en ont besoin
- On effectue l'affichage des sprites qui en ont besoin

La nouvelle boucle principale du moteur pourrait être la suivante :
- On change la page active de l'automate par celle de travail, (elle sera appliquée à la VBL par le TO8, on a juste fait la demande en avance, ça c'est l'info donnée par sam)
- On ne sait pas ou est le point écran, mais on n'écrit pas encore en ram vidéo ...
- Dans l'IRQ 50hz utilisé pour le joypad et la musique, on reset un compteur => A chaque IRQ on incrémente ce compteur
- On exécute le code de contrôle/comportement des objets (sprites)
- On prépare l'affichage des sprites en fonction des priorités
- Si le compteur de l'IRQ vaut toujours 0 : On attend que le point à l'écran ai terminé de dessiner la page active pour l'automate video (ancienne étape 1 de la boucle principale)
- Sinon on ne fait rien ... c'est la qu'on a un gain potentiellement énorme !
- On effectue l'effacement des sprites qui en ont besoin
- On effectue l'affichage des sprites qui en ont besoin

=> Dans le cas où j'ai suffisamment de code a exécuter hors affichage, je n'ai plus besoin d'attendre la fin du rendu de la page active précédente.

Cool non ?
L'implémentation attendra la rentrée, car c'est bientôt les vacances pour moi ...


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 18 Juil 2021, 10:03 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Ouais c'est cool. Bonnes vacances du coup :)

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 18 Juil 2021, 15:32 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
Bonnes vacances à tous.

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 19 Juil 2021, 16:32 
Hors ligne

Inscription: 12 Fév 2021, 15:54
Messages: 78
Localisation: Rennes
Hello Bentoc,

Tu as un repo de code quelque-part pour accéder à ton framework ? (github, etc.) ?

_________________
Fan de Atari 2600, Thomson MO5, Thomson TO8, Atari STE.
Retro-Codeur à mes heures perdues. https://www.fxjavadevblog.fr


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 19 Juil 2021, 18:32 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Oui c'est ici : https://github.com/bhrousseau/Bento8-GameEngine
Les dernières release commencent à dater donc je te conseille de regarder plutot le master.
Je commit régulièrement dans le master comme je suis tout seul dessus ...

Il n'y a pas encore de documentation utilisateur, j'ai cependant réalisé des diagrammes pour les principaux algos.
Il te faudra drawio qui est un outil gratuit (en ligne ou appli desktop)
Pour les diagrammes c'est dans \Build\doc : https://github.com/bhrousseau/Bento8-GameEngine/blob/master/Build/doc/TO8%20game%20engine.drawio

J'utilise eclipse comme environnement de dev.
Actuellement dans le master il y a deux projets compilables :
- Sonic2 -> un jeu en devenir
- YM2413 -> sert à la mise au point du driver son

Dans chacun de ces répertoires se trouve un fichier config.properties qui définit les ressources pour le builder.
Dans ce fichier on paramètre les GameMode qui sont des "niveaux de jeu" (title screen, niveau1, ...)
Pour chaque GameMode on a un fichier properties qui détermine le code principal "MainEngine" qui sera chargé en $6100, ainsi que les références aux objets et différentees ressources à charger (en RAM ou ROM)
Le Builder produit tous les fichiers d'un coup : image disquette (.fd, .sd), ainsi que le .sd qui permet de programmer la T.2
Si ton programme ne rentre pas sur une disquette, seul le fichier .sd qui charge la T.2 est produit.

Sans explications sur les commandes difficile d'utiliser tout ça donc voici quelques commandes de base.
Il te faudra lancer la classe fr.bento8.to8.build.BuildDisk ./config.properties
dans le working directory \Sonic2 ou \YM2413 suivant ce que tu veux builder, et avec les libs:
\lib\apache-log4j-2.13.3-bin\log4j-api-2.13.3.jar
\lib\apache-log4j-2.13.3-bin\log4j-core-2.13.3.jar

Tu es libre d'utiliser tout ou une partie du code seulement, c'est open bar.
Si tu veux te joindre au projet la porte est grande ouverte également (ça vaut pour tout le monde), il vous suffit d'envoyer un MP.
L'objectif est de produire un outil commun pour créer des jeux sur TO8.

Pour ceux qui m'ont lu jusqu'au bout ... Utilisez Build\YM2413\Tools\TO8D-SN76489-YM2413\TO8D_E7FF.exe pour lancer le Build\Sonic2\Disk\Sonic2.fd
Remarque : Le chargement est long ...


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 20 Juil 2021, 08:10 
Hors ligne

Inscription: 12 Fév 2021, 15:54
Messages: 78
Localisation: Rennes
Super merci.

Je me laisserais bien tenté par te rejoindre dans l'aventure, notamment parce que JAVA, c'est MON langage favori (je vais me faire taper dessus je crois).
Cependant, je suis trop débutant en prog TO8 pour le moment, je trouve. Il faut que je me familiarise avec beaucoup de choses encore.
Ce n'est pas tant l'assembleur qui me pose problème (puisque j'en fais un peu sur M68000 et que j'en a fais beaucoup sur X86) mais surtout toutes les singularités THOMSON et du TO8 en particulier.

Je vais cloner ton repo, prendre la mesure ce que tu as fais, je te proposerai des "pull requests" si tu veux bien.

Qu'est-ce que je pourrais coder qui serait assez simple selon toi au sein de ton framework et qui manque ?
Tu as prévu une "roadmap" ?

Dernière question, un clone de Rick Dangerous serait envisageable avec ton framework, je suppose ?

_________________
Fan de Atari 2600, Thomson MO5, Thomson TO8, Atari STE.
Retro-Codeur à mes heures perdues. https://www.fxjavadevblog.fr


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 20 Juil 2021, 13:07 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Oui Rick Dangerous correspond bien au type de jeu pour ce moteur.
Jette un coup d'œil dans les semaines qui viennent sur le repo, si après ça tu es intéressé je te propose de faire qq sessions Teams en partage d'écran.
On pourra mettre en place ton environnement Eclipse et je te montrerai comment tout ça fonctionne.
Tu verra c'est assez rapide d'avoir les premiers sprites qui s'affichent. (Surtout avec les graphismes tout prêts d'adnz !!!)

Les sujets à venir qui concernent le moteur :
- Terminer la prise en charge des cartes son YM2413 et SN76489 (reste des bugs mineurs)
- Gestionnaire d'affichage des tiles
- Routines de gestion des scores (affichage/sauvegarde)
- Routines d'affichage de texte
- Outil de conversion midi vers smps pour la musique
- ...

Sur mon projet Sonic2 je doit implémenter le contrôle du personnage pour le special stage, c'est 3000 lignes de code asm à porter (dont pas mal vont être retirées car je ne garde pas le mode 2 joueurs). Si tu entres dans le projet je mettrai ça de coté pour travailler avec toi sur la gestion des tiles, car je pense que c'est un bon point de départ pour ton jeu (J'en avait aussi besoin à moyen terme donc c'est l'occasion).

Pour me simplifier la vie tu verra que je ne passe pas par la couche Basic, je n'utilise pas le format de fichiers ... donc une fois que tu sais comment fonctionne la gestion mémoire et la gestion écran, c'est suffisant. Le reste viendra au fil de l'eau ... et plus de bataille avec les LOADM et compagnie ;-)

J'espère que tu me rejoindra, ça devrait donner un sérieux coup de fouet au projet.


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 598 messages ]  Aller à la page Précédente  1 ... 6, 7, 8, 9, 10, 11, 12 ... 40  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 30 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com