Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » MMGOC (Massive Multiplayer Game On-Calc)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

MMGOC (Massive Multiplayer Game On-Calc)

Posté le 09/12/2013 18:32

Je cherche des volontaires, actifs ou non, sachant coder en C, pour participer à un projet d'envergure : créer le premier MMO-RPG mode calto : MMGOC (Massive Multiplayer Game On-Calc).

Le principe est simple : une carte Arduino sert de serveur, qui organise les requêtes des différents joueurs connectés à l'Arduino.
Le jeu sera une sorte de RPG hyper simplifié (au début du moins) : on peut bouger sur une carte, voir les joueurs, et comme interaction les attaquer.

L'objectif initial est de créer la prouesse de connecter 5 joueurs minimum. (Sachant qu'une carte Arduino Mega peut accueillir jusqu'à 25 caltos )

Dans un premier temps, les caltos seront connectées via le port série (3-pins) directement sur la carte. Ensuite, si c'est faisable (et ça l'est, faut juste de l'huile de coude), connecter le serveur via un port Ethernet en ligne de manière à ce que chacun puisse jouer en ligne. Et là ça serai classe 8)


Bien entendu, ça ne sert à rien, sinon qu'à doubler les TI-men dans la quête du concept le plus innovant (et un peu à se divertir bien sur)


J'ai créé (pour moi, et pour les intéressés) un repo sur Bitbucket de manière à ce que les dévellopeurs aient facilement accès au code.

