PDA

Voir la version complète : [GBA] Mister Jelly


Nrx
04/07/2006, 20h56
Mister Jelly
Monsieur tout mou
ALPHA
http://www.nrx.free.fr/GBA/MisterJelly/Screenshots/In-game01.png
Version 060906 (http://www.nrx.free.fr/GBA/MisterJelly/ROMs/MisterJelly.gba)


Présentation :
Voici une toute premiere version d'un petit moteur physique sur lequel je travaille depuis quelques temps : on y voit un "blob" dans un monde simpliste, sur lequel on agit en faisant tourner le decor. L'idee est de reprendre le principe de Loco Roco (jeu PSP)... meme si pour l'instant on en est tres loin :-'.

Galerie d'image :

http://www.nrx.free.fr/GBA/MisterJelly/Screenshots/In-game02.pnghttp://www.nrx.free.fr/GBA/MisterJelly/Screenshots/In-game03.png

Historique :
- 060906 : Modification de l'implementation de sqrt (gain en vitesse). Note : la gestion du GBAccelerometer est desactivee dans cette version en attendant que la detection de l'appareil soit correcte (sur le hard, le programme pense que l'accelerometre est branche meme lorsqu'il ne l'est pas).
- 060709 : Correction de la physique, correction de nombreux bugs, integration du GBAccelerometer, lissage du blob, optimisation (gain en vitesse), affichage en transparence du blob.
- 060704 : Implementation d'un 2nd type de blob.
- 060703 : Premiere presentation du moteur.

Comment jouer :
- [ L ] : rotation du monde a gauche,
- [ R ] : rotation du monde a droite,
- [ L ] et [ R ] : saut,
- [ A ] : diminue la pression interne du blob,
- [ B ] : augmente la pression interne du blob,
- [ fleches ] : deplacement de la camera,
- [ start ] : redemarrer avec un autre blob (2 types de blob dispo, avec et sans lissage).

Autres informations :
Sources : version 060906 (http://www.nrx.free.fr/GBA/MisterJelly/Sources/MisterJelly%20-%20060906.rar).

Pour info le blob est constitue d'un ensemble de sprites identiques (des simples ronds) ; ces elements constituent en realite un maillage de masses reliees entre elles par des ressorts (ressorts qui ont une certaine longueur au repos, une raideur et un amortissement). L'enveloppe externe est egalement soumis a la pression d'un gaz qui rempli le blob. Toutes ces elements sont donc soumis a des forces qui font qu'ils bougent a l'ecran : forces internes (ressorts & pression du gaz), et forces externes (gravite, impulsion du saut, et reaction du decor). Voila pour les "secrets" du moteur de gestion de blob ! :lol:

Bobby Sixkilla
04/07/2006, 21h03
:w00t: Comme le disait Patrick Bruel, "je sais bien que je l'ai trop dit, mais je te le dis quand même, je t'aime". :wub: Je teste ça ce soir!

thoduv
04/07/2006, 21h04
Waaa ca à l'air sympa et prometteur et déjà bien foutu (le moteur physique et les effets de déformation m'impressionent particulierement) ! :)
Et merci de vouloir faire profiter aux non-pspeux de ce super concept ! :w00t:

Sinon, j'ai pas compris à quoi servait la "pression interne" du blob ?

Alekmaul
04/07/2006, 21h11
Sympa, le rendu est pas mal.
J'ai regardé sous VBA comment tout cela était géré et je dois dire que j'ai un peu cherché où tu stockais les sprites, y'avais rien au début de la mémoire OAM :lol: :lol:
Cela me rappelle un peu les "jeux de sable" à faire couler de haut en bas.
Faudra trouver un concept de jeu sympa pour continuer.
Bonne continuation, Nrx

Japi
04/07/2006, 22h34
woww, je l'ai fait rentré en resonnance ou je sais pas quoi, il a explosé ^^

simonomis
04/07/2006, 22h52
j'adore:wub:
vivement la version finale^^

Brunni
04/07/2006, 22h58
Tiens, j'y pense maintenant mais j'avais essayé de reproduire le spécial stage de Sonic 1, qui ressemble un peu à ta démo, mais jamais réussi à avoir un truc réaliste pour la glisse sur les murs (voire même les sauts en fait, car le niveau tourne et modifie l'angle de la boule pendant son saut), mais ta démo masterize vraiment :w00t:
Sinon excellente l'idée d'utiliser des sprites pour composer la boule :) Vivement la suite, dont les collisions avec tous types d'objets :devil: ;)

Nrx
05/07/2006, 00h14
Merci a tous pour vos commentaires :).

