Dans une grille de tuiles où le mouvement dans l'une des 8 directions prend exactement le même nombre de tours (règles de style d'échiquier), puis-je empêcher le mouvement en diagonale de montrer plus de nouvelles tuiles que le mouvement orthogonal?
Par exemple: Vous êtes la boîte rouge dans l'image ci-dessous. Les cellules vertes sont actuellement visibles pour vous (champ de vision carré). Vous pouvez déplacer une distance d'une tuile dans l'une des huit directions.
Si vous vous déplacez au nord-est , vous explorerez 13 nouvelles tuiles (indiquées en bleu). Si vous vous déplacez vers le sud , vous n’explorerez que 7 nouvelles tuiles (indiquées en violet).
Comment puis-je rendre les voyages dans chaque direction également propices à l'exploration?
la source
Réponses:
Dungeons and Dragons 3.5 (RPG stylo-papier) propose une solution à la fois pour le calcul du mouvement et du rayon basé sur la grille: le mouvement en diagonale coûte 1,5 fois le coût orthogonal. Étant donné que la diagonale d'une unité carrée est d'environ 1,414, 1,5 est assez proche.
Etant donné que D & D 3.5 ne prend en charge que les mouvements d’entiers, la méthode de calcul utilisée est que les mouvements orthogonaux coûtent «un carré». Votre premier mouvement en diagonale ne coûte également qu’un «carré», mais la deuxième diagonale coûte «deux carrés». Vous alternez un et deux carrés pour chaque mouvement diagonal. L'implémentation de cette règle de mouvement dans votre jeu résoudra plusieurs problèmes de mouvement en diagonale.
Comme le montre ce diagramme, cette règle de mouvement crée une approximation raisonnable des cercles et n’est pas décalée de plus de 1 par rapport à la distance réelle (à moins de 15 unités du départ).
Si votre rayon de vision / exploration est également calculé de cette manière, le mouvement et les découvertes diagonales seront à peu près aussi proches ou aussi éloignés que ceux orthogonaux.
la source
Vous devez modifier la forme du champ de vision.
Ainsi, lorsque vous vous déplacez dans n'importe quelle direction, le même nombre de nouveaux carrés devient visible.
Voici une possibilité:
la source
Pour que les mouvements diagonaux et orthogonaux révèlent approximativement la même zone, vous avez besoin de deux choses (chacune d’elles ayant déjà été suggérée dans une autre réponse ou commentaire):
Portée de vue approximativement circulaire :
En soi, cela ne donnera pas exactement la même surface révélée pour les deux types de mouvement. Par exemple, dans l'image ci-dessus, le mouvement orthogonal révèle 9 carrés, tandis que le mouvement en diagonale en révèle 13. C'est toujours meilleur que le ratio 13/7 pour la zone d'affichage carré dans votre exemple.
En fait, à mesure que le rayon de vue augmente, le rapport des zones révélées par pas diagonal / orthogonal tend à √2 1,414 pour une zone circulaire, tandis que le même rapport pour une zone de vue carrée tend à 2.
Mouvement diagonal plus lent :
Dans la vraie vie, marcher en diagonale sur un champ carré prend plus de temps que de marcher sur l'un des côtés. En fait, cela prend environ √2 ≈ 1,414 fois plus longtemps. Si vous voulez que le mouvement dans votre jeu soit réaliste, vous devez le faire aussi.
En pratique, 3/2 = 1.5 est une assez bonne approximation de √2. Ainsi, vous pouvez simplement faire en sorte que chaque pas orthogonal prenne deux unités de temps et que chaque pas en diagonale en prenne trois. Avec l'exemple de zone de visualisation ci-dessus, cela donne 9/2 = 4,5 carrés révélés par unité de temps pour le mouvement orthogonal, et 13/3 = 4,33 carrés révélés par unité de temps pour le mouvement diagonal. Assez proche, hein?
Alternativement, si vous souhaitez vous en tenir à "1 pas = 1 unité de temps" pour le mouvement orthogonal, vous pouvez utiliser quelque chose comme le système de D & D suggéré par Dane et faire en sorte que chaque pas en diagonale consomme un tour supplémentaire. (Si vous faites cela, cependant, vous devez donner à chaque unité un compteur explicite du nombre de pas en diagonale qu’elle a effectués; sinon, vous pourriez vous retrouver avec des exploits comme, par exemple, un E, NE, E, NE, .. . séquence de mouvement permettant à un joueur d'explorer plus rapidement que prévu.)
la source
Puisque vous utilisez une grille et que vous savez dans quelle direction l'utilisateur se dirige, rien ne vous empêche d'adapter la réponse précédente et d'utiliser un champ de vision différent selon la direction.
Par exemple, vous pouvez élargir le champ pour inclure les coins lorsque vous vous déplacez dans des directions cardinales et le réduire de deux carrés à chaque extrémité dans vos cases en diagonale afin que chacune d’elles découvre 9 carrés.
Une autre alternative, selon le fonctionnement de votre éclairage, consiste à utiliser une meilleure approximation du cercle avec antialiasing pour révéler partiellement certains carrés.
la source
Plutôt que d’avoir une portée de visionnage fixe, la zone de visibilité du joueur dépendra de la direction dans laquelle il se trouve, ainsi que peut-être de la direction prise par le joueur au cours des derniers tours (un joueur qui se dirigeait vers le nord pourrait peut-être faire immédiatement un pas en direction du sud, mais peut prendre quelques virages pour obtenir une distance de visualisation maximale dans cette direction). Un joueur qui se dirige vers le nord depuis un couloir étroit vers une grande salle et continue de se déplacer vers le nord aurait une visibilité limitée à l’est et à l’ouest, et devrait probablement le faire. Lorsque le joueur cesse de bouger, le système peut automatiquement "explorer" les zones invisibles se trouvant dans le rayon de vision actuel du joueur. Toutefois, pendant que le joueur se déplace activement, le champ de vision doit être plus limité.
la source
En guise d'alternative à un champ de vision plus complexe (qui, comme discuté ci-dessus, ajoute ses propres problèmes en raison des contraintes d'une mise en page basée sur une grille), vous pouvez essayer d'imiter l'effet de mouvement dans un jeu qui n'est pas basé sur une discrétion. la grille. Là où le libre mouvement est possible, un mouvement diagonal d'une unité correspond exactement à cela, et non aux ~ 1,41 unités de mouvement vues avec une grille carrée.
Bien que vous ne puissiez pas forcer le mouvement d'une seule unité sans perdre votre grille descendante (ce qui modifierait considérablement la conception de votre jeu), vous pourriez peut-être garder une trace du mouvement supplémentaire pris et abandonner des mouvements plus tard: suivez les 0.41 supplémentaires et une fois qu'ils totalisent plus que 1.00 a cette unité sauter un coup. Ou le contraire: considérez la diagonale comme étant normale, additionnez les 0,41 pour chaque mouvement horizontal ou vertical et accordez un crédit de mouvement supplémentaire une fois supérieur à 1 (ou 1,41 pour un mouvement en diagonale).
Vous devez faire attention à la manière dont vous présentez ceci à vos joueurs de manière à ce que cela ait l'air lisse et juste. Dans un scénario multi-humain, de tels changements pourraient devenir un avantage stratégique pour les joueurs. Cela peut être un problème, ou il peut exister un moyen naturel de le mélanger à la mécanique du jeu (permettre éventuellement aux joueurs de stocker une petite montant du "crédit de déménagement inutilisé" qu’ils peuvent utiliser pour réagir rapidement plus tard et disposer des 0,41s supplémentaires de flux de déménagement dans (ou retirer de) ce pool.
Cela fonctionnerait mieux si les entités de contrôle de joueur déplacées bougeaient plus d'une unité à chaque tour. Par exemple, trois points de mouvement peuvent être utilisés comme trois mouvements horizontaux, ou deux diagonaux avec 0,16 restant dans la piscine pour plus tard. Une fois que cela atteint 1,00, le joueur obtient un coup "gratuit" hor / very et à 1,41 une diagonale libre. Vous pouvez plafonner le surplus à 1,5 pour le forcer à être utilisé ou perdu à ce moment-là afin d'empêcher le joueur de conserver cette énergie stockée pendant une éternité ou de la laisser s'accumuler.
Évidemment, ceci est une complication de vos règles de jeu qui peut être complètement indésirable, et ce ne serait pas pratique pour un jeu non informatisé, mais si vous pouviez le faire fonctionner dans les règles existantes de votre jeu, cela limiterait la différence d'exploration entre les directions de mouvement sans avoir besoin d'abandonner le format de grille.
la source
Vous pouvez faire en sorte que le joueur bouge de deux cases s’il se déplace de haut en bas, à gauche ou à droite, et d’une seule diagonale. Ce ne serait pas complètement égal, mais ce serait beaucoup plus proche.
la source