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: 11631 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


Précédente 1, 2, 3, 4, 5, 6, 7 Suivante
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1242 Défis: 54 Message

Citer : Posté le 16/03/2014 14:33 | #


Tant qu'à faire si tu peux garder le maximum de ressources pour ce qui est propre à la calculatrice (affichage et refresh de l'écran, etc...) c'est mieux je suppose
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 16/03/2014 14:43 | #


Ninestars, je suis d'accord qu'on ne vas pas faire n'importe quoi non plus.
Mais comme le dit Nemhardy, mieux vaut s'ouvrir le plus de portes possibles.

Et puis la 3d ça bouffe en ressources
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 16/03/2014 14:47 | #


et pis Unity n'est pas encore pris en charge sur caltos
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 16/03/2014 14:52 | #


Vous êtes allés un peu vite, j'ai pris 10 minutes à tout lire.

Pour reprendre les différentes idées émises, voici quelques rappels qui vous prouvent qu'un serveur est nécessaire :

-> Imaginons qu'il n'y en ai pas, que chaque calto envoie à une sorte de réseau local ses données : la calto A envoie un paquet "A, 1, 2, 3, 0", et la calto B un paquet "B, 1, 2, 3, 0" en même temps. La calto C recevra dans son buffer de réception "A, B, 1, 1, 2, 2, 3, 3, 0, 0", ce qui est impossible à traiter (surtout si y'a des décalages entre les paquets).

-> Imaginons encore que la calto fait tout les calculs toute seule. Dans le cas le joueur A tire, dans sa ligne de mire il a un ennemi B. B doit donc perdre de la vie. Or, A a un léger retard de 0,3 secondes, et B s'est décalé entre temps. B, au moment où il reçoit le message "A a tiré dans cette direction", n'est plus à l'endroit où A à tiré. On a donc chez A "B a perdu de la vie", et chez B "A a tiré à coté'. Je sais pas si vous avez suivi

La calculatrice ne gère que ce qui est indépendant des autres joueurs : collisions avec des obstacles fixes. Le reste est dirigé par le serveur. D'où la nécessité de programmer une interface multitâche performante coté serveur. Le reste se fera tout seul une fois cette étape franchie.

Ajouté le 16/03/2014 à 14:53 :
Intelligide a écrit :
et pis Unity n'est pas encore pris en charge sur caltos

Sur Prizm t'as déjà la SDL
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 16/03/2014 14:53 | #


J'essaye actuellement d'écrire une lib pour la modélisation 3d
Je pense que ce serait une bonne chose que tout le monde puisse y avoir accès.

Du coup, nous sommes 3 à développer notre moteur 3d: LImachi pour son Minecraft, Dark Storm qui l'a mentionné une fois sur le chat, et moi-même.

Par contre, c'est la galère
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 16/03/2014 14:56 | #


Si on a un jour 3 moteurs 3D fonctionnels, ça va être cool pour développer tout un tas de jeux
Mais j'ai pas l'intention de faire MMGOC en 3D, ça bouffera trop de ressources (faut pas oublier que la liaison série n'est pas non plus hyper rapide en lecture/écriture)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

Citer : Posté le 16/03/2014 14:56 | #


Imaginons qu'il n'y en ai pas, que chaque calto envoie à une sorte de réseau local ses données : la calto A envoie un paquet "A, 1, 2, 3, 0", et la calto B un paquet "B, 1, 2, 3, 0" en même temps. La calto C recevra dans son buffer de réception "A, B, 1, 1, 2, 2, 3, 3, 0, 0", ce qui est impossible à traiter (surtout si y'a des décalages entre les paquets).

Pas avec ma solution, puisque les caltos envoient l'une après l'autres les paquets.
Regarde au début de la page 4

Imaginons encore que la calto fait tout les calculs toute seule. Dans le cas le joueur A tire, dans sa ligne de mire il a un ennemi B. B doit donc perdre de la vie. Or, A a un léger retard de 0,3 secondes, et B s'est décalé entre temps. B, au moment où il reçoit le message "A a tiré dans cette direction", n'est plus à l'endroit où A à tiré. On a donc chez A "B a perdu de la vie", et chez B "A a tiré à coté'. Je sais pas si vous avez suivi

Pourquoi dire à B qu'on a tiré sur lui ? il suffit de lui dire qu'on l'a touché et c'est réglé.
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 16/03/2014 14:58 | #


9* a écrit :
Pas avec ma solution, puisque les caltos envoient l'une après l'autres les paquets.

Dans ce cas, je pense que ça larguera à mort. Pour un jeu type "Dofus", au tour par tour, c'est la bonne solution, sinon c'est pas hyper adapté.
Au passage, fait moi un schéma de comment tu organiserai les liaisons physiques, je te rappelle qu'il ne faut pas mélanger les câbles d'émission et de réception
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 16/03/2014 15:05 | #


Dark Storm a écrit :
Dans ce cas, je pense que ça larguera à mort.

Ah, enfin quelqu'un qui me soutient

Au fait Dark Storm, tu communiques par le 3 broches ? Si oui, tu le gères comment ?
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

Citer : Posté le 16/03/2014 15:07 | #


Si tu envoies 10, ou plus large 20 octets à chaque émission c'est super rapide.
Le shéma c'est pour une calto :
- calcul de tout : du décors, calcul des collisions...
- tu envoies tes infos : position, direction , ...
en boucle et pendant qu'elle travail, les paquets des autres arrivent dans le buffer et affiche les autres joueurs, gère les collision avec en fonction de ces données


Au passage, fait moi un schéma de comment tu organiserai les liaisons physiques, je te rappelle qu'il ne faut pas mélanger les câbles d'émission et de réception
J'y avais pensé...
Si on branche tout en commun, emission et récéption de tout le monde, au pire celle qui envoie reçoit ce qu'elle envoie
A part si mettre une tension sur la borne d'émision est dangereux.
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 16/03/2014 15:10 | #


Lephenixnoir a écrit :
Au fait Dark Storm, tu communiques par le 3 broches ? Si oui, tu le gères comment ?


Il y a des syscalls qui gères le 3-broches assez facilement
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 16/03/2014 15:16 | #


@ 9* : faudrait faire des tests, mais les fonctions de sérial restent relativement lentes...
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

Citer : Posté le 16/03/2014 15:57 | #


Ok, dans ce cas ce qui est bien avec ma méthode, c'est que la calto n'attend jamais de réponse. Elle envoie et pendant qu'elle travaille, elle reçoit les infos des autres. Au pire des cas elle a une frame d'avance sur les autres caltos du groupe.
Alors qu'avec un serveur, il y a plus de transmissions donc plus de temps d'attente
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 16/03/2014 15:59 | #


Oui, mais les calculatrices sont plus synchrones et ça offre une plus grande puissance

Enfin, on ne va pas débattre la-dessus des heures.
De toute façon c'est Dark Storm qui bosse sur le projet
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

Citer : Posté le 16/03/2014 16:04 | #


Elles sont synchrones... et alors on s'en fou Si elles ont un décalage de (au pire) 0.2s, ça change rien !
Enfin oui après il fait comme il veut, mais c'est bien d'avoir différents points de vue
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 20/03/2014 21:46 | #


Alors le projet avance ? Sinon je rebondit sur l'idée de Kirafi, un dofus serait bien (surtout que j'y joue en ce moment )
Mais un jeu comme dodormeur a dit, en multi ou même en add-in tout simple serait génial !
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Zolobou1 Hors ligne Membre Points: 93 Défis: 0 Message

Citer : Posté le 24/05/2014 06:39 | #


je voudrai vraiment y participer, mais je ne suis q'un débutant en la matière.
si je m'améliore d'ici la, je vous rejoint sans problème dans ce projet
Ouvre ce spoiler, sinon,voila ce qu'il va se passer...
... tu ne connaîtra jamais ces magnifiques programmes !
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 24/05/2014 10:00 | #


Eltoredo a écrit :
Alors le projet avance ? Sinon je rebondit sur l'idée de Kirafi, un dofus serait bien (surtout que j'y joue en ce moment )
Mais un jeu comme dodormeur a dit, en multi ou même en add-in tout simple serait génial !


http://www.planet-casio.com/Fr/forums/topic12887-1-Un-Ankama-games-sur-CasioWakcalc.html

@zolobou, je te conseille d'apprendre le C(le C casio et le C arduino) et éventuellement le Mysql(gestion de BDD) si DS décide de le mettre sur internet
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 24/05/2014 10:05 | #


Je ne te fais pas remarquer que le message d'ElToredo est de plus d'un moins antérieur à la création de ton topic
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 24/05/2014 10:11 | #


Bon, vu que y'a de l'activité, j'en profite pour exposer l'avancement du projet :

J'ai peu bossé dessus ces derniers mois, pour cause d'autres projets, de boulot, etc. mais j'ai beaucoup fait de théorie sur la méthode de synchronisation des données par l'arduino. Je pense tenir un truc, mais c'est pas dit que ça fonctionne... Bref, du coup le projet est à moitié en pause, mais je compte bien avancer pendant les vacances (pour une fois que j'ai 2 mois de libre )

En tout cas, si quelqu'un est motivé pour reprendre le projet, je veux bien lui passer les sources de ce qui existe (mais c'est pas très fonctionnel )
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 24/05/2014 10:12 | #


Vu que j'ai maintenant le matériel et deux caltos... comme toi, je m'y mettrai probablement après le bac.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Précédente 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 102 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