DeletedUser
Invité
Bonsoir bonsoir,
Merci de discuter de façon constructive sur ce projet à venir.
Les premières informations :
Merci de discuter de façon constructive sur ce projet à venir.
Les premières informations :
Bonjour,
Melkon, un de nos développeurs adoré vient de publier un article sur le devblog de The West.
Il présente les instances multijoueurs en cours de développement.
Au cours des dernières semaines, de plus en plus d'informations ont été publiées concernant le projet appelé "instances multijoueurs". Mais bon, vu que c'est assez long comme mot, nous appelons cela MPI en interne.
Pas très créatif mais ça fonctionne pour l'instant.
Aujourd'hui, je vais vous transmettre les informations déjà disponibles et que je peux partager avec vous.
Comme mentionné plusieurs fois, la MPI est un dérivé du système actuel des Batailles de fort et se rapproche plus d'un contenu JcE (Joueur contre environnement).
Contrairement aux BDF, vous pouvez prendre place dans une MPI quand vous voulez (tant que votre personnage n'est pas occupé avec autre chose) avec vos amis ou d'autres joueurs !
Nous sommes en train de travailler sur le premier prototype jouable en ce moment même qui proposera un personnage principal en plus des joueurs : l'ours.
Tendre et adorable, vous et vos amis dormez en pleine forêt quand soudain, un ours apparait !
Comme vous avez été un mauvais scout (vous auriez réalisé qu'il y avait une case sinon juste à côté), vous devez vous protéger et combattre l'ours. Heureusement pour vous, ce n'est pas le plus intelligent des ours. Il attaque uniquement le joueur le plus proche à chaque fois mais il pallie à son manque d'intelligence en donnant de grosses et puissantes attaques et il est plutôt rapide le petit coquin.
Bien que je vienne d'inventer totalement cette histoire, le scénario ne l'est pas et présente quelques fonctionnalités.
Une fonctionnalité qui n'est pas mentionnée dans cette histoire mais que je veux introduire aujourd'hui est la vision de l'ours et des joueurs.
Je suis persuadé que vous en avez des beaux ! Mais la fonction la plus importante de vos yeux est de voir ce qui se passe.
Les batailles de fort ont un système plus ou moins similaire que vous retrouvez sur toutes les cartes, avec les objets qui bloquent les tirs et les joueurs qui ne bloquent pas la vision entre eux.
Cela va être différent dans les MPIs. Chaque objet va bloquer votre vision.
Un arbre ? Vous ne serez pas capable de voir ce qu'il y a derrière.
Un gros ours debout sur ses jambes devant vous ? Il va falloir être à l'aise avec son gros ventre velu (ou vous faire écraser) car vous ne verrez rien d'autre !
En plus d'objets fixes comme les arbres, murs, il y a beaucoup de mouvements à prendre en considération, ce qui veut dire que votre vision durant un tour peut totalement changer au tour d'après. Tout doit être calculé en temps réel.
Nous avons pour cela besoin d'un algorithme qui calcule ce que les joueurs peuvent voir et ne pas voir et c'est ce sur quoi j'ai travaillé ces derniers jours.
Tout cela a commencé avec un magnifique croquis où nous avons dessiné de belles lignes et cercles afin d'avoir une vision claire et d'identifier les différentes problématiques éventuelles.
Voilà à quoi ça ressemble quand un développeur sans compétence graphique se lance dans un dessin :
Ce qui est réellement intéressant dans ce dessin :
> Il y a plusieurs idées cachées dans ce croquis. Premièrement, nous avons ressorti nos compétences géométriques pour représenter plusieurs lignes droites à partir d'angles différents (90° - 180 et 360 degrés)
Notre première approche était de représenter les lignes d'un point spécifique (vision du joueur) dans la direction à laquelle il fait face.
Si une ligne rencontre alors un objet, ce qui se trouve derrière sera caché.
C'est une approche mais depuis le début, nous avons également travaillé sur une autre que vous pouvez voir dans l'angle en haut à droite.
Au lieu de jouer avec les rayons delta, l'autre possibilité est de parcourir le champ de vision du joueur et s'il rencontre un objet, calculer alors l'ombre de cet objet. Puis ajouter le résultat de cette ombre sous forme de carrés pour représenter ce qui ne peut pas être vu.
Lors de l'affichage de la grille, vérifiez si un carré est dans la liste des objets cachés ou non et affichez son contenu selon. C'était assez facile de commencer comme cela mais il y a eu quelques soucis rencontrés et des bugs sont encore présents.
Après le déploiement, nous avons commencé sur un algorithme de lancer de rayon. Vu qu'un rayon ne convient pas dans une grille de carrés, nous avons dû convertir cette information en utilisant l'Algorithme de tracé de segments de Bresenham afin de faire la connexion entre le rayon et les lignes sous-jacentes. Le code est ainsi plus facile, plus cours et plus efficace mais donne des résultats différents.
Comment peut-on vérifier si les résultats sont appropriés ?
Je ne voulais pas écrire quelques tests si tôt pour ce genre de fonctionnalité visuelle. J'ai donc décidé de rédiger un "visualiseur" rapidement, simplement et un peu salement afin de tester.
La partie fun : c'est disponible en ligne ! Avant de vous jeter dedans, merci de garder à l'esprit que ce n'est absolument pas optimisé mais juste un concept (le code est vraiment basique et pas bon du tout). C'est également lent s'il est ouvert depuis un ordinateur/navigateur internet non compatible (Firefox n'est pas fait pour cela, utilisez Chrome).
Rapide explication sur ce qui est affiché et ce que vous pouvez faire :
Lorsque vous passez la souris sur la grille, il y a un carré rouge (votre curseur) qui vous représente (le joueur). Cette position est calculée et montre ce que vous pouvez et ne pouvez pas voir de ce point.
La partie cachée est représentée en vert foncé ou en gris (il y a une légende sur la droite). Les carrés vert clair sont les objets qui bloquent la vision du carré rouge (donc vous). Le reste, les carrés blancs sont l'espace que le joueur peut voir. Vous pouvez ajouter/supprimer des objets en cliquant sur la grille.
Il y a des paramètres à droite de cette grille que vous pouvez également modifier : direction différente (360° par défaut) et un angle de vue différent, il en résulte un rayon de vision différent.
Puis, "Show shadows" fonctionne uniquement quand "Ray Tracing" n'est pas activé et affiche l'actuelle ombre calculée. Si vous cochez la case "Ray Tracing", l'algorithme lancer de rayon décrit au dessus est utilisé. S'il est désactivé, l'algorithme que nous venons de commencer se mettra en place.
En avant : http://map.the-west.de/view.html
J'ai réussi à construire plusieurs cartes de labyrinthes, errant à travers ! Qu'allez-vous faire ?
http://fr.wikipedia.org/wiki/Lancer_de_rayon
http://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_de_segment_de_Bresenham
Melkon, un de nos développeurs adoré vient de publier un article sur le devblog de The West.
Il présente les instances multijoueurs en cours de développement.
--------------------------------------------------------------------
Au cours des dernières semaines, de plus en plus d'informations ont été publiées concernant le projet appelé "instances multijoueurs". Mais bon, vu que c'est assez long comme mot, nous appelons cela MPI en interne.
Pas très créatif mais ça fonctionne pour l'instant.
Aujourd'hui, je vais vous transmettre les informations déjà disponibles et que je peux partager avec vous.
Comme mentionné plusieurs fois, la MPI est un dérivé du système actuel des Batailles de fort et se rapproche plus d'un contenu JcE (Joueur contre environnement).
Contrairement aux BDF, vous pouvez prendre place dans une MPI quand vous voulez (tant que votre personnage n'est pas occupé avec autre chose) avec vos amis ou d'autres joueurs !
Nous sommes en train de travailler sur le premier prototype jouable en ce moment même qui proposera un personnage principal en plus des joueurs : l'ours.
Tendre et adorable, vous et vos amis dormez en pleine forêt quand soudain, un ours apparait !
Comme vous avez été un mauvais scout (vous auriez réalisé qu'il y avait une case sinon juste à côté), vous devez vous protéger et combattre l'ours. Heureusement pour vous, ce n'est pas le plus intelligent des ours. Il attaque uniquement le joueur le plus proche à chaque fois mais il pallie à son manque d'intelligence en donnant de grosses et puissantes attaques et il est plutôt rapide le petit coquin.
Bien que je vienne d'inventer totalement cette histoire, le scénario ne l'est pas et présente quelques fonctionnalités.
Une fonctionnalité qui n'est pas mentionnée dans cette histoire mais que je veux introduire aujourd'hui est la vision de l'ours et des joueurs.
Je suis persuadé que vous en avez des beaux ! Mais la fonction la plus importante de vos yeux est de voir ce qui se passe.
Les batailles de fort ont un système plus ou moins similaire que vous retrouvez sur toutes les cartes, avec les objets qui bloquent les tirs et les joueurs qui ne bloquent pas la vision entre eux.
Cela va être différent dans les MPIs. Chaque objet va bloquer votre vision.
Un arbre ? Vous ne serez pas capable de voir ce qu'il y a derrière.
Un gros ours debout sur ses jambes devant vous ? Il va falloir être à l'aise avec son gros ventre velu (ou vous faire écraser) car vous ne verrez rien d'autre !
En plus d'objets fixes comme les arbres, murs, il y a beaucoup de mouvements à prendre en considération, ce qui veut dire que votre vision durant un tour peut totalement changer au tour d'après. Tout doit être calculé en temps réel.
Nous avons pour cela besoin d'un algorithme qui calcule ce que les joueurs peuvent voir et ne pas voir et c'est ce sur quoi j'ai travaillé ces derniers jours.
Tout cela a commencé avec un magnifique croquis où nous avons dessiné de belles lignes et cercles afin d'avoir une vision claire et d'identifier les différentes problématiques éventuelles.
Voilà à quoi ça ressemble quand un développeur sans compétence graphique se lance dans un dessin :
Sympa, n'est-ce pas ?
Je pense à me lancer dans une carrière artistique bientôt ou bien juste garder ça à l'esprit pour plus tard qui sait.
Ce qui est réellement intéressant dans ce dessin :
> Il y a plusieurs idées cachées dans ce croquis. Premièrement, nous avons ressorti nos compétences géométriques pour représenter plusieurs lignes droites à partir d'angles différents (90° - 180 et 360 degrés)
Notre première approche était de représenter les lignes d'un point spécifique (vision du joueur) dans la direction à laquelle il fait face.
Si une ligne rencontre alors un objet, ce qui se trouve derrière sera caché.
C'est une approche mais depuis le début, nous avons également travaillé sur une autre que vous pouvez voir dans l'angle en haut à droite.
Au lieu de jouer avec les rayons delta, l'autre possibilité est de parcourir le champ de vision du joueur et s'il rencontre un objet, calculer alors l'ombre de cet objet. Puis ajouter le résultat de cette ombre sous forme de carrés pour représenter ce qui ne peut pas être vu.
Lors de l'affichage de la grille, vérifiez si un carré est dans la liste des objets cachés ou non et affichez son contenu selon. C'était assez facile de commencer comme cela mais il y a eu quelques soucis rencontrés et des bugs sont encore présents.
Après le déploiement, nous avons commencé sur un algorithme de lancer de rayon. Vu qu'un rayon ne convient pas dans une grille de carrés, nous avons dû convertir cette information en utilisant l'Algorithme de tracé de segments de Bresenham afin de faire la connexion entre le rayon et les lignes sous-jacentes. Le code est ainsi plus facile, plus cours et plus efficace mais donne des résultats différents.
Comment peut-on vérifier si les résultats sont appropriés ?
Je ne voulais pas écrire quelques tests si tôt pour ce genre de fonctionnalité visuelle. J'ai donc décidé de rédiger un "visualiseur" rapidement, simplement et un peu salement afin de tester.
La partie fun : c'est disponible en ligne ! Avant de vous jeter dedans, merci de garder à l'esprit que ce n'est absolument pas optimisé mais juste un concept (le code est vraiment basique et pas bon du tout). C'est également lent s'il est ouvert depuis un ordinateur/navigateur internet non compatible (Firefox n'est pas fait pour cela, utilisez Chrome).
Rapide explication sur ce qui est affiché et ce que vous pouvez faire :
Lorsque vous passez la souris sur la grille, il y a un carré rouge (votre curseur) qui vous représente (le joueur). Cette position est calculée et montre ce que vous pouvez et ne pouvez pas voir de ce point.
La partie cachée est représentée en vert foncé ou en gris (il y a une légende sur la droite). Les carrés vert clair sont les objets qui bloquent la vision du carré rouge (donc vous). Le reste, les carrés blancs sont l'espace que le joueur peut voir. Vous pouvez ajouter/supprimer des objets en cliquant sur la grille.
Il y a des paramètres à droite de cette grille que vous pouvez également modifier : direction différente (360° par défaut) et un angle de vue différent, il en résulte un rayon de vision différent.
Puis, "Show shadows" fonctionne uniquement quand "Ray Tracing" n'est pas activé et affiche l'actuelle ombre calculée. Si vous cochez la case "Ray Tracing", l'algorithme lancer de rayon décrit au dessus est utilisé. S'il est désactivé, l'algorithme que nous venons de commencer se mettra en place.
En avant : http://map.the-west.de/view.html
J'ai réussi à construire plusieurs cartes de labyrinthes, errant à travers ! Qu'allez-vous faire ?
http://fr.wikipedia.org/wiki/Lancer_de_rayon
http://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_de_segment_de_Bresenham