<p>OpenApoc ne génère pas la gamme complète de cartes OG pour chaque mission</p>

Créé le 28 juin 2019  ·  3Commentaires  ·  Source: OpenApoc/OpenApoc

Comme indiqué spécifiquement à propos des cartes des bidonvilles dans le numéro 396, il semble que le problème avec OpenApoc ne générant pas la gamme complète de cartes pour chaque type de bâtiment et de zone soit généralisé.

Il existe un nombre considérable d'options qu'OpenApoc devrait pouvoir créer, mais il ne semble pas

Les vidéos youtube de @Istrebitel montrent également que dans ses versions OpenApoc au moins, le générateur de carte créait plus de variétés de zone de combat... Cela ne semble jamais avoir été mis en ligne ou a été désactivé depuis qu'il a été testé

Une enquête plus approfondie est nécessaire

Idéalement, nous devrions offrir toutes les combinaisons de cartes qu'OG a faites, mais aussi permettre plus de possibilités et une variété de tailles de cartes

Il semble que les cartes aient été mises à l'échelle en fonction de la taille de l'escouade dans OG, mais avec un élément "aléatoire" qui signifiait que les petits nombres d'escouades pouvaient rarement se retrouver sur une très grande carte...

!BUG! low priority Enhancement Feature Request Help Wanted

Commentaire le plus utile

Nouvelle mise à jour d'istrebitel

Ouais, je pense que j'y suis presque arrivé - des cartes plus grandes pour un plus grand nombre d'ennemis.
La façon dont les agents de génération fonctionnent est que les cartes sont séparées en LOS
blocs, qui sont utilisés pour la recherche de chemin, les calculs LOS et pour
se reproduisent tous en même temps. Chaque tuile d'un bloc de carte appartient à
l'un des blocs LOS, qui sont tous en forme de boîte. Ensuite, il y a un monde
définir si vous pouvez sortir ou entrer dans la carte sur certains bords, par exemple
chaque carte. Sur cette base, le bloc LOS est éligible ou non pour apparaître
unités d'une certaine allégeance. Il y a un ensemble de valeurs définies dans le bloc
qui régissent cela. Ces valeurs doivent être décrites quelque part sur le
forums ou dans les fichiers txt joints au projet. Si je me souviens
correctement, il existe des valeurs de spawn de bloc pour les unités de joueurs, les unités extraterrestres,
unités hostiles, unités civiles, peut-être que le personnel civil du x-com a un
séparer un, peut-être pas, dont je ne me souviens pas, et je me souviens
il y a un bloc spécial pour la reine du frai.

Ainsi, la façon de choisir la taille de la carte en fonction de la taille de l'équipe serait de soit
étudiez intelligemment les blocs et voyez quel bloc fournit combien
opportunités de frai et jugez en fonction de cela, ou peut-être de la vanille
vient d'avoir un hack codé en dur semblable à "si plus de X alors utilisez la taille Y"

Aussi une chose à noter, je ne pense pas avoir résolu ce problème, la façon dont
certains blocs sont faits, les points d'apparition des parties hostiles peuvent être en LOS de
entre eux, comme les entrepôts MARSEC, par exemple, vous pouvez souvent voir un
beaucoup de points d'apparition de sécurité marsec à partir des points d'entrée. Le jeu
garantit en quelque sorte qu'il n'y a jamais une telle situation dans laquelle vous apparaissez
LOS d'un ennemi. Vous pouvez apparaître dos à dos, c'est-à-dire une fois que vos unités
bougez un peu ils se voient, mais vous ne pouvez pas apparaître avec l'ennemi
déjà en LOS. Logiquement, il devrait s'ensuivre que le jeu en quelque sorte
exclut les points d'apparition ou les blocs LOS en fonction de si ce bloc est
observé par l'unité déjà engendrée. Logiquement alors, il peut arriver qu'un
une carte théorique de champ ouvert est générée, qui sur le papier a assez
points d'apparition pour frayer toutes les unités participantes, mais ne
avoir assez de blocs pour engendrer chaque unité car toute unité engendrée voit
tout le bloc. Je pense qu'à la vanille il n'y avait pas un tel champ ouvert
blocs, donc cela n'arriverait jamais, mais avec le modding, cela est très probable
volonté et nous devons être prêts pour cela.

Tous les 3 commentaires

Voici la réponse d'Istrebitel sur la génération de carte

d'après ce dont je me souviens, il y a une liste de blocs dans les fichiers du jeu d'origine, comme 9 ou 18 blocs différents pour les bidonvilles, chaque bloc ayant un nombre minimal et maximal d'occurrences, et la taille de la carte elle-même étant définie avec une taille minimale et maximale possible . Ensuite, le générateur sélectionne et associe des blocs au hasard, ce qui donne une carte aléatoire.

