Nous sommes à la recherche, pas à l'itération
La conception de jeux est essentiellement un processus de
recherche . Étant engagés dans la conception, nous explorons de nombreuses configurations de conception possibles pour résoudre un problème de conception spécifique. Par exemple, cela peut être un moyen de connecter des salles dans un donjon, un ensemble de fonctions et de compétences que possèdent divers agents de jeu, des «nombres magiques» qui déterminent l'efficacité des unités dans un système de combat, ou la combinaison même des capacités qui seront présentes dans notre jeu.
Tout comme un personnage contrôlé par l'IA utilise un système de recherche de chemin pour naviguer dans le monde du jeu, un concepteur doit naviguer dans un espace de très haut niveau de configurations possibles, en prenant une configuration initiale et en la modifiant de manière itérative. Nous examinons attentivement un aspect distinct de la conception - le système de combat, l'une des parties du monde du jeu, l'arbre technologique en stratégie - et essayons de trouver un moyen de l'améliorer en modifiant cette configuration.
Les concepteurs aiment utiliser le terme «itération» pour décrire ce processus, mais le mot «recherche» serait plus approprié ici. La vérité est que lorsque nous créons des «itérations» de design, nous expérimentons le jeu en cours de développement. Nous faisons des hypothèses raisonnables sur de petits ensembles de modifications qui transforment la configuration de conception actuelle en une nouvelle, qui, à notre avis, répondra mieux aux critères de conception.
De telles «itérations» sont complètement différentes des changements linéaires qui se produisent habituellement dans les «itérations» de code informatique; ils ressemblent beaucoup plus à une recherche dans un labyrinthe avec de nombreux virages serrés et des retours forcés. Souvent, ils nous rapprochent de l'objectif, mais il n'est souvent pas clair si le jeu s'est amélioré par rapport à eux. Parfois, il s'avère que les modifications de conception, qui, à notre avis, auraient dû améliorer le jeu, présenter des défauts imprévus et nous devons les annuler ou réessayer.
La conception de jeux est une discipline incroyablement complexe. Le design est comme une pièce sombre avec de nombreux objets pointus; il est extrêmement difficile de s'y déplacer en toute sécurité, en s'éloignant des routes bien piétinées. Des blessures presque toujours douloureuses nous attendent en cours de route, surtout si vous vous déplacez trop vite. Et nous avons quelques outils pour éclairer cette pièce sombre, ainsi que quelques techniques clairement définies et détaillées pour effectuer un tel processus de recherche de conception.
En raison de l'existence de cette chambre noire, nous effectuons des «itérations» - nous ne savons pas quelles seront les conséquences des décisions avant de les vérifier. En d'autres termes, nous
sommes à la recherche (Will Wright dans son
discours au GDC 2004 l'a appelé «recherche dans l'espace de la solution»).
Par conséquent, la conception devient très souvent un goulot d'étranglement des performances, la principale source de défauts et le plus grand facteur de risque dans le développement de jeux. D'innombrables équipes de développement se sont avérées liées, main dans la main, par des solutions de conception mal conçues, glissant dans le processus créatif, changeant de fonctionnalité, mauvaise perception du marché cible et autres problèmes de conception qui ont conduit à des problèmes de qualité des produits.
Compte tenu de tous les dangers associés aux expériences de conception, il n'est pas surprenant que de nombreux éditeurs et grands développeurs soient si désireux d'éviter les risques, préférant adhérer strictement aux genres, licences et hypothèses de genre établis et bien documentés. C'est pourquoi ils ne vont pas aux risques bien connus de l'innovation de conception qui peuvent apporter des résultats inconnus. Explorer une pièce sombre est trop risqué.
Nous aimerions trouver des moyens de changer cette attitude. Au lieu d'
éviter simplement l'innovation, il est préférable de trouver des moyens d'améliorer nos compétences en conception, d'étendre nos capacités et de créer des outils puissants qui rendraient l'innovation en matière de conception plus sûre et plus efficace.
Cette série d'articles
Cet article sera le premier d'une série d'articles sur
les solutions de modélisation - un ensemble d'outils pour décomposer les solutions en modèles formels, qui peuvent ensuite être utilisés pour rechercher pour trouver le résultat le plus souhaitable.
La modélisation et l'optimisation des décisions sont souvent utilisées dans la gestion, les finances, la planification de projet et de nombreux autres domaines pour améliorer le processus de prise de décision et résoudre divers problèmes et optimisations de prise de décision. Ceci est accompli en recherchant parmi les alternatives possibles, ce qui est plus rapide qu'un choix manuel par des personnes.
Malgré tous ses avantages potentiels, la modélisation et l'optimisation des solutions, il semble être un sujet assez inexploré pour les concepteurs de l'industrie du jeu. Une enquête menée auprès de concepteurs professionnels lors du populaire forum des développeurs a montré que seulement 25% des répondants avaient au moins entendu parler de la modélisation des décisions et que 8% seulement l'utilisaient dans la pratique. Une enquête similaire menée auprès de designers via Facebook a montré à peu près les mêmes résultats avec un nombre similaire de répondants.
Lorsqu'elles sont utilisées correctement, les solutions de modélisation peuvent améliorer considérablement de nombreux aspects du processus de conception:
- Il peut aider à optimiser la configuration de systèmes de conception spécifiques ou les valeurs optimales des paramètres de jeu.
- Il peut éclairer les décisions en tant que combinaison de fonctionnalités qui doivent être incluses dans le jeu.
- Il aide à modéliser les décisions qu'un joueur peut prendre, en particulier, à identifier les stratégies dominantes ou les façons dont le joueur est capable de «battre le système».
Dans cette série d'articles, je parlerai d'exemples des trois catégories d'utilisation.
Définition
Qu'est-ce que la «modélisation décisionnelle»?
Autrement dit, puis:
La modélisation de décision est le processus de simulation d'une solution avec l'automatisation ultérieure de la recherche pour son calcul.
Nous commençons par demander une sorte de solution, puis nous essayons de sélectionner tous les facteurs qui composent cette solution, puis de les intégrer dans un modèle qui décrit avec précision la solution, et de spécifier l'ensemble des variables d'entrée et une variable de sortie. Ensuite, nous
recherchons des solutions optimales pour l'ensemble des variables de décision (ou variables d'entrée) qui créent la meilleure sortie possible de toutes les possibilités.
Si tout est fait correctement, nous pouvons rechercher un nombre beaucoup plus grand de solutions possibles que ce qui serait fait manuellement ou en imagination. Bien que nous ne puissions pas appliquer ce système à tout, pour certaines tâches, nous pouvons obtenir de meilleurs résultats, les calculer plus rapidement et, dans certains cas, nous pouvons même résoudre des problèmes qui
ne peuvent être résolus autrement.
Au cours de ce processus, nous indiquons également une pluralité d'une ou plusieurs
conditions , qui sont utilisées comme limites confirmant l'exactitude de notre modèle. De telles conditions peuvent limiter la plage de valeurs ou le type de variables entrantes, ainsi que tout autre aspect de notre modèle.
Pourquoi construire des modèles?
Si vous avez joué
la civilisation de Sid Meier , vous vous êtes probablement un jour demandé: «Attendez une minute, quelle est la meilleure façon de commencer le développement de la ville? Dois-je d'abord construire un monument, puis un entrepôt? Ou l'entrepôt est-il nécessaire en premier? Ou peut-être un temple d'abord, puis un entrepôt? Quelle décision est
préférable de prendre? Quelqu'un peut-il répondre à cette question? "
Vous pouvez également rappeler la mécanique du combat en stratégie en temps réel. Équilibrer les paramètres de plusieurs unités dans RTS est une tâche notoire pour sa complexité. Et si nous avions un système qui nous permet d'accélérer la solution du problème d'équilibrage en répondant aux questions sur l'équilibrage de la bataille d'un jeu sans jouer chaque solution? Et si nous pouvions poser des questions au système? Par exemple: "combien d'épéistes avez-vous besoin pour vaincre deux cueilleurs et trois archers?" Ou: "Quelle est la combinaison la moins chère d'archers et de catapultes pour vaincre une tour de guet ennemie?"
En fait, un tel système peut être créé!
Si nous pouvons modéliser ces tâches de conception de la bonne manière, alors nous pouvons utiliser les outils d'optimisation automatique pour rechercher toutes les réponses possibles pour trouver celle qui répond le mieux à nos critères,
sans avoir à jouer au jeu des milliers de fois.
Voici un exemple d'un problème similaire - un exemple que nous allons résoudre dans un futur article de la série.
Disons que nous avons un jeu appelé SuperTank. Dans SuperTank, nous conduisons un énorme tank fantastique combattant sur le champ de bataille avec d'autres super tanks. Avant chaque bataille, nous pouvons choisir une combinaison spécifique d'armes pour notre char.
Nous avons 100 crédits que vous pouvez dépenser en équipement. Le supertank du joueur peut transporter 50 tonnes d'armes, et dispose également de 3 emplacements «critiques» pour les armes spéciales de haute puissance.
Le jeu possède les cinq types d'armes suivants, et le joueur peut utiliser n'importe quelle quantité de chaque type, ou l'abandonner complètement:
Supposons que nous ayons besoin du supertank pour avoir la valeur de dégâts la plus élevée possible (nous supposons que les dégâts par seconde sont indiqués, quelle que soit la vitesse de l'arme). Nous supposons également que toutes les armes ont la même portée, trajectoire du projectile, précision et fréquence de tir, c'est-à-dire qu'elles sont identiques en tout sauf les valeurs indiquées dans le tableau.
Répondez maintenant rapidement au nombre de mitrailleuses, de roquettes, de lasers, etc. besoin d'être placé sur un super tank? Quelle combinaison d'un ou plusieurs types d'armes nous causera le plus de dégâts, sans dépasser les limites de poids, de prix et de créneaux critiques?
Essayez de résoudre le problème manuellement ou à l'aide d'une calculatrice.
Cela peut-il être fait?
Si vous essayez, assurez-vous rapidement que c'est étonnamment difficile.
Il existe peut-être un moyen de le résoudre à l'aide d'équations mathématiques complexes, mais nous sommes des concepteurs et les mathématiques ne sont pas notre truc.
Pensez également à la façon dont la réponse changera avec d'autres paramètres. La réponse changera-t-elle si au lieu de 50 tonnes le super tank peut en accueillir 60? Ou si au lieu de 100 prêts nous en avons 110 ou 90? Comment la vitesse optimale changera-t-elle? Et si nous avons 2 ou 4 emplacements critiques?
Imaginez maintenant que nous avons un système qui calcule instantanément la disposition des armes avec le plus de dégâts pour tout ensemble de paramètres (poids, prix, emplacements critiques). Il suffit d'entrer les paramètres des armes dans le tableau, puis d'entrer les paramètres du supertank (50 tonnes, 100 crédits, 3 emplacements critiques) - et
BOOM! - nous avons eu le meilleur équipement.
Ce ne serait pas merveilleux?
Nous pourrions utiliser ce système pour obtenir instantanément des réponses à toutes sortes de questions utiles:
- Comment le schéma optimal changera-t-il lorsque les paramètres du super réservoir changeront?
- Comment l'équipement optimal changera-t-il lors du changement des paramètres de l'arme?
- Quel est le maximum de dégâts que le supertank peut faire pour des paramètres donnés (poids, prix, emplacements critiques)?
- Les quatre paramètres de l'arme (dommages, poids, prix, emplacements critiques) sont-ils appropriés et équilibrés pour chaque type d'arme?
- Avons-nous des canons trop puissants qui sont utilisés trop souvent? Si n'importe quel type d'arme est si utile qu'il est toujours correct de l'utiliser, alors ce sera toujours la solution optimale, donc il n'y aura pas de choix significatif. Dans ce cas, nous devons soit retirer l'arme du jeu, soit changer son équilibre de sorte que dans certaines conditions elle ne soit pas utile.
- Avons-nous rarement ou jamais utilisé d'armes? Semblable au paragraphe précédent - si une sorte d'arme est si inutile que la bonne décision est de ne jamais l' utiliser, alors il n'y a pas non plus de choix significatif. Dans ce cas, il vaut la peine de retirer l'arme du jeu ou de modifier son équilibre, de sorte que dans certaines conditions, il serait sage de l'utiliser.
Ce sont toutes des questions de conception très importantes, les réponses auxquelles tout designer devrait vouloir savoir. Connaître ces réponses sera incroyablement utile lors de l'équilibrage d'un jeu
SuperTank .
En quelques paragraphes, nous avons décrit une tâche qui nous est très difficile à résoudre manuellement, mais qui est résolue de manière triviale à l'aide d'outils intégrés à Microsoft Excel.
Dans un prochain article, nous allons construire un véritable modèle de solutions pour cet exemple, qui répondra à toutes les questions ci-dessus.
Vous verrez qu'un modèle qui peut être créé en quelques minutes vous permettra de résoudre cette tâche difficile. En peu de temps, nous créerons un outil puissant qui nous permettra d'explorer rapidement et de manière fiable l'espace de conception.
Feuille de route
Dans cette série d'articles, nous illustrerons quelques exemples plus complexes et créerons des feuilles de calcul de référence afin que vous puissiez exécuter tous ces exemples vous-même, en utilisant uniquement Excel installé à partir d'outils. Parmi ces exemples seront les suivants:
- Un exemple simple de bataille pour un jeu de stratégie
- Un modèle pour optimiser les coordonnées de plusieurs «trous de ver» de téléportation les uns par rapport aux autres et les secteurs peuplés dans un jeu multijoueur de masse spatiale (MMO)
- Un modèle qui détermine le niveau des taxes pour un modèle simplifié de la ville afin d'équilibrer la satisfaction des résidents et les recettes fiscales dans une stratégie 4X comme la civilisation de Sid Meier
- Un modèle pour choisir les sorts et les compétences pour les classes de personnages dans un jeu multijoueur massif
- Modèle d'optimisation pour déterminer l'ordre de construction optimal d'une colonie planétaire dans une stratégie 4X similaire au Master of Orion classique
- Un exemple d'une équipe essayant de trouver la bonne combinaison de fonctionnalités pour un jeu et un modèle de décision pour les aider à choisir les compromis appropriés
En général, cette série sera composée d'exemples simples de recherche de stratégies de joueurs optimales dans des sous-systèmes spécifiques du jeu, puis passera à des modèles de décision qui optimisent les paramètres des systèmes de jeu et optimisent les combinaisons d'ensembles de «fonctionnalités».
Dans chacun de ces cas, nous décrivons la tâche, montrons comment la modéliser dans Excel et la résoudre à l'aide de l'outil Solver intégré (dans la version russe - «Finding Solutions») d'Excel. Dans chaque cas, vous verrez que nous pouvons le rendre plus facile, plus rapide et plus fiable que sans utiliser Solver ou un outil similaire. Aussi pour chaque exemple, j'ajouterai des feuilles de calcul afin que vous puissiez les télécharger et les vérifier vous-même, recréer les résultats et expérimenter avec vos propres modèles.
N'oubliez pas non plus que la représentation interne - qu'il s'agisse d'une feuille de calcul, d'un programme linguistique de haut niveau ou d'autre chose -
n'a pas d'importance . L'important n'est pas dans quoi nous travaillons - dans Excel et Solver, Java / C ++ / C #, ou dans autre chose, mais le fait que nous modélisons la tâche et nous efforçons de la résoudre.
Pourquoi utiliser des modèles de décision?
Certains lecteurs peuvent être sceptiques maintenant. Il semble que la construction de modèles de décision représente beaucoup de travail. Pourquoi tous ces efforts sont-ils nécessaires si nous pouvons effectuer des tests personnalisés sous la forme de tests de groupes de discussion et de tests bêta?
Pour commencer, je dirai que
les solutions de modélisation ne sont pas applicables à toutes les tâches . Certaines tâches sont trop compliquées ou trop difficiles à modéliser à l'aide de telles techniques, en outre, il existe de nombreux aspects dans la conception (par exemple, les considérations esthétiques, la valeur du jeu comme divertissement et la «sensation» du jeu) qui sont difficiles, voire impossibles à modéliser numériquement. Et les solutions de modélisation
n'éliminent certainement
pas la nécessité de tests de groupe, de tests bêta ou de jouer quotidiennement votre propre projet au cours de son développement.
Mais même avec tout cela à l'esprit, à la fin de la série d'articles, il deviendra clair pour vous que les méthodes de modélisation et d'optimisation des solutions nous donnent un ensemble d'outils unique et puissant. Ils peuvent résoudre complètement ou partiellement de nombreux problèmes qui ne peuvent pas être résolus d'une autre manière, ainsi que vous fournir des réponses et des informations sur toutes sortes de problèmes de conception difficiles à résoudre d'une autre manière.
Comme pour tout autre outil, son utilisateur doit décider de son applicabilité.
Il existe de nombreux cas où les modèles de décision peuvent être inacceptables ou trop lourds. Mais comme vous le verrez dans la série d'articles, ils sont également étonnamment utiles, et plus nous prenons les bonnes décisions de conception et éliminons les bogues dans les premiers stades, même avant la phase de test, plus les systèmes de conception seront probablement durables, passionnants et sans équivoque.
Pensez aux outils disponibles pour un programmeur type. Le travail des programmeurs est très compliqué, mais il est simplifié par de nombreux outils pour aider à trouver les bogues avant même la phase de test. Ils ont des compilateurs qui vous rappellent constamment les fautes de frappe faites; ils ont des pratiques de programmation défensive qui identifient les défauts logiciels; ils effectuent des révisions de code qui aident à identifier les failles du code de quelqu'un d'autre ou à signaler des pratiques de programmation vicieuses; en outre, ils disposent de nombreux outils de profilage et d'analyse statique pour se débarrasser de toutes sortes de bogues de performances et d'autres défauts.
Mais les concepteurs n'ont pas de tels outils. On peut dire que notre travail est aussi compliqué, mais nous n'avons pas de compilateur qui nous dirait que nous avons «fait une erreur de syntaxe».
Nous n'avons ni profileur, ni outils de débogage, ni outils d'analyse statique. Nous ne pouvons pas effectuer de révision de code car nous n'avons pas de «code». Nous rédigeons des spécifications et des documents de conception, et c'est tout; nous pouvons échanger des documents et des spécifications de fonction au sein de l'équipe et espérons que nos collègues nous donneront de bons commentaires, mais le plus souvent, nous devons mettre le système dans le jeu pour comprendre s'il fonctionne ou non.Cela rend la conception incroyablement risquée, longue et coûteuse.Comme dans le cas de la programmation, les gens ont tendance à faire des erreurs et cela fait partie intégrante du processus, nous avons donc besoin d'autant d'outils de haute qualité que possible pour nous protéger et protéger nos projets.Nous sommes encore très loin de posséder des outils de conception à part entière qui aident les concepteurs à explorer l'espace de conception. Nous devons toujours suivre le chemin que les compilateurs, débogueurs, profileurs et outils d'analyse statique ont fait en programmation. Mais nous voyons déjà l'aube de plusieurs solveurs et outils de conception de jeux spécifiques, y compris le testeur de jouabilité de la version Cut the Rope appelé Cut the Rope: Play Forever ( lien ); Le système de conception de jeu abstrait de Ludi, qui a généré le jeu de société Yavalath ( lien ); et mon propre assistant automatisé Evolver pour équilibrer le jeu mobile City Conquest ( lien ).Les solutions de modélisation nous aideront à franchir quelques étapes supplémentaires vers un tel niveau de support et nous permettront de commencer à compléter et à développer l'intellect de nos concepteurs à l'aide d'outils automatisés. Et si nous avons le choix: avoir ou ne pas avoir d'outils, pourquoi choisir "ne pas avoir"?L'essentiel n'est pas les feuilles de calcul, l'essentiel c'est les modèles
Cette série d'articles est écrite pour les designers - c'est-à-dire pour tous les designers, quel que soit leur type d'expérience: art, logiciel, expérience dans la création de contes ou de jeux de société. Par conséquent, nous ne compliquerons pas et ne promettrons pas ce qui suit:- . Microsoft Excel Solver (« »). , Excel, . , , ( ) .
Si vous êtes concepteur, cette série d'articles vous donnera tous les outils dont vous avez besoin pour créer vous-même des modèles de solution sans que vous ou les programmeurs n'ayez besoin d'écrire du code. Si vous êtes programmeur, la série vous donnera des instructions assez simples pour programmer vos propres modèles de solution dans n'importe quel langage Java afin que vous puissiez créer vos propres modèles de solution, à partir de zéro ou sur la base d'un modèle déjà utilisé dans Solver et dans Excel.Ces articles ne doivent être qu'un point de départ pour que vous puissiez prendre les concepts présentés ici et choisir par vous-même: si vous devez les implémenter dans Excel, choisir un autre outil d'optimisation ou essayer de créer votre propre solveur dans un langage de haut niveau. Les feuilles de calcul sont une base solide pour commencer, mais ces modèles de décision sont plus susceptibles d'être votre tremplin vers les modèles plus riches et plus complexes qui s'intègrent à votre architecture de jeu.Explications
Avant d'aller trop loin dans les solutions de modélisation, nous devons donner quelques explications. La modélisation et l'optimisation des solutions ne créent pas de système complet pour la conception de jeux, et nous ne dirons rien de tel. Il est utile de les considérer comme un outil qui aide dans certains aspects du processus de conception et, comme tout outil, il présente de nombreuses limites.Voici quelques limitations que vous devez connaître:- . , , . , , . , , , , , .
- (). , . « », , Excel. ( / ), ( ), .
- . , - , , «» . . , , /, .
- . , Excel Solver, , , , . Solver , . , , « » . Solver ( Frontline ) , , Solver .
- Ils ne garantissent pas l'optimalité . Du fait que nous travaillons avec des modèles complexes, il est impossible d'être sûr à 100% d'avoir trouvé la solution optimale . Parfois, nous devons nous concentrer sur le deuxième meilleur: nous consacrerons plus de temps à l'optimisation ou recommencerons à zéro et optimiser à nouveau afin de pouvoir dire avec un haut degré de confiance que nous avons trouvé la solution optimale ou très proche de la solution optimale.
Dernier et plus important:- Nous devons nous assurer que le modèle est engagé dans les tâches nécessaires . Toutes les tâches ne sont pas suffisamment importantes pour nécessiter de tels efforts, nous devons connaître précisément nos priorités et éviter de nous concentrer inutilement sur l'optimisation de tâches inutiles et d'ignorer d'autres tâches plus importantes, qui peuvent être beaucoup plus importantes.
En termes simples, pour que les solutions de modélisation soient utiles, certaines conditions doivent être remplies. Nous devrions être capables d'intégrer la solution en question dans un certain modèle discret et d'exprimer le résultat de la solution sous la forme d'une valeur unique. En d'autres termes, nous devrions être en mesure d'exprimer, en utilisant le modèle de solution, un ensemble fini de données d'entrée dans une valeur de sortie afin que minimiser ou maximiser la valeur de sortie nous donne une solution améliorée.Dans les cas où il y a des aspects subjectifs qui ne peuvent pas être intégrés dans ce modèle, par exemple, les aspects esthétiques ou les aspects d'utilisabilité / jouabilité, nous devrons soit les séparer clairement du modèle de décision, soit utiliser la modélisation de décision comme première passe, ou tout simplement abandonner complètement la modélisation de décision .Afin de pouvoir modéliser des solutions dans un tableur, nous devons également limiter la complexité du modèle. Si notre jeu exécute quelque chose de très complexe, nous ne pourrons peut-être pas recréer cette complexité dans Excel. Cependant, il convient de garder à l'esprit qu'il ne s'agit que d'une limitation de la puissance des modèles pouvant être construits dans Excel, et non des modèles de décision eux-mêmes. Dans notre propre moteur de jeu, nous pouvons créer des solveurs beaucoup plus puissants, et j'espère que cette série d'articles vous incitera à faire exactement cela.D'un autre côté, il est peu probable que toutes ces limitations rendent la modélisation de décision inutile. Même dans le cas où la tâche est trop compliquée pour une optimisation complète dans le modèle de solution, ce modèle peut toujours nous aider à choisir de nombreux composants de conception qui sont beaucoup plus proches de la configuration correcte, ainsi qu'à trouver et déboguer de nombreuses tâches de base même dans les premiers stades de développement.Et même lorsque le modèle de solution ne peut pas trouver la solution optimale au problème, soit parce que la tâche est trop complexe, soit parce qu'elle nécessite une approche esthétique et d'autres facteurs humains subjectifs, elle peut toujours aider à réduire les limites de la solution, en éliminant les blocages et en réduisant autrement la complexité du problème .Enfin, même si vous décidez de ne pas utiliser la modélisation de décision, n'essayez pas d'optimiser les feuilles de calcul ou de créer vos propres solveurs, une compréhension de la modélisation de décision vous aidera toujours à changer d'avis sur la prise de décisions de conception.Cette série d'articles est une étude. Nous examinerons de nombreux exemples de tâches de conception de jeux et explorerons les moyens de les modéliser et de les optimiser, fournis par de puissants outils de conception. Vous pouvez être sceptique ou décider de ne pas utiliser du tout les optimisations, mais j'espère que vous suivrez nos recherches et découvrirez comment nous terminerons la série.Conclusion
En fin de compte, nous voulons créer le design correctement .De nombreuses questions de conception sont subjectives, elles n'ont pas de «bonnes» ou de «mauvaises» réponses. Mais dans certains cas, ils le sont certainement . Et dans de tels cas, nous devons savoir comment obtenir la bonne réponse, ou au moins comprendre comment aborder la définition de la «bonne» réponse et chercher sa solution.La modélisation et l'optimisation des solutions sont des outils puissants qui nous aident dans de nombreux cas. Je crois que de tels outils devraient être dans les outils de chaque designer. S'étant adaptés à eux, vous vous rendrez compte que ces outils ont un énorme potentiel non réalisé dans une étude plus rapide et plus fiable de la chambre noire de la conception de jeux. Dans une série de nos articles, nous montrerons combien d'utilisations il a.Partie 2. Bases de l'optimisation et du déploiement de la simulation
La feuille de calcul de cet article peut être téléchargée ici .Préparation du modèle de solution
Maintenant que nous avons parlé des modèles de solution, expliqué leur utilité et énuméré certaines de leurs limites, nous aimerions illustrer les concepts de base avec un exemple simple.Mais avant de faire cela, nous devons introduire quelques règles concernant la structure et le format. Comme avec le code, si vous ne faites pas attention, les feuilles de calcul peuvent rapidement se transformer en chaos.En termes simples, il y aura quatre types de cellules dans nos feuilles de calcul:- — , — , . 0 - , . , , . .
- « » — . , , Tootsie Pop 17 0,25 , « ». .
- «» — , . .
- Un «objectif» (ou «sortie») est une cellule dont nous nous efforçons de minimiser (ou maximiser) lorsque l'optimiseur est en cours d'exécution. Dans nos exemples, il n'y aura toujours qu'une seule cellule cible, elle aura toujours une couleur orange et un contour noir. ( Remarque: il existe des solveurs plus puissants qui prennent en charge le travail avec plusieurs objectifs, mais pour nos articles, ce sera trop compliqué.)
Lorsque nous exécutons l'optimiseur (l'outil Solver («Solution Finder») intégré à Microsoft Excel), il examine simplement la cellule cible que nous avons spécifiée, puis essaie de modifier les variables de décision, mais il peut (dans les limites que nous avons définies) ou minimiser, ou maximiser la valeur de cette cellule cible (celle que nous spécifions).Le solveur ne sait presque rien des calculs qui ont lieu à l'intérieur, ni des connexions entre les cellules de décision et les cellules d'objectif; il exécute simplement l'un des nombreux algorithmes à sa disposition, essayant de minimiser ou maximiser la valeur de la cellule cible en recherchant les valeurs possibles des cellules de solution. De tels algorithmes ("Simplex LP", "GRG Nonlinear", "Evolutionary") sont conçus pour être beaucoup plus intelligents que d'explorer toutes les options possibles pour des solutions variables par la force brute, et trouvent très souvent des réponses à des problèmes graves avec une efficacité étonnante.Par exemple, si nous voulions savoir combien de fois vous devez lécher pour arriver au milieu de Tootsie Pop, nous pourrions utiliser une feuille de calcul similaire:Nous pouvons demander à Excel Solver de résoudre ce problème en lui ordonnant de minimiser la cellule cible "Masse restant sur Tootsie Pop", et il utiliserait rapidement des expériences pour déterminer que la valeur de la cellule de solution jaune donne un tel résultat ( «Combien de fois lécher pour arriver au milieu de Tootsie Pop») est de 68.
Bien sûr, cela est un peu idiot, car d'après l'énoncé du problème, il est clair que la réponse sera 17 / 0,25 = 68. Cela n'a aucun sens d'exécuter l'optimiseur pour résoudre un problème qui peut être résolu avec une simple arithmétique.
Cependant, dans la pratique, la plupart des problèmes auxquels nous sommes confrontés n'auront pas de solutions mathématiques simples. Ils auront de nombreuses variables de décision qui mènent à l'objectif de manière non évidente, et faire correspondre les variables de décision et la sortie sera trop compliqué pour calculer manuellement l'équation mathématique (et encore une fois, dans cette série, nous éviterons soigneusement les mathématiques compliquées).
Nous nous concentrerons sur la description des tâches et laisserons tout le travail acharné au solveur.
Exemple 1: taxes
Dans notre premier modèle de décision réel, nous montrerons un exemple de détermination du taux d'imposition optimal. Personne n'aime les taxes, mais dans ce cas, nous ne paierons pas, mais recevrons des taxes; J'espère que cela réduira votre tourment.
Imaginez que nous créons une stratégie 4X similaire à
la civilisation de Sid Meier . Nous sommes en train de créer des villes avec un certain niveau d'insatisfaction, selon leur taille. Les résidents «insatisfaits» ne sont essentiellement pas enclins à coopérer et nous ne recevons aucun revenu de leur part. Nous pouvons également essayer d'obtenir de l'argent des villes en modifiant le taux d'imposition de chaque ville, mais avec une augmentation du taux d'imposition, le niveau d'insatisfaction augmentera de façon exponentielle, de sorte que des impôts très élevés deviennent contre-productifs.
Supposons également que nous pouvons indiquer un taux d'imposition avec un incrément de 10% dans la plage de valeurs de 0% à 50%. Voici une capture d'écran qui montre un système similaire de la stratégie 4X classique de
Master of Orion 2 :
En tant que concepteurs, nous voulons poser une question simple: quel sera le taux d'imposition optimal dans le cas général?
Cela devrait être une tâche simple, car il n'y a que 6 valeurs acceptables du taux d'imposition. Nous pouvons simplement tester chacune des 6 valeurs manuellement, trouver celle qui nous donne le plus de revenus, et à ce propos, considérer le problème résolu!
(En fait, vous pouvez probablement trouver une équation mathématique pour résoudre ce problème, comme dans l'exemple avec Tootsie Pop, mais ce sera contre-productif, car nous préparons ce modèle afin qu'il se transforme en un plus complexe qui ne peut pas être résolu en utilisant des équations De plus, dans cette série d'articles, nous évitons les mathématiques.)
Commençons par décrire la tâche comme suit:
- Nous avons une ville de taille 12 (ce qui signifie 12 millions d'habitants). Ces personnes sont représentées comme 12 «citoyens» distincts.
- Chaque citoyen à un moment donné peut être satisfait ou insatisfait.
- Les citoyens satisfaits paient sous forme d'impôts (taux d'imposition x 10) (c'est-à-dire qu'un taux d'imposition de 20% nous donne 2 unités monétaires en recettes fiscales pour chaque citoyen satisfait).
- Les citoyens mécontents ne paient pas d'impôts.
- Il y a 3 citoyens insatisfaits dans la ville qui restent insatisfaits quel que soit le taux d'imposition.
- Un nombre supplémentaire de citoyens devient mécontent sur la base de la formule suivante: (Population) x ((Taux d'imposition) x (Taux d'imposition)) x 3,5, la valeur est arrondie au nombre entier le plus proche. Pour notre ville de taille 12, cela nous donnera 0 citoyens mécontents supplémentaires au taux de 0% et 10%, 1 citoyen mécontent supplémentaire au taux de 20%, 3 citoyens mécontents supplémentaires au taux de 30%, 6 au taux de 40% et 10 au taux de 50%.
C'est simple, non?
Nous allons décrire cela dans la
feuille de calcul jointe à l'article comme suit:
Vous remarquerez peut-être que nous avons défini la case de décision jaune (Niveau de taxe (0-5)) comme moyen indirect d'indiquer le taux de taxe. Au lieu de spécifier le taux de taxe directement dans la cellule de décision, la cellule de calcul du taux de taxe prend le numéro de niveau de taxe de la cellule de décision et le multiplie par 10%. Il y a une raison logique de le faire indirectement, et nous le verrons bientôt.
Nous pouvons maintenant expérimenter et remplacer toutes les valeurs possibles du niveau de taxe. Vous pouvez simplement entrer chacun des nombres de 0 à 5 dans la cellule Niveau de taxe, et obtenir ce qui suit:
Comme vous pouvez le voir, il existe un taux d'imposition optimal: 30%, ce qui maximise les recettes fiscales, donnant 18 unités de monnaie.
Automatisons le système!
C'est certainement génial, mais que se passe-t-il si nous avons plus de six options? Et s'il y a des centaines de taux d'imposition possibles ou si nous devons changer d'autres variables de décision? Tout deviendra trop compliqué pour tester les valeurs manuellement.
Comme nous le verrons, c'est exactement à quoi sert Solver.
Tout d'abord, nous remettrons à zéro la valeur de la cellule Tax Level. Ensuite, nous irons dans l'onglet Données d'Excel et verrons sur le côté droit du ruban, dans la section Analyse, le bouton Solveur («Rechercher une solution»).
Si vous ne le voyez pas, accédez aux options Excel, sélectionnez la catégorie Compléments, assurez-vous que les compléments Excel sont sélectionnés dans la liste déroulante Gérer. ), cliquez sur OK et assurez-vous que le complément Solveur est coché.
Après avoir cliqué sur le bouton Solveur, vous devriez voir une boîte de dialogue similaire.
Voyons maintenant toutes les étapes de la configuration de la boîte de dialogue Solveur.
Dans le champ «Set Objective» («Optimiser la fonction objectif»), nous indiquons ce que nous devons optimiser. Dans ce cas, nous essayons d'obtenir autant de recettes fiscales que possible. Nous allons donc sélectionner la case orange pour la cible, qui représente les recettes fiscales, puis cliquer sur «À: Max» dans la liste des boutons radio.
Dans la section «En changeant les cellules variables», sélectionnez les cellules que «Solution Finder» doit calculer. Nous devons déterminer le taux de taxe optimal, alors sélectionnez la case de solution jaune (Niveau de taxe (0-5)). Si tout se passe bien, la cellule se verra donc attribuer une valeur de 3 correspondant à un taux d'imposition de 30%, dont nous avons déjà déterminé l'optimalité dans les calculs manuels.
Enfin, nous devons ajouter quelques
restrictions . En fait, les contraintes sont des conditions préalables pour toutes les cellules de notre modèle de solution, et Excel Solver se concentrera uniquement sur les solutions qui satisfont aux contraintes spécifiées. De telles restrictions peuvent limiter certaines cellules (généralement des cellules de décision et des cellules de calcul) à des valeurs minimales et / ou maximales spécifiées, et / ou faire en sorte que Solver les traite comme des variables entières ou binaires (0 ou 1). Les contraintes sont incroyablement utiles pour créer le bon modèle, qui sera limité.
Le solveur nécessite au moins quelques restrictions qui lui permettent de déterminer les limites des cellules de décision - en d'autres termes, les valeurs minimale et maximale pour chaque cellule. Pour ajouter une restriction, vous devez cliquer sur le bouton Ajouter à droite, puis la boîte de dialogue suivante s'ouvrira:
Nous ajouterons deux contraintes, une pour que la cellule de décision Tax Level satisfasse la condition> = 0, et une pour que la cellule de décision soit <= 5. Puis, dans la liste Solving Method, sélectionnez Evolutionary («Evolutionary» rechercher une solution ") et cliquez sur Résoudre (" Trouver une solution ").
Après avoir travaillé pendant environ 30 secondes, Solver nous donnera une réponse similaire:
Oh, il y avait un problème. Le solveur a reçu le montant correct de revenus, mais le taux d'imposition est incorrect. Le joueur ne peut définir des taxes qu'avec un incrément de 10%, mais Solver définit évidemment des taux de taxe fractionnaires, ce que le joueur ne peut pas faire.
Vous pouvez résoudre le problème en limitant la valeur de la cellule de taux d'imposition aux nombres entiers. Il ne peut être égal qu'à 0, 1, 2, 3, 4 ou 5, mais sans valeurs intermédiaires.
Heureusement, dans Solver, cela peut être assez facile à réaliser. Ouvrez Solver, cliquez sur le bouton Ajouter, sélectionnez la cellule de solution Tax Level, puis sélectionnez la restriction int («int») dans la liste déroulante au milieu:
Exécutez à nouveau le solveur et obtenez les éléments suivants:
Parfait! Avec peu d'efforts, nous avons obtenu la bonne réponse chez Solver. Comme nous le verrons bientôt, avec une augmentation de l'échelle des tâches, le volume de travail effectué par l'outil pour nous dépasse largement le temps passé à sa mise en place.
Ville en croissance
Développons la tâche maintenant en compliquant légèrement le modèle de la ville.
Dans toute stratégie 4X, les villes (ou planètes, ou colonies, ou autres unités habitées) se développent avec le temps. Nous supposerons que la ville connaît une augmentation constante de 8% par tour, à partir de 1 500 000 (1,5 million) de citoyens, pour atteindre une taille de 12 millions d'habitants. Maintenant, notre feuille de calcul ressemblera à ceci:
Chaque nouvelle ligne suivante du tableau décrit un cours du jeu.
Nous avons également modifié le calcul du niveau de base d'insatisfaction. Maintenant, il est calculé comme une seconde du niveau de base de la population (en millions), arrondi à la baisse. Pour cette raison, l'insatisfaction de base sera de 0 jusqu'à ce que la ville atteigne la taille 4, après quoi elle grandira linéairement avec la taille de la ville.
Comme précédemment, nous pouvons tester manuellement les niveaux de taxe en modifiant les valeurs de niveau de taxe. Nous recevrons 0, 102, 190, 222, 144 et 65 unités de devises en recettes fiscales, avec chaque niveau de taxe de 0% à 50%.
Et encore une fois, nous pouvons demander à Solver de résoudre ce problème; il déterminera rapidement que le taux d'imposition optimal est de 30% comme précédemment, ce qui nous donne un revenu de 222 unités monétaires. Voici à quoi ressemble la boîte de dialogue Solveur:
Taux d'imposition variables
Mais, bien sûr, le joueur ne jouera pas de cette façon. Notre «ville» simulée fixe un taux de taxe et le maintient pour chaque mouvement de jeu. Mais un vrai joueur peut avoir un taux d'imposition à tout moment, et il devra souvent l'ajuster parce que sa ville s'agrandit et que les circonstances changent.
Ne serait-il pas formidable que nous puissions non seulement déterminer un taux d'imposition optimal unique, mais également calculer la valeur optimale à chaque déménagement?
Elle nous fera instantanément savoir comment le joueur peut le mieux ajuster les taxes.
Et il s'avère que cela peut être fait! Après avoir correctement configuré le modèle de solution, nous pouvons le mettre en œuvre de manière incroyablement simple.
La plus grande différence est que nous devons supprimer la cellule de décision Tax Level (0-5) et la remplacer par une colonne entière de cellules Tax Level, comme indiqué ci-dessous.
Maintenant, au lieu de forcer Solver à optimiser une seule cellule, nous lui demandons d'optimiser toute la colonne Tax Level. Voici à quoi ressemblera la boîte de dialogue Solveur - vous pouvez voir qu'elle est presque la même qu'auparavant, mais au lieu d'une seule cellule, les variables et les restrictions représentent désormais toute une gamme de cellules dans la colonne Niveau de taxe.
Le solveur prouve en fait qu'une modification du taux d'imposition modifie les résultats - le revenu cumulé s'élève désormais à 232 unités monétaires. Par rapport au même taux d'imposition, la croissance n'est que de 5% (222 contre 232 unités), mais elle reste importante car nous savons que certains acteurs pourront y parvenir.
En examinant de plus près la solution reçue par Solver, vous pouvez voir qu'elle commence avec un taux d'imposition de 50%, car une ville de taille 1 ne contient pas suffisamment de personnes pour générer du mécontentement. Dans le processus de croissance de la ville, l'outil modifie le taux d'imposition à chaque tour de 20% à 30%, en fonction de celui qui apportera le plus de revenus.
La feuille de calcul de cet exemple peut être téléchargée
ici ; dans celui-ci, les trois étapes de cet exemple sont divisées en feuilles séparées d'un tableur (la même taxe pour une ville avec une population permanente, la même taxe pour une ville en croissance et un taux de taxe variable pour une ville en croissance).
Conclusion
La solution que nous avons trouvée montre quelque chose d'intéressant: la nature discrète de notre simulateur de jeu, qui représente un regroupement arbitraire de millions de personnes en tant que "citoyens" discrets qui peuvent avoir un ou deux états de contentement discrets, introduit des caractéristiques dans le modèle. Bien que le jeu lui-même à un certain niveau nécessitera une telle discrétisation pour des raisons d'accessibilité et de jouabilité, les joueurs intelligents et rusés pourront exploiter cette fragmentation artificielle pour obtenir des avantages sur les joueurs qui ne veulent pas s'embarrasser des niveaux de taxe à chaque tour.
Cette situation conduit à une question intéressante: est-ce ce que nous voulons? La mécanique des joueurs oblige-t-elle à chaque tour à s'engager dans la microgestion des niveaux d'imposition? Et voulons-nous permettre aux joueurs axés sur la puissance de battre le système de cette façon; Une telle astuce correspond-elle à leur gain de 5%?
Je ne peux pas répondre à ces questions. En fin de compte,
vous êtes un concepteur qui fixe des objectifs de conception, c'est donc à vous de décider si ce niveau de fonctionnement du système répond aux objectifs que vous avez définis pour le jeu.
Bien sûr, ce modèle n'est qu'un cadre nu. Dans une véritable stratégie 4X, les joueurs peuvent prendre toutes sortes de décisions sur la façon de développer la ville, de construire des bâtiments et d'apporter d'autres changements qui affectent la croissance de la ville, le contentement, les recettes fiscales et la productivité.
Dans un futur article de la série, nous allons construire un modèle similaire, mais beaucoup plus complexe, d'une colonie planétaire entière dans un jeu qui rappelle
Master of Orion 2 . Cet exemple sera beaucoup plus sophistiqué, car nous pourrons prendre des décisions à chaque tour qui affecteront davantage tous ces paramètres, tels que la croissance et la productivité, c'est-à-dire que chaque décision aura des conséquences qui affecteront les décisions ultérieures. Cependant, nous sommes toujours convaincus que l'optimiseur évolutif de l'outil Solver est capable de faire face à cette tâche.
Dans le prochain article, nous tiendrons notre promesse et optimiserons l'achat d'armes pour SuperTank dans l'exemple de l'article d'introduction.