PDA

Voir la version complète : [NDS] Bge palet


Samote
14/01/2007, 18h36
Bge palet
Michel je veux le 2 !
ALPHA
http://samotelejovial.googlepages.com/paletoriginal2.jpg
Download (http://perso.orange.fr/samote/bge_palet_ds_neoflash.tar.gz)


Présentation :

Il s'agit d'un remake du jeu de palet présent dans Beyond Good & Evil (excellent jeu que je conseille a tous). Le but est d'envoyer ses quatre palets du côté de l'adversaire avant qu'il ne le fasse.

Galerie d'image :

http://perso.orange.fr/samote/lol.JPG http://perso.orange.fr/samote/lol2.JPG

Historique :

20/03/2007 : Version pour la compo neoflash, ajout des menus.
18/02/2007 : On peut redémarrer une partie sans éteindre.
17/02/2007 : Ajout de la musique pendant le jeu.
16/02/2007 : Ajout de "l'ia"
14/01/2007 : Première version ! :D

Comment jouer :

Il faut faire glisser le stylet sur les palets pour les lancer

Autres informations :

Il reste le mode online a implémenter.

J'ajouterai deux autres modes de jeu : le palet classique et le billard.

Ass-Itch
14/01/2007, 18h51
C'est moi où y'a une recrudescence de homebrews made in PA en ce moment ?
Bref on s'en plaint pas, bonne idée que ce remake Samote ^^

M@cZér0
14/01/2007, 19h40
Ouais, j'adore le principe! Bon courage et bonne chance pour les collisions! ;)

t4ils
14/01/2007, 20h05
je trouve le concept vraiment bon et tout con :)
bravo à toi et bonne chance pour coder tout ça ;)

je n'ai pas joué au jeu original, mais si je peux me permettre quelques suggestions :-' :
- Ne pas stopper les palets en appuyant dessus, attendre qu'ils soient arrêté pour jouer (à moins que le jeu soit dynamique et sans pause)
- La vitesse donnée aux palets touchés est trop grande, je suggère que tu donnes la vitesse d'entrée de la collision en vitesse du palet touché, afin de pas voir les palets rebondir indéfiniment
- différencié la couleur des palets des deux joueurs (à moins qu'un joueur puisse utiliser n'importe quel palet)


voila voila, ces avis n'engagent que moi, et peuvent très bien aller à l'encontre du gameplay que tu as choisi ;)

Samote
14/01/2007, 20h06
- Ne pas stopper les palets en appuyant dessus, attendre qu'ils soient arrêté pour jouer (à moins que le jeu soit dynamique et sans pause)
- La vitesse donnée aux palets touchés est trop grande, je suggère que tu donnes la vitesse d'entrée de la collision en vitesse du palet touché, afin de pas voir les palets rebondir indéfiniment
- différencié la couleur des palets des deux joueurs (à moins qu'un joueur puisse utiliser n'importe quel palet)

-Dans le jeu original on peut bouger les palets n'importe quand, mais je vais essayer de faire comme sa et je verrai quelle est la meilleure solution.
-Je pensait corriger sa effectivement.
-Les deux joueur peuvent toucher tout les palets.

Si quelqu'un a un tuto sur la libwifi ou le réseaux en général je suis preneur (en français si vous avez ^^). Parce que je n'ai que de vagues idées sur comment cela fonctionne (je pense a toi smealum sur ce coup).

K-nar2
14/01/2007, 20h52
Ce jeu ne mets pas inconu... :blink:

Quelqu'un l'avais porté sur gba ? Ou alors, j'y ai joué en flash !?!

Enfin bref, c'est sympa pour jouer de temps à autres ^^

EDIT : ho le c*n :o

J'y ai joué dans Beyond Good & Evil :p

EDIT 2 :

J'adore les collisions , ca s'arrete plus :lol:

DJP
14/01/2007, 21h03
K-nar2 : http://playeradvance.org/forum/showthread.php?t=3910 ;)

Je me disais bien aussi "mais ou est-ce que j'ai vu ça..."

K-nar2
14/01/2007, 21h12
Merci DJP ^^

Je suis pas complêtement fou :)

