Wesnoth scenarios are the individual levels within the game. They can be as simple or advanced as you choose, ranging from two sides who must fight each other to multiple sides with different characters, custom items, and complicated events. This page is split into several sections, starting with the basics and moving into more complex techniques. When you're done, you should have all the knowledge necessary to create your own scenarios.
Each scenario is made up of two files: the map file and the configuration file. The former, the map itself, is discussed in BuildingMaps. The latter describes everything about, and what occurs in, a scenario, from the setup of sides, units, music, events, and so on. Both files are plaintext are can be edited in any standard text editor. If you decide to use a wordprocessor, please make sure to Save As text (preferably with a .cfg extension), not as rich text.
Remember that you can use the scenarios that ship with the game for reference should you get stuck. They cover a wide range of techniques, so it's likely you'll find an example of what you need.
If you still don't understand something or can't get it to work, feel free to ask for assistance in the WML Workshop on the forums.
The Wesnoth Markup Language
Scenarios are written in the Wesnoth Markup Language (WML), a custom language written specially to work with the game. It sports a relatively simple tag/key-based syntax, a complete guide to which can be found on the SyntaxWML page.
Quick Tag Index
Below follows an index of the basic WML tags used to create scenarios.
- ScenarioWML: The top level tags [scenario], [multiplayer], [test], and [tutorial]
- IntroWML: Setting up the intro screen
- TimeWML: Setting up the time schedule
- SideWML: Describing a side
- EventWML: An event that happens in the scenario
- MapGeneratorWML: The random map generator
- Macro Reference: A set of useful macro shortcuts you can use
A nice collection of simple beginner code to look at is documented on the Samples page, showcasing the basic usage and structure of WML in an actual coding sense.
Scenarios and the Map Editor
As of Wesnoth 1.12, the Map Editor has become more fully featured, and includes options to define more basic scenario-related content for your scenario, such as name, unit placement, graphical items, time of day schedules, etc, without having to manually write the code yourself. However, the editor cannot create more complex WML. Those interesting snippets still have to be written by hand. These functions are most useful for creating a simple scenario from a map, or streamlining your workflow in creating a more complicated scenario.
In order to edit scenario metadata, select File → New Scenario. By default, the editor opens with a blank map file open only.
NOTE: Scenario-specific content will not be saved unless you also select the File → Save Scenario option before exit. Otherwise, you will simply get a map file.
Building Your Scenario
Creating a scenario is no simple task. Generally, you should have a premise mapped out for the scenario before you begin. Who will your protagonists face? What events will occur? How long will it be? You might decide to revise your plans as you code and test them. It will generally take many iterations of writing, coding, and playtesting until your scenario reaches a product you are satisfied with.
A discussion on tweaking and balancing your scenario to make it more fun is found on the Balancing page. ESR has more handy tips in his Campaign Design How-To article, and as mentioned before, don't hesitate to ask for help in the WML Workshop.
A handy breakdown of the code of a scenario, line-by-line, is available on the three pages linked here. Each explores gradually more complex WML concepts.
- ReferenceWML - WML master reference