1

Salut tout le monde!

J'ai récemment terminé le noyau d'un jeu de plate-formes en deux-dimensions (je ne ferai pas de pub) et je serai curieux de savoir le nombre de gens qui se sont bien amusés à ça et quelles ont été leurs plus grandes difficultés...

Pour ma part, c'était le support de plate-fomes inclinées de toutes sortes (un truc qui tient bien comme dans Sonic sur Mega-drive) et l'eau (on passait tt le temps à travers les murs par le bas happy).
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

2

Bah moi, j'ai commencé un petit truc, mais ça ne correspond peut-être pas à ce que tu attends : http://perso.wanadoo.fr/jackiechan68k/Rotofall.htm (regarde en bas, tu auras les screenshots les plus récents)

3

Poilant!
Je me rappelle quand je m'étais amusé à faire un truc dans ce genre mais... en TI-BASIC tsss
Je vois que tu t'amuses à clipper tes lignes. Pour ma part, le jeu est entièrement basé sur une routine de sprites clippée. En gros, je dessine toute la map, et si ça sort de l'écran c pas grave. Il arrive au jeu de dessiner des sprites (ennemis) à des positions du style -359,1803. Dans ce cas ils sont ignorés. Voici un petit screenshot. J'ai dit que je ne voulais pas faire de pub mais bon c juste comme ça. J'ai choisi un endroit moche comme ça il ne fera pas trop envie:
Mario
C'est pour expliquer un peu comment. Bon ben en fait j'écris hors de l'écran ça c'est sûr. Verticalement et horizontalement. Verticalement c'est très facile de clipper; il suffit de regarder si y (variable verticale) est inférieure à 0 et, le cas échéant d'augmenter l'adresse du sprite de -y et de diminuer également la hauteur du sprite de -y. En gros si on fait:
Sprite8(0,-1,8,decu,LCD_MEM,1);
cela correspond finalement à:
Sprite8(0,0,7,decu+1,LCD_MEM,1);
Pas plus compliqué que ça. Mais j'ai rien trouvé de RAPIDE pour le clipping horizontal. En fait, pour l'instant ma routine regarde simplement (pour un sprite16) si la position x est inférieure à -15 ou supérieure à +159 et retourne si c'est le cas (ne fait rien). En gros, le clipping n'est pas à 0 mais à 1 dans mon cas pour éviter que des sprites dessinés trop à gauche ne viennent détruire ce qui se trouve sur la ligne du haut car:
Sprite16(-10,0,... est équivalent à Sprite16(230,-1,... et donc créera un plantage dans ce cas. C'est compliqué je sais mais efficace. Je bidouille mais en attendant j'ai entièrement écrit ce moteur moi-même...
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

4

J'ai aussi écrit des fonctions d'affichage de sprite clippées.
Pour le clipping vertical, je fais comme toi.
Et pour le clipping horizontal, je n'ai pas trop compris ton truc : si on veut afficher un sprite entre 0 et -15 on doit faire comment ?
Je peux te passer des fonctions clippées si tu veux (écrites en ASM).

5

love OUI OUI OUI! Je serais vraiment content d'avoir tes routines! (je sais pas si le smiley est vraiment le plus adapté...)
Et pour le clipping horizontal, je n'ai pas trop compris ton truc : si on veut afficher un sprite entre 0 et -15 on doit faire comment ?
Le fait est simplement que je n'ai pas besoin de clipping horizontal! J'annule la fonction dans le cas où on dessinerait vraiment le sprite trop loin (du genre SpriteX(160,.. qui ne sert plus à rien.) sinon le clipping horizontal doit pas mal ralentir non?

Mais voilà déjà ma routine:

void SPRITE_16(short x,short y,short h,unsigned short* sprite,unsigned short* sprite1,unsigned short* sprite2,void* dest1, void *dest2) {
if (x<-15 || x>159) return;
if (y<1) {
sprite+=1-y;
sprite1+=1-y;
sprite2+=1-y;
h-=1-y;
y=1;
}
if (y+h>92) h-=(y+h-92);
if (x<0) {
x=240+x;
y--;
}
if (h<0) return;

register long addr1 = (long)dest1+(y<<5)-(y<<1)+((x>>3)&0x1e);
register long addr2 = (long)dest2+(y<<5)-(y<<1)+((x>>3)&0x1e);
register unsigned short cnt = 16-(x&15);
for (;h;h--,addr1+=30,addr2+=30) {
//MASQUE
*(long*)addr1&=~((long)~((*sprite) & 0xffff)<<cnt);
*(long*)addr2&=~((long)~((*sprite++) & 0xffff)<<cnt);
//AFFICHE
*(long*)addr1|=(long)((*sprite1++) & 0xffff)<<cnt;
*(long*)addr2|=(long)((*sprite2++) & 0xffff)<<cnt;
}
}

Cette routine fait TOUT en même temps; le masque, le sprite clair, le sprite foncé sur les deux plans définis. Mais voici une des fonctions de départ que j'avais réalisé pour mon Sonic (ah...) J'avais réalisé mes propres routines à l'époque... mais maintenant j'utilise simplement celles de extgraph. Ca marche bien et c'est rapide. J'ai juste ajouté mon code de clipping au départ:

void Sprite16_OR(short x,short y,short h,unsigned short* sprite,void* dest) {
if (x<-15 || x>159) return;
if (y<1) {
sprite+=1-y;
h-=1-y;
y=1;
}
if (y+h>92) h-=(y+h-92);
if (x<0) {
x=240+x;
y--;
}
if (h<0) return;
register long addr = (long)dest+(y<<5)-(y<<1)+((x>>3)&0x1e);
register unsigned short cnt = 16-(x&15);
for (;h;h--,addr+=30) *(long*)addr|=(long)((*sprite++) & 0xffff)<<cnt;
}

Tu peux me les envoyer à f.bron@isuisse.com ou bien la mettre sur ce forum. Ca aidera des gens peut-être... Merci en tous cas.
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

6

Je crois qu'il y a un paquet ici : http://perso.wanadoo.fr/jackiechan68k/sources/GrayClipSprite.zip leur fonctionnement est le même que les fonctions d'extgraph, donc tu ne devrais pas être dépéaysé, et utilise bien les prototypes fournis.

7

Ouah c'est superbe ça... (en d'autres termes merci beaucoup!) Tu sais que l'équipe de TIGCC cherchait des routines de sprites clipées pour les débutants... Tu devrais les leur proposer si ça ne te gène pas...
Que signifie le _R à la fin du nom de certaines routines?
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

8

Oups... J'y pige rien à tes routines asm. C'est pas un reproche, c'est moi qui suis nul en ASM. A part ça, je devrais pouvoir les utiliser.
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

9

Brunni
: J'ai choisi un endroit moche comme ça il ne fera pas trop envie:

Chevilles ? roll (t'inquiete pas y'en a déjà des mario sur Ti wink)

Heu sinon vu tes routines tu devrais gagner pas mal en vitesse en utilisant celles de Jackiechan grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

10

Chevilles ? (t'inquiete pas y'en a déjà des mario sur Ti )
Là je ne comprends pas ce que tu veux dire...
Heu sinon vu tes routines tu devrais gagner pas mal en vitesse en utilisant celles de Jackiechan
Hm... Tu crois vraiment? Je ne sais pas car il faudrait que je les modifie un petit peu... et comme je ne comprends rien j'ai meilleur temps de laisser tomber. Ce sera pour un autre jeu!
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

11

Brunni
:Là je ne comprends pas ce que tu veux dire...

Que ton "J'ai choisi un endroit moche comme ça il ne fera pas trop envie" ça fait légerement prétencieux, alors qu'un Mario c'est pas une révolution dans le domaine des Ti wink
Hm... Tu crois vraiment?

Bah tes routines sont en C, elles sont pas trop mal optimisées mais elle sont bien plus lentes que celles de Jackiechan (même pas besoin de tester pour vérifier...)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

12

Vertyos :> Que ton "J'ai choisi un endroit moche comme ça il ne fera pas trop envie" ça fait légerement prétencieux, alors qu'un Mario c'est pas une révolution dans le domaine des Ti
Je vois. Effectivement mais mon but au départ était de créer un sujet à propos des jeux 2D en général et ne pas faire la frime avec mon jeu. C'est pour cela que j'ai fait une screenshot pas trop valorisante. Je ne veux pas non-plus recevoir des mails me demandant quand c'est qu'il sort tu comprends?
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

13

Hum c'est pas pour te vexer mais je ne pense pas que tu reçoive beaucoup de mails pour un Mario, quels que soient les screenshots que tu met. Enfin c'est toi qui voit.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

14

Bah, si son Mario est en _nostub, alors je suis très intéressé. smile
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

15

lol simplement pour la pub, pas pour le mario en lui-même tongue
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

16

J'aime bien jouer à Mario contrairement à ce que tu as l'air de penser.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

17

Moi aussi j'aime bien mario (en tous cas celui que je suis en train de créer). Il y'a des blocs spéciaux, des pouvoirs spéciaux, des blocs, des ennemis, des boss. Il faut trouver les étoiles cachées, certains blocs envoyent des épines tout droit vers eux lorsqu'on les touche. Ces épines cassent tous les blocs sur leur passage (et peuvent également toucher d'autres blocs qui enverront leur propres épines) enfin bref, de monstres réactions en chaine (déjà là depuis mon Mario2, mais je vais les réimplémenter). Plein de pouvoirs, des plate-formes inclinées, de zolis effets graphiques, une nouvelle technologie de gris, en plus un plan d'extension pour des maps encore meilleures! Et ce n'est pas tout mais chut! Il est en _nostub. Je vais mettre Mario1 et Mario2 sur mon site à l'occas. Le problème c'est qu'ils ne sont pas finalisés (il faut entrer le nom du fichier niveau comme argument, y'a pas les cheats, ...) Mais Mario 1 et 2 sont en noir blanc, mais y'a un scrolling différentiel ce qui les rend tout particulièrement attirants graphiquement. (l'arrière-plan est désactivable)
Et moi qui ne voulais pas faire de pub! Je me suis trahi... devil
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