Bon, tous les palets sont en haut (tout du moins inacessible au stylet) et rien ne se passe :)

Samote
14/01/2007, 21h35
Merci DJP ^^

Je suis pas complêtement fou :)

Bon, tous les palets sont en haut (tout du moins inacessible au stylet) et rien ne se passe :)

Version alpha :-'

Doud_
15/01/2007, 00h19
Bon, je viens de tester à l'instant (pas pu avant), et franchement bravo, c'est un bon début! Vivement la suite :wub:

Tous mes encouragements pour la suite :)

PS : J'ai failli perdre tout seul... >_< :ph34r:

Costello
15/01/2007, 05h21
merci (cf la news :whst: )

c'est prometteur comme projet, ça a l'air amusant!
bonne chance à toi

Flocoon
15/01/2007, 14h48
Au début j'ai cru à une adaptation fidèle du jeu en 3D :-' .
En tout cas j'ai pas encore pu tester mais ça m'a l'air vraiment sympa !
Je crois que ce jeu est inspiré d'un jeu savoyard avec des palets mais je retrouve plus le nom ^^

En tout cas c'est clair que tous ces homebrew ca fait du bien à la scène DS ;)

Samote
15/01/2007, 18h54
Merci pour tout vos encouragement :D

Au début j'ai cru à une adaptation fidèle du jeu en 3D :-' .

Hélas non, c'est un screenshot du jeu original. Je changerai quand j'aurai un écran titre digne de se nom car sa prête a confusion.

GeekShadow
17/01/2007, 20h15
Très sympa comme jeu, au départ le nom m'a fait penser à "Bourg Palette" ;) des vieux souvenirs sans doute :p

Samote
16/02/2007, 14h38
Nouvelle version.

J'ai ajouté une une ia basique, elle se contente de renvoyer les palets vers le trou avec parfois des erreurs.

simonomis
16/02/2007, 17h41
j'adore :wub:

pour moi, ca manque un peu de musique sinon ca serait parfait ^^
je pourrais y passer des heures ..

bon courage pour la suite samote ;)

Samote
16/02/2007, 19h50
Sa va venir la musique et aussi la possibilité de recommencer sans éteindre.

Samote
17/02/2007, 12h49
Voila la musique est ajoutée !

Crampe
17/02/2007, 13h26
Merci pour cette super version Samote !!
Dommage je m' attendais à une meilleure musique de ta part parce que là... :berk:

Samote
17/02/2007, 15h34
C'est la musique orignal. Mais elle est en raw 8000 khz >_<

Y a pas un programme pour convertir en .mod facilement ?

Arcadia
17/02/2007, 18h30
C'est la musique orignal. Mais elle est en raw 8000 khz >_<

Y a pas un programme pour convertir en .mod facilement ?

Bienvenu au club :( ! Les sons de mon 1942 sont merdiques pour la même raions :berk: ! Si il y a des solutions, je suis preneur v_v ...

(Quoi que sur GBA, je dois utiliser le lecteur de nrx pour tenter de pallier à ce problème)

Brunni
17/02/2007, 18h55
Reconvertir en mod est malheureusement impossible. Et même si c'était possible, le fichier mod prendrait probablement plus de place que le fichier original et en plus il faut plus de puissance processeur pour le jouer => poubelle.
La raison est assez simple, prenons que deux instruments sont joués ensemble: le résultat qu'on entend est simplement l'addition des deux! Si je te dis "6", ça pourrait autant être le résultat de 1+5 que 3+3 ou encore 8-2 et j'en passe. Il est donc impossible avec un fichier raw de décomposer les instruments. Certains convertisseurs MIDI arrivent à une approximation plus ou moins bonne mais il ne faut pas rêver non plus, ça n'a rien à voir, dans une certaine mesure autant garder ton wav à 8 kbps, il sera plus reconnaissable ;)
Par contre ce que tu peux faire c'est utiliser l'ADPCM (Mono, 4 bits, 11 à 22 kHz - 44 à 88 kbps), tu gagneras déjà un peu de place et t'auras un rendu très proche du 16 bits (du moment que tu travailles en 16 bits, donc avec un lecteur prévu pour DS et non pour GBA). :)
Ha et j'oubliais, excellent projet, bonne chance pour la suite ^^

