Voila, je suis en train de développer un chti jeu de rôle en ligne et je butte sur un problème... Fan de Fallout Tactics et de Mordheim (pour ceux qui connaissent) j'essaye de développer l'aspect camouflage/couverts des deux jeux. Seulement c'est chaud bouillant !
Je vous mets donc le petit texte que j'ai pondu pour montrer aux profs de math que je connais et je le mets donc içi aussi, peut-être l'un d'entre vous pourra m'aider...
Contexte Une base de données contient plusieurs enregistrements représentant des cases, caractérisées par leur position en X et en Y, ainsi que différants champs déterminant la présence ou non d'un obstacle. L'ensemble de ces cases forme une sorte de matrice. L'application est destinée à être convertie en langage algorithmique.
Objectif Le problème consiste à déterminer si une case de la matrice est "visible" à partir d'une autre en fonction d'éventuels obstacles présents dans les cellules intermédiaires et si oui, en quelle proportion, pour en faire des formules mathématiques, qui seront ensuite converties en langage programmatique.
Exemple La case observante est la case gris clair en (0,0). La case observée est la case gros foncée en (2,4). Le trait bleu représente un obstacle.
Possibilités Une idée serait de tracer des "lignes de vue" partant du centre de la case observante vers les extrémités de la case observée, qui formeront ainsi une ligne de mirre. Ces deux lignes de vue seront tracées en vert. Ceci permet de définir quelles sont les cases susceptibles de bloquer la vue si elles sont pourvues d'un obstacle. Ce cases sont coloriées en jaune sur le plan. A noter que les cases grises peuvent elles aussi contenir un obstacle, donc sont elles aussi comprises dans ces cases. La case jeune vif, en (2,2), possède un obstale qui bloque la vue. La case observante a donc une ligne de mirre restreinte sur la case observée. Cette restriction est représentée en mauve. La partie à la gauche de cette restriction sur la case observée n'est donc pas visible. Le problème est donc de déterminer les cases qui bloquent potentiellement la ligne de mirre (en jaune), et si elles le sont, de déterminer en quelles proportions elles la bloquent. (En comptant que des obstructions peuvent en inclure d'autre). Deux possibilités ont été avancées : une projection de toutes les cases à obstacle sur la case observée, ou un genre de détermiantion des equations des droites partant des cases avec un système de pondération qui réduit la visibilité de x% si passage par une case obstruée...
Plus loin... - Les obstacles dont de taille variable ; un obtacle à 50% maquant la moitié d'une case n'obstruerait donc que 25% de la visibilité... - Les cases observées contiennent des objets, qui eux aussi possèdent une taille variable ; un obstacle de taille 50% masquant la moitié d'un objet de taille 25% obstrue 75% de la visibilité. - Le système n'est plus une matrice à deux dimensions, mais à trois dimension...
Application Cet algorithme servirait comme moteur dans un jeu de stratégie. Des personnages - les objets - y seraient présents, et de taille variable car ils pourraient choisir plusieurs postures - debout, à croupis ou à plat ventre. Des obstacles - murs, barricades... - y seraient aussi présents, la taille dépendant du type d'obstacle. Un mur couvre à 100%, et une barricade à 50% par exemple. Les soldats pourraient utiliser les obstacles pour se mettre à couvert (entre 1 et 99% d'obstruation) voir s'y cacher complètement (100% d'obstruation). La 3eme dimension de la matrice représenterait des étages dans les obstacles, qui pourraient alors former des bâtiments.
Merci d'avance à tous ceux qui liront ca
PS : Désolé de la rigueur des textes mais à la base j'avais pas pensé le mettre ici
Snouf |