Je viens de mettre en ligne une nouvelle version : un 2nd type de blob est maintenant disponible (appuyez sur [start] pour redemarrer et passe d'un type de blob a l'autre).

J'en ai profite pour mettre a jour la section "Autres informations", afin d'expliquer en 2 mots comment tout ca fonctionne :Pour info le blob est constitue d'un ensemble de sprites identiques (des simples ronds) ; ces elements constituent en realite un maillage de masses reliees entre elles par des ressorts (ressorts qui ont une certaine longueur au repos, une raideur et un amortissement). L'enveloppe externe est egalement soumis a la pression d'un gaz qui rempli le blob. Toutes ces elements sont donc soumis a des forces qui font qu'ils bougent a l'ecran : forces internes (ressorts & pression du gaz), et forces externes (gravite, impulsion du saut, et reaction du decor).
Donc oui, le blob a bien une "pression interne", pression qu'il est possible de modifier en appuyant sur [ A ] ou [ B ] : le blob sera plus ou moins "gonfle". La notion de pression est importante : Sans pression, le blob de type "ballon" serait completement plat (les elements tomberaient les uns sur les autres), Sans pression, l'autre type de blob serait souvent deforme (retournement d'une partie du maillage, un peu comme s'il y avait un "poc" qui inverse localement la surface).

@Japi : bien vu ! Il est effectivement possible de faire exploser le blob en le soumettant a une force trop grande (= il suffit d'appuyer plusieurs fois de suite sur [L] et [R] afin de le faire sauter tres vite et le projeter avec force contre le decor). Selon le type de blob utilise, les elements se remettent en place plus ou moins vite... et parfois jamais :p. Dans le cas d'un jeu reel, je me debrouillerai pour simplement eviter qu'il n'y ait des forces trop grandes ;).

@Brunni : eh oui, il va falloir que je m'attaque aux collisions, ce qui n'est pas forcemment le plus simple... Mais je pense faire quelque chose d'assez limite : il n'y aura qu'un seul blob a l'ecran (a la difference de l'excellent Loco Roco), et les seules collisions seront donc avec le decor. Pour le coup je me baserai sur la map : le numero de la tile m'indiquera si oui ou non il y a collision. Mais avant ca, j'ai encore pas mal de choses a regler dans le moteur, et je veux aussi implementer un autre type de blob (un truc tout en longueur)...

Japi
05/07/2006, 00h27
j'ai fait A puis B puis A et ainsi de suite tres vite et boomm ^^
Tres frais cette demo en tout cas

Nrx
05/07/2006, 00h37
j'ai fait A puis B puis A et ainsi de suite tres vite et boomm ^^Ah oui !! J'avais oublie ce cas (je fais rarement cette manip-ci) ; effectivement c'est une facon de "casser" les ressorts =_= (mais a priori ca ne marche qu'avec le blob de type "ballon" : l'autre blob est plus solide car il a egalement des ressorts internes).

Bobby Sixkilla
05/07/2006, 00h41
C'est dommage qu'un seul blob apparaisse à l'écran à la fois. Ca ne serait pas possible de rompre ton maillage? Je trouve ça rigolo que le blob explose et se divise en plein de petits blobs. ^^

Une petite idée comme ça : ça serait sympa de pouvoir créer son propre blob ou de pouvoir le régler. ^^

DJP
05/07/2006, 01h00
Dans le genre petit jeu rapide : Tamagochi Like :D
(il n'y en a pas beaucoup sur GBA...)

Yodajr
05/07/2006, 01h33
Génial, j'adore :)
Déja que j'adore le gameplay style loco roco :wub: , je trouve la physique de ton blob extra, c'est super pro B)

Tu compte implémenter la gestion du GBAccelerometer ? ;)

DJP
05/07/2006, 01h42
Tu compte implémenter la gestion du GBAccelerometer ? ;)

Ce n'est pas pour jouer mon chieur... mais je ne pense pas que pour 3 personnes (le fabriquant, toi et lui) il y ai vraiment un interet de perdre du temps là dessus (au moins au début du dev...)

