Logicielsmoto.com

Nous sommes le 30 Jan 2023, 18:50

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 592 messages ]  Aller à la page Précédente  1 ... 36, 37, 38, 39, 40
Auteur Message
MessagePosté: 08 Déc 2022, 19:28 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1768
Localisation: Brest
Oula il y a du changement. Je confirme le problème des tableaux de 500Mb. En effet, voici ce que MAT m'a sorti sur le dump provoqué par le out of memory
Code:
$ java -XX:+HeapDumpOnOutOfMemoryError -jar ../../java-generator/target/game-engine-0.0.1-SNAPSHOT-jar-with-dependencies.jar ./s2-EHZ-halfline2-linux.properties
Fichier(s) joint(s):
image_2022-12-08_191406171.png
image_2022-12-08_191406171.png [ 24.55 Kio | Vu 437 fois ]

Ces tableaux occupent 97.52% de la RAM totale :eek: :L

J'ai donc fait un git pull (au fait de mon coté, j'ai un global en autocrlf true depuis le début, c'est peut-être pour ca que je tombe sur ces warning ou changements relatifs aux fins de fichiers). Par contre ca me plante avec un:
Code:
Load Game configuration: ./s2-EHZ-halfline2-linux.properties ...
Build error.
java.lang.Exception: Impossible de charger le fichier de configuration: ./objects/main-character/sonic/sonic.properties
        at fr.bento8.to8.build.Object.<init>(Object.java:55) ~[game-engine-0.0.1-SNAPSHOT-jar-with-dependencies.jar:?]
        at fr.bento8.to8.build.GameMode.<init>(GameMode.java:118) ~[game-engine-0.0.1-SNAPSHOT-jar-with-dependencies.jar:?]
Bon du coup j'ai effacé tout, et re-clonné.. Et là ca passe ? Ben non :(
Code:
     
Cannot open include file './engine/graphics/Tilemap/TileAnimScript.asm': No such file or directory
Build error.
java.io.FileNotFoundException: ./generated-code/EHZ/FD/main-engine.tmp (No such file or directory)
        at java.io.FileInputStream.open0(Native Method) ~[?:?]
        at java.io.FileInputStream.open(FileInputStream.java:219) ~[?:?]
        at java.io.FileInputStream.<init>(FileInputStream.java:157) ~[?:?]
        at java.io.FileInputStream.<init>(FileInputStream.java:112) ~[?:?]
        at fr.bento8.to8.build.BuildDisk.compile(BuildDisk.java:3161) ~[game-engine-0.0.1-SNAPSHOT-jar-with-dependencies.jar:?]
Le problème est le T majuscule dans Tilemap du nom de l'include, alors que sur git, le chemin est avec des minuscule.

Ensuite si je fais
Code:
$ git mv ./engine/graphics/tilemap ./engine/graphics/Tilemap
ca pète plus loin avec
Code:
Cannot open include file './engine/graphics/tilemap/data-types/map-16bits.equ': No such file or directory
Build error.
(problème de t minuscule dans ce cas).

Bref ya une incohérence dans les includes avec Tilemap/tilemap qui fait planter la compilation sur les systèmes de fichiers sensibles à la case. Je passe en revue tous les include et corrigé les T majuscules dans les deux main-engine.asm, et... c'est bon alors ? :voyons: Ben... heu... non :(
Code:
get RAM Loader Manager size for MEGAROM_T2...
Build error.
java.nio.file.NoSuchFileException: ../../Engine/Ram/RAMLoaderManagerT2.asm
        at sun.nio.fs.UnixException.translateToIOException(UnixException.java:92) ~[?:?]