Samote
17/02/2007, 19h30
Merci pour les conseils je vais essayer tout ca.

jujurackham
17/02/2007, 21h47
Ou alors tu recomposes la musique. C'est tout à fait possible !

Samote
18/02/2007, 10h34
Nouvelle version : on peut redémarrer une partie sans éteindre.


Ou alors tu recomposes la musique. C'est tout à fait possible !

Comment ?

Sinon pour l'ADPCM c'est du tout bon je gagne une place considérable. Mais comment on le joue sur ds ? :blink:

Arcadia
18/02/2007, 10h57
Une petite question Samote. Je trouve tes colisions entre palet vraiment très réaliste. As-tu developpé toi même le moteur ? Si c'est le cas bravo, le rendu est vraiment parfait ! :)

Sinon, heu...ou as-tu trouvé les exemples pour l'adapter à ton code :-' ? Ça peut toujours servir ^^ ...

jujurackham
18/02/2007, 11h43
Comment ?


Ben tu choppes un tracker et tu commences à retranscrire toi-même la musique, à l'oreille (http://fr.wikipedia.org/wiki/Module_(musique)#Cr.C3.A9er_un_module)

Voilà, bon courage ^^

Samote
18/02/2007, 12h42
Une petite question Samote. Je trouve tes colisions entre palet vraiment très réaliste. As-tu developpé toi même le moteur ? Si c'est le cas bravo, le rendu est vraiment parfait ! :)

Sinon, heu...ou as-tu trouvé les exemples pour l'adapter à ton code :-' ? Ça peut toujours servir ^^ ...

Ben en faite euh ...

void collisionsPalet(u8 j, u8 i)
{
//on vérifie chaque collisions entre palet successivement à l'aide d'une boucle
for (j = 0; j < i; j++)
{
//si la distance entre deux palets est inférieur a 21 alors il y a collision entre ces palets
if (PA_Distance(palet[i].x, palet[i].y, palet[j].x, palet[j].y) < 5376*5376)
{
//on modifie leurs vitesses en conséquence
palet[i].vx = (palet[i].x - palet[j].x)/8;
palet[i].vy = (palet[i].y - palet[j].y)/8;

palet[j].vx = -palet[i].vx;
palet[j].vy = -palet[i].vy;
}
}
}

C'est juste sa mes collision entre palets. Elles n'ont rien de réaliste malheureusement. La vitesse généré par ces collisions est toujours la même. Et les palet sont toujours renvoyer dans le sens opposé.

Dans la réalité si on envoie un palet a une vitesse faible sur un palet immobile :
- les deux palet vont se diriger dans la même direction pas dans des sens opposé.
- les palet n'irons pas plus vite que leurs vitesses initiale or dans mon code c'est se qui se passe

Je comptait recoder les collisions entre palets car le problème de la technique que j'emploie et qu'il ne s'arrêtent jamais.

Ben tu choppes un tracker et tu commences à retranscrire toi-même la musique, à l'oreille (http://fr.wikipedia.org/wiki/Module_...A9er_un_module)

Voilà, bon courage ^^

Trop compliquer en plus il y a des paroles.

Arcadia
18/02/2007, 13h55
Ben en faite euh ...

[...]

C'est juste sa mes collision entre palets. Elles n'ont rien de réaliste malheureusement. La vitesse généré par ces collisions est toujours la même. Et les palet sont toujours renvoyer dans le sens opposé.

Dans la réalité si on envoie un palet a une vitesse faible sur un palet immobile :
- les deux palet vont se diriger dans la même direction pas dans des sens opposé.
- les palet n'irons pas plus vite que leurs vitesses initiale or dans mon code c'est se qui se passe

Je comptait recoder les collisions entre palets car le problème de la technique que j'emploie et qu'il ne s'arrêtent jamais.


OK, ben je peux te dire que dans l'action, on ne se rends pas compte de ces petits défauts. En plus, pour le moment ça rends pas si mal, et il ne doit pas manquer grand chose pour arriver à améliorer le mouvement ^^ .

