Benutzer-Werkzeuge

Webseiten-Werkzeuge


scripting:tutorials:level1:programming_intro

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Nächste Überarbeitung
Vorherige Überarbeitung
scripting:tutorials:level1:programming_intro [2023/05/09 09:24] – angelegt fritz_98scripting:tutorials:level1:programming_intro [2024/05/13 13:37] (aktuell) fritz_98
Zeile 1: Zeile 1:
 ===== Was ist Programmierung ===== ===== Was ist Programmierung =====
  
-Programmieren ist die Tätigkeit, einem Computer Abfolgen von Anweisungen zu geben, die dieser dann ausführen soll. Die Art, wie diese Anweisungen formuliert sind, muss dabei gewissen Regeln folgen - der sogenannten **Syntax**. Die Syntax ist für jede Programmiersprache unterschiedlich. Um Kartenskripte für Siedler 5 zu erstellen, wird die Programmiersprache [[ https://de.wikipedia.org/wiki/Lua | Lua]] verwendet, weshalb wir uns in diesem Tutorial-Abschnitt mit der grundlegenden Syntax dieser Sprache beschäftigen. Es ist dabei wichtig, die Regeln, die diese Programmiersprache vorgibt, genau zu verstehen. Der Rechner wird nämlich immer nur genau das ausführen, was im Programm steht. Das kann, abhängig davon wie gut man die Sprache "spricht", deutlich von dem abweichen, was man eigentlich möchte. Um Fehler schneller zu finden, hilft es, seine Skripte gut lesbar (FIXME link) zu formulieren und häufige Fehler (FIXME link) zu kennen.+Programmieren ist die Tätigkeit, einem Computer Abfolgen von Anweisungen zu geben, die dieser dann ausführen soll. Die Art, wie diese Anweisungen formuliert sind, muss dabei gewissen Regeln folgen - der sogenannten **Syntax**. \\ 
 +Die Syntax ist für jede Programmiersprache unterschiedlich. Um Kartenskripte für Siedler 5 zu erstellen, wird die Programmiersprache [[ https://de.wikipedia.org/wiki/Lua | Lua]] verwendet, weshalb wir uns in diesem Tutorial-Abschnitt mit der grundlegenden Syntax dieser Sprache beschäftigen. Es ist dabei wichtig, die Regeln, die diese Programmiersprache vorgibt, genau zu verstehen. Der Rechner wird nämlich immer nur genau das ausführen, was im Programm steht. Das kann, abhängig davon wie gut man die Sprache "spricht", deutlich von dem abweichen, was man eigentlich möchte. \\ 
 +Um Fehler schneller zu finden, hilft es, seine Skripte [[ scripting:tutorials:level1:readable_code |gut lesbar]] zu formulieren und [[ scripting:tutorials:level1:common_errors |häufige Fehler]] zu kennen.
  
 ---- ----
Zeile 45: Zeile 47:
 ---- ----
  
-==== Weiteres Beispiel: Waschmaschine ====+==== Ereignisse im Spielablauf ====
  
-Anders als beim Kochrezept haben wir bei Siedler nicht immer die komplette Kontrolle über das Geschehen. Meistens wird der Spieler das Spiel bedienen und wir geben dafür nur die Voraussetzungen bzw. reagieren auf die Aktionen des Spielers. Um dieses Prinzip besser zu veranschaulichen, verwenden wir beispielhaft den (vereinfachten) Programmablauf einer Waschmaschine. Darin stellen wir dar, wie Abhängig von einem Programmzustand auf verschiedene Ereignisse reagiert werden kann.+Anders als beim Kochrezept haben wir bei Siedler nicht immer die komplette Kontrolle über das Geschehen. Meistens wird der Spieler das Spiel bedienen und wir geben dafür nur die Voraussetzungen bzw. reagieren auf die Aktionen des Spielers. Um dieses Prinzip besser zu veranschaulichen, wollen wir einige Ereignisse beispielhaft betrachten und Möglichkeiten aufzeigen, wie das Skript darauf reagieren kann.
  
 +^ Ereignis ^ Reaktion ^
 +| Spiel wurde gestartet | Gebe Spieler Rohstoffe, platziere NPCs, aktiviere Gegner-KI |
 +| Tribut wurde bezahlt | Öffne Tor |
 +| Es wird Winter | KI-Dorf baut Verteidigungstürme |
 +| Gegner wurde besiegt | Löse Siegmeldung aus |
 +
 +Ein weiteres Prinzip im Spielablauf ist die Verwaltung eines Spielzustands. Kombinieren wir die Ereignisse des bezahlten Tributs und des eintretenden Winters: Ein befreundetes KI-Dorf soll nur dann Verteidigungstürme errichten, wenn der Spieler zuvor die dafür notwendigen Baumaterialien bereitgestellt hat. Die Materialien werden verbraucht und sobald der Sommer eintritt, muss der Spieler sie erneut bezahlen.
 +
 +{{ scripting:tutorials:level1:programming_intro:simple_state_machine.jpg }}
 +
 +Beachte, wie in jedem Zustand des Dorfes nur diejenigen Ereignisse beachtet werden, die tatsächlich eintreten können: Wenn der Tribut schon bezahlt ist, kann er erst wieder nach dem Winter bezahlt werden. Wenn es schon Winter ist, kann es nicht noch einmal Winter werden.
 +
 +Eine solche Übersicht zu erstellen hilft in zweierlei Hinsicht.
 +  - **Plane alle Möglichkeiten des Spielers ein**: In jedem Punkt gilt es zu überlegen, welche Ereignisse eintreten können. Falls der Spieler den Gegner des Dorfes besiegen kann, muss das ebenfalls beachtet werden. Von "Dorf wird verteidigt" könnte ein "Ereignis: Gegner besiegt" zu der Siegmeldung oder einer Questbelohnung führen. Falls hingegen das Dorf zerstört wird, muss der Tribut aus dem Menü entfernt werden.
 +  - **Bereite alle notwendigen Möglichkeiten im Spiel vor**: Für jeden Punkt muss sichergestellt werden, dass alle Übergänge, die man geplant hat, auch wirklich möglich sind. Konkret bedeutet das in diesem Fall, dass der Tribut nach jedem Winter für den Spieler zur Verfügung stehen muss.
 +
 +----
 +
 +Wir beginnen im nächsten Kapitel mit der Zuweisung von Variablen.
 +
 +[[ scripting:tutorials:level1:variables | Nächstes Kapitel: Variablen ]] \\
 +[[ scripting:tutorials:level1:programming_intro | Zurück nach oben ]]
scripting/tutorials/level1/programming_intro.1683624252.txt.gz · Zuletzt geändert: 2023/05/09 09:24 von fritz_98