Si vous voulez faire partie de la team (pas besoin de venir souvent, juste de savoir lire et d'y ajouter votre pierre lorsque vous voulez), n'hésitez pas, je suis ouvert.

Bon, après, si y'a personne c'est pas un problème mais j'aurai personne avec qui tester une fois arrivé au réseau en ligne

Bref, qu'en dites-vous ?


Lien du repo


1, 2, 3, 4, 5, 6, 7 Suivante
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 09/12/2013 18:38 | #


Pas mal comme projet réalisable mais il faudra du temps ce qui est domage j'aurai bien voulu participer mais j'ai déjà 2 projets pour 2014
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 09/12/2013 18:50 | #


Je pense pouvoir t'aider, ça m'intéresse car j'ai du matos arduino même si j'ai pas ce qu'il faut pour la connection entre les 2 mais je peux t'aider niveau prog!
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 09/12/2013 19:59 | #


J'aime bien le projet, tu t'en doute je risque de pas pouvoir beaucoup t'aider, par contre j'ai une question : Tu ne souhaites pas que les sources soient ouvertes (ton repo n'est pas publique) ?

Je trouve ça dommage quand on fait un programme comme ça, qui a pour but de faire ce que personne n'a fait avant, de ne pas laisser ça publique. Enfin ce n'est que mon avis
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 09/12/2013 20:01 | #


J'avais pas fait attention. Je modifie ça

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 09/12/2013 20:11 | #


Et t'en est où pour l'instant ? T'as réfléchis au protocol et comment va fonctionner le serveur ? Où tu commence déjà par faire le jeu ?
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 09/12/2013 20:29 | #


J'ai réfléchi (et je continue de le faire) sur le protocole. Je vais commencer par l'échange d'infos entre serveur et calto, puis je construirai le jeu en lui même (déplacements, interactions, etc). Pour ce qui est des collisions, je laisserai le serveur gérer ça.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 09/12/2013 21:43 | #


Et comment ça se passe pour faire ton jeu ?
En fait tu envoies le code de l'action que tu souhaites faire au serveur, celui ci attends pour toutes les calto, puis fait tourner le jeu et renvoie aux calto la position, l'action, ... De chaques objets ?
Ray Hors ligne Membre Points: 1338 Défis: 18 Message

Citer : Posté le 09/12/2013 23:48 | #


C'est très intéressant, le problème étant que je n'ai pas de shield ethernet pour l'arduino, il y aura un moyen de pouvoir connecter plusieurs caltos à l'arduino pour jouer dans être connecté (par exemple si j'emmène mon câble d'alimentation et que je fais des parties multijoueur directement au lycée sans brancher l'arduino à internet (je me suis surement très mal expliqué )) ?
Projets que je soutiens
Masquer
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 10/12/2013 06:55 | #


C'est la phase 1 du programme : on branché en local les caltos, et on joue entre amis sur le meme arduino
Ce n'est que après que je testerai une version en ligne.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 10/12/2013 18:46 | #


J'ai une question: peut-on gérer l'USB avec un add-in (j'aurai peut-être la arduino yùn à Noël et j'aimerai savoir si la com USB est possible)
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 10/12/2013 18:58 | #


On peut

Par contre ce n'est pas évident quand on ne peut pas tester en live

syscall.h
#ifndef _SYSCALL
#define _SYSCALL

/**********************************************************/
/** Les syscall suivants servent à l'acces au port série **/
/** Le buffer de réception fait 1ko,                     **/
/** et le buffer d'envoi fait 256 octets.                **/
/**********************************************************/
void App_RUNMAT(int runMode, unsigned short stripNum);

//Lit un caractère du buffer de réception et le copie a l'adresse pointée par 'dest'
//Retourne 0 en cas de succes, 1 si le buffer est vide, 3 si la connexion n'est pas établie
int Serial_ReadByte(unsigned char *dest);

//Lit 'max' octets du buffer de réception et les écrit dans 'dest'
//'size' donne le nombre d'octets lu
//Retourne 0 en cas de succes, 1 si le buffer est vide, 3 si la connexion n'est pas établie
int Serial_ReadBytes(unsigned char *dest, int max, short *size);

//Ecrit 'byte' dans le buffer d'envoi
//Retourne 0
int Serial_WriteByte(unsigned char byte);

//Ecrit 'size' octets dans le buffer d'envoi depuis l'adresse 'scr'
//Retourne 0 en cas de succes, 2 si le buffer est trop plein, 3 si la connexion n'est pas établie
int Serial_WriteBytes(unsigned char *src, int size);

//FIFO = first in first out
int Serial_WriteByteFIFO(unsigned char byte);

//Retourne la taille des données du buffer de réception
int Serial_GetRxBufferSize(void);

//Retourne l'espace disponible dans le buffer d'envoi
int Serial_GetTxBufferFreeCapacity(void);

//Vide le buffer de réception
//Retourne 0 en cas de succes, 3 si la connexion n'est pas établie
int Serial_ClearReceiveBuffer(void);

//Vide le buffer d'envoi
//Retourne 0
int Serial_ClearTransmitBuffer(void);

//Ouvre et prépare l'interface de communication
//Pour plus de détails, consulter fxreverse-doc-1.pdf ci joint
int Serial_Open(unsigned char *conf);

//Ferme l'interface de communication et vide les buffers d'envoi et de réception
//Si 'mode'==1, la communication est coupée sans regarder s'il reste des données a transmettre
//Si 'mode'!=1, la fonction ne ferme pas l'interface de communication s'il reste des données a transmettre
//et retourne 5
//Retourne 0 en cas de succes (communication terminée) et 5 s'il reste des données a transmettre
int Serial_Close(int mode);

//Copie l'octet numéro 'index' du buffer de réception vers 'dest' si 'index' ne dépasse pas les données du buffer
//Retourne 0 en cas de succes, 1 si 'index' dépasse les données du buffer, 3 si la communication n'est pas établie
int Serial_Peek(int index, unsigned char *dest);

//Récupère le statut de la connexion
//Retourne 1 si la connexion est établie, 3 sinon
int Serial_IsOpen();


#endif


syscall.src
.SECTION P,CODE,ALIGN=4

    .MACRO SYSCALL FUNO, SYSCALLNAME, TAIL=nop
    .export \SYSCALLNAME'
\SYSCALLNAME'
    mov.l #h'\FUNO, r0
    mov.l #H'80010070, r2
    jmp @r2
    \TAIL'
    .ENDM

    SYSCALL 040C,    _Serial_ReadByte
    SYSCALL 040D,    _Serial_ReadBytes
    SYSCALL 040E,    _Serial_WriteByte
    SYSCALL 040F,    _Serial_WriteBytes
    SYSCALL 0410,    _Serial_WriteByteFIFO
    SYSCALL 0411,    _Serial_GetRxBufferSize
    SYSCALL 0412,    _Serial_GetTxBufferFreeCapacity
    SYSCALL 0413,    _Serial_ClearReceiveBuffer
    SYSCALL 0414,    _Serial_ClearTransmitBuffer
    SYSCALL 0418,    _Serial_Open
    SYSCALL 0419,    _Serial_Close
    SYSCALL 0422,    _Serial_Peek
    SYSCALL 0425,    _Serial_IsOpen
    SYSCALL 0AAE,    _App_RUNMAT
    .end

Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 10/12/2013 19:00 | #


Bon, j’essayerai si j'ai la yùn
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 10/12/2013 20:04 | #


Je veux bien participer au projet dans la réalisation du moteur de jeu (maps, déplacements, combats), mais je te laisse la partie serveur et connexion des machines. Pour les tests on peut se voir et je peux fournir des calculatrices nécessaires aux tests
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 10/12/2013 20:18 | #


Je pourrai aider juste au niveau de la prog du jeu aussi je pense
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 10/12/2013 21:06 | #


Pour les tests, je veux bien.

J'ai réfléchi aujourd'hui, et je me suis vu confronté à un petit problème :

Dans le cas d'un jeu en temps réel (type LOL), la quantité d'infos par frames est proportionnelle au nombre de joueurs à prendre en compte. Ce qui fait que même en laissant à l'Arduino gérer les priorités, c'est à dire dire quelles infos et de qui il faut envoyer (pas besoin de savoir qu'untel à l'autre bout de la map combat avec un autre), il faut imaginer au minimum récupérer les infos de 3 persos.

Dans ce cas, 1 perso prend :

son ID (1 octet, j'espère ne pas avoir à connecter pour le moment plus de 255 caltos)
position X (4 octets, c'est forcément un int si on veut une carte digne de ce nom)
position Y (4 octets, idem)
action en cours (1 octets, ça laisse 255 possibilités, ça devrait aller)
vie (1 octet, vie max = 100. On n'est pas obligé de l'afficher)

Total : minimum 10 octets par perso, soit plus de 30 octets à récupérer à chaque frame...
Pour du 20 fps, ça veut dire 600 octets par seconde... Je doute pouvoir assurer une telle fluidité...

Sinon, l'autre option consiste à faire un jeu au tour par tour type "Dofus", mais dans ce cas d'un, c'est moins cool, de deux il risque d'y avoir des attentes assez chiantes (genre le cas du mec qui oublie de jouer), même avec un compteur.

Qu'en pensez vous ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Kirafi Hors ligne Membre Points: 2180 Défis: 10 Message

Citer : Posté le 10/12/2013 21:08 | #


... ben ... je pense que Dofus est plus simple pour commençer
Même si c'est moi cool que LOL
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 10/12/2013 21:20 | #


Un jeu tour par tour n'a pas besoin de plusieurs caltos, et c'est moins stylé. On peut viser un truc simple mais simultané.
Btl Hors ligne Ancien modérateur Points: 3879 Défis: 107 Message

Citer : Posté le 10/12/2013 21:32 | #


pas non plus besoin de savoir gérer 10 caltos en même temps comme pour LOL
Mais c'est sur que trouver un petit jeu en temps réel dès le début pourrait être sympa

Kirafi tu joues encore à lol? c'est pas pour moi, c'est pour que limachi ait un ou 2 copains dans sa liste d'ami
Un excellent tuto video qui vous explique comment transférer des fichiers de l'ordinateur vers la calculatrice et vice versa ma chaine youtube
mes jeux
mes jeux

Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games

Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 10/12/2013 21:34 | #


ou sinon tu fait comme dans guild wars, des donjons avec 2-3 personnes, et par exemple dans les villes avec tout le monde tu devra transférer moins d'info
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Kirafi Hors ligne Membre Points: 2180 Défis: 10 Message

Citer : Posté le 10/12/2013 21:35 | #


je sais !!! Gravity Guy d'ailleurs en parlant de ça, il faudrait voir à changer un petit truc, si je suis pas en facile, c'est trop sensible, j’appuie une fois et ça compte comme 2, donc mon personnage meurt tout le temps
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
1, 2, 3, 4, 5, 6, 7 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 138 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd