vendredi 25 mars 2011

Réflexions sur la création d'une passerelle "Online" pour Rpg Maker

Aujourd'hui, j'ai eu l'occasion de lire un topic d'entraide sur Oniromancie. La question portait sur la réalisation d'un système "Online". Comme toujours, En Ligne rime avec MMO, alors que le terme Massive Multi joueur n'a même pas été prononcé.
J'ai décidé de rédiger un petit article qui explore la thématique du "Online". Les propos ci-dessous ne seront évidemment issu de ma propre recherche et le module commentaire est prévu pour exposer votre désaccord/accord.

Avant toute chose
Effectivement, créer un MMORPG semble impossible sur RPG MAKER car la gestion des écouteurs/processus interne à RM n'est pas adapté. Cependant, créer une passerelle Internet est tout à fait envisageable.
Cet article n'est absolument pas un tutoriel mais plus une mise à plat d'expériences.

Mais "En ligne" ?
Avant de prouver pleins de choses avec amphigourisme :), qu'entendons-nous par En ligne? Personnellement, lorsque je joue à 128 de Zeus81, le fait que les informations soient transmises sur un serveur tierce prouve que oui, c'est tout à fait faisable. De plus, Berka ayant déjà sortit un script de "navigateur web" (ici). Encore une preuve qu'il est possible d'être rattaché à Internet.
Mais au delà de ces exemples ponctuels, est-il possible de créer un jeu ou une interaction serait possible?

L'interaction entre les joueurs
Tonyryu prouve qu'il est évidemment possible de créer un jeu multi-joueur avec son projet Olympe. Cependant, ce n'est pas mon code et je vais donc vous exposer ma méthode pour permettre de créer un mutli-joueur.

Choix de la technologie
Avant de me lancer dans le code, il fallait comprendre la logique du mode "En ligne". Pour créer un système en ligne, il nous faut 2 choses: Un client, un Serveur.

Nous aurons donc un serveur qui relayera des informations entre les différents clients connectés.
Pour nous connecter il existe plusieurs manière. J'ai choisis les Sockets via le protocole TCP/IP. Il existe d'autre manière mais celle que j'ai choisi est celle-ci.
Pour la rédaction du serveur, j'ai utilisé le langage Erlang, pour ses hautes performances, sa gestion des processus avancée et concurrentielle et son approche Fonctionnelle qui limite les effets de bords. C'est un choix (et Erlang à déjà fait ses preuves dans le monde du jeu en réseau). N'importe quel langage permettant de manipuler des Sockets est cependant envisageable.
Maintenant que notre serveur est écrit , nous sommes confronté à un premier problème, Le RGSS n'admet pas de librairie manipulant les Sockets, donc il faut passer par une librairie externe. Soit une DLL pour être utilisée par Rpg Maker via les WIN32API. Tout ce qui touche à la connexion au serveur devra donc se passer dans une DLL C ou C++ (personnellement j'ai choisi le C).
Après, ce sera a Rpg Maker de récupérer les informations fournie par le serveur (donc par la fonction comprise dans la DLL) et utiliser une fonction comprise dans la DLL pour envoyer les mises à jours.

Où vont nos données ?
Maintenant que l'on sait qu'il est possible de communiquer entre un serveur, comment réussir à garder des données pendant une session de jeu? Et bien une fois de plus, les possibilités sont multiple, cependant, j'ai choisi de passer par une Base de données. Alors là, je sens déjà plusieurs personnes qui vont hurler en me disant que c'est stupide et que c'est beaucoup trop lent. Et bien non, il faut savoir que j'utilise Erlang, donc sa base de données embarquée Mnesia qui est non-relationnel (par défaut mais peu le devenir), et est, sur la longue utilisation, beaucoup plus rapide qu'une base de données SQL classique et correspond parfaitement à ce que je veux faire. Donc je me contente de créer des profile que je met à jours en leur attribuant des ID's en fonctions de leur connexion (et je vide mes tables quand un client quitte le jeu).
Je vais donc récapituler avec un schéma le déroulement de mon jeu:




Voici une schéma rapide du processus de jeu. En Erlang, chaque joueur correspond à un processus et dés qu'un client entame une action (déplacement, attaque etc.) une fonction envoi un signal au serveur qui effectue un traitement sur la base de données et qui renvoi presque instantanément les modifications à effectuer et c'est en Ruby qui se déroule les modifications. Grâce aux performances de Erlang, tout ça s'exécute très rapidement.