En fait je te demandais ça parce que coder de tels déplacement me parait une sorte de défi interessant. En maitrisant de telles collisions, on peut coder n'importe quoi. J'ai toujours eu plus ou moins la flemme de le faire (j'ai une bonne idée sur la manière de procéder, mais je sais que je vais y laisser des cheveux...), et ton projet m'a donné envie de m'y mettre, parce qu'en peu de temps tu es arrivé à un résultat plus que convenable :o .

Continue :w00t: !

Samote
24/03/2007, 19h33
Mise a jour !

Les menus on été ajoutés. Ainsi que des niveaux de difficulté.

Prochaine étape le multi joueurs.

Bobby Sixkilla
25/03/2007, 19h20
C'est newsé. ^^ C'est bien cette version que t'as présenté à la Neo Compo?

Samote
25/03/2007, 19h24
Oui c'est celle la.
Merci pour la news sa fait vraiment plaisir.

Bobby Sixkilla
25/03/2007, 20h40
Ca fait plaisir de faire plaisir. :-'

Gedeon34
26/03/2007, 09h05
-Si quelqu'un a un tuto sur la libwifi ou le réseaux en général je suis preneur (en français si vous avez ^^). Parce que je n'ai que de vagues idées sur comment cela fonctionne (je pense a toi smealum sur ce coup).

Ca m'intéresse également... Il y a quelques jeux qui utilisent cette fonctionnalité : omalone mais les sources ne sont pas dispo et tetattds mais qui nécessite un serveur s'exécutant sous Windows.

Si quelqu'un connait un jeu pouvant se jouer online dont les sources sont dispos, je suis preneur aussi.

bong
26/03/2007, 10h29
Pas besoin de se fatiguer à chercher des tuto sur la lib wifi car c'est pas elle qui va t'apporter les fonctions réseau. Elle sert "seulement" au niveau hardware. De plus, tu utilise la PAlib donc un coup de PA_initWifi() et tout ce qui concerle la libwifi est réglé.
Au niveau applicatif, c'est du reseau posix, et pour ça, tu trouveras de la doc à foison ;)

Samote
26/03/2007, 19h06
http://vidalcharles.free.fr/lf/socket.html

Il y a le tuto la, il est assez clair. Les fonctions sont les même sur ds.

Doud_
26/03/2007, 19h59
Bravo à toi Samote, je viens de tester et c'est vraiment sympa comme style de jeu :-'

OK, ben je peux te dire que dans l'action, on ne se rends pas compte de ces petits défauts. En plus, pour le moment ça rends pas si mal, et il ne doit pas manquer grand chose pour arriver à améliorer le mouvement ^^ .

C'est exactement ce que je me disais en lisant le topic.

Tout mes encouragements pour la suite !!!:wub:

pmcc
26/03/2007, 20h51
Je viens de l'essayer, c'est pas mal par contre le niveau est assez relevé, je dois pas être doué !

Par contre ne pousse pas le réalisme des collisions au point que le jeu perde en interêt, parfois il faut simplifier les choses pour avoir un gameplay intéressant :D

Gedeon34
27/03/2007, 08h49
http://vidalcharles.free.fr/lf/socket.html

Il y a le tuto la, il est assez clair. Les fonctions sont les même sur ds.

En effet, mais j'ai une première question qui me vient tout de suite après une première lecture... Comment connaitre l'adresse IP de la nds ? En réseau local pas de problème, je sais faire. Mais par internet ? Ne faut-il pas prévoir un serveur sur Internet où les nds s'inscriraient pour jouer ?

Enfin, j'ai du mal à voir comment éviter le blocage lors de la réception des données... Je pensais que la réception de données se faisaient par interruption... (j'ai eu du mal sur le paragraphe SELECT)...

En tout cas merci pour le lien...

Ce serait peut être bien de lancer un projet, pour réaliser une lib permettant de jouer simplement par WIFI....

pmcc
27/03/2007, 09h29
En effet, mais j'ai une première question qui me vient tout de suite après une première lecture... Comment connaitre l'adresse IP de la nds ? En réseau local pas de problème, je sais faire. Mais par internet ? Ne faut-il pas prévoir un serveur sur Internet où les nds s'inscriraient pour jouer ?