18

roll

On peut voir à quoi ressemblent tes "plates-formes inclinées" ?

19

A ça. Tu vois ce petit "chamignon". Eh ben les pans extérieurs sont inclinés. C'est dur à gérer. La plupart des jeux sur TI ne proposent que des plates-formes "carrées" en fait.
mario2.bmp
C'est ce que je craignais. Il est impossible de parler de quelque chose sans faire de pub... pfff!
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

20

tu parles... tu l'avais bien préparée ta pub oui wink
pour des jeux gérant des plans inclinés, SMA et FER3C me viennent bien sûr à l'esprit, à par ça je ne suis pas très joueur et je ne sais pas trop ce qui s'est fait d'autre ... smile
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

21

Oui, SMA et FER3C les gèrent totalement, c'est ce que j'allais dire smile

22

bah en tout cas j'en connais pas beaucoup ( en fait aucun) qui fassent ça.
Et puis ce serait bien un mario qui soit à jour parce que personellement j'en ai pas trouvé beaucoup qui tournais sur ma 92+ et qui soit intéressant. (je sais je suis exigeant)

Brunni > Ils ont une extension particulière tes niveaux ? Parce que si c les cas, je me suis fait des fonctions de recherches de fichiers par extension qui renvoient un HSym ou à peut près ce que tu veux... En fait, j'ai fait un modèle que j'adapte suivant mes besoins.