(...)
$ grep -R Engine/ ..
../unit-test/config-windows.properties:engine.asm.RAMLoaderManager.t2=../../Engine/Ram/RAMLoaderManagerT2.asm
../smps/config-windows.properties:engine.asm.RAMLoaderManager.t2=../../Engine/Ram/RAMLoaderManagerT2.asm
../zeldo/config-windows.properties:engine.asm.RAMLoaderManager.t2=../../Engine/Ram/RAMLoaderManagerT2.asm
../cacao-and-coffee-shop/config-windows.properties:engine.asm.RAMLoaderManager.t2=../../Engine/Ram/RAMLoaderManagerT2.asm
../day-of-the-tentacle/config-windows.properties:engine.asm.RAMLoaderManager.t2=../../Engine/Ram/RAMLoaderManagerT2.asm
../rick-dangerous/config-windows.properties:engine.asm.RAMLoaderManager.t2=../../Engine/Ram/RAMLoaderManagerT2.asm
../sonic-2/s2-EHZ-halfline.properties:engine.asm.RAMLoaderManager.t2=../../Engine/Ram/RAMLoaderManagerT2.asm
../sonic-2/objects/level/special-stage/SSBomb/SSBomb.asm:        INCLUDEBIN "./Engine/Math/sinewave.bin"                                 
../sonic-2/s2-intro-EHZ-halfline.properties:engine.asm.RAMLoaderManager.t2=../../Engine/Ram/RAMLoaderManagerT2.asm
../sonic-2/s2.properties:engine.asm.RAMLoaderManager.t2=../../Engine/Ram/RAMLoaderManagerT2.asm
../sonic-2/s2-EHZ-halfline2-linux.properties:engine.asm.RAMLoaderManager.t2=../../Engine/Ram/RAMLoaderManagerT2.asm
../savage/config-windows.properties:engine.asm.RAMLoaderManager.t2=../../Engine/Ram/RAMLoaderManagerT2.asm
Bon là je ne sais pas où intervenir. "Engine" est utilisé dans les propertis, mais aussi les include, alors que sur le git il est en minuscule.
Fichier(s) joint(s):
image_2022-12-08_195457395.png
image_2022-12-08_195457395.png [ 4.39 Kio | Vu 437 fois ]
Il faudrait changer le git avec un E majuscule à mon avis, mais si on fait ca on obtient:
Code:
Delete RAM data files ...
java.nio.file.NoSuchFileException: ../../engine/boot/boot-t2.asm
        at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
En fait il y a
Code:
grep -R engine/ .. | wc -l
316160
Beaucoup plusd de référencers à "engine" en minuscule. Donc bahhh je sais pas trop comment faire.

Note: ces problèmes ont sans doute toujours étés là, mais WSL (1) utilise le système de ficher windows qui est lent mais qui surtout n'est pas sensible à la case. En revanche, pour WSL2, c'est un système de fichier natif linux, donc plus rapide mais totalement sensible à la case. Ceci explique pourquoi je vois ces soucis à présent.

C'est une bonne chose d'avoir changé de machine au final

sam ( :roi: de la QA)

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Déc 2022, 22:03 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 419
Localisation: Var
merci sam pour ces retours :D

auparavant il s'appelait Engine et je l'ai changé par engine il y a qq temps ... (il faut donc bien garder le e minuscule)

Il reste donc qq références à corriger effectivement. Mais comme je ne les vois pas en windows j'en ai loupé un certain nombre ...
Je vais tacher de corriger et commit ça.

En tout cas c'est sympa de faire cette vérif thanks !

ps :
j'ai appris que sur sonic 2, il y avait 50 testeurs en permanence qui cherchaient les bugs et enregistraient des VHS lors de leur sessions de test.
Le matin l'équipe de dev avait une pile de VHS sur leur bureau avec les captures videos des bugs de la veille.
Le plus souvent le dev répondait "ouais je sais il y a ce pb ..."


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 10 Déc 2022, 18:41 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 419
Localisation: Var
C'est bon Sam ... j'ai corrigé tous les problèmes de minuscule/majuscule et commit.

Pour débusquer les derniers problèmes j'ai finalement récupéré un RPI 3B+ dans un fond de tiroir et fait le build :roll:

J'en ai profité pour commit également (dans tools) les binaires de LWASM pour ARM que j'ai compilés pour l'occasion.
Me voila équipé pour tester mes modifs sous linux, il était temps ...


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 19 Déc 2022, 08:53 
Hors ligne

Inscription: 22 Mai 2009, 11:08
Messages: 64
Localisation: dijon
Bonjour !
Hop c'est superbe ce que vous faites !
Libre à moi de reformater ma sd pour y mettre sonic 2 depuis ouch du temps mais eu le temps depuis ^^
Merci encore pour ce PRODIGE :)

Yog

_________________
--- que dire ---


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 03 Jan 2023, 23:29 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 419
Localisation: Var
Merci pour ces retours qui font toujours plaisir.

J'étudie en ce moment des solutions pour intégrer au moteur de jeu un peu plus de routines de type "composant" pour les objets :
- contrôles de déplacement au joystick
- limites de déplacement
...

J'ai passé quelques heures depuis lundi pour mettre en place une nouvelle démo de jeu "simple" pour travailler ces concepts.
Voici les premières images ... on échangera sur le code dans les jours qui viennent.
Les graphismes sont ceux de R-Type CPC 128K réalisé par easter egg.