Fin donc conclusion :)
Voici donc un aperçu (fort succinct, j'en convient)  des démarches entreprise pour créer un mini jeu de combat sur internet. La présentation n'est pas détaillé et n'a pas pour vocation d'être un tutoriel.
J'espère seulement que vous aurez pu voir que faire un mode multi joueur est envisageable.
Bien à vous, NUKI.

jeudi 24 mars 2011

Molok nous raconte sa vie

Au delà de la publication de script et de recherches, il est aussi intéressant de partager un peu de choses.
Voici donc une approche très très peu branchée programmation de l'orienté Objet vu par Molok.
Lien vers le cours au format PDF
Il s'agit donc de la première partie d'une série, vous pouvez critiquer ici ou par courriel.
Bonne lecture.

dimanche 20 mars 2011

Acquisition d'une base de documentation

Avant se lancer dans la schématisation de notre projet. Il était temps de se documenter réellement sur ce fameux Propp. Pour cela, nous devions nous procurer son livre !
Grace a notre légendaire chance, nous avons réussis à réunir les Dragon Balls, et nous avons pu invoquer Sheron qui s'est empressé d'exaucer notre souhait !
La lecture peut être entamée pendant que d'autres se penchent sur comment générer les éléments dont nous aurons besoin !

Concernant nos futurs détracteurs
En spéculant sur notre précédente publication, beaucoup on crut à une génération d'un jeu complet au moyen d'un algorithme. Sachez qu'il n'en n'est rien. Nous ne comptons pas perdre la saveur de la rédaction scénaristique.
Nous vous donnerons bientôt (je l'espère), des nouvelles.

samedi 19 mars 2011

Parlons mécanique

Après une magnifique introduction, il est temps de se lancer dans les premières interrogation. Et c'est encore à moi qu'il en incombe de tenter de mettre à plat notre projet (dont les chances de concrétisation sont presques nulles).

Parlons de contes
Il est intéressant de faire une comparaison entre les contes et le RPG's.
Notre blog traitant principalement sur les jeux-vidéos, il nous est venu à l'idée d'associer le développement scénaristique d'un jeu à un conte.
Il est même relativement courant que les jeux (principalement de type RPG) possèdent une ambiance fortement onirique. Comme notre premier projet est en rapport direct avec les mécaniques d'un scénario de RPG, nous allons nous intéresser à la structure "morphologique" du conte et en extraire ce qu'on pourrait considérer comme des éléments récurrents.
Vladimir Propp offre une intéressante analyse qui pourrait servir de base à la création d'un univers cohérent en respectant certaines directives pour la réalisation d'un jeu.

Game Design: les joies de la génération
En réfléchissant logiquement, il serait complexe de créer un jeu dont les données scénaristiques seraient établies par un algorithme, cependant, Propp nous offre une analyse de qualité qui semble vraie dans énormément de cas concernant le découpage logique et général d'un conte.
Les processus de créations se découpent donc sur la génération d'un univers, d'une collection de villes, d'immobiliers, de PNJ/Acteurs. La trame chronologique peut être rapportée directement aux contes et à la découpe de Propp,  en pensant de cette manière, la création d'un univers interactif est envisageable.

Concluons
Et bien actuellement, nous avons une piste pour démarrer, mais cette piste n'est pas franchement très claire. Nous n'avons dégagé que des éventuelles possibilité d'envisager le développement de ce projet. Mais comme le but de ce blog est de blablater, on tiendra le monde du RSS au courant de nos recherches.

Salut à toi VISITEUR

Préambule
Derrière ce titre de blog fort amphigourique, se cache une communauté secrète qui a pour projet de s'amuser !
Sachez tout d'abord qu'aucun de nous n'est réputé pour avoir une spécialement bonne orthographe et que nos chroniques seront peut être bien floue en terme de régularité linguistique. MAIS ON S'EN FICHE CAR: la thématique de notre blog est l'amusement.

Un peu plus de "sharpen"
Ce blog est super cool en fait, car il va nous permettre de publier nos "amuseries" foisonnantes et en plus, ce qu'on ne peut pas faire sur MSN, modérer VOS PROPOS (à prendre au second degré évidemment... nous ne sommes des dictateurs) !
Au delà de la modération de vos potentiels commentaires, nous allons, au cours de ce blog,  parler de nous et de nos pérégrination dans l'expérimentation de la conception de jeux-vidéos ou du moins, de systèmes et add-ons relatifs aux jeux-vidéos.

RPG MAKER MAIS PAS QUE !
Alors que les pros se moqueront de notre manque de sérieux d'utiliser un logiciel aussi "réservé aux enfants", nous on s'en fiche. Bien que le RGSS et autres manipulations événementielles seront le centre de ce blog, nous serons pourtant amener à faire autre chose !
Donc on va écrire des trucs en rapport avec des choses qui ne sortiront probablement jamais mais qui sont, passablement intéressante.

Des auteurs king's
Concernant les auteurs, ils squattent tous mon compte GMAIL (Nuki) mais on s'en fiche, on à confiance en nous réciproquement alors je pense pas qu'ils liront les 288773 spams que je reçois par jours.
Par contre, pour être authentique, on citera (quand il le faut), les multiples rédacteurs de la chose en question !
Nous sommes donc enchantés de nous présenter: Molok, Nuki, Raho et Kmikzy (qui n'est pas encore au courant lui, mais qui nous rejoindra surement dans le délire !)

Concluons par ce que nous voulons
J'allumerai une bougie pour que ce blog ne sombre pas dans l'oubli et pour que les gens ne nous prennent pas pour des fous prétentieux (ce que nous sommes mais aussi ce que nous maquillons derrière de l'assurance et de la confiance en sois.)
Au delà de tout ça, je vous souhaite un joyeux 19 Mars 2011, que le Gros Igor soit avec vous !

Nuki