SER is a programming language, but you do not need to study a programming language before you can enjoy it. Start with one method, turn it into a player command or game event, and watch the server change. Learn variables and control flow later, when a script you actually want to build needs them.
These docs therefore have two different reading paths.
Follow this path in order if SER is new to you:
- Install SER and generate its examples
- Make the server say something
- Discover methods that change the game
- Make a command or react to an event
- Choose which players are affected
- Remember values and inspect players
- Add decisions, chance, and timing
- Build a Hot Potato event
You will make useful scripts before the tutorial introduces loops, collections, functions, or memory lifetimes. That is intentional.
Use the reference when you need a complete or technical answer:
- script files, identity, and reload behavior;
- methods, values, expressions, and return types;
- variable families and properties;
- conditions and loops;
- collections;
- timing and yielding;
- functions, variable visibility and lifetime, and errors;
- flags, events, and commands;
- optional integrations;
- debugging.
The compact language specification is for experienced authors and tool builders. The validated example index points to complete scripts that compile during every SER build.
- The implementation and build-generated
ser_method_info.jsare the source of truth for available methods, flags, events, variables, and properties. serhelpexposes that information on the running server. It should be used instead of copied snapshots of hundreds of symbols.- SER Blocks teaches a deliberately small beginner vocabulary. The VS Code extension and text format expose the complete language.
- The old German and Italian GitBook pages have not been migrated because they describe older syntax. See translation policy.
Keep the tutorial outcome-oriented and the reference precise. A tutorial page should begin with something worth adding to a server, introduce only the language features needed to build it, show the expected result, and then offer one safe experiment. Put exhaustive behavior and implementation-shaped edge cases in the reference instead of interrupting the first learning path.
When changing the language or user workflow:
- update the relevant page here;
- update a build-validated script in
Example Scriptswhen appropriate; - update
language_specification.mdfor grammar changes; - run
npm run verifyfromTooling; - build SER so all bundled examples compile.