Vous remarquerez le scroll au pixel près :sol:

phpBB [video]

https://youtu.be/nvJ7DF6e0pI

Le scrolling est découplé par rapport au rafraichissement des sprites, j'ai calé la vitesse de défilement sur la version CPC.

Fichier(s) joint(s):
r-type.zip [135.72 Kio]
Téléchargé 13 fois


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 04 Jan 2023, 17:17 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 485
R-Type est l'un des 2 jeux que j'aurais bien voulu voir porté (avec Prince of Persia) ou porté moi meme facon Lemmings.

Beau scrolling en tout cas, et comme d'hab avec tes demos, du jamais vu :jap:


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Jan 2023, 20:00 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 419
Localisation: Var
merci Yoann,

Pas la grande forme aujourd'hui mais je vous avais promis des explications avant fin de semaine, alors voila ;-)

Le constat :
- La map de R-Type 128K pour CPC a un arrière plan uni
- le scroll a mettre en place est assez lent

Partant de ce constat, voici la stratégie :

Etape 1 :

- préparer une map et mettre en transparence les pixels qui se suivent lors d'un scroll à gauche (j'avais déjà un outil pour faire ça dans toutes les directions)

On obtient donc ça (je n'ai pas mis toute la map car l'image est trop grande pour une pièce jointe, donc juste le début mais imaginez ça pour tout le niveau) :
Fichier(s) joint(s):
rtype-map.png
rtype-map.png [ 3.4 Kio | Vu 178 fois ]


- quand on va scroller les tiles vont effacer leur trace grace à la bordure noire à leur droite.
- de même si dans le tile, deux pixels de la même couleur se suivent, on positionne de la transparence sur ceux de droite.

comme on a cette transparence il faut init le fond de départ avec une image pour combler ces trous, elle est compressées en RAM par RLE et prend 2Ko environ :
Fichier(s) joint(s):
0.init.png
0.init.png [ 1.67 Kio | Vu 178 fois ]

On retrouve les pixels noirs du fond et ceux répétés horizontalement dans les tiles. Elle ne sert qu'a l'init, après les tiles "balayent" eux même derrière eux pour rétablir le fond noir.

Au final on économise donc l'affichage de pas mal de tiles car transparents (pas besoin de réécrire le fond à chaque fois.

une fois la map prête on génère le tileset.

Etape 2 :

- générer les données de la map (index de tiles), ici on va réutiliser le système de buffer mis en place dans Sonic.
Comme la map est petite, on peut directement sauver la page et l'adresse des tiles directement dans le buffer et ce pour la map entière (2560 octets de mémoire)
Ainsi pas de remplissage de buffer a faire au fur et à mesure de l'avancement dans la map. (J'ai agrandi le buffer un petit peu car il était de 2Ko initialement)

- on fait la même chose avec des tiles décalés de 1 pixel, donc un second buffer et second tileset

- attention on conserve systématiquement les pixels par paire dans le cas de la transparence ou du décalage de 1 pixel. Ceci afin d'éviter d'avoir a faire du masquage des octets (2 pixels dans un octet).
Cette remarque est valable pour le traitement en Etape 1 également.

Etape 3 :

- la vitesse de scroll étant lente on ne va pas rafraichir le scroll toutes les frames, voici la séquence :
A1 A2 x1 x2 B1 B2 x1 x2 A1 A2 x1 x2 B1 B2 ...

A1 : en buffer vidéo 1 : restauration du fond pour les sprites, écriture des tiles, sauvegarde du fond pour les sprites, écriture des sprites
A2 : en buffer vidéo 2 : restauration du fond pour les sprites, écriture des tiles, sauvegarde du fond pour les sprites, écriture des sprites
x1 : en buffer vidéo 1 : restauration du fond pour les sprites, sauvegarde du fond pour les sprites (nouvelle position), écriture des sprites
x2 : en buffer vidéo 2 : restauration du fond pour les sprites, sauvegarde du fond pour les sprites (nouvelle position), écriture des sprites

B1 : idem A1 mais avec le tileset dont les images sont décalées de 1
B2 : idem A2 mais avec le tileset dont les images sont décalées de 1
...

Evidement pour les deux premiers A1 et A2 il n'y a pas de fond de sprite à restaurer puisque non affichés.

Au final j'ai réutilisé le code existant du scroll de sonic sur la partie buffer, le reste existait déjà.


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 592 messages ]  Aller à la page Précédente  1 ... 36, 37, 38, 39, 40

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 7 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