[edit] faute de frappe
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

23

Brunni :
Et moi qui ne voulais pas faire de pub! Je me suis trahi... devil
Brunni
: C'est ce que je craignais. Il est impossible de parler de quelque chose sans faire de pub... pfff!

Mais bien sûr... Tu poste des images et à part ça tu voulais pas faire de pub roll
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

24

> Tu sais que l'équipe de TIGCC cherchait des routines de sprites clippées pour les débutants...
C'est la TIGCC Team ou TICT ? Ces deux équipes ne sont pas les mêmes, même si ici, on les confond souvent. Elles travaillent beaucoup ensemble: TICT fait de la documentation de fonctions d'AMS pour la doc de TIGCC ou de nouvelles fonctions pour TIGCCLIB.

> Tu devrais les leur proposer si ça ne te gêne pas...
C'est fait... Elles seront intégrées à ExtGraph dans un premier temps, et ExtGraph sera intégrée à TIGCCLIB dans un second temps, quoi qu'en disent certains ici - il n'y a qu'ici que ça gêne quelqu'un.

> Que signifie le _R à la fin du nom de certaines routines?
Ca signifie que ces routines prennent leurs paramètres par registres, contrairement à celles des versions antérieures d'ExtGraph qui prennent toutes tous leurs paramètres par la pile.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

