Blog-Layout

How do I set up the calendar for a populated moon?

Kathrin Janowski • 16. März 2021

Nonfi Nis - Week 9

Only three blog posts in and I'm already going off the script. Yay.

Don't worry, I'll still get to fleshing out the characters, hopefully in the next post. Come to think of it, that might take several posts anyway.


Meanwhile, I've come across an aspect of my worldbuilding that has needed some clean-up for quite a while now - the calendars of my cultures. And Ranul, the place where the Nonfi Nis game will be set, has been particularly tricky. So I figured I could talk a bit about the process here.

The First Rilsu Calendar

Early Drafts

Until the beginning of 2020, I didn't have proper calendars for my cultures at all. I was struggling with finding a system for organizing my notes, and finding a way to map out my timelines was just one of the many challenges.


What I had were the parameters for my celestial bodies, such as their orbital periods, which were loosely based on our solar system. I came up with them by looking at the parameters for Earth, Mars etc. and adding or subtracting a few days. None of them would fit the Gregorian calendar, and I did not want them to, either, because this star system had no connection to Earth and humans whatsoever.

Alien Time Measurements

When I moved my notes to WorldAnvil, I finally sat down and started figuring out how my planets' and moons' movements would translate to months and weeks. This was rather straightforward for Chryphóra. Its moon Palia takes 25 days to orbit the planet, and this fit quite well into the 348 days of a Chryphóran year. It gave me 14 months minus two days, so two of these months ended up with 24 days. I placed them on opposite sides of the year's cycle. Neat.


Then I got to Kasavoa and Ranul... and realized that celestial mechanics would look very different to a culture that lives on the moon rather than the planet.


For starters, Ranul is in tidal lock with Kasavoa, so the planet always stays in the same spot of Ranul's sky. No real way to derive months from that - well, Kasavoa would rotate in place, but I doubt that this would be notable enough for early Rul cultures. Next, the Rul would not see Ranul waxing or waning. Instead, they would perceive this the way we perceive Earth's day and night cycle. A day for the Rul would therefore take the 33 hours of a Kasavoan day times the 32 days of Ranul's lunar cycle. So, splitting the year into days would make for a really coarse scale.


But what about using the day as the year instead? It kinda made sense - instead of counting a planet's orbits around the star, they would count the orbits around their planet. Then they could split this orbit into quarters which would make the months...


So far, so good. At that time I also liked that a Nimýric year, which is rather close to one Earth year, would equal about 10 Rilsu years. That made the Rilsu calendar pretty alien.

A Flawed System

I started using this calendar. I set up a spreadsheet to convert the Rilsu dates to the Universal Date Time that WorldAnvil uses for its timelines. I wrote several articles stating character ages and dating historical events in that system.

When a prompt asked me to describe their birthday traditions, I decided that they would celebrate every eighth orbit, in line with their base eight numeric system. When a prompt asked for a devastating natural phenomenon, I decided that seasons would be determined by the position relative to the Kaleidoscope - which in turn would depend on Kasavoa's orbital position. Easy enough.


But then the prompt for a food-related holiday came around. I wanted them to celebrate the harvest, because it was obvious that it would have gained a huge importance after the Final War... and that's when the whole system started to break down. Suddenly, the lunar cycle year made far less sense.


Well, then I'll just make a "grandyear" and stuff the shorter years into that, right? Yeah... except the 521 days of Kasavoa's orbit would require 16 "years" and 9 days leap days. But that should be feasible, too, right? Well...

Coding The Converter

The Grandyear Odyssey

Somewhere along the line I started dabbling with a date converter in JavaScript. I figured I could just transfer the formulas that I had in my spreadsheet, update them to handle the 9 leap days for Ranul, and have it all set up in no time. And the calculations worked... for positive years. Not so much for those that came before the turn of the era.


What followed were weeks and months of running into dead ends. For the life of me, I couldn't figure out how to handle these leap days. Every formula that I came up with failed to account for something, and every piece of advice that I found was tailored the Gregorian calendar and/or considered only the AD years.


Finally, I heard the piece of advice that I needed in one of the WorldAnvil Q&A streams. The advice that every culture would keep their calendar as simple as possible, because they would need it every day - for vital things such as harvest dates. In other words, for the very thing that had gotten me into the "grandyear" mess. I finally understood that I needed to make the "grandyear" my base unit after all.

Taking it to the Web

So the "grandyear" became the year, and the 16-odd "orbits" became 17 months, one of which had 9 "days" instead of 32. And with that, the Rilsu calendar suddenly fit nicely into the calculations that I had worked out for the calendars of the Nimýrité, the Pereqaiande and Those Who Know. No more leap days and complicated special rules. By the end of 2020 I was able to convert dates between my calendars without problems.


Recently, I decided that I wanted to connect this converter to my WorldAnvil articles somehow. I was delighted to learn that there is a way to embed external content, provided that the source allows it - and GitHub Pages turned out to work for that.


Since the GitHub project in question needs to be public, I also decided to place the converter logic under a GPL license, in case others find it useful. You can have a look at it here: Kaleidoscope Date Converter

Aligning the Celestials

While working on the converter, a new idea was sparked - to translate these dates directly into the orbital position and rotation of the planets and moons in question. As a bonus, this visualization helped me with finding and ironing out some bugs that were still lurking in the converter code.


And most importantly, I could finally check whether my existing historical events made sense - most of all, the launch date of the Pasutgiruta mission shortly before my main story. Turns out, Ranul and Chryphóra are in the optimal position about a Rilsu year later than I had placed that event. Annoying, but manageable - after all, I still need to go over all Rilsu articles and chase out the last remnants of the original, over-complicated calendar system. Seriously, whenever I least expect it, I find yet another date given in 32-day years...


One thing, however, turned out perfectly - the "Empty Night" actually does coincide with Ranul's inner face entering the shadow. So, a "night" on Ranul lasts 8 Kasavoan days, which in turn last 33 standard hours each. I still need to figure out the Rul sleep cycle, but 8 days indeed feel right for telling the story of the Op family. This should give me enough time to set up the scene, have them make radio contact, let them argue about their next steps, and eventually resolve the story by the time the dawn ushers in a new era.

Wrapping Up

So now I have a calendar system that actually works, a way to visualize the day/night cycle on Ranul, and a better understanding of how dark or light it will be at a given time. As a bonus, I can now rest assured that the "Empty Night" during which my practice game will play out does indeed line up with what the Rul would perceive as night.


Alright, but for the next post I'll try to finally dig into the characterization of the Op family. For this I might already need to sketch out some key events that they will react to... We'll see.

von Kathrin Janowski 12. Februar 2022
I'm reflecting on the risks of coding without a plan, and on a game jam in which I just participated.
von Kathrin Janowski 8. Januar 2022
I'm having a closer look at the characters' personalities and backstories.
von Kathrin Janowski 28. November 2021
I'm looking back on how I made the language of the Rilsu culture.
von Kathrin Janowski 10. Oktober 2021
I'm taking stock of what I wrote during the WorldAnvil Summer Camp challenge.
von Kathrin Janowski 23. Juni 2021
I'm trying not to forget that this project exists despite the daily hassle.
von Kathrin Janowski 7. Februar 2021
I'm making the fundamental decisions for the characters of my practice game project.
von Kathrin Janowski 15. Januar 2021
I'm starting a small practice project as the first step towards creating my Kaleidoscope video game.
Weitere Beiträge
Share by: