======Einsteigertutorials====== Dieses Einsteigertutorial soll dich dazu befähigen, eigene Karten für Die Siedler - Das Erbe der Könige zu erstellen. Dafür haben wir die Lektionen in verschiedene Ebenen aufgeteilt, deren Inhalte in der Komplexität stetig zunehmen. Wenn du also komplett neu startest, ist es sinnvoll, die Reihenfolge der Ebenen einzuhalten und sie nacheinander durchzuarbeiten. Falls du schon erfahrener bist, kannst du auch nach einem speziellen Thema, das dich interessiert, [[ https://dedk.de/wiki/doku.php?id=scripting&do=search&q=%20%40scripting |suchen]]. Nach jeweils einer Ebene ist es möglich, eine komplett spielbare Karte an der Hand zu haben. Wer sich dafür interessiert, Multiplayerkarten zu erstellen, wird dafür relevante Kapitel hervorgehoben finden. In Ebene 0 wird alles vorgestellt, was benötigt wird, bevor man überhaupt den Editor startet. Dazu gehören zum einen verschiedene Tools, die das Mapping deutlich erleichtern, als auch die wichtige Planungsphase jeder Karte. In Ebene 1 beginnen wir mit der grundlegenden Bedienung des Map Editors und wie man damit eine Karte gestalten kann. Außerdem gibt es eine kleine Einführung ins Skripting, um eine spielbare Mission ablaufen zu lassen. Zum Schluss gibt es ein kleines Kapitel zum Testen der Karte. In Ebene 2 beschäftigen wir uns mit fortgeschrittenen Werkzeugen des Editors und erklären einige Kniffe, um ansprechende Landschaften gestalten zu können. Auf der Skriptseite werden weiterführende Konzepte in der Programmierung betrachtet und außerdem erklärt, wie man Quests in eine Karte integrieren kann. Da dadurch die Spielabläufe durchaus komplexer werden können, gibt es noch ein weiteres Kapitel zu Maptests. In Ebene 3 vervollständigen wir die Kapitel zu Lua und geben einige Tricks zu gutem Programmierstil weiter. Des Weiteren verlassen wir die High-Level-Betrachtung zur KI und steigen auf elementare Steuerungsfunktionen ab, um die KI maßgeschneidert das tun zu lassen, was wir für eine Karte brauchen. Zuletzt werden Briefings und Trigger ebenfalls vertieft. Ebene 4 schließt das Tutorial ab. Dort beschreiben wir in weniger zusammenhängenden Artikeln zahlreiche Möglichkeiten, deiner Map "optisch" etwas Besonderes hinzufügen zu können. Dies schließt unter anderem Cutscenes, Grafikeffekte und dynamischen Nebel mit ein. FIXME In jedem Artikel, in dem eine Comfortfunktion zum ersten Mal benutzt wird, zu einem zugehörigen Doku-Artikel verlinken (zB GetPosition im Briefing-Artikel, IsDead bei der Siegbedingung usw.) ---- =====Ebene 0: Vor dem Editor===== * [[ scripting:tutorials:visual_studio | Aufsetzen von Visual Studio Code ]] * [[ scripting:tutorials:community_tools | Aufsetzen der Community-Tools ]] * [[ scripting:tutorials:drafting | Planung einer Karte ]] ---- =====Ebene 1: Eine einfache (Kampf-) Karte===== ====Grundlagen Mapeditor==== * [[ scripting:tutorials:level1:editor_interface | Interface ]] * [[ scripting:tutorials:level1:landscape_sets | Landschaftssets ]] * [[ scripting:tutorials:level1:terrain_heights | Höhen modifizieren ]] * [[ scripting:tutorials:level1:water_heights | Wasser ]] * [[ scripting:tutorials:level1:terrain_textures | Texturen setzen ]] * [[ scripting:tutorials:level1:place_entities | Objekte platzieren ]] * [[ scripting:tutorials:level1:p4f_editor#video_zu_den_editor-grundlagen | Video von Play4Fun ]] ====Grundlagen Lua-Programmierung==== * [[ scripting:tutorials:level1:programming_intro | Was ist Programmierung ]] * [[ scripting:tutorials:level1:variables | Variablen ]] * [[ scripting:tutorials:level1:branches | Verzweigungen ]] * [[ scripting:tutorials:level1:functions_blocks | Funktionen ]] * [[ scripting:tutorials:level1:variable_scope | Lokale und Globale Variablen ]] * [[ scripting:tutorials:level1:loops | Schleifen ]] * [[ scripting:tutorials:level1:tables | Tables ]] * [[ scripting:tutorials:level1:readable_code | Gut lesbare Skripte ]] ====Die Spielvoraussetzungen definieren==== * [[ scripting:tutorials:level1:basis_script | Das Basisskript ]] * [[ scripting:tutorials:level1:diplomacy | Diplomatie ]] * [[ scripting:tutorials:level1:resources | Ressourcen ]] * [[ scripting:tutorials:level1:technologies | Technologien ]] * [[ scripting:tutorials:level1:weather | Wetter ]] * **Multiplayer**: Unterschiede zum Singleplayer (und EMS) * [[ scripting:tutorials:level1:p4f_editor#video_zu_den_skript-grundlagen | Video von Play4Fun ]] ====Einen Spielverlauf implementieren==== * [[ scripting:tutorials:level1:enemy_ai | Einen Computergegner platzieren ]] * [[ scripting:tutorials:level1:briefings | Ein Briefing abspielen ]] * [[ scripting:tutorials:level1:simple_job | Eine Siegbedingung formulieren ]] ====Die Karte testen==== * [[ scripting:tutorials:level1:debugging | Fehler finden und beheben ]] * [[ scripting:tutorials:level1:common_errors | Häufige Fehler ]] * [[ scripting:tutorials:level1:balancing | Balancing ]] ---- =====Ebene 2: Karte mit Quests===== ====Fortgeschrittene Funktionen des Mapeditors==== * [[ scripting:tutorials:level2:templates | Kopiervorlagen ]] * [[ scripting:tutorials:level2:heightmaps | Höhen- und Texturmaps ]] * [[ scripting:tutorials:level2:vertex_colors | Vertexfarben ]] * [[ scripting:tutorials:level2:editor_groups | Das Gruppentool ]] * [[ scripting:tutorials:level2:landscaping_techniques | Techniken zur Landschaftsgestaltung ]] * **Multiplayer**: Spezielle Anforderungen ans Mapdesign ====Fortgeschrittene Lua-Programmierung==== * [[ scripting:tutorials:level2:lua_library | Die Lua-Standardbibliothek ]] * [[ scripting:tutorials:level2:loops | Weiteres zu Schleifen ]] * [[ scripting:tutorials:level2:functions | Weiteres zu Funktionen ]] * [[ scripting:tutorials:level2:recursion | Rekursionen ]] * [[ scripting:tutorials:level2:comfort_functions | Komfortfunktionen ]] * [[ scripting:tutorials:level2:amendments | Ergänzende Bemerkungen ]] ====Quests implementieren==== * [[ scripting:tutorials:level2:npcs | NPCs ]] * [[ scripting:tutorials:level2:setup_quest | Orte erreichen, Gebäude bauen, Gegner besiegen ]] * [[ scripting:tutorials:level2:rewards | Belohnungen ]] * [[ scripting:tutorials:level2:find_entities | Spieler-Einheiten und -Gebäude finden ]] * [[ scripting:tutorials:level2:tribute | Tribute ]] * [[ scripting:tutorials:level2:quest_menu | Das Auftragsmenü ]] * [[ scripting:tutorials:level2:chests | Schatztruhen ]] * [[ scripting:tutorials:level2:mercenaries | Söldnerquartiere ]] * [[ scripting:tutorials:level2:countdowns | Zähler und Zeitlimits ]] * [[ scripting:tutorials:level2:bandit_camps | Banditenlager und Spawner ]] * [[ scripting:tutorials:level2:communication | Effektive Kommunikation mit dem Spieler ]] * [[ scripting:tutorials:level2:script_example | Beispielskript ]] ====Weiteres zu Maptests==== * [[ scripting:tutorials:level2:debugging | Effektives Debugging ]] * [[ scripting:tutorials:level2:common_errors | Häufige Fehler ]] * **Multiplayer**: Debugging im Multiplayer (auch zB Desynchs) ---- =====Ebene 3: Individuelle Kartenabläufe===== ====Feinheiten der Lua-Programmierung==== * [[ scripting:tutorials:level3:local_functions | Lokale Funktionen ]] * [[ scripting:tutorials:level3:iterators | Iteratoren ]] * [[ scripting:tutorials:level3:lazy_evaluation | Lazy evaluation ]] * [[ scripting:tutorials:level3:call_by | Call by reference und Call by value ]] * [[ scripting:tutorials:level3:upvalues_metatables | Upvalues und Metatables ]] * [[ scripting:tutorials:level3:best_practices | Best Practices ]] ====Maßgeschneiderte KI==== * [[ scripting:tutorials:level3:armies | Armeesteuerung ]] * [[ scripting:tutorials:level3:ai_construction | Eigenständiger Aufbau ]] * [[ scripting:tutorials:level3:ai_development | Eigenständige Entwicklung ]] ====Ergänzungen==== * [[ scripting:tutorials:level3:briefings | Briefings ]] * [[ scripting:tutorials:level3:trigger | Trigger ]] ---- =====Ebene 4: Das gewisse Etwas===== * [[ scripting:tutorials:level4:cutscenes | Cutscenes ]] * [[ scripting:tutorials:level4:gfx_sets | Gfx-Sets ]] * [[ scripting:tutorials:level4:effects | Grafikeffekte ]] * [[ scripting:tutorials:level4:sounds | Sounds und Musik ]] * [[ scripting:tutorials:level4:quest_icons | Quest-Icons ]] * [[ scripting:tutorials:level4:dynamic_fog | Dynamischer Nebel ]] * [[ scripting:tutorials:level4:scripted_terrain | Terrainmodifizierung per Skript ]] * [[ scripting:tutorials:level4:gui_hacks | GUI-Hacks ]]