It’s 2014: my junior year of college. It’s 3 A.M. on a Saturday night, and tomorrow is the big day.
I scan my notes, check my maps, make sure my minis are organized and my dice pools are set. Tomorrow is the final episode of our three-years long science fiction D&D campaign. It is the culmination and climax of hundreds of hours of writing and hundreds more hours of play.
The campaign has been both lengthy and emotional. This game has spanned nearly our entire college careers. Throughout its duration, without realizing it, we had transformed from high school kids to engineers preparing to enter the workforce. We had slowly but surely – almost by accident – grown up during this campaign. There had been tears, triumphs, tragedies, player deaths and even real-life deaths during this campaign. It had been an incredible ride, and it was coming to an end.
I of course had already begun to look ahead at what my next campaign might be like. Who it would be with, and where it would take place were both still a mystery to me – I had not yet received a job offer from Lockheed Martin, and did not yet know that I would be moving to Philadelphia. But I had already begun the most tedious, daunting, and what is ultimately my favorite part of the campaign writing process: the world building.
I had spent hundreds – perhaps thousands – of hours worldbuilding in our science fiction universe. This universe I had been writing in since high school – at first short stories, then a few half-novels, and finally a small D&D campaign in high school. In college, I finally waged a three-years long campaign in this universe, at which point it really began to take on shape and definition. While most of this was provided by myself, the author, the universe also took on life and form from the players, who created vibrant and interesting characters, spun off their own fan-fiction and short stories, even wrote a few one-hitters and mini campaigns of their own, all set inside this science fiction realm.
And I had already spent many dozens of hours sketching out my next universe. Toward the end of college, with finals bearing down on me and the terrifying void of ‘real life’ looming in the background, free time was a scant and precious commodity. It was in this time that the thought finally occurred to me:
Why not write a tiny piece of code able to spit out basic, randomized worlds for me to write in and for my friends to play in? The code could be incredibly simple: generate some number of random continents, some number of random species, some number of random civilizations, pepper the continents with a few random geographic features, dump out a text log and begin the writing process!
Things, of course, were not that simple (or perhaps the could have been, and I simply didn’t allow it). After generating some number of random continents, I realized that the continents needed to have relational data. Which continent was adjacent to which? The continents became a more elaborate data structure, containing adjacency pointers and also pointers to unique terrain features and biomes.
Additionally, if these biomes were to be populated with species, what should these species look like? The species would have to have anatomies consistent with their ecological settings. Moreover, the temperament and behaviors of these species would, at least in part, be driven by their anatomies. ‘Species,’ much like ‘Continent,’ became a much more complex data structure. It contained a linked list of randomly generated anatomical features, and a “linked ideology map” consisting of various binary ideological spectrums whose endpoints were opposing philosophies (militarism versus pacifism, or individulaism versus collectivisim). Each binary spectrum was linked to some number N of other binary ideology spectrums, creating ideological dependencies. For example, perhaps a species was violently militarist and expansionist, and this was linked to their extreme spiritualism. Now, we have a violent expansionist species of religious zealots. Now, we are getting into some sweet D&D territory.
But the exponentially ramping complexities didn’t stop there. What of the astronomical bodies in the sky? So much of our own terrestrial culture and our religious systems are predicated on the heavenly bodies overhead. Surely, the heavenly bodies must be profoundly influential on other species as well.
There was first the concern of the sun. How many suns? What type of suns? Where do these suns lie on the main sequence? How does a type F star impact the life on this world as opposed to a type M star?
Then, of course, came the realization that I could simply run this random planet generator N times, creating a solar system instead of a single planet. Each planet would belong to the same sun. I would simply have to add a few orbital elements to the top-level planetary data structure.
Then, inevitably, I realized that I could simply run this random solar system generator N times and create a small galaxy.
This tiny project quickly snowballed into a small obsession which almost cost me my graduation. It was no longer about D&D. It was worldbuilding for the sheer sake of worldbuilding, but on a scale I had never imagined possible.
And then, quite suddenly, almost without my realizing it, I was employed and working a 9-5 day job. I found myself navigating a difficult breakup and taking on a ton of musical work. My worldbuilding project ground to a halt, its thousands of glittering fantasy worlds, telepathic space whales, megayear empires, sentient coral reefs and mantid warrior-poets all forgotten, frozen in time, alone in the dark confines of my old 10,000 RPM hard drive, collecting dust in my mom’s basement.
It’s 2018 and I am hammered in a poorly lit dive bar re-reading Children of Dune after a successful show.
“What are you reading?” the man next to me asks over the rim of his rocks glass.
Drunk, and happy to explosively rant about whatever I am reading, we get to talking. The man is an event coordinator at the Franklin Institute, and discovers that I’m a Software Engineer.
“What sort of code do you work on?” the man asks, and I begin to give him a vague description of my day job.
“No,” he interrupts. “What do you like to work on in your personal time?”
The question was a bit of a slap in the face. I remember pausing for a while: it was the first time I had thought about my worldbuilding project in a year or two. At that moment, I realized also that I had never really told anybody about this project – not in earnest, and not in any detail.
I felt a small sense of guilt and shame. By vocation, I was a hacker. And for years, I hadn’t spent any time hacking for fun or for personal enjoyment. It had become a simple source of income for me. And indeed, working alongside some of the incredible engineers at Lockheed, it sometimes felt both futile and stupid to work on my dumb little D&D module when there was such big work going on, and so many better programmers out there.
“Well?” I remember him prompting. It had been nearly ten seconds of real-time.
“Well,” I said, trying to get my thoughts organized and into gear through the haze of my drunken stupor. “There’s this one project I have. I started it in college…”
The man patiently listened to me for the next two hours and four cocktails as I poured out everything I had about my program. When I was finished, he turned to me and demanded: “You have to present this at the Institute.”
PISES, which at this moment in time was not called PISES, but simply “Worlds.java,” lived on an old 10,000 RPM hard drive in a laptop I had not touched in the two years since college. PISES had no visual component, was riddled with issues, errors, vulnerabilities, and was completely unstable (it crashed more often than it was able to run to completion). A successful run of Worlds.java would culminate in an 80,000 line logfile which I would then spend hours sifting through for details. There was, truly, absolutely nothing to present.
Taking into consideration absolutely none of this, I drunkenly agreed. When the man followed up with me the next morning and gave me a date six months away, I realized just what I had signed up for.
The next six months were a blur. I spent many sleepless nights working to transform these textual worlds into a passable visual representation. I had at the time zero experience with UI, with gaming engines, or with anything even remotely visual. To be honest, I had no idea what the fuck I was doing.
Those six months culminated in the following piece of software, which I named PISES:
The demo went off very well, and exposed a number of new opportunities for me to present the software.
Creating this preliminary visualizer also revealed to me a number of faults and problems with my code, however. In preparation for a subsequent demo at Frankfort Hall, I worked to improve PISES’ galactic modeling and gravitational interaction.
This video represents a much more recent iteration of PISES, and I am very pleased with how far its come in such a short span of time:
Today, I continue working on PISES. The passion I had for the project back in college is restored, and I am overjoyed that from time to time, people build up enough interest to invite me to present the software. PISES has helped me learn a lot about programming, design, architecture, and believe it or not, PISES has created some very emotionally and philosophically difficult stories, which I hope to delve into as this blog evolves.
If you are interested in the programmatic, algorithmic backend data system of PISES, in game design, Unity development, in C#, or in astronomical science, I invite you to read on, subscribe, and join me on this journey!
If you are interested in the simulation of random species, societies, and cultures, in the generation of dynamic histories and stories, and in the morality of creating abstract representations of life which can claim to suffer, then read on, subscribe, and join me on this journey!
And lastly, if you just think space is the best, I believe that there is plenty here for you here as well.