Obtenez des contraintes de la vie réelle
Souvent, la réponse sur la façon de trouver le bon algorithme commence par regarder comment ces choses se produisent dans la vie réelle. Avez-vous examiné cela? Du haut de ma tête, je peux penser à ce qui suit:
- Les routes sont là pour relier les bâtiments et autres points d'intérêt
- Les bâtiments sont placés le long des routes existantes, si possible
- S'il n'y a pas de route, un bâtiment est placé dans un endroit vide et connecté à une route voisine via sa propre route
- Les bâtiments sont placés à proximité d'autres bâtiments qui intéressent leurs habitants: les gens se déplacent pour vivre près de leurs lieux de travail, magasins d'alimentation et de vêtements, etc.
- Les bâtiments sont placés à proximité des ressources nécessaires à leur utilisation prévue. Par exemple, une scierie est placée près des forêts, ou même dans une clairière. les gens ont besoin d'eau et de nourriture (plantes, animaux) pour vivre quelque part.
- Les bâtiments sont placés loin des autres bâtiments qui sont préjudiciables à l'usage auquel ils sont destinés ou qui leur seraient préjudiciables. Par exemple, un magasin de teinturier sent horrible, il n'est donc généralement pas placé dans un quartier résidentiel. De même, les tavernes et les restaurants sont bruyants, de sorte que les résidents ne veulent pas vivre au-dessus d'eux, mais ont besoin de clients, doivent donc être à proximité des zones résidentielles.
- Certains pays ont des lois de zonage qui influencent également l'emplacement des bâtiments. Habituellement, il s'agit d'une façon plus formelle d'anticiper quels types de bâtiments peuvent se nuire les uns aux autres, ou quelles ressources sont uniques à la zone (comme un sol de haute qualité pour les champs, pas pour la construction de parkings).
- Les bâtiments sont destinés aux habitants, et leur style et leurs préférences personnelles se reflètent en eux. Par exemple, si une population est pauvre, ils sont beaucoup plus susceptibles de partager le sol (gratte-ciel, immeubles à appartements), s'ils sont plus aisés, ils peuvent obtenir des préservatifs, s'ils sont riches, ils obtiennent une villa autonome. Si certains groupes n'aiment pas d'autres groupes, ils seront moins susceptibles de cohabiter. S'il existe une affinité entre certains groupes, ils peuvent se déplacer vers des zones similaires.
Appliquez-les à votre topographie
Une fois que vous avez ces contraintes, vous pouvez essayer de construire un algorithme autour de lui. Par exemple, générez votre topographie et répartissez les ressources nécessaires sur la carte (en gardant peut-être un œil sur le placement de petits gisements des ressources les plus importantes dans la zone de départ, puis sur des gisements plus importants plus éloignés et les uns des autres). C'est là que les besoins et la mécanique de votre jeu entrent en jeu, bien sûr, mais vous ajouterez probablement également un élément aléatoire.
Construisez ensuite des entreprises (et leurs immeubles résidentiels) à proximité des ressources qui les utilisent. Par exemple, une carrière à côté d'une grande montagne. Ajoutez ensuite l'infrastructure dont ils ont besoin. Par exemple, un poste de traite avec bureau de poste et taverne où ils peuvent faire des affaires et vendre leur produit, une forge pour fournir des outils, etc.
Pour décider de ce qui va où, divisez la carte en tuiles où vous calculez un nombre pour chaque tuile combien il est souhaitable pour un certain but, en utilisant une fonction de pondération. Mettez les bâtiments dans les tuiles les plus souhaitables pour ce type de bâtiment. Ajoutez des règles comme «un poste de traite peut gérer 50 entreprises ou 100 maisons», ce qui augmente la probabilité d'ajouter un autre poste de traite si une ville atteint une certaine taille.
Une fois que vous avez cela, vous devriez obtenir des cartes assez décentes. Si vous remarquez que toutes les cartes se retrouvent sous des formes non naturelles, ajoutez des pénalités à vos fonctions de pondération pour ces formes, comme "si ma rue se retrouve juste à côté d'une autre rue, -100 désirable", ou "si ma rue se croise, -100 désirabilité "etc. Vous pouvez toujours ajouter un élément aléatoire pour permettre une sensation plus originale, ou ajouter d'autres mécanismes comme" si un croisement a plus de N bâtiments connectés à ses routes, transformez-le en un rond-point ".
Vous pouvez même utiliser ces contraintes pour donner à différentes cartes une sensation différente, comme faire en sorte qu'un certain pays ait plus de montagnes dans sa topographie, ou qu'une certaine culture construise plus de routes sinueuses, et une autre préfère les routes droites, etc. Tout simplement en modifiant l'une de vos fonctions de pondération.
Simplifier
Bien sûr, cette approche est trop complexe pour les jeux qui ne sont pas des simulations commerciales, mais travaillez quand même et voyez quels types de bâtiments conviennent à votre jeu et éliminez ceux qui ne sont pas nécessaires. Puis venez avec des règles simplifiées comme "placer les villes près d'une rivière, d'une montagne ou d'un bon sol. 1 bâtiment pour 100 ressources, entreprises basées sur le type de ressource, 10 bâtiments résidentiels pour chaque ensemble complet de ressources alimentaires / artisanales ... ou tout simplement" 1m de rivière / 1m2 de sol peut supporter 10 bâtiments résidentiels ... tout ce qui a du sens pour un jeu. Pourtant, une fois que vous savez quelle superficie vous avez (par exemple, pas de bâtiments sur les flancs des montagnes escarpés) et combien de bâtiments la zone peut supporter, placez simplement des ensembles de bâtiments dans cette zone jusqu'à ce qu'elle soit pleine (comme, 1 immeuble commercial, 10 résidentiel , 3 infrastructures ou autre) et les relier aux routes.