Réalisation d'un MMORPG, conseillez moi.
Réalisation d'un MMORPG, conseillez moi.
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 !
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 !
Oui et oui
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

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
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
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.
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.
-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
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?
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.