Authored months, weekdays and years, dated events, and the weather forecast.
Calendar
By default your world knows time of day and four rotating seasons — but no dates. There is no year, no month names, no weekday names, and because weather is rolled at random the moment it changes, there is no way to tell a player what tomorrow holds.
The Calendar fixes all of that. You author the shape of your year, date events onto it, and players get a real calendar they can open and read.
Find it in World Config → Calendar, next to Weather & Time.
Definition — the shape of your year#
The Definition tab is where you invent your calendar:
| Field | What it does |
|---|---|
| Months | Any number of months. Each has a name, a length in days, and a season. |
| Weekdays | Name your weekdays. The week is as long as this list — a 5-day or 10-day week is perfectly valid. |
| Starting date | Which year/month/day/weekday the world begins on. |
| Year Label | How a year renders — Year {year}, {year} AC, whatever fits your setting. |
| Forecast Days | How far ahead players can see the weather. 0 hides the forecast entirely. |
A live preview shows what your settings resolve to ("Day 0 of this world is Stoneday, 2 Thaw, 312 AC"), so you can see immediately whether the shape is what you meant.
Months do not have to be equal length, and several months can share a season — three consecutive Winter months read as one continuous winter to everything downstream.
Seasons still do the work#
**Your months map onto the engine's four seasons, and that is what keeps everything else working.** Weather weight tables, ambient temperature, seasonal audio and NPC shop season rotation are all driven by the season a day falls in — the calendar only decides when each season falls. Nothing you have already authored against seasons needs changing.
While a calendar is enabled, Season Length (days) in Weather & Time is ignored (and shown disabled), because your months now answer that question.
Events — things that happen on dates#
The Events tab is a real grid of your authored year. Click any day to add an event.
| Setting | What it does |
|---|---|
| Repeats | Every day, every week on a weekday, every season on a day of the season, every month on a day, every year on a date, or once on a specific date. |
| Season / Day of the season | For every season: which season (or Every season), and which day of it — 1 is the season's first day. |
| Runs until the season ends | For every season: the event lasts from its day to the season's last day, however long you make your months. |
| Duration | How many days the event runs. It may cross month and year boundaries freely. Hidden for every day (always one day) and for runs until the season ends. |
| Time of day | All day (midnight to midnight), or Between two times on the in-game clock. An end time earlier than the start runs past midnight — 20:00 to 02:00 is a night event. Studio shows how long that is in real time at your day length. |
| Announcements | A toast and/or a chat line, broadcast when the event starts — for a timed event, each time its window opens. |
| Forced Weather | Holds the weather while the event runs. An all-day event pins every day it covers (and the forecast shows it); a timed one holds it only inside its window, then the day's own weather returns. |
| On-Start Script | A common event fired server-side when the event starts, for anything scripted. |
| World Event | A world event (authored in World Config → World Events) to run while the event runs — XP/loot/gathering boosts, boss spawns, mob waves, zone scoping. |
| Art & Colour | The image and chip colour players see on their calendar. |
| Visibility | Public shows on the player calendar. Hidden runs its script without players ever seeing it. |
Events are content, so they publish to your live server like any other definition.
Seasonal, weekly and daily events#
These three cover most of what a living world needs:
| You want | Set it up like this |
|---|---|
| A festival that lasts all winter | Every season → Season Winter, Day 1, tick Runs until the season ends. |
| A fair at the start of every season | Every season → Season Every season, Day 1, Duration 2. |
| A market day each week | Every week → the weekday, All day. |
| An evening event on one weekday | Every week → the weekday, Between two times 18:00–23:00. |
| A night event every night | Every day → Between two times 20:00–02:00. |
| A dawn event every morning | Every day → Between two times 05:00–08:00. |
To give one a gameplay effect:
- Under World Config → World Events, author the effect — for example **Gathering
Frenzy at
1.5— and set its schedule to Manual**. - Under World Config → Calendar → Events, click New Event, pick how it repeats and
its time of day, and choose that world event in World Event.
- Save. It reaches your live server straight away — no restart needed.
Every-day events are listed once, in an Every day strip above the month grid, rather than in every day's cell.
Everything runs on your world's clock, not the real one. A daily event comes round once per in-game day. With a 60-minute day that is every real hour, and a 20:00–02:00 window is 15 real minutes. A season lasts as many real hours as it has days. Check the real-time note under Time of day when you set the hours.
When events overlap, boosts stack#
Running world events multiply together: a winter-long 1.25× XP event and a weekly 2× XP day give 2.5× on that day, and 1.25× again the moment the weekly one ends. A boost that is still running is never reset by another one finishing.
Where the gameplay effects come from#
A calendar event schedules; a World Event is the payload. World Events already own XP / loot / gathering / crafting / speed multipliers, bloodmoon, boss spawns, mob waves and zone scoping — but they could only be scheduled in real time (an interval in milliseconds, or a wall-clock start), so "the 14th of Emberfall is a double-XP festival" was impossible to express.
Linking one in the World Event field fixes that: the calendar becomes the in-game-date scheduler World Events never had, and the world event runs for as long as your calendar event runs — its days, or its time window — overriding its own real-time duration.
So a double-XP day is two pieces:
- Under World Events, author an event with effect XP Boost and a multiplier, and
set its schedule to Manual so it only fires when something asks it to.
- Under Calendar → Events, add an event on the date you want, set Duration to
1 day (or 7 for a week), and pick that world event.
Studio warns you if the world event you picked is disabled, or is still on its own recurring timer — in that case it fires on its own as well as on your date.
Changing the current weather right now is separate from all of this: use World Config → Weather & Time → Weather, which applies live — everywhere, in every climate — when you change it and save. Saving other settings, or publishing, does not re-apply the same pick. Bear in mind it is transient — the world keeps rolling weather on its own. To make a date always have certain weather, use a calendar event's Forced Weather instead.
The forecast#
Daily weather is now deterministic: it is rolled from your world seed and the day number rather than at random. The odds are unchanged — the same season weight tables you already tuned — but because any future day can be computed, a forecast becomes possible at all, and every player sees the same one.
Weather still drifts within a day: roughly every 1–4 hours on your world's clock, it re-rolls from the same season table. It can roll the weather that's already running, which is why a common weather lingers and a rare one passes through — a 25%-weight snowfall lasts about a third longer than a 10%-weight blizzard, without either having a duration you set anywhere.
Because that window is measured in **game hours, not real minutes, it follows your day length**. Set a four-hour day and weather changes just as often per in-game day as it does on a one-hour day — it simply takes four times as long in real time. The same is true of how fast an arriving weather builds to full strength (a little over half a game hour). If you want a weather to last an exact length of time, use a schedule — its window is authored in game hours directly.
On a day an all-day event has pinned, weather doesn't drift at all. A timed event's weather holds only while its window is open and never appears in the forecast.
If your world has Weather Climates, every climate has its own forecast, and a player's calendar shows the forecast for the climate they are standing in — walk into the snowfield and the week ahead turns to snow.
What players see#
Players have four ways into the Calendar panel:
- The weather, time and date chips in the top bar are buttons (a dotted underline
marks them as clickable) — clicking any of them opens the calendar.
- A Calendar entry in the top bar's More menu.
- The
,(comma) key — rebindable like every panel key. - Custom menu buttons and top-bar buttons a creator points at the
panel.calendaraction.
The panel shows:
- This month's grid, today ringed, in your month and weekday names
- Forecast icons on each day inside your forecast horizon
- Event chips, with a detail popover showing when it happens, the description and art
- An Every day strip for daily events, with their hours and a Now marker while
one is running
- A Coming up rail — "Harvest Festival — in 3 days", with the start time for timed
events and Now while one is on. Each event appears once, at its next start.
- Arrows to page through other months
The panel is a normal customizable panel (id calendar), so the UI & HUD Editor can
re-skin and reposition it like any other window.
The clock and the date in the HUD#
The top-bar time chip shows a real clock — 14:32 · Afternoon by default. Pick the
format in the UI & HUD Editor's Top Bar tab (Clock format): 24-hour, 12-hour,
with or without the phase word, or phase-only for the classic look. When a calendar is
driving the world, a date line ("Moonday 14 Emberfall") appears beside it.
There is also a standalone World Clock HUD element (Layout tab → World Clock) — hidden by default — that a creator can place, scale and anchor anywhere on screen. It shows the clock plus the calendar date, and clicking it opens the calendar too.
Turning it off#
The Calendar feature flag is on by default, but a calendar only drives dates and seasons once you tick "Calendar drives the world's dates & seasons". Until then the world keeps fixed-length seasons and shows no date line — the chips still open the panel (clock + forecast over the default calendar) so players always have a weather forecast. With the feature flag off entirely, the panel, button and keybind disappear.
Things worth knowing#
- Reshaping your year moves existing dates. Dates are derived from a day counter, so
shortening or removing a month can shift what "today" is. Studio warns you, and blocks the save if any event would land on a date your calendar no longer has.
- Each world keeps its own date. The day counter is live server state, not content —
publishing a calendar to a running world never rewinds the date players are living in.
- Weekday-driven content follows your week. Systems keyed to a weekday wrap on your
authored week length, so weekday 3 of a 5-day week means what you'd expect.
- Events start on time, including after a restart. An event opens the minute its day
or window begins. If your server restarts or rolls to a new version mid-festival, the festival's world event starts again as soon as it is back. Announcements go to whoever is online when the event opens.
- Deleting or moving a running event ends it. Publish a change that takes an event
off today (or out of the current hours) and its world event stops right away.
- Jumping the clock skips what you jump over. Setting the time or season from the
admin tools starts whatever is running at the new time; events you jumped past don't fire.
- An every-day event with no time of day is always on. Give it two times, or use a
weekly or seasonal event instead.
- "Day of the season" must exist in that season. Studio blocks Day 30 of a 24-day
winter. With Every season picked, the day must exist in the shortest one.