Yodajr
05/07/2006, 02h08
Ce n'est pas pour jouer mon chieur... mais je ne pense pas que pour 3 personnes (le fabriquant, toi et lui) il y ai vraiment un interet de perdre du temps là dessus (au moins au début du dev...)
Nous sommes un peu plus que 3 ^^
L'intégration est pas trop compliqué, et de plus, c'est comme (j'exagère beaucoup, je te l'accorde) le rumble pack de starfox64 : un truc vendu à part de la console et ne fonctionnant que pour un seul jeu... pourtant les vibrations dans les jeux sont devenues ce qu'elles sont... ;)
Et quand bien même, je sais d'avance que Nrx le fera, je sais qu'il a vu comme moi le fun indéniable qu'apporte ce petit bidule :p

Riton
05/07/2006, 03h19
Ah cool comme idée ca ! :)
L'unique jeu qui me fait envi sur PSP c'est Loco Roco (c'est pour ca que je n'en ai pas ^^), alors merci de nous faire une sorte de portage sur gba.
Au fait c'est normal de pouvoir sauter a l'infini ?

The Wise
05/07/2006, 04h26
Impressionnant !

Joli boulot Nrx, j'adore. ;)

Y'a quelque chose à creuser en tout cas (Pas encore testé Loco Roco) :)

yopyop
05/07/2006, 11h26
Rien que cette démo est amusante alors vivement le jeu.

yopyop

Totoro
05/07/2006, 12h03
Je n'ai pas encore testé Mister Jelly. Mais ça m'a tout de suite fait penser à Gish.
Si vous ne connaissez pas, il existe une demo pour Linux, Mac et Windows.
Quelques screenshots (http://www.chroniclogic.com/index.htm?gishscreens.htm)

Voilà, c'est un peu hors sujet, mais ça peut donner des idées de gameplay :)

Japi
05/07/2006, 12h39
moi ça me fait penser à Globule sur Amiga où on controle un "truc" aussi et qui peut coller aux parois.
Un petit jeu de plateforme en 2d à scrolling multi, ça serait top. Pas de direction privilégier vu qu'on peut tourner l'ecran et des sauts à faire pour avancer.
Par contre, je sais pas si c'est normal, mais quand on est en l'air on peut encore sauter et encore et on peut un peu voler comme ça.

kinski
05/07/2006, 13h32
C'est tout bonnement une des meilleurs demos qu'il m'ait été donné de voir sur GBA !!!
J'adore, vraiment :)

Alto
05/07/2006, 14h32
excellent, tu penses arriver à masquer "l'astuce", qu'on est l'impression qu'il est tout lisse ?

Japi
05/07/2006, 15h26
pourquoi la masquer, ça à vraiment du charme comme ça, une boule de poil un peu.

N'empeche c'est genial, on a vraiment l'impression qu'il est tout mou et vivant, j'adore ^^

keithe
05/07/2006, 16h05
This game looks great! It has a really good feel. I'm looking forward to seeing the future developments.

You might be interested in this game called strange space - http://gdiac.cis.cornell.edu/2006sp/StrangeSpace/index.html

Bap65
05/07/2006, 17h27
Le premier type de blob ralentit avec la supercard :lol: par contre le deuxieme (celui que l'on peut faire "exploser") est en full speed ;)
Beau boulot, reste plus qu'a trouver un concept. C'est pour le moment une très très belle démo gba :wub:
Bon courage et bonne continuation ! :)

Nrx
09/07/2006, 02h25
[update]
Petite mise a jour : Correction de la physique,
correction de nombreux bugs,
integration du GBAccelerometer,
lissage du blob,
optimisation (gain en vitesse),
affichage en transparence du blob...
...et mise a dispo des sources (http://www.nrx.free.fr/GBA/MisterJelly/Sources/MisterJelly%20-%20060709.rar).

La ROM est dispo ici (http://www.nrx.free.fr/GBA/MisterJelly/ROMs/MisterJelly.gba).

C'est dommage qu'un seul blob apparaisse à l'écran à la fois. Ca ne serait pas possible de rompre ton maillage? Je trouve ça rigolo que le blob explose et se divise en plein de petits blobs. ^^Rompre le maillage c'est possible... afficher plusieurs blobs aussi (quoiqu'il ne faut pas exagerer)... le probleme c'est la gestion des collisions entre blobs : trop consommateur de CPU si on veut faire ca bien :(.
Une petite idée comme ça : ça serait sympa de pouvoir créer son propre blob ou de pouvoir le régler. ^^Ben, je ne compte pas implementer un editeur de blob dans la ROM ; par contre tu peux t'amuser un peu en modifiant le code source (ce n'est pas tres complique !).
Tu compte implémenter la gestion du GBAccelerometer ? ;)C'est fait ! (note : on peut jouer avec ou sans l'accelerometre, les touches [L] et [R] fonctionnent toujours)
Ce n'est pas pour jouer mon chieur... mais je ne pense pas que pour 3 personnes (le fabriquant, toi et lui) il y ai vraiment un interet de perdre du temps là dessus (au moins au début du dev...)Je suis d'accord avec toi, ca n'aurait pas du etre ma priorite... mais je n'ai pas pu m'en empecher !! :lol:
Au fait c'est normal de pouvoir sauter a l'infini ?Oui, c'est normal : pour le moment je ne verifie pas ou se trouve le blob lorsqu'on appuie sur [L] et [R], on peut donc sauter alors qu'on est deja en l'air... Ca me permet de tester le moteur (par exemple en ecrasant le blob violement contre un mur :ange:). Mais lorsque ce moteur physique deviendra un vrai jeu, j'ameliorerai le comportement ;).
excellent, tu penses arriver à masquer "l'astuce", qu'on est l'impression qu'il est tout lisse ?Ben j'etais d'accord avec Japi, j'aimais bien ce blob un peu "globuleux"... mais comme plusieurs personnes m'ont fait la reflexion, j'ai fait un effort : dans la version presentee aujourd'hui les blobs sont alternativement affiches avec et sans lissage :).
Le premier type de blob ralentit avec la supercard :lol: par contre le deuxieme (celui que l'on peut faire "exploser") est en full speed ;)Effectivement, le nombre de liens internes du 1er type de blob faisait qu'il prenait trop de CPU (en tout cas plus que le second blob, dont la structure est bien plus simple). Bref, j'ai regle le probleme en optimisant le code (en particulier, j'ai cree une LUT pour la racine carree => tout est bien plus rapide !!).


Voila pour ce soir ! Merci encore pour vos commentaires et encouragements ! :wub:

DJP
09/07/2006, 02h50
Très sympa le rendu lissé...
Vivement un but :p

Yodajr
09/07/2006, 04h44
Très beau boulot :)
Comme DJP, vivement le jeu ;)