25

EvaSDK :> Ils ont une extension particulière tes niveaux ? Parce que si c les cas, je me suis fait des fonctions de recherches de fichiers par extension qui renvoient un HSym ou à peut près ce que tu veux... En fait, j'ai fait un modèle que j'adapte suivant mes besoins.
Mes niveaux sont pour l'instant des fichiers textes. En fait on peut même les programmer en utilisant l'éditeur de textes de la TI (ou Text Walker car on a un plus grand écran, donc c'êst mieux) OU en utilisant l'éditeur intégré au jeu qui optimise un peu plus le code des niveaux et qui en plus est complètement graphique. Donc on voit directement à l'écran ce qu'on verrait pendant le jeu. Mario 1 utilise un immense fichier texte de 15 ko. Mais il m'arrive tout de même de l'éditer moi-même avec Text Walker, car en fait l'éditeur de Mario ne supporte pas les niveaux combinés (ici les 19 niveaux sont tous en un fichier en fait, séparés par un ©), donc si on l'édite avec l'éditeur Mario, on ne verra que le premier niveau.
Vertyos :> Mais bien sûr... Tu poste des images et à part ça tu voulais pas faire de pub
OK j'arrête! L'image que j'ai postée c'était pour illustrer les plate-formes inclinées, pas pour faire de la pub. Excuse-moi mais je ne voyais pas d'autre moyen d'illustrer cela.
EvaSDK :> Et puis ce serait bien un mario qii doit à jour parce que personellement j'en pas trouvé beaucoup qui tournais sur ma 92+ et qui soit intéressant. (je sais je suis exigeant)
Avec moi tu es bien tombé car j'accorde presque autant d'importance à la stabilité (et la fonctionnalité sans oublier la taille) de mes jeux qu'à celle de mon éditeur de textes! Je ne laisserai jamais passer une barre noire. A noter que ca n'est jamais arrivé avec aucun des trois marios (à part en plein "débugging").
XDanger :> Ca signifie que ces routines prennent leurs paramètres par registres, contrairement à celles des versions antérieures d'ExtGraph qui prennent toutes tous leurs paramètres par la pile.
C'est plus rapide que d'empiler les arguments je pense. J'ai vu sur les prototypes des trucs du genre short x asm("d0"). Mais ça n'est pas dangereux pour le fonctionnement des progs C? Si on utilise le registre a6 par exemple, ça plantera à tous les coups après... (faut enlever OPTIMISER_APPELS_ROM le cas échéant mais je ne pense pas que ce soit le seul registre sur lequel TIGCC compte non?)
XDanger :> C'est la TIGCC Team ou TICT ? Ces deux équipes ne sont pas les mêmes, même si ici, on les confond souvent. Elles travaillent beaucoup ensemble: TICT fait de la documentation de fonctions d'AMS pour la doc de TIGCC ou de nouvelles fonctions pour TIGCCLIB.
Alors là je ne peux pas te dire de laquelle des deux il s'agit! Mais bon j'ai lu ça dans la doc d'extgraph c'est tout.
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

26

Brunni
: C'est plus rapide que d'empiler les arguments je pense. J'ai vu sur les prototypes des trucs du genre short x asm("d0"). Mais ça n'est pas dangereux pour le fonctionnement des progs C?

Non.
Si on utilise le registre a6 par exemple, ça plantera à tous les coups après... (faut enlever OPTIMISER_APPELS_ROM le cas échéant mais je ne pense pas que ce soit le seul registre sur lequel TIGCC compte non?)

Ne touche pas à a5 et a6 (ni évidemment à a7).
Tu peux utiliser tous les autres. Mais laisse un ou deux registres de données libre (c'est-à-dire évite d'utiliser d0-d7 tous en même temps, c'est-à-dire pour les paramètres de la même fonction), sinon tu risques d'avoir un "Internal compiler error: Cannot find register to spill in class DATA_REGS".
XDanger :> C'est la TIGCC Team ou TICT ? Ces deux équipes ne sont pas les mêmes, même si ici, on les confond souvent. Elles travaillent beaucoup ensemble: TICT fait de la documentation de fonctions d'AMS pour la doc de TIGCC ou de nouvelles fonctions pour TIGCCLIB. Alors là je ne peux pas te dire de laquelle des deux il s'agit! Mais bon j'ai lu ça dans la doc d'extgraph c'est tout.

C'est la TICT alors. smile
Mais de toute façon, si la TICT recherche quelque chose pour ExtGraph, nous (l'équipe de TIGCC), on est intéressés nous aussi. smile (Mais c'est XDanger qui s'occupe de la maintenance de ExtGraph, donc c'est à lui qu'il faut envoyer toute contribution.)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

27

Quelqu'un a une idée pour une détection EFFICACE des pans inclinés parce que là je rame. En fait, ca marche mais le problème qu'il y'a c'est que le personnage ne va pas "marcher dessus la plate-forme" comme normalement, à chaque fois qu'il se trouve dans la zone d'un pan incliné, ses positions sont ramenées de façon à ce qu'il se trouve justement au bon endroit. Mais le problème est que justement dès que mario entre en contact avec la zone réactive d'un pan incliné, celui-ci va se retrouver dessus ce pan. Et cela peut être jusqu'à seize pixels plus bas, d'où un saut particulièrement si on a déjà la caméra qui est en train de faire défiler l'écran vers le bas...
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

28

Attention, les conseils suivants pourraient être de mauvais conseils, il faut que tu voies s'ils marchent avec le fonctionnement de ton moteur:
Pour arrêter les descentes au bon moment, utilise une détection de collision au pixel près (ça se trouve dans ExtGraph). Pour remonter, ça devrait être géré dans le code de déplacement gauche/droite. Comme ça, on n'est jamais remontés si on saute trop bas, seulement si on remonte en marchant.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

29

Je vois... Merci. Voilà le code pour l'instant
if (zz>=81 && zz<=84) {
zz-=81;
z=(y_absolue+9)%16-incline_sin_droit[zz][x_absolue%16];
y-=z;
quelque_chose=vrai;
}
où zz est le n° de la plate-forme et incline_sin_droit un tableau contenant les points d'une plate-forme inclinée sur lequel le perso se trouve...
Modifier x et y change la position (sur l'écran) de mario. Donc c'est pas y_absolue qu'il faut modifier mais y.
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

30

À mon avis, l'idée d'une détection de collision par pixel est à éviter...