Pour forcer OpenApoc à générer des cartes de taille énorme ou minuscule, vous devez modifier ces nombres de "quantité de blocs XYZ", d'où qu'il les lise, ou simplement les modifier rapidement dans le code (lire une statique au lieu de lire à partir d'un fichier, c'est-à-dire toujours générer une carte 4x4x1 des bidonvilles, au lieu de générer tout ce qui est défini pour les bidonvilles dans les fichiers).
Une explication plus détaillée serait :

  • Chaque carte a sa propre taille de morceau
  • Chaque carte est constituée de blocs. Les blocs sont des modèles - différents types de secteurs de bidonvilles, par exemple, ou différents types de blocs de base x-com. Ceux-ci sont assemblés au hasard pour former une carte
  • Les blocs ont une taille variable en morceaux. Par exemple, il y a un carrelage, des appartements de luxe je pense, qui a un bloc 1x1x2 (un ascenseur), un bloc 1x2x1 (un couloir) et de nombreux blocs 1x1x1 (les appartements eux-mêmes). Les ovnis sont de simples cartes 2x2x2 qui ne comportent qu'un seul bloc 2x2x2. Etc.
  • Chaque bloc a une occurrence min et max. Pour l'exemple des appts de luxe, un bloc ascenseur aura une occurrence minimale de 1, sinon une carte sans ce bloc pourrait être générée et les étages seraient
    inaccessible sans destruction de terrain car il n'y a pas d'ascenseur, seulement des appartements et des couloirs de plain-pied
  • Chaque carte a une taille minimale et maximale sur tous les axes, en morceaux (ou peut-être qu'elle ajoute ou soustrait simplement au hasard 1 à la taille de morceau typique? Je ne me souviens pas)
  • L'algorithme de génération de carte est inconnu, n'a pas fait l'objet d'une ingénierie inverse, je l'ai donc construit à partir de zéro, et il semblait fonctionner à proximité de la vanille
  • AFAIK, mon algorithme va d'abord faire une liste de blocs obligatoires et les place tous au hasard
  • Ensuite, il fait une liste des blocs restants (occurrence max restante> 0) et place l'un de ces blocs au hasard jusqu'à ce que la carte soit terminée
  • S'il ne peut pas se placer, il se déplace pour faire de la place, comme tetris (mais généralement cela n'arrive jamais)
  • S'il ne peut pas créer de carte, il réessaye avec d'autres tailles
  • Puis abandonne et crache une erreur (généralement, cela n'est jamais atteint avec les modèles de carte vanille)
  • Lorsqu'il a placé tous les blocs, il génère ensuite la carte elle-même
  • crée l'objet de la carte et remplit la carte avec des objets basés sur les blocs (les murs, les décorations, les points d'apparition d'objets, etc.)

Nouvelle mise à jour d'istrebitel

Ouais, je pense que j'y suis presque arrivé - des cartes plus grandes pour un plus grand nombre d'ennemis.
La façon dont les agents de génération fonctionnent est que les cartes sont séparées en LOS
blocs, qui sont utilisés pour la recherche de chemin, les calculs LOS et pour
se reproduisent tous en même temps. Chaque tuile d'un bloc de carte appartient à
l'un des blocs LOS, qui sont tous en forme de boîte. Ensuite, il y a un monde
définir si vous pouvez sortir ou entrer dans la carte sur certains bords, par exemple
chaque carte. Sur cette base, le bloc LOS est éligible ou non pour apparaître
unités d'une certaine allégeance. Il y a un ensemble de valeurs définies dans le bloc
qui régissent cela. Ces valeurs doivent être décrites quelque part sur le
forums ou dans les fichiers txt joints au projet. Si je me souviens
correctement, il existe des valeurs de spawn de bloc pour les unités de joueurs, les unités extraterrestres,
unités hostiles, unités civiles, peut-être que le personnel civil du x-com a un
séparer un, peut-être pas, dont je ne me souviens pas, et je me souviens
il y a un bloc spécial pour la reine du frai.

Ainsi, la façon de choisir la taille de la carte en fonction de la taille de l'équipe serait de soit
étudiez intelligemment les blocs et voyez quel bloc fournit combien
opportunités de frai et jugez en fonction de cela, ou peut-être de la vanille
vient d'avoir un hack codé en dur semblable à "si plus de X alors utilisez la taille Y"

Aussi une chose à noter, je ne pense pas avoir résolu ce problème, la façon dont
certains blocs sont faits, les points d'apparition des parties hostiles peuvent être en LOS de
entre eux, comme les entrepôts MARSEC, par exemple, vous pouvez souvent voir un
beaucoup de points d'apparition de sécurité marsec à partir des points d'entrée. Le jeu
garantit en quelque sorte qu'il n'y a jamais une telle situation dans laquelle vous apparaissez
LOS d'un ennemi. Vous pouvez apparaître dos à dos, c'est-à-dire une fois que vos unités
bougez un peu ils se voient, mais vous ne pouvez pas apparaître avec l'ennemi
déjà en LOS. Logiquement, il devrait s'ensuivre que le jeu en quelque sorte
exclut les points d'apparition ou les blocs LOS en fonction de si ce bloc est
observé par l'unité déjà engendrée. Logiquement alors, il peut arriver qu'un
une carte théorique de champ ouvert est générée, qui sur le papier a assez
points d'apparition pour frayer toutes les unités participantes, mais ne
avoir assez de blocs pour engendrer chaque unité car toute unité engendrée voit
tout le bloc. Je pense qu'à la vanille il n'y avait pas un tel champ ouvert
blocs, donc cela n'arriverait jamais, mais avec le modding, cela est très probable
volonté et nous devons être prêts pour cela.

S'il vous plaît voir #396 pour d'autres choses relatives à ce problème

Cette page vous a été utile?
0 / 5 - 0 notes