Page 1 sur 1

Réalisation d'un MMORPG, conseillez moi.

Publié : ven. 02/mai/2008 15:01
par Mr-Blonde
Salut tout le monde,

Mon PC a planté et j'ai mit un certain temps à le remettre sur pieds ce qui explique ma longue absence (enfin de toute façon peut de personnes ici me connaissent).

Voila, notre équipe est constituée donc nous pouvons nous lancer dans la réalisation d'un MMORPG 2D comme nous l'avions projeté il y a quelques mois.

La location d'un serveur dédié étant trop couteuse j'avais imaginé un tout autre système. Je ne sais pas si il sera bien performant donc je viens demander conseil ici, voici mon système :

On utilise tout d'abord une base SQL pour stocker 3 choses (parmi d'autres) :
-L'ID (Le numéro du joueur)
-Map (Le Numéro de la carte où se trouve le joueur)
-X (Position en X du joueur)
-Y (Euh...)

A chaque inscription une ID est crée, au 21eme joueur inscrit, celui-ci aura l'ID 21, son numéro de carte sera 21Map et ses variables X et Y se nommeront 21X et 21Y.
Une boucle mettra à jour les position des joueurs en permanence en se connectant à la base SQL.

Tout le système marchera comme ça, là je parle juste des déplacements.

Voila voila, alors déjà 2 questions :
-Une base SQL risque-t-elle de grosses surcharges avec un tel système ?
-Connaissez vous des libraires permettant de coupler SQL et PureBasic (en fait c'est la question essentielle) ?

Merci à tous et bonne continuation !

Publié : ven. 02/mai/2008 16:08
par Oliv
Oui et oui :D

C'est possible mais à mon avis autant prendre un serveur dédié genre "dedibox" à 30€ par mois. Car une base SQL avec connexions simultanées illimitées qui répond vite ça va vitre te faire chère.

Après pour utiliser les bases SQL une simple recherche sur le forum t'aidera. Sinon je crois qu'il y a des librairies sur www.purearea.net

Publié : sam. 03/mai/2008 15:12
par cha0s
pour MYSQL tu peut aussi utiliser la DLL ou le SO fournit pour apache (dispo sur le site de MYSQL) apres il suffit d'importer les fonctions et le tour est joué

Code : Tout sélectionner

    If OpenLibrary( 1 , #LibPath ) 
      Sql_init = GetFunction(1,"mysql_init")
      Sql_Errno = GetFunction(1,"mysql_errno")
      Sql_Error = GetFunction(1,"mysql_error")
      Sql_Real_connect = GetFunction(1,"mysql_real_connect")
      Sql_Real_query = GetFunction(1,"mysql_real_query")
      Sql_Store_result = GetFunction(1,"mysql_store_result")
      Sql_Field_Count = GetFunction(1,"mysql_field_count")
      Sql_Affected_Rows = GetFunction(1,"mysql_affected_rows")
      Sql_fetch_lengths = GetFunction(1,"mysql_fetch_lengths")
      Sql_fetch_row = GetFunction(1,"mysql_fetch_row")
      Sql_num_rows = GetFunction(1,"mysql_num_rows")
      Sql_close = GetFunction(1,"mysql_close")
      Sql_free_result = GetFunction(1,"mysql_free_result")
      Sql_more_results = GetFunction(1,"mysql_more_results")
    endif

Publié : sam. 03/mai/2008 15:54
par Anonyme
Arf , je ne crois pas que les mmorpg soit gérer ainsi au niveau du réseau.
j'aurais pensé à un système plus léger qui nécessite un serveur dédié

Chaque client se connecte sur se serveur. a chaque connections réussi , tu envois l'ip du client dans une BDD.

Le serveur quand à lui , lit tout les IP dispo dans la bdd
comme ca , il peut envoyer toute les positions en temps réel de tout les joueurs à tout les pc connecter.

Temporise bien les fonctions , interpole les résultat de manière à avoir des mouvement fluides , sinon sa saccade , et si tu ne temporise pas , tu vas vite bouffer ta bande passante.

Un second PC t'es donc nécessaire pour faire serveur.

Publié : sam. 03/mai/2008 16:31
par wolfjeremy
Déjà que ma table sql ne tenais pas aux heures de pointe sur mon ancien site (pourtant elle était performante), alors pour un MMO...

Faut vraiment faire client-serveur, faut pas chipoter, faut tout coder et pas passer par d'autres application.

Publié : sam. 03/mai/2008 16:45
par Neosis
wolfjeremy a écrit :Déjà que ma table sql ne tenais pas aux heures de pointe sur mon ancien site (pourtant elle était performante), alors pour un MMO...

Faut vraiment faire client-serveur, faut pas chipoter, faut tout coder et pas passer par d'autres application.

Donc en gros il faut utiliser la bibliothèque "Network"et créer un programme qui gère les informations des différents joueurs?

Publié : sam. 03/mai/2008 17:06
par cha0s
Neosis a écrit :
wolfjeremy a écrit :Déjà que ma table sql ne tenais pas aux heures de pointe sur mon ancien site (pourtant elle était performante), alors pour un MMO...

Faut vraiment faire client-serveur, faut pas chipoter, faut tout coder et pas passer par d'autres application.

Donc en gros il faut utiliser la bibliothèque "Network"et créer un programme qui gère les informations des différents joueurs?

ou via les sockets, il est surement possible de faire un truc sympa avec sqlite.

Publié : sam. 03/mai/2008 18:00
par Anonyme
ou via les sockets
la lib native utilise déjà les sockets

Publié : sam. 03/mai/2008 19:06
par cha0s
Cpl.Bator a écrit :
ou via les sockets
la lib native utilise déjà les sockets
la lib network est plus limité par rapport a l'utilisation des socket en bas niveau. mais bon après il faut voir l'utilisation.

Publié : sam. 03/mai/2008 22:00
par Anonyme
oui , mais bon , la lib est bien fournie je trouve , non ? :roll:

Publié : mer. 07/mai/2008 2:29
par poshu
l'utilisation des sockets permet d'architecturer le code plus facilement sur un projet avec beaucoup de connections. Après, sur un petit projet, sur que la lib network est déjà cool.