omg
09/07/2006, 11h20
WOOOooo! Toujours dans l'originalité et toujours sur des terres inexploitées par les codeurs à ce que je voir Nrx! Merci!

MrHelmut
09/07/2006, 11h36
Impressionant. Il ne manque que des sons sexy :p.

Japi
09/07/2006, 17h00
je cours tester mais pour continuer la discussion. Je trouvais tres bien que ça soit en petits globules, ça différenciait bien ton jeu de loco rocco, on etait alors pas sur une pale copie mais un nouveau design vraiment sympa.
Je vais voir ce que ça donne mais mon avis avant le test est celui là.

EDIT: je preferais en petit globul mais c'est juste mon point de vu perso, les gouts et les couleurs ^^

Nrx
12/07/2006, 15h47
EDIT: je preferais en petit globul mais c'est juste mon point de vu perso, les gouts et les couleurs ^^T'inquiète pas Japi, je proposerai évidemment plusieurs types de blobs... et compte bien conserver mon type original (le "globuleux"). En fait j'aimerais que chaque niveau ait son blob, avec des caracteristiques particulières qui aient un effet sur le gameplay (plus ou moins mou, plus ou moins gros, etc.)...

Sinon, je vous préviens que le développement va prendre du retard : mon disque dur vient de lacher ! >_< :cry: (là je post à partir du boulot) Je n'ai évidemment pas perdu mes sources, puisqu'ils sont publics (dispo sur mon ftp), mais il faut maintenant que je me rachète un disque, réinstalle tout le système, VisualHAM, Cygwin, etc. Je suis vraiment dégouté !! (Pas le moral aujourd'hui... :()

A bientôt, j'espère :cry:

Bobby Sixkilla
12/07/2006, 15h55
Bon courage. ^^ Ca montre à quel point il faut être prudent. Il ne faut jamais faire confiance en un HDD. :S

Jon eBegood
12/07/2006, 16h06
Après avoir lu la présentation du projet, vite cherché le lien vers la rom, et moins vite testé, je me fondrais dans la masse avec un whaouhhh...

J'allais ajouté vivement que ce soit fini puis j'ai lu ton dernier post et je te dirais plutôt bonne merde pour ton HDD...

thoduv
12/07/2006, 16h13
T'inquiète pas Japi, je proposerai évidemment plusieurs types de blobs... et compte bien conserver mon type original (le "globuleux"). En fait j'aimerais que chaque niveau ait son blob, avec des caracteristiques particulières qui aient un effet sur le gameplay (plus ou moins mou, plus ou moins gros, etc.)...

Sinon, je vous préviens que le développement va prendre du retard : mon disque dur vient de lacher ! >_< :cry: (là je post à partir du boulot) Je n'ai évidemment pas perdu mes sources, puisqu'ils sont publics (dispo sur mon ftp), mais il faut maintenant que je me rachète un disque, réinstalle tout le système, VisualHAM, Cygwin, etc. Je suis vraiment dégouté !! (Pas le moral aujourd'hui... :()

A bientôt, j'espère :cry:
Je compatis, le mien viens de me faire pareil... :(

En tout cas j'ai jeté un oeil au source, et ben le moteur physique est bien impressionant, et la gestion des blobs et des parties de blob également ! :S

Bobby Sixkilla
12/07/2006, 16h14
N'est pas Nrx qui veut petit Padawan! :lol:

Lestat
14/07/2006, 22h35
Arf, dommage, Mathilde me fait dire : "Ton pote devrait faire un jeu ou on fait une course de blob dans différents niveaux (eau, terre, pics...)", avec en plus un mode 2 joueurs ça pourrait le faire...comme le jeu de voley avec les blobs, il était pas mal lui aussi..."

P.s : à Charly, ouais, le jeu de volley il était pas mal...quand là reprise du dev ? :p

tom graal
16/07/2006, 12h59
Je viens de tester et WOW !!

C'est vraiment trés jolie et le moteur est assez impressionant, en plus tu est tout seul, tu devrais peut etre essayer de te faire une ptite team pour develloper le jeu, pour ce qui est musique et creation de lvl, ça pourrais te soulager, en tout cas ça me motive a me mettre a la programmation de dev sur gba !

encore merci !

omg
24/07/2006, 15h27
Je voudrais bien voir ce que ça donnr avec l'accelerometre!

Eife
03/09/2006, 15h35
on vient de me parler de ce projet, j'etais pas la en juillet donc j'avais pas suivi...
mais la, je vais le tester de suite, en plus les commentaires sont bons ;)

(pis nrx = qualité obligée!)

[edit] boot pas sur SC CF... la rom fait 32Ko c'est pas un peu petit?
bref, j'ai une merd' quelque part

Bobby Sixkilla
03/09/2006, 15h46
Ca marche très bien sur EZFA en tout cas. ^^ A quand une nouvelle version? :wub:

Nrx
03/09/2006, 16h02
boot pas sur SC CF... la rom fait 32Ko c'est pas un peu petit?
bref, j'ai une merd' quelque part
Ah ? :huh: Ca marche chez moi sur SC SD (et aussi sur F2A), je ne vois pas ce qui peut poser probleme... Tu as bien passe la ROM par le soft SC ? (au final elle est bien plus grosse normalement).
Ca marche très bien sur EZFA en tout cas. ^^ A quand une nouvelle version? :wub:Euh... je ne sais pas quand je pourrai me remettre a la programmation GBA :unsure: : comme je l'expliquais il y a quelques temps, j'ai demissionne de ma boite (Thales, pour ne pas la nommer), et si tout va bien je commence la semaine prochaine un nouveau boulot... dans le jeu video !! Si c'est bien confirme, je vais etre a 100% sur ce nouveau projet :wub: (en fait j'ai deja commence depuis 1 mois =_=) Ca ne veut pas dire que je laisse tomber mon Mister Jelly - je compte bien avancer un petit peu et le passer du stade de "l'alpha" a la "beta" ! Principalement, je voudrais mettre en place la structure de gestion des niveaux et gerer vraiment le GBAccelerometre ; je ferai ca des que j'aurais du temps libre ;).

Bobby Sixkilla
03/09/2006, 16h07
Petit cachotier!!! Je savais que tu trouverais un taf qui te plairait! :) Si tu as besoin d'un très bon avocat... :whst: (j'ai certainement des primes si je leur ramène des clients... :D )