Enfin, j'ai du mal à voir comment éviter le blocage lors de la réception des données... Je pensais que la réception de données se faisaient par interruption... (j'ai eu du mal sur le paragraphe SELECT)...

En tout cas merci pour le lien...

Ce serait peut être bien de lancer un projet, pour réaliser une lib permettant de jouer simplement par WIFI....

Pour le select, imagine que tu fasses un receiv() sur le client mais que le serveur n'envoit rien : le client va bloquer jusqu'à recevoir des données donc si tu as des traîtements à faire en parallèle comme mettre à jour un compteur ou le GUI et bien tu ne peux pas...
Avec select() tu stockes les fd (sockets, fichiers, tout ce qui peut être utilisé comme file descriptor) que tu veux surveiller dans des listes de fd_set. Tu n'as qu'à placer ta socket dans le fd_set des lectures et select() bloquera (ou pas en fonction de la valeur du timeout, s'il est nul select() est non bloquant) jusqu'à ce que tu recoives des données à lire sur ta socket.
Donc en placant select dans ta boucle principale, tu peux très facilement surveiller l'activité réseau sans bloquer les autres traîtements de ton programme.

bong
27/03/2007, 10h16
En effet, mais j'ai une première question qui me vient tout de suite après une première lecture... Comment connaître l'adresse IP de la nds ? En réseau local pas de problème, je sais faire. Mais par internet ? Ne faut-il pas prévoir un serveur sur Internet où les nds s'inscriraient pour jouer ?

Enfin, j'ai du mal à voir comment éviter le blocage lors de la réception des données... Je pensais que la réception de données se faisaient par interruption... (j'ai eu du mal sur le paragraphe SELECT)...

En tout cas merci pour le lien...

Ce serait peut être bien de lancer un projet, pour réaliser une lib permettant de jouer simplement par WIFI....

Qu'entends -tu par "en réseau local je sais faire"?
Si tu utilise une socket udp, tu récupère les informations de l'émetteur dans la structure "sockaddr" passée en argument de la fonction recvfrom().

Si tu utilise une socket tcp, tu connais déjà cette information car tu as du t'y connecter explicitement.

Ensuite, le fait que tu communiques avec des ds en local ou sur le net, ça change rien sauf qu'en effet, pour jouer sur le net, il te faudra un serveur car tu ne peux pas faire de "broadcast" et gérer tes connexions en point à point.

Enfin, pour la lecture non blocante, select() c'est très bien mais utile quand tu utilise plusieurs descripteurs/sockets.

Si tu n'en utilise qu'un, une lecture non blocante suffit mais attention, sur ds, le flag MSG_DONTWAIT des fonctions recv(from)() n'est pas supporté :/
Pour contourner ce problème, il faut rendre la socket non blocante dès sa création:
sock = socket(PF_INET, type, 0);
int i = 1;
ioctl(sock, FIONBIO, &i);

:busted_bl Si tu le veux bien, je propose d'arrêter cette discution pour ne pas pourir le sujet de Samote et t'invite à en créer un dédié à ta question.

Gedeon34
28/03/2007, 18h51
:busted_bl Si tu le veux bien, je propose d'arrêter cette discution pour ne pas pourir le sujet de Samote et t'invite à en créer un dédié à ta question.

Bien sûr, c'était pas le but...

J'ai créé une nouvelle discussion ICI (http://www.playeradvance.org/forum/showthread.php?t=6372)

pilatomic
28/03/2007, 21h46
Moi j'ai un petit probleme de téléchargement ca m'affiche des noms de fichier comme ça :
J'ai bien essayé de télécharger plusieur fois mais toujours le meme résultat. Que faire ?

Samote
29/03/2007, 19h01
J'ai créé l'archive sous linux donc il y a peut être des problème sous windows je ne sais pas.

pmcc
29/03/2007, 19h05
J'ai eu aucun problème sur mon Windows, t'as essayé avec un autre décompresseur pilatomic (WinRAR par exemple) ?