Wir sind auf der Suche, nicht auf der Iteration
Spieldesign ist im Grunde ein
Suchprozess . Wir beschäftigen uns mit Design und untersuchen viele mögliche Designkonfigurationen, um ein bestimmtes Designproblem zu lösen. Zum Beispiel kann es eine Möglichkeit sein, Räume in einem Dungeon zu verbinden, eine Reihe von Funktionen und Fähigkeiten, die verschiedene Spielagenten besitzen, „magische Zahlen“, die die Effektivität von Einheiten in einem Kampfsystem bestimmen, oder die Kombination von Fähigkeiten, die in unserem Spiel vorhanden sein werden.
So wie ein KI-gesteuerter Charakter ein Wegfindungssystem verwendet, um durch die Spielwelt zu navigieren, muss ein Designer durch einen sehr möglichen Bereich möglicher Konfigurationen navigieren, eine anfängliche Konfiguration vornehmen und diese iterativ ändern. Wir betrachten sorgfältig einen separaten Aspekt des Designs - das Kampfsystem, einen der Teile der Spielwelt, den Technologiebaum in der Strategie - und versuchen, einen Weg zu finden, ihn durch Ändern dieser Konfiguration zu verbessern.
Designer verwenden gerne den Begriff „Iteration“, um diesen Prozess zu beschreiben, aber das Wort „Suche“ wäre hier besser geeignet. Die Wahrheit ist, dass wir beim Erstellen von „Iterationen“ des Designs mit dem zu entwickelnden Spiel experimentieren. Wir treffen vernünftige Annahmen über kleine Änderungssätze, die die aktuelle Designkonfiguration in eine neue verwandeln, die unserer Meinung nach die Designkriterien besser erfüllt.
Solche "Iterationen" sind völlig anders als lineare Änderungen, die normalerweise bei "Iterationen" von Computercode auftreten. viel mehr ähneln sie einer Suche in einem Labyrinth mit vielen scharfen Kurven und erzwungenen Rückgaben. Oft bringen sie uns dem Ziel näher, aber oft ist nicht klar, ob sich das Spiel von ihnen verbessert hat. Manchmal stellt sich heraus, dass Designänderungen, die unserer Meinung nach das Spiel hätten verbessern sollen, unvorhergesehene Fehler aufweisen und wir sie zurücksetzen oder erneut versuchen müssen.
Spieldesign ist eine unglaublich komplexe Disziplin. Das Design ist wie ein dunkler Raum mit vielen scharfen Gegenständen; Es ist äußerst schwierig, sich sicher auf ausgetretenen Straßen zu bewegen. Auf dem Weg erwarten uns fast immer schmerzhafte Verletzungen, besonders wenn Sie sich zu schnell bewegen. Und wir haben einige Werkzeuge, um diesen dunklen Raum zu beleuchten, sowie einige klar definierte und detaillierte Techniken, um einen solchen Entwurfssuchprozess durchzuführen.
Aufgrund der Existenz dieses dunklen Raums führen wir „Iterationen“ durch - wir wissen nicht, welche Konsequenzen die Entscheidungen haben werden, bis wir sie überprüfen. Mit anderen Worten, wir
sind auf der Suche (Will Wright nannte es in seinem
Vortrag auf der GDC 2004 „Suche im Lösungsraum“).
Daher wird Design sehr oft zu einem Leistungsengpass, der Hauptursache für Fehler und dem größten Risikofaktor bei der Spieleentwicklung. Es stellte sich heraus, dass unzählige Entwicklungsteams durch schlecht konzipierte Designlösungen an Hand und Fuß gebunden waren, im kreativen Prozess abrutschten, die Funktionalität veränderten, den Zielmarkt falsch wahrnahmen und andere Designprobleme auftraten, die zu Problemen mit der Produktqualität führten.
Angesichts all der Gefahren, die mit Designexperimenten verbunden sind, ist es nicht verwunderlich, dass viele Verlage und große Entwickler so sehr darauf bedacht sind, Risiken zu vermeiden, und sich lieber strikt an etablierte und gut recherchierte Genres, Lizenzen und Genre-Annahmen halten. Deshalb gehen sie nicht auf die bekannten Risiken von Designinnovationen ein, die zu unbekannten Ergebnissen führen können. Das Erkunden eines dunklen Raums ist zu riskant.
Wir möchten Wege finden, um diese Einstellung zu ändern. Anstatt nur Innovationen zu
vermeiden , ist es besser, Wege zu finden, um unsere Designfähigkeiten zu verbessern, unsere Fähigkeiten zu erweitern und leistungsstarke Tools zu erstellen, die Designinnovationen sicherer und effizienter machen.
Diese Artikelserie
Dieser Artikel ist der erste in einer Reihe von Beiträgen zu
Modellierungslösungen - eine Reihe von Werkzeugen zum Zerlegen von Lösungen in formale Modelle, mit denen dann nach dem wünschenswertesten Ergebnis gesucht werden kann.
Modellierung und Optimierung von Entscheidungen werden häufig in Management, Finanzen, Projektplanung und vielen anderen Bereichen eingesetzt, um den Entscheidungsprozess zu verbessern und verschiedene Entscheidungsprobleme und Optimierungen zu lösen. Dies wird erreicht, indem nach möglichen Alternativen gesucht wird, was schneller ist als eine manuelle Auswahl durch Personen.
Trotz all seiner potenziellen Vorteile, der Modellierung und Optimierung von Lösungen, scheint es für Designer in der Spielebranche ein ziemlich unerforschtes Thema zu sein. Eine Umfrage unter professionellen Designern im beliebten Entwicklerforum ergab, dass nur 25% der Befragten zumindest von Entscheidungsmodellierung hörten und nur 8% sie in der Praxis verwendeten. Eine ähnliche Umfrage, die unter Designern über Facebook durchgeführt wurde, ergab ungefähr die gleichen Ergebnisse mit einer ähnlichen Anzahl von Befragten.
Bei korrekter Verwendung können Modellierungslösungen viele Aspekte des Entwurfsprozesses erheblich verbessern:
- Dies kann dazu beitragen, die Konfiguration bestimmter Designsysteme oder die optimalen Werte der Spielparameter zu optimieren.
- Es kann Licht in Entscheidungen als eine Kombination von Funktionen bringen, die in das Spiel aufgenommen werden müssen.
- Es hilft, Entscheidungen zu modellieren, die ein Spieler treffen kann, insbesondere um die vorherrschenden Strategien oder die Art und Weise zu identifizieren, wie der Spieler das System „schlagen“ kann.
In dieser Artikelserie werde ich über Beispiele aus allen drei Verwendungskategorien sprechen.
Definition
Was ist „Entscheidungsmodellierung“?
Einfach ausgedrückt:
Bei der Entscheidungsmodellierung wird eine Lösung simuliert und anschließend die Suche nach ihrer Berechnung automatisiert.
Wir fragen zunächst nach einer Lösung, versuchen dann, alle Faktoren auszuwählen, aus denen diese Lösung besteht, und binden sie dann in ein Modell ein, das die Lösung genau beschreibt, und geben den Satz von Eingabevariablen und eine Ausgabevariable an. Dann
suchen wir
nach optimalen Lösungen für den Satz von Entscheidungsvariablen (oder Eingabevariablen), die die bestmögliche Ausgabe aller möglichen erzeugen.
Wenn alles richtig gemacht wird, können wir nach einer viel größeren Anzahl möglicher Lösungen suchen, als dies manuell oder in der Vorstellung der Fall wäre. Obwohl wir dieses System nicht auf alles anwenden können, können wir für einige Aufgaben bessere Ergebnisse erzielen, diese schneller berechnen und in einigen Fällen sogar Probleme lösen, die auf keine andere Weise gelöst werden können.
Während dieses Prozesses geben wir auch eine Vielzahl von
Bedingungen an , die als Grenzen verwendet werden, um die Richtigkeit unseres Modells zu bestätigen. Solche Bedingungen können den Wertebereich oder die Art der eingehenden Variablen sowie andere Aspekte unseres Modells einschränken.
Warum Modelle bauen?
Wenn Sie
Sid Meiers Civilization gespielt haben , haben Sie sich wahrscheinlich eines Tages gefragt: „Moment mal, wie kann man am besten mit der Entwicklung der Stadt beginnen? Muss ich zuerst ein Denkmal und dann ein Lagerhaus bauen? Oder wird das Lager zuerst benötigt? Oder vielleicht zuerst einen Tempel und dann ein Lagerhaus? Welche Entscheidung ist
besser zu treffen? Kann jemand diese Frage überhaupt beantworten? "
Sie können sich auch an die Mechanik des Kampfes in Echtzeitstrategie erinnern. Das Ausbalancieren der Parameter mehrerer Einheiten in RTS ist eine für ihre Komplexität berüchtigte Aufgabe. Was wäre, wenn wir ein System hätten, mit dem wir die Lösung des Ausgleichsproblems beschleunigen können, indem wir Fragen zum Ausgleich des Kampfes eines Spiels beantworten, ohne jede Lösung zu spielen? Was wäre, wenn wir dem System Fragen stellen könnten? Zum Beispiel: "Wie viele Schwertkämpfer brauchen Sie, um zwei Pflücker und drei Bogenschützen zu besiegen?" Oder: "Was ist die billigste Kombination von Bogenschützen und Katapulten, um einen feindlichen Wachturm zu besiegen?"
In der Tat kann ein solches System erstellt werden!
Wenn wir diese Entwurfsaufgaben richtig modellieren können, können wir mithilfe der automatischen Optimierungstools alle möglichen Antworten suchen, um die Antwort zu finden, die unseren Kriterien am besten entspricht,
ohne das Spiel tausende Male spielen zu müssen.
Hier ist ein Beispiel für ein ähnliches Problem - ein Beispiel, das wir in einem zukünftigen Artikel der Reihe lösen werden.
Nehmen wir an, wir haben ein Spiel namens SuperTank. In SuperTank fahren wir einen riesigen fantastischen Panzer, der mit anderen Superpanzern auf dem Schlachtfeld kämpft. Vor jedem Kampf können wir eine bestimmte Kombination von Waffen für unseren Panzer auswählen.
Wir haben 100 Credits, die Sie für Ausrüstung ausgeben können. Der Supertank des Spielers kann 50 Tonnen Waffen tragen und verfügt außerdem über 3 "kritische" Steckplätze für spezielle Hochleistungswaffen.
Das Spiel verfügt über die folgenden fünf Waffentypen, und der Spieler kann jede Menge jedes Waffentyps verwenden oder ganz aufgeben:
Angenommen, der Supertank muss den höchstmöglichen Schadenswert haben (wir gehen davon aus, dass der Schaden pro Sekunde angezeigt wird, unabhängig von der Geschwindigkeit der Waffe). Wir gehen auch davon aus, dass alle Waffen die gleiche Reichweite, Flugbahn, Genauigkeit und Häufigkeit des Feuers haben, das heißt, sie sind in allen Bereichen identisch, mit Ausnahme der in der Tabelle angegebenen Werte.
Beantworten Sie jetzt schnell, wie viele Maschinengewehre, Raketen, Laser usw. müssen auf einen Supertank gestellt werden? Welche Kombination aus einem oder mehreren Waffentypen verursacht den größten Schaden, ohne die Grenzen von Gewicht, Preis und kritischen Slots zu überschreiten?
Versuchen Sie, das Problem manuell oder mit einem Taschenrechner zu lösen.
Kann das gemacht werden?
Wenn Sie es versuchen, stellen Sie schnell sicher, dass es überraschend schwierig ist.
Vielleicht gibt es eine Möglichkeit, es mit komplexen mathematischen Gleichungen zu lösen, aber wir sind Designer, und Mathematik ist nicht unser Ding.
Denken Sie auch darüber nach, wie sich die Antwort mit anderen Parametern ändert. Wird sich die Antwort ändern, wenn der Supertank anstelle von 50 Tonnen 60 Tonnen aufnehmen kann? Oder wenn wir statt 100 Kredite 110 oder 90 haben? Wie ändert sich der optimale Gang? Und wenn wir 2 oder 4 kritische Slots haben?
Stellen Sie sich nun vor, wir haben ein System, das sofort das Layout der Waffen mit dem größten Schaden für einen beliebigen Satz von Parametern (Gewicht, Preis, kritische Slots) berechnet. Es reicht aus, die Parameter der Waffen aus der Tabelle einzugeben und dann die Parameter des Supertanks (50 Tonnen, 100 Credits, 3 kritische Slots) einzugeben - und
BOOM! - Wir haben die beste Ausrüstung.
Wäre das nicht wunderbar?
Wir könnten dieses System verwenden, um sofort Antworten auf alle möglichen nützlichen Fragen zu erhalten:
- Wie ändert sich das optimale Schema, wenn sich die Parameter des Supertanks ändern?
- Wie ändert sich die optimale Ausrüstung, wenn die Parameter der Waffe geändert werden?
- Was ist der maximale Schaden, den der Supertank für bestimmte Parameter (Gewicht, Preis, kritische Slots) anrichten kann?
- Sind alle vier Waffenparameter (Schaden, Gewicht, Preis, kritische Slots) für jeden Waffentyp geeignet und ausgewogen?
- Haben wir zu mächtige Waffen, die zu oft benutzt werden? Wenn eine Art von Waffe so nützlich ist, dass es immer richtig ist, sie zu verwenden, ist sie immer die optimale Lösung, sodass es keine sinnvolle Wahl gibt. In diesem Fall sollten wir entweder die Waffe aus dem Spiel entfernen oder ihr Gleichgewicht ändern, damit sie unter bestimmten Bedingungen nicht nützlich ist.
- Haben wir selten oder nie Waffen benutzt? Ähnlich wie im vorherigen Absatz - wenn eine Waffe so nutzlos ist, dass die richtige Entscheidung darin besteht, sie niemals zu verwenden, gibt es auch keine signifikante Wahl. In diesem Fall lohnt es sich, entweder die Waffe aus dem Spiel zu entfernen oder das Gleichgewicht zu ändern, damit es unter bestimmten Bedingungen ratsam ist, sie zu verwenden.
All dies sind sehr wichtige Designfragen, die Antworten, auf die jeder Designer wissen möchte. Diese Antworten zu kennen ist unglaublich nützlich, wenn man ein
SuperTank- Spiel balanciert.
In nur wenigen Absätzen haben wir eine Aufgabe beschrieben, die für uns nur sehr schwer manuell zu lösen ist, die jedoch mit in Microsoft Excel integrierten Tools trivial gelöst wird.
In einem zukünftigen Artikel werden wir ein echtes Lösungsmodell für dieses Beispiel erstellen, das alle aufgeführten Fragen beantwortet.
Sie werden sehen, dass Sie mit einem Modell, das in wenigen Minuten erstellt werden kann, diese schwierige Aufgabe lösen können. In kurzer Zeit werden wir ein leistungsstarkes Tool erstellen, mit dem wir den Designraum schnell und zuverlässig erkunden können.
Roadmap
In dieser Artikelserie werden wir einige komplexere Beispiele veranschaulichen und Referenztabellen erstellen, damit Sie alle diese Beispiele selbst ausführen können, wobei nur Excel verwendet wird, das von Tools installiert wurde. Unter diesen Beispielen sind die folgenden:
- Ein einfaches Beispiel für einen Kampf um ein Strategiespiel
- Ein Modell zur Optimierung der Koordinaten mehrerer Teleport-Wurmlöcher relativ zueinander und zu besiedelten Sektoren in einem Space-Mass-Multiplayer-Spiel (MMO)
- Ein Modell, das die Höhe der Steuern für ein vereinfachtes Modell der Stadt bestimmt, um die Zufriedenheit der Einwohner und die Steuereinnahmen in einer 4X-Strategie wie Sid Meiers Civilization auszugleichen
- Ein Modell für die Auswahl von Zaubersprüchen und Fertigkeiten für Charakterklassen in einem massiven Multiplayer-Spiel
- Optimierungsmodell zur Bestimmung der optimalen Bauordnung für eine Planetenkolonie in einer 4X-Strategie ähnlich dem klassischen Master of Orion
- Ein Beispiel für ein Team, das versucht, die richtige Kombination von Funktionen für ein Spiel zu finden, und ein Entscheidungsmodell, das ihm bei der Auswahl der geeigneten Kompromisse hilft
Im Allgemeinen wird diese Reihe aus einfachen Beispielen bestehen, um optimale Spielerstrategien in bestimmten Subsystemen des Spiels zu finden, und dann zu Entscheidungsmodellen überzugehen, die die Parameter von Spielsystemen optimieren und Kombinationen von Sätzen von „Merkmalen“ optimieren.
In jedem dieser Fälle beschreiben wir die Aufgabe, zeigen, wie sie in Excel modelliert und mit dem integrierten Solver-Tool (in der russischen Version - „Finding Solutions“) aus Excel gelöst wird. In jedem Fall werden Sie feststellen, dass wir es einfacher, schneller und zuverlässiger machen können als ohne Solver oder ein ähnliches Tool. Außerdem füge ich für jedes Beispiel Tabellen hinzu, damit Sie sie herunterladen und selbst überprüfen, die Ergebnisse neu erstellen und mit Ihren eigenen Modellen experimentieren können.
Vergessen Sie auch nicht, dass die interne Darstellung - ob es sich um eine Tabelle, ein Hochsprachenprogramm oder etwas anderes handelt -
keine Rolle spielt . Das Wichtigste ist nicht, woran wir arbeiten - in Excel und Solver, Java / C ++ / C # oder in etwas anderem, sondern die Tatsache, dass wir die Aufgabe modellieren und uns bemühen, sie zu lösen.
Warum Entscheidungsmodelle verwenden?
Einige Leser mögen jetzt skeptisch sein. Es scheint, dass das Erstellen von Entscheidungsmodellen viel Arbeit bedeutet. Warum ist all dieser Aufwand erforderlich, wenn wir benutzerdefinierte Tests in Form von Fokusgruppentests und Betatests durchführen können?
Zunächst möchte ich sagen, dass
Modellierungslösungen nicht für jede Aufgabe anwendbar sind . Einige Aufgaben sind mit solchen Techniken zu kompliziert oder zu schwierig zu modellieren. Darüber hinaus gibt es viele Aspekte im Design (z. B. ästhetische Überlegungen, den Wert des Spiels als Unterhaltung und die „Sensation“ des Spiels), die sich nur schwer oder gar nicht numerisch modellieren lassen. Und Modellierungslösungen machen Gruppentests, Betatests oder das tägliche Spielen Ihres eigenen Projekts während der Entwicklung definitiv
nicht überflüssig.
Trotz alledem wird Ihnen am Ende der Artikelserie klar, dass die Methoden zur Modellierung und Optimierung von Lösungen uns einen einzigartigen und leistungsstarken Satz von Werkzeugen bieten. Sie können viele Probleme, die auf keine andere Weise gelöst werden können, ganz oder teilweise lösen und Ihnen Antworten und Informationen zu allen Arten von Designproblemen liefern, die auf andere Weise schwer zu bekommen sind.
Wie bei jedem anderen Tool muss der Benutzer über seine Anwendbarkeit entscheiden.
Es gibt viele Fälle, in denen Entscheidungsmodelle inakzeptabel oder zu umständlich sein können. Wie Sie in der Artikelserie sehen werden, sind sie auch überraschend nützlich. Je mehr wir die richtigen Entwurfsentscheidungen treffen und Fehler in den frühen Phasen, noch vor der Testphase, beseitigen, desto wahrscheinlicher ist es, dass die Entwurfssysteme langlebig und aufregend sind und unverkennbar.
Denken Sie an die Tools, die einem typischen Programmierer zur Verfügung stehen. Die Arbeit der Programmierer ist sehr kompliziert, wird jedoch durch viele Tools vereinfacht, um Fehler bereits vor der Testphase zu finden. Sie haben Compiler, die Sie ständig an Tippfehler erinnern; Sie haben defensive Programmierpraktiken, die Softwarefehler identifizieren. Sie führen Codeüberprüfungen durch, um Fehler im Code eines anderen zu identifizieren oder auf bösartige Programmierpraktiken hinzuweisen. Darüber hinaus verfügen sie über zahlreiche Tools zur Profilerstellung und statischen Analyse, um alle Arten von Leistungsfehlern und anderen Fehlern zu beseitigen.
Aber Designer haben solche Werkzeuge nicht. Wir können sagen, dass unsere Arbeit auch kompliziert ist, aber wir haben keinen Compiler, der uns sagen würde, dass wir „einen Syntaxfehler gemacht haben“.
Wir haben weder einen Profiler noch Debugging-Tools oder statische Analysetools. Wir können keine Codeüberprüfungen durchführen, da wir keinen „Code“ haben. Wir schreiben Spezifikationen und Designdokumente, und das ist alles. Wir können Dokumente und Funktionsspezifikationen innerhalb des Teams austauschen und hoffen, dass unsere Kollegen uns ein gutes Feedback geben, aber meistens müssen wir das System ins Spiel bringen, um zu verstehen, ob es funktioniert oder nicht.Dies macht das Design unglaublich riskant, lang und kostspielig.Wie beim Programmieren neigen die Leute dazu, Fehler zu machen, und dies ist ein wesentlicher Bestandteil des Prozesses. Deshalb benötigen wir so viele hochwertige Tools wie möglich, um uns und unsere Projekte zu schützen.Wir sind noch weit davon entfernt, vollwertige Design-Tools zu besitzen, die Designern bei der Erkundung des Designraums helfen. Wir müssen weiterhin dem Pfad folgen, den Compiler, Debugger, Profiler und statische Analysetools bei der Programmierung eingeschlagen haben. Wir sehen jedoch bereits den Beginn einiger spezifischer Löser und Spieldesign-Tools, einschließlich des Spielbarkeitstesters der Cut the Rope-Version mit dem Namen Cut the Rope: Play Forever ( Link ); Ludis abstraktes Spieldesignsystem, aus dem das Yavalath-Brettspiel hervorging ( Link ); und mein eigener automatisierter Assistent Evolver für das Balancieren des City Conquest-Handyspiels ( Link ).Modellierungslösungen helfen uns dabei, ein paar weitere Schritte zu einem solchen Unterstützungsniveau zu unternehmen, und ermöglichen es uns, den eigenen Intellekt unserer Designer mithilfe automatisierter Tools zu ergänzen und zu erweitern. Und wenn wir die Wahl haben: Werkzeuge zu haben oder nicht zu haben, warum wählen wir "nicht zu haben"?Die Hauptsache sind keine Tabellenkalkulationen, die Hauptsache sind Modelle
Diese Artikelserie richtet sich an Designer - das heißt an alle Designer, unabhängig von ihrer Erfahrung: Kunst, Software, Erfahrung beim Erstellen von Geschichten oder Brettspielen. Daher werden wir Folgendes nicht komplizieren und versprechen:- . Microsoft Excel Solver (« »). , Excel, . , , ( ) .
Wenn Sie Designer sind, finden Sie in dieser Artikelserie alle Tools, die Sie zum Erstellen von Lösungsmodellen benötigen, ohne dass Code oder Programmierer Code schreiben müssen. Wenn Sie ein Programmierer sind, erhalten Sie in der Serie recht einfache Anweisungen zum Programmieren Ihrer eigenen Lösungsmodelle in einer beliebigen Java-Sprache, sodass Sie Ihre eigenen Lösungsmodelle entweder von Grund auf neu oder basierend auf einer Vorlage erstellen können, die bereits in Solver und Excel verwendet wird.Diese Artikel sollten nur ein Ausgangspunkt sein, damit Sie die hier vorgestellten Konzepte selbst auswählen können: ob Sie sie in Excel implementieren, ein anderes Optimierungswerkzeug auswählen oder versuchen, Ihren eigenen Löser in einer höheren Sprache zu erstellen. Tabellenkalkulationen sind zunächst eine solide Grundlage, aber solche Entscheidungsmodelle sind eher Ihr Sprungbrett zu den umfangreicheren und komplexeren Modellen, die sich in Ihre Spielarchitektur integrieren lassen.Erklärungen
Bevor wir bei der Modellierung von Lösungen zu weit kommen, müssen wir einige Erklärungen geben. Die Modellierung und Optimierung von Lösungen schafft kein vollständiges System für das Spieldesign, und wir werden so etwas nicht sagen. Es ist nützlich, sie als Werkzeug zu betrachten , das in einigen Aspekten des Entwurfsprozesses hilfreich ist , und wie jedes Werkzeug weist es viele Einschränkungen auf.Hier sind einige der Einschränkungen, die Sie kennen müssen:- . , , . , , . , , , , , .
- (). , . « », , Excel. ( / ), ( ), .
- . , - , , «» . . , , /, .
- . , Excel Solver, , , , . Solver , . , , « » . Solver ( Frontline ) , , Solver .
- Sie garantieren keine Optimalität . Aufgrund der Tatsache, dass wir mit komplexen Modellen arbeiten, ist es unmöglich, 100% sicher zu sein, dass wir die optimale Lösung gefunden haben. Manchmal müssen wir uns auf das zweitbeste konzentrieren: Wir werden mehr Zeit für die Optimierung aufwenden oder bei Null anfangen und erneut optimieren, damit wir mit einem hohen Maß an Sicherheit sagen können, dass wir entweder die optimale oder sehr nahe an der optimalen Lösung gefunden haben.
Letzte und wichtigste:- Wir müssen sicherstellen, dass das Modell mit den erforderlichen Aufgaben beschäftigt ist . Nicht alle Aufgaben sind wichtig genug, um solche Anstrengungen zu erfordern. Wir müssen unsere Prioritäten genau kennen und vermeiden, dass wir uns unnötig darauf konzentrieren, nutzlose Aufgaben zu optimieren und andere, größere Aufgaben zu ignorieren, was viel wichtiger sein kann.
In einfachen Worten, damit Modellierungslösungen nützlich sind, müssen einige Bedingungen erfüllt sein. Wir sollten in der Lage sein, die fragliche Lösung in ein bestimmtes diskretes Modell einzubetten und das Ergebnis der Lösung als einen einzigen Wert auszudrücken. Mit anderen Worten, wir sollten in der Lage sein, mithilfe des Lösungsmodells einen endlichen Satz von Eingabedaten in einem Ausgabewert auszudrücken, damit wir durch Minimieren oder Maximieren des Ausgabewerts eine verbesserte Lösung erhalten.In Fällen, in denen es subjektive Aspekte gibt, die nicht in dieses Modell eingebettet werden können, z. B. ästhetische Aspekte oder Aspekte der Benutzerfreundlichkeit / Spielbarkeit, müssen wir sie entweder klar vom Entscheidungsmodell trennen oder die Entscheidungsmodellierung als ersten Durchgang verwenden oder die Entscheidungsmodellierung einfach ganz aufgeben .Damit wir Lösungen in einer Tabelle modellieren können, müssen wir auch die Komplexität des Modells begrenzen. Wenn unser Spiel etwas sehr Komplexes ausführt, können wir diese Komplexität möglicherweise nicht in Excel wiederherstellen. Es sollte jedoch berücksichtigt werden, dass dies nur eine Einschränkung der Leistung von Modellen ist, die in Excel erstellt werden können, und nicht der Entscheidungsmodelle selbst. In unserer eigenen Spiel-Engine können wir viel leistungsfähigere Löser erstellen, und ich hoffe, dass diese Artikelserie Sie dazu inspirieren wird, genau das zu tun.Andererseits ist es unwahrscheinlich, dass all diese Einschränkungen die Entscheidungsmodellierung unbrauchbar machen. Selbst wenn die Aufgabe für eine vollständige Optimierung des Lösungsmodells zu kompliziert ist, kann uns dieses Modell dabei helfen, viele Designkomponenten auszuwählen, die der richtigen Konfiguration viel näher kommen, und viele grundlegende Aufgaben bereits in den frühen Entwicklungsphasen zu finden und zu debuggen.Und selbst wenn das Lösungsmodell keine optimale Lösung für das Problem finden kann, entweder weil die Aufgabe zu komplex ist oder weil es einen ästhetischen Ansatz und andere subjektive menschliche Faktoren erfordert, kann es dennoch helfen, die Grenzen der Lösung zu verengen, Deadlocks zu beseitigen und auf andere Weise die Komplexität des Problems zu verringern .Selbst wenn Sie sich entscheiden, keine Entscheidungsmodellierung zu verwenden, keine Tabellenkalkulationen zu optimieren oder keine eigenen Löser zu erstellen, hilft Ihnen ein Verständnis der Entscheidungsmodellierung dabei, Ihre Meinung über Entwurfsentscheidungen zu ändern.Diese Artikelserie ist eine Studie. Wir werden uns viele Beispiele für Spieldesignaufgaben ansehen und die Möglichkeiten zur Modellierung und Optimierung untersuchen, die von leistungsstarken Designwerkzeugen bereitgestellt werden. Sie mögen skeptisch sein oder sich entscheiden, überhaupt keine Optimierungen zu verwenden, aber ich hoffe, dass Sie unserer Forschung folgen und herausfinden, wie wir die Serie beenden werden.Fazit
Am Ende wollen wir das Design richtig erstellen .Viele Designfragen sind subjektiv und haben keine „richtigen“ oder „falschen“ Antworten. Aber sie sind sicher, in einigen Fällen gibt es . In solchen Fällen müssen wir wissen, wie wir die richtige Antwort erhalten oder zumindest verstehen, wie wir die Definition der „richtigen“ Antwort angehen und nach ihrer Lösung suchen.Modellierung und Optimierung von Lösungen sind leistungsstarke Tools, die uns in vielen Fällen helfen. Ich glaube, dass solche Werkzeuge in den Werkzeugen jedes Designers sein sollten. Wenn Sie sich an sie angepasst haben, werden Sie feststellen, dass diese Tools ein großes, nicht realisiertes Potenzial für eine schnellere und zuverlässigere Untersuchung des dunklen Raums des Spieldesigns haben. In einer Reihe unserer Artikel werden wir zeigen, wie viele Verwendungszwecke es hat.Teil 2. Grundlagen der Optimierung und Bereitstellung der Simulation
Die Tabelle für diesen Artikel kann hier heruntergeladen werden .Vorbereitung des Lösungsmodells
Nachdem wir über Lösungsmodelle gesprochen, erklärt haben, wie nützlich sie sind, und einige ihrer Einschränkungen aufgelistet haben, möchten wir die grundlegenden Konzepte anhand eines einfachen Beispiels veranschaulichen.Bevor wir dies tun, müssen wir jedoch einige Regeln bezüglich der Struktur und des Formats einführen. Wie beim Code können Tabellenkalkulationen schnell zu Chaos führen, wenn Sie nicht vorsichtig sind.In einfachen Worten, unsere Tabellen enthalten vier Arten von Zellen:- — , — , . 0 - , . , , . .
- « » — . , , Tootsie Pop 17 0,25 , « ». .
- «» — , . .
- Ein "Ziel" (oder "Beenden") ist eine Zelle, deren Wert wir bei Ausführung des Optimierers minimieren (oder maximieren) möchten. In unseren Beispielen gibt es immer nur eine Zielzelle, sie hat immer eine orange Farbe und einen schwarzen Umriss. ( Hinweis: Es gibt leistungsfähigere Löser, die das Arbeiten mit mehreren Zielen unterstützen. Für unsere Artikel ist dies jedoch zu kompliziert.)
Wenn wir den Optimierer (das in Microsoft Excel integrierte Solver-Tool („Solution Finder“)) ausführen, wird einfach die von uns angegebene Zielzelle angezeigt und dann versucht, die Entscheidungsvariablen zu ändern. Dies kann jedoch (innerhalb der von uns festgelegten Grenzen) oder minimiert werden oder oder Maximieren Sie den Wert dieser Zielzelle (alle von uns angegebenen).Solver weiß fast nichts über die Berechnungen im Inneren oder über die Verbindungen zwischen Entscheidungszellen und Zielzellen. Er führt einfach einen von mehreren ihm zur Verfügung stehenden Algorithmen aus und versucht, den Wert der Zielzelle zu minimieren oder zu maximieren, indem er nach möglichen Werten von Lösungszellen sucht. Solche Algorithmen („Simplex LP“, „GRG Nonlinear“, „Evolutionary“) sind so konzipiert, dass sie viel intelligenter sind, als alle möglichen Optionen für variable Lösungen mit roher Gewalt zu untersuchen, und sehr oft Antworten auf schwerwiegende Probleme mit erstaunlicher Effizienz finden.Wenn wir beispielsweise wissen möchten, wie oft Sie lecken müssen, um in die Mitte von Tootsie Pop zu gelangen, können wir eine ähnliche Tabelle verwenden:Wir können Excel Solver bitten, dieses Problem zu lösen, indem wir es so anordnen, dass die Zielzelle „Auf Tootsie Pop verbleibende Masse“ minimiert wird. Er würde mithilfe von Experimenten schnell feststellen, dass der Wert der gelben Lösungszelle ein solches Ergebnis liefert ( "Wie oft zu lecken, um in die Mitte von Tootsie Pop zu gelangen") ist 68.
Dies zu tun ist natürlich ein wenig dumm, denn aus der Erklärung des Problems geht hervor, dass die Antwort 17 / 0,25 = 68 sein wird. Es macht keinen Sinn, den Optimierer auszuführen, um ein Problem zu lösen, das mit einfacher Arithmetik gelöst werden kann.
In der Praxis werden die meisten Probleme jedoch keine einfachen mathematischen Lösungen haben. Sie werden viele Entscheidungsvariablen haben, die auf nicht offensichtliche Weise zum Ziel führen, und die Übereinstimmung der Entscheidungsvariablen und der Ausgabe wird zu kompliziert sein, um die mathematische Gleichung manuell zu berechnen (und auch in dieser Reihe werden wir komplizierte Mathematik sorgfältig vermeiden).
Wir werden uns auf die Beschreibung der Aufgaben konzentrieren und die ganze harte Arbeit Solver überlassen.
Beispiel 1: Steuern
In unserem ersten realen Entscheidungsmodell zeigen wir ein Beispiel für die Bestimmung des optimalen Steuersatzes. Niemand mag Steuern, aber in diesem Fall zahlen wir nicht, sondern erhalten Steuern. Ich hoffe, das wird deine Qualen verringern.
Stellen Sie sich vor, wir entwickeln eine 4X-Strategie, die
Sid Meiers Civilization ähnelt. Wir sind dabei, Städte mit einem gewissen Grad an Unzufriedenheit zu schaffen, abhängig von ihrer Größe. „Unzufriedene“ Bewohner neigen im Wesentlichen nicht zur Zusammenarbeit, und wir erhalten kein Einkommen von ihnen. Wir können auch versuchen, Geld von Städten zu bekommen, indem wir den Steuersatz jeder Stadt ändern, aber mit einer Erhöhung des Steuersatzes wird die Unzufriedenheit exponentiell zunehmen, so dass sehr hohe Steuern kontraproduktiv werden.
Angenommen, wir können einen Steuersatz mit einem Zuwachs von 10% im Wertebereich von 0% bis 50% angeben. Hier ist ein Screenshot, der ein ähnliches System aus der klassischen 4X-Strategie von
Master of Orion 2 zeigt :
Als Designer möchten wir eine einfache Frage stellen: Was ist im allgemeinen Fall der optimale Steuersatz?
Dies sollte eine einfache Aufgabe sein, da es nur 6 akzeptable Werte des Steuersatzes gibt. Wir können einfach jeden der 6 Werte manuell testen, den Wert finden, der uns das größte Einkommen bringt, und das Problem als gelöst betrachten!
(In der Tat können Sie wahrscheinlich eine mathematische Gleichung finden, um dieses Problem zu lösen, wie im Beispiel mit Tootsie Pop, aber es wird kontraproduktiv sein, da wir dieses Modell so vorbereiten, dass es zu einem komplexeren Modell wird, das nicht mit Gleichungen gelöst werden kann Außerdem vermeiden wir in dieser Artikelserie die Mathematik.)
Beginnen wir mit der Beschreibung der Aufgabe wie folgt:
- Wir haben eine Stadt der Größe 12 (was 12 Millionen Menschen bedeutet). Diese Personen werden als 12 separate "Bürger" dargestellt.
- Jeder Bürger kann zu einem bestimmten Zeitpunkt zufrieden oder unzufrieden sein.
- Zufriedene Bürger zahlen in Form von Steuern (Steuersatz x 10) (dh ein Steuersatz von 20% ergibt für jeden zufriedenen Bürger 2 Währungseinheiten an Steuereinnahmen).
- Unzufriedene Bürger zahlen keine Steuern.
- Es gibt 3 unzufriedene Bürger in der Stadt, die unabhängig vom Steuersatz unzufrieden bleiben.
- Eine zusätzliche Anzahl von Bürgern wird aufgrund der folgenden Formel unglücklich: (Bevölkerung) x ((Steuersatz) x (Steuersatz)) x 3,5, der Wert wird auf die nächste ganze Zahl abgerundet. Für unsere Stadt der Größe 12 erhalten wir 0 zusätzliche unzufriedene Bürger mit einer Rate von 0% und 10%, 1 zusätzlichen unzufriedenen Bürger mit einer Rate von 20%, 3 zusätzliche unzufriedene Bürger mit einer Rate von 30%, 6 mit einer Rate von 40% und 10 mit Rate von 50%.
Es ist einfach, oder?
Wir werden dies in der
dem Artikel beigefügten Tabelle wie folgt beschreiben:
Möglicherweise stellen Sie fest, dass wir das gelbe Entscheidungsfeld (Steuerebene (0-5)) als indirekte Methode zur Angabe des Steuersatzes festlegen. Anstatt den Steuersatz direkt in der Entscheidungszelle anzugeben, nimmt die Steuersatzberechnungszelle die Steuerebenennummer aus der Entscheidungszelle und multipliziert sie mit 10%. Es gibt einen logischen Grund, dies indirekt zu tun, und wir werden es bald sehen.
Jetzt können wir alle möglichen Werte der Steuerebene experimentieren und ersetzen. Sie können einfach jede der Zahlen von 0 bis 5 in die Zelle Steuerebene eingeben und erhalten Folgendes:
Wie Sie sehen, gibt es einen optimalen Steuersatz: 30%, der die Steuereinnahmen maximiert und 18 Währungseinheiten ergibt.
Lassen Sie uns das System automatisieren!
Das ist sicherlich großartig, aber was ist, wenn wir mehr als sechs Optionen haben? Was ist, wenn es Hunderte von möglichen Steuersätzen gibt oder wenn wir andere Entscheidungsvariablen ändern müssen? Alles wird zu kompliziert, um die Werte manuell zu testen.
Wie wir sehen werden, wird Solver genau dafür verwendet.
Zuerst setzen wir den Wert der Zelle Steuerebene auf Null zurück. Dann gehen wir zur Registerkarte Daten in Excel und sehen auf der rechten Seite des Bandes im Abschnitt Analyse die Schaltfläche Solver („Nach einer Lösung suchen“).
Wenn es nicht angezeigt wird, gehen Sie zu Excel-Optionen, wählen Sie die Kategorie "Add-Ins" aus und stellen Sie sicher, dass in der Dropdown-Liste "Verwalten" die Option "Excel-Add-Ins" ausgewählt ist. ), klicken Sie auf Los und stellen Sie sicher, dass das Solver-Add-In aktiviert ist.
Nachdem Sie auf die Schaltfläche Solver geklickt haben, sollte ein ähnliches Dialogfeld angezeigt werden.
Schauen wir uns nun alle Schritte an, die zum Einrichten des Solver-Dialogfelds erforderlich sind.
Im Feld „Ziel setzen“ („Zielfunktion optimieren“) geben wir an, was wir optimieren müssen. In diesem Fall versuchen wir, so viele Steuereinnahmen wie möglich zu erzielen. Wählen Sie daher das orangefarbene Feld für das Ziel aus, das die Steuereinnahmen darstellt, und klicken Sie dann in der Liste der Optionsfelder auf "An: Max".
Wählen Sie im Abschnitt "Durch Ändern variabler Zellen" die Zellen aus, die "Solution Finder" berechnen soll. Wir müssen den optimalen Steuersatz bestimmen, wählen Sie also das gelbe Lösungsfeld (Steuerebene (0-5)). Wenn alles richtig läuft, wird dieser Zelle als Ergebnis ein Wert von 3 zugewiesen, der einem Steuersatz von 30% entspricht, dessen Optimalität wir bereits in manuellen Berechnungen ermittelt haben.
Schließlich müssen wir einige
Einschränkungen hinzufügen. Tatsächlich sind Einschränkungen Voraussetzungen für alle Zellen in unserem Lösungsmodell, und Excel Solver konzentriert sich nur auf die Lösungen, die die angegebenen Einschränkungen erfüllen. Solche Einschränkungen können bestimmte Zellen (normalerweise Entscheidungszellen und Berechnungszellen) auf bestimmte Minimal- und / oder Maximalwerte beschränken und / oder Solver veranlassen, diese als ganzzahlige oder binäre Variablen (0 oder 1) zu verarbeiten. Einschränkungen sind unglaublich nützlich, um das richtige Modell zu erstellen, das begrenzt sein wird.
Solver erfordert mindestens einige Einschränkungen, die es ihm ermöglichen, die Grenzen von Entscheidungszellen zu bestimmen - mit anderen Worten, die Minimal- und Maximalwerte für jede Zelle. Um eine Einschränkung hinzuzufügen, müssen Sie rechts auf die Schaltfläche Hinzufügen klicken. Das folgende Dialogfeld wird geöffnet:
Wir werden zwei Einschränkungen hinzufügen, eine, damit die Lösungszelle auf Steuerebene die Bedingung> = 0 erfüllt, und eine weitere, damit die Lösungszelle <= 5 ist. Wählen Sie dann in der Liste Lösungsmethode die Option Evolutionär („Evolutionär“). Suche nach einer Lösung ") und klicke auf Lösen (" Suche nach einer Lösung ").
Nach etwa 30 Sekunden Arbeit gibt uns Solver eine ähnliche Antwort:
Oh, da war ein Problem. Solver hat die richtige Höhe des Einkommens erhalten, aber der Steuersatz ist falsch. Der Spieler kann Steuern nur mit einem Zuwachs von 10% festlegen, aber Solver legt offensichtlich gebrochene Steuersätze fest, was der Spieler nicht tun kann.
Sie können das Problem lösen, indem Sie den Wert der Steuersatzzelle auf ganze Zahlen beschränken. Sie kann nur gleich 0, 1, 2, 3, 4 oder 5 sein, jedoch ohne Zwischenwerte.
Glücklicherweise kann dies in Solver ziemlich einfach zu erreichen sein. Öffnen Sie Solver, klicken Sie auf die Schaltfläche Hinzufügen, wählen Sie die Zelle Steuerebene-Lösung aus und wählen Sie dann die Einschränkung int in der Dropdown-Liste in der Mitte aus:
Führen Sie nun Solver erneut aus und erhalten Sie Folgendes:
Perfekt! Mit wenig Aufwand haben wir bei Solver die richtige Antwort erhalten. Wie wir bald sehen werden, übersteigt das von uns für das Tool geleistete Arbeitsvolumen mit zunehmendem Aufgabenumfang die für die Einrichtung aufgewendete Zeit erheblich.
Wachsende Stadt
Lassen Sie uns die Aufgabe jetzt erweitern, indem wir das Stadtmodell etwas komplizieren.
In jeder 4X-Strategie wachsen Städte (oder Planeten oder Kolonien oder andere bewohnte Einheiten) im Laufe der Zeit. Wir gehen davon aus, dass die Stadt eine konstante Zunahme von 8% pro Runde aufweist, beginnend mit 1.500.000 Einwohnern (1,5 Millionen) und auf eine Größe von 12 Millionen Einwohnern. Jetzt sieht unsere Tabelle folgendermaßen aus:
Jede neue nachfolgende Zeile der Tabelle beschreibt einen Spielverlauf.
Wir haben auch die Berechnung des Grundniveaus der Unzufriedenheit geändert. Jetzt wird es als eine Sekunde des Grundbevölkerungsniveaus (in Millionen) berechnet, abgerundet. Aus diesem Grund ist die grundlegende Unzufriedenheit 0, bis die Stadt auf Größe 4 wächst. Danach wächst sie linear mit der Größe der Stadt.
Nach wie vor können wir manuell mit Steuersätzen experimentieren, indem wir die Steuersätze ändern. Wir erhalten 0, 102, 190, 222, 144 und 65 Währungseinheiten in Steuereinnahmen mit jeder Steuerstufe von 0% bis 50%.
Und wieder können wir Solver dazu bringen, dieses Problem zu lösen. Er wird schnell feststellen, dass der optimale Steuersatz nach wie vor 30% beträgt, was ein Einkommen von 222 Währungseinheiten ergibt. So sieht der Solver-Dialog aus:
Variable Steuersätze
Aber natürlich wird der Spieler nicht so spielen. Unsere simulierte „Stadt“ legt einen Steuersatz fest und hält ihn für jeden Spielzug gleich. Ein echter Spieler kann jedoch jederzeit einen Steuersatz haben, den er häufig anpassen muss, weil seine Stadt wächst und sich die Umstände ändern.
Wäre es nicht großartig, wenn wir nicht nur einen einzigen optimalen Steuersatz bestimmen, sondern auch den optimalen Wert für jeden Schritt berechnen könnten?
Sie wird uns sofort mitteilen, wie der Spieler die Steuern am besten anpassen kann.
Und es stellt sich heraus, dass dies möglich ist! Nachdem wir das Lösungsmodell bereits richtig eingerichtet haben, können wir es unglaublich einfach implementieren.
Der größte Unterschied besteht darin, dass wir die Entscheidungszelle für die Steuerebene (0-5) entfernen und durch eine ganze Spalte von Zellen für die Steuerebene ersetzen müssen, wie unten gezeigt.
Anstatt Solver zu zwingen, eine einzelne Zelle zu optimieren, befehlen wir ihm nun, die gesamte Spalte "Steuerebene" zu optimieren. So sieht das Solver-Dialogfeld aus: Sie können sehen, dass es fast das gleiche wie zuvor ist. Nur anstelle einer Zelle repräsentieren die Variablen und Einschränkungen jetzt eine ganze Reihe von Zellen in der Spalte Steuerebene.
Solver beweist tatsächlich, dass eine Änderung des Steuersatzes das Ergebnis verändert - das kumulierte Einkommen liegt nun bei 232 Währungseinheiten. Im Vergleich zum gleichen Steuersatz beträgt das Wachstum nur 5% (222 gegenüber 232 Einheiten), aber es ist immer noch signifikant, da wir wissen, dass einige Spieler es erreichen können.
Wenn Sie sich die Lösung, die Solver erhalten hat, genauer ansehen, sehen Sie, dass sie mit einem Steuersatz von 50% beginnt, da in einer Stadt der Größe 1 nicht genügend Menschen leben, um Unzufriedenheit zu erzeugen. Im Zuge des Stadtwachstums ändert das Tool den Steuersatz in jeder Runde im Bereich von 20% bis 30%, je nachdem, welcher mehr Einkommen bringt.
Die Tabelle für dieses Beispiel kann hier heruntergeladen
werden . Darin sind die drei Stufen dieses Beispiels in separate Tabellenblätter unterteilt (dieselbe Steuer für eine Stadt mit ständiger Bevölkerung, dieselbe Steuer für eine wachsende Stadt und ein variabler Steuersatz für eine wachsende Stadt).
Fazit
Die Lösung, die wir gefunden haben, zeigt etwas Interessantes: Die diskrete Natur unseres Spielesimulators, der eine willkürliche Gruppierung von Millionen von Menschen als diskrete "Bürger" darstellt, die einen oder zwei diskrete Zufriedenheitszustände haben können, führt charakteristische Merkmale in das Modell ein. Obwohl das Spiel selbst auf einer bestimmten Ebene aus Gründen der Zugänglichkeit und Spielbarkeit eine solche Diskretisierung erfordert, können kluge und listige Spieler diese künstliche Fragmentierung ausnutzen, um Vorteile gegenüber Spielern zu erzielen, die sich nicht in jeder Runde mit den Steuersätzen befassen möchten.
Diese Situation führt zu einer interessanten Frage: Wollen wir das? Macht es die Mechanik der Spieler erforderlich, dass sie in jeder Runde ein Mikromanagement der Steuersätze durchführen? Und wollen wir leistungsorientierten Spielern erlauben, das System auf diese Weise zu schlagen? Entspricht ein solcher Trick ihrem Gewinn von 5%?
Ich kann diese Fragen nicht beantworten. Letztendlich sind
Sie ein Designer, der Designziele festlegt. Es liegt also an Ihnen, zu entscheiden, ob diese Ebene des Systembetriebs die Ziele erfüllt, die Sie für das Spiel festgelegt haben.
Natürlich ist dieses Modell nur ein nackter Rahmen. In einer echten 4X-Strategie können die Spieler alle möglichen Entscheidungen darüber treffen, wie die Stadt entwickelt, Gebäude gebaut und andere Änderungen vorgenommen werden sollen, die sich auf das Wachstum der Stadt, die Zufriedenheit, die Steuereinnahmen und die Produktivität auswirken.
In einem zukünftigen Artikel der Serie werden wir ein ähnliches, aber viel komplexeres Modell einer gesamten Planetenkolonie in einem Spiel erstellen, das an
Master of Orion 2 erinnert . Dieses Beispiel wird viel ausgefeilter sein, da wir in jeder Runde Entscheidungen treffen können, die alle diese Parameter wie Wachstum und Produktivität weiter beeinflussen, dh jede Entscheidung wird Konsequenzen haben, die sich auf nachfolgende Entscheidungen auswirken. Wir sind jedoch weiterhin davon überzeugt, dass der evolutionäre Optimierer des Solver-Tools diese Aufgabe bewältigen kann.
Im nächsten Artikel werden wir unser Versprechen erfüllen und den Kauf von Waffen für SuperTank im Beispiel aus dem Einführungsartikel optimieren.