Bap65
03/09/2006, 16h36
Eife, ça marche très bien sur SC cf, juste un peu lent, mais ça le jour ou la SC ferra tourner un jeux gba normallement.. :ph34r:

Nrx
05/09/2006, 00h30
Petit cachotier!!! Je savais que tu trouverais un taf qui te plairait! :) Si tu as besoin d'un très bon avocat... :whst: (j'ai certainement des primes si je leur ramène des clients... :D )J'espere que je n'aurai pas besoin d'avocat ! :D (mais si ca arrive, je penserai a toi - promis !)

Pour le coup j'avoue que ce taf c'est un peu un reve qui se realise... Je ne suis pas certain d'avoir le droit d'en parler sur un forum public, mais je peux vous dire que c'est pour un tres gros studio de dev ! Bon, c'est pas pour bosser sur la Wii, mais sur telephone mobile ; cela etant, je suis super content ! :graduated

Yokan
06/09/2006, 12h33
Oh magnifique ^^

Ma copine à vu et elle à dit : "c'est mignon !!"
Bon courage pour la récuperation de ton disque !

J'aimerais te composer quelque musique pour ton jeu et lorsque tu en aura besoin, fair un niveau, vu que je bosse dans le Level Design (Sur le prochain Rayman sur DS)
J'ai jamais jouer a LocoRoco, et ca peut amener quelque chose de frais, non ? Mais j'vais quand meme zieutez des vidéos ^^

Tu peuxme contacter par mail si tu es interresser ^^

Foxy
06/09/2006, 15h52
Euh... je ne sais pas quand je pourrai me remettre a la programmation GBA :unsure: : comme je l'expliquais il y a quelques temps, j'ai demissionne de ma boite (Thales, pour ne pas la nommer), et si tout va bien je commence la semaine prochaine un nouveau boulot... dans le jeu video !! Si c'est bien confirme, je vais etre a 100% sur ce nouveau projet :wub: (en fait j'ai deja commence depuis 1 mois =_=)

Héhé, Thierry a été plus rapide que moi ? :D
Bon je vais attendre un peu avant d'essayer de te debaucher pour venir bosser chez la concurrence ;)

En tout cas bon courage et passe le bonjour à toute l'équipe (du moins si c'est bien à ceux que je pense :lol: )

Nrx
06/09/2006, 22h22
[36-15 Ma vie]
Héhé, Thierry a été plus rapide que moi ? :D
Bon je vais attendre un peu avant d'essayer de te debaucher pour venir bosser chez la concurrence ;)

En tout cas bon courage et passe le bonjour à toute l'équipe (du moins si c'est bien à ceux que je pense :lol: )Ahhhh... si tu m'avais contacte plus tot... travailler dans le sud, avec toi en plus, je n'aurais pas dit non !! :-'

