1

Salut tout le monde :-)

Je viens de commencer un nouveau projet en Axe parser!
Je ne sais pas si j'arriverai à la mener jusqu'au bout car je ne connais pas encore les limites précises de ce qui est réalisable avec Axe parser...

Connaissez vous le jeu Learn to Fly??? -> http://www.kongregate.com/games/light_bringer777/learn-to-fly
Et bien voilà, c'est ce jeu que je suis en train d'essayer de porter sur Ti, avec peut-être des modifications, à voir.

Pour le moment, j'ai réalisé la première Sprite, et plein de programmes pour la faire tourner (rotation avec interpolation bilinéaire qui me donne des niveaux de gris). Comme c'est carrément lent, je pré-calcule toutes les sprites.
Petite question : lire dans une AppVar est il plus lent que lire directement des données de l'exécutable en ASM?

2

Comment penses-tu l'utiliser (l'AppVar) ? Je ne sais pas exactement comment elles fonctionnent, mais je croirais que oui, qu'il serait plus lent. Même si tu sauvegardes son addresse quelque part, il faudra ajouter un offset pour trouver la variable que tu cherches (bon, ou tu pourrais utiliser IX mais comme ça c'est assez lent). Une autre option c'est celle de la charger quelque part dans la RAM (comme AppBackUpScreen: 768 octets).

Jusqu'ici je ne l'avais jamais joué, mais il est amusant, peut-être un peu compliqué de programmer, je ne sais pas (comme je ne sais rien sur la physique), mais bonne chance tout de même smile

3

En faiAxe Parser propose de créer des variables et d'y stocker des données (avec une sauvegarde de l'adresse de la variable). Je ne sais pas comment c'est foutu exactement en interne, mais les buffers disponibles en Ram (AppBackUpScreen, et autres) n'ont pas l'air très pratiques à utiliser...
Bref, je vais faire des tests

4

Beau projet wink

+1 ça n'a pas l'air facile à programmer...
Rotation avec interpolation bilinéaire qui me donne des niveaux de gris

Huh pourquoi utiliser ça pour des niveau de gris??
Peux tu détailler un peu ce que tu fais?

Sinon concernant l'axe parser je n'y connais rien dsl sad

5

En fait, j'ai une sprite de base en 16x16 (la plus à droite) et j'ai besoin de lui appliquer des rotations.
Lgto
Le pb, c'est que lorsque je tourne l'image en cherchant le pixel de départ le plus proche du pixel d'arrivée, elle ne ressemble plus forcément à grand chose.
Par exemple, le pixel de l'oeil n'existe plus forcément dans l'image d'arrivée...
Idem avec l'interpolation bilinéaire quand je le fais en noir et blanc. Donc, pour qu'on ait l'impression qu'il s'agit vraiment de la même image, je grise certains pixels.
Mais je ne sais pas si je pourrais garder le jeu en 4 niveaux de gris quand j'afficherai plus de trucs...
http://polymathprogrammer.com/2008/10/06/image-rotation-with-bilinear-interpolation/

Pour le moment ça ressemble à ça :

NfPd

6

Bon, je veux bien de l'aide tongue
J'ai des petits soucis pour gérer le fond (les petites étoiles, les sprites des flocons si j'en mets, etc.).
Pour le moment, j'ai une variable X 16bits qui représente mon avancement dans le monde, et je stocke dans un buffer la position des 50 étoiles en Ex (8bits),Ey (8bits) à l'écran.

Régulièrement, je cherche quelles sont les étoiles non visibles à l'écran et pour ça je teste si :
Ex < X ; et plus précisément, si Ex < X%256 pour X%256 < 256-95 et sinon si (Ex < X%256) et (Ex > (X+95)%256).
Ca marche bien, mais ça ne me semble pas optimisé, vu que je fais tourner la boucle pour toutes les étoiles quand je fais ma vérif.
De plus, il faut aussi que je vérifie si mon étoile est pas en dessous ou au dessus de l'écran (variable Y).

S'il n'y avait que X, je verrais bien une file dans un tableau pour que ça reste trié, où je n'aurais qu'à tester si l'étoile la plus à gauche est visible. -> test en O(1), suppression et nouvelle étoile en O(1)
Mais avec Y, ça me complique les choses, et la file ne marche plus (sauf si je triche?? arme Toute étoile qui disparaît en haut ou en bas réapparait avec le même X de l'autre côté de l'écran??)
Comment vous gérez ça vous?

En fait, je veux gérer des images de tailles variables et de vitesse variable (mais je peux faire plusieurs structures)... grin

7

Ta triche a l'air pas mal. Je n'ai pas eu ce genre de problème mais j'ai quelques pistes...

Tu pourrais avoir un ecran divise en plusieurs créneau ou chaque créneau est une liste triée.
Les créneaux serviraient uniquement pour gèrer y et serait des
creneaux de 8 ou 16 pixels par exemple ( ou la taille de l'etoile).
Du coup lorsque tu es en position basse tu utilises par exemple L0 L1 L2 et L3 et lorsque que tu montes tu utilises L4 ( et L0 jusqu'à ce que L0 disparaisse)

Ou alors tu t'arranges pour avoir toujours le même nombre d'etoiles dans l'écran.Donc lorsque tu en perd une a droite un autre apparaît a gauche.Du coup tu t'arretes de parser des que tu as le bon nombre.

Ou alors tu tries a partir du centre du pingouin donc utiliser une matrice...
En utilisant l'eloignement (vecteur valeur absolue je crois).

Voilà ce qui me vient a l'esprit je ne sais pas si c'est réalisable...
Mais j'espère que ça peux aider wink

8

Moi, je propose que le fond soit peut-être un peu plus grand que l'écran (ou non) verticalement qui se repète. Et au lieu des étoiles, tu pourrais utiliser quelque chose un peu plus grande qui et ainsi n'avoir à mettre à jour que 5 ou 10 objets (d'ailleurs, le jeu est très rapide). Je crois que le plus simple serait d'avoir un buffer que tu décales, mais je ne sais pas comment on pourrait le faire en Axe (car je n'en sais rien :P).

9

Lire dans un programme externe est plus long et lourd que de lire dans le programme lui même puisqu'il faut jouer avec la VAT, du moins si mes souvenirs sont bons.

10

Oui, c'est un simple ROMCALL, mais si tu ne vas y accéder qu'une foi (comme pour charger quelque chose, un niveau, un jeu enregistré, par exemple) je suppose que ce ne serait pas mal. Et d'ailleurs, du moment que tu sauras où dans la VAT elle est, tu peux sauvegarder son addresse ou même charger ses données dans la RAM. Si tu n'as pas beaucoup de besoin de vitesse, je ne vois rien de mal à le faire comme ça, mais il faudrait mieux savoir pour quoi et comment tu veux l'utiliser.

A propos, j'aime beaucoup la capture d'écran, elle est très belle.

11

Alors ça en est où ??

Tu travailles toujours dessus?

12

Pour le moment, je ne touche plus au projet. Je ne sais pas si je le continuerai ; il y a beaucoup d'informations à afficher pour un écran de Ti.
Et puis il faut des niveaux de gris pour que ça rende correct, mais je suis pas sur que ça marchera à la vitesse où je veux faire tourner le jeu...

Je fais un clone de doodle jump en J2ME parce que le vrai jeu en J2ME rame sur mon portable, je vais essayer d'apprendre le google Go, et si j'ai le temps, je ferai peut être un clone de Doodle Jump pour Ti.

13

Dommage le jeu avait l'air super sad

Y a déjà un projet de doodle jump en cours je crois sur omnimaga. Tu peux peut-être t'en inspirer...

14

Ah ouaip, y'a déjà 2 personnes ont déjà codé doodle jump =P
Bon, bah tant pis.

Pour Learn to fly, pour le moment j'ai pas le temps ni la motivation, mais je reprendrai surement le projet plus tard

15

Ow yeah j'ai fini le jeu (flash) au "Day 42"

OMG \o

16

Learn to Fly 2 est sorti :-) Le but : détruire les icebergs!!!!! (j'ai même réussi à détruire la planête à un moment)