Je passe voir l'equipe dont tu parles demain soir, je leur transmettrai ton bonjour :).
Par contre, je ne vais en fait pas bosser pour eux : grace a Thierry je rentre chez K----- (indice : c'est un studio japonais tres connu ^^).
[/36-15 Ma vie]


Pour revenir un peu a Mister Jelly, je viens de modifier mon implementation du calcul de la racine carree. Avant j'utilise la methode de "Heron d'Alexandrie" (aussi connue comme la "methode iterative de Newton") :signed long CODE_IN_IWRAM CommonSqrt__(signed long x)
{
signed long sqrt,precision;

sqrt=x;
do
{
precision=sqrt;
sqrt=(sqrt+x/sqrt)>>1;
precision-=sqrt;
}
while(precision>1);
return(sqrt);
}Cet apres midi, je suis tombe un peu par hasard sur une explication de comment la racine carree est implementee dans les circuits integres (voir sur ce site (http://tima-cmp.imag.fr/~guyot/Cours/Oparithm/francais/Extrac.htm)) ; j'en ai deduis l'implementation suivante (je peux vous donner ma demonstration de la chose si ca vous interesse - ce n'est pas tres difficile :))
:signed long CODE_IN_IWRAM CommonSqrt(signed long a)
{
signed short n,m;
signed long q,d;

for(n=0,q=a;q>3;q>>=2,++n);

q=0;
for(m=1<<n;m;--n,m>>=1)
{
d=(q+m)<<n;
if(a>=d)
{
a-=d;
q+=m<<1;
}
}
return(q>>1);
}Resultat (calcul des racines carrees des nombres de 0 a 500000) : Ancien algo : 7134 VBL, Nouvel algo : 446 VBL !=> ce nouvel algorithme est 16x plus rapide !! (il est particulierement plus performant lorsque les nombres sont grands)

Du coup l'init de ma LUT dans Mister Jelly passe de 21 a 3 VBL - youpi !

Note : je n'ai pas encore mis la ROM a jour sur mon FTP, je fais ca des que possible.

thoduv
06/09/2006, 22h26
Ah d'ailleurs Nrx, en regardant ton code, je me demandais pourquoi tu calculais la LUT au démarrage, plutot que de la calculer sur ton PC et de l'inclure binairement au programme ?
Y'a un truc que je dois pas capter vu que j'ai jamais utilisé ce genre de choses.

Nrx
06/09/2006, 22h36
Ah d'ailleurs Nrx, en regardant ton code, je me demandais pourquoi tu calculais la LUT au démarrage, plutot que de la calculer sur ton PC et de l'inclure binairement au programme ?
Y'a un truc que je dois pas capter vu que j'ai jamais utilisé ce genre de choses.Ben c'est tout betement pour que la ROM soit plus petite :).
(aussi, c'est plus simple : pas de programme separe, pas de compilation autre que pour la GBA...)

[Edit] Ca y est, j'ai uploade la nouvelle ROM et le code source modifie sur mon FTP (cf. le 1er post du topic pour les liens).

deug21
07/09/2006, 19h45
vraiment très bon jeu !
ps : thoduv tu a 999 messages !

Nrx
08/09/2006, 21h32
Bon, apres 2~3 tests il apparait qu'on peut encore ameliorer un peu les perfs de la fonction de calcul de la racine carree en mettant toutes les variables sur des long (plutot que d'en avoir sur des short) :signed long CODE_IN_IWRAM CommonSqrt(signed long a)
{
signed long n,m,q,d;

for(n=0,m=a;m>3;m>>=2,++n);

for(q=0,m=1<<n;m;--n,m>>=1)
{
d=(q|m)<<n;
if(a>=d)
{
a-=d;
q|=m<<1;
}
}
return(q>>1);
}C'est tout bete mais donne un gain de 17% lorsqu'on calcule les racines de tous les nombres de 0 a 500000.

Pour info j'ai egalement essayer de supprimer la variable "m", la boucle devenant alors :for(q=0;n>=0;--n)
{
d=(q|(1<<n))<<n;
if(a>=d)
{
a-=d;
q|=2<<n;
}
}...mais c'est en fait plus lent (par contre cette version est a priori plus rapide en Java !).

Bref, si vous avez un algo encore plus rapide, je suis preneur (note : pas d'assembleur - mon but c'est au final de le faire en Java)


[Edit]

Pour le fun, voici la version la plus rapide à laquelle je suis parvenu en Java : public final static int sqrtNrx(int a) {
int d,q;

if(a>=(1<<30)) {a-=1<<30;q=2<<15;} else q=0;
d=(q|(1<<14))<<14; if(a>=d) {a-=d;q|=2<<14;}
d=(q|(1<<13))<<13; if(a>=d) {a-=d;q|=2<<13;}
d=(q|(1<<12))<<12; if(a>=d) {a-=d;q|=2<<12;}
d=(q|(1<<11))<<11; if(a>=d) {a-=d;q|=2<<11;}
d=(q|(1<<10))<<10; if(a>=d) {a-=d;q|=2<<10;}
d=(q|(1<< 9))<< 9; if(a>=d) {a-=d;q|=2<< 9;}
d=(q|(1<< 8))<< 8; if(a>=d) {a-=d;q|=2<< 8;}
d=(q|(1<< 7))<< 7; if(a>=d) {a-=d;q|=2<< 7;}
d=(q|(1<< 6))<< 6; if(a>=d) {a-=d;q|=2<< 6;}
d=(q|(1<< 5))<< 5; if(a>=d) {a-=d;q|=2<< 5;}
d=(q|(1<< 4))<< 4; if(a>=d) {a-=d;q|=2<< 4;}
d=(q|(1<< 3))<< 3; if(a>=d) {a-=d;q|=2<< 3;}
d=(q|(1<< 2))<< 2; if(a>=d) {a-=d;q|=2<< 2;}
d=(q|(1<< 1))<< 1; if(a>=d) {a-=d;q|=2<< 1;}
if(a>=(q|1)) q|=2;

return(q>>1);
}(évidemment, il faut tester sur hard -dans mon cas sur téléphone portable- pour vérifier les perfs réelles... sur mon PC "Math.sqrt" gagne toujours =_=)

omg
19/10/2006, 00h42
Alors ce GBA Accelerometer?
Je suis en train de compiler ton avant derniere version. ;)

Bobby Sixkilla
19/10/2006, 01h32
Alors ce GBA Accelerometer?
Je suis en train de compiler ton avant derniere version. ;)
Ca m'intéresse. ;)

omg
19/10/2006, 01h43
Ben vachement Sympa!!!!
Tu en est où NRX?
Bobby je te l'envoi par mail!

[EDIT] Hey!!!! J'avais po fais gaffe qu'en appuyant sur START on avait droit à un nouveau personnage (qui me plait trop!!!)

Nrx
22/09/2008, 16h03
Comme l'a fait Nhut (http://www.playeradvance.org/forum/member.php?u=187) avec Lily (http://www.playeradvance.org/forum/showthread.php?t=846) et Fleur (http://www.playeradvance.org/forum/showthread.php?t=315), je pense qu'il est temps pour moi d'officiellement clore ce topic : j'aurais aimé pouvoir continuer le développement de ce Mister Jelly, mais il faut se rendre à l'évidence... Le projet est en pause depuis déjà 2 ans et je n'ai plus le temps d'y travailler. M'enfin, qui sait, ce jeu renaitra peut-être un jour sous une autre forme, une autre plateforme !

Bobby Sixkilla
22/09/2008, 17h08
C'est dommage. Il avait du potentiel ce projet. J'espère que tu nous feras un remake sur une autre plateforme. ;)

D'ailleurs, tu comptes te remettre au dev amateur ou ton taffe te prend trop de temps et te retire l'envie?

Yodajr
22/09/2008, 17h10
Nrx, il manque quoi dans les faits à ton moteur pour en faire un jeu ?

Nrx
22/09/2008, 17h25
J'espère que tu nous feras un remake sur une autre plateforme. ;)He he... ce n'est pas complètement impossible ! :p
D'ailleurs, tu comptes te remettre au dev amateur ou ton taffe te prend trop de temps et te retire l'envie?Le dev amateur c'est un peu cuit pour le moment : vraiment pas le temps... Mais je ne dirais pas que ça m'a retiré l'envie, mais plutôt "le besoin" !
Nrx, il manque quoi dans les faits à ton moteur pour en faire un jeu ?Il est difficile de répondre correctement, car évidemment ça dépend de ton game design (= de ce que tu veux réellement faire avec ce blob). Le truc principal serait probablement de mettre en place la gestion des collisions du blob avec une tilemap quelconque, histoire qu'on puisse le déplacer dans un décor fait de murs, de pentes, etc. (sauf si tu pars pour un rendu vectoriel du décor, mais sur GBA ce n'est pas la solution la plus simple). Il serait aussi sympa de gérer la collision entre plusieurs blobs... à voir. T'es tenté par reprendre le projet ? :)

Yodajr
22/09/2008, 17h44
Bien sûr, mais en même temps je suis tenté par 1/2 milliard de choses à la fois, et les 24H par jour et mes compétences me ramènent à la réalité :p
Un petit jeu sympa de plateforme avec ton moteur claquerais méchant, mais il manque beaucoup plus de trucs que je ne le pensais de prime abord ^^

Par contre ! tu en a dit trop ou pas assez ici :w00t: :
He he... ce n'est pas complètement impossible ! :p

Nhut
07/10/2008, 12h35
Bienvenue au club Nrx ^^

Tu verras, ça va beaucoup mieux quand on décide de clôturer les vieux projets pour aller de l'avant. Un peu comme quand on décide de larguer définitivement son ex pour vraiment s'investir dans une relation sérieuse avec l'actuelle copine :D

Nrx
09/10/2008, 14h50
Par contre ! tu en a dit trop ou pas assez ici :w00t: :Disons juste que pendant mon temps libre à la maison je me suis amusé à porter ce blob sur iPhone (qui a un accéléromètre :whst:) et suis en train de finaliser la gestion des collisions entre blobs... On verra bien si on peut en faire quelque chose ! (j'ai plein d'idées en fait !! :lol:)

@Nhut : :D