This week is the 17th anniversary of the first public release of Transcendence. I always feel nostalgic around this time, and in this week’s newsletter I want to look backwards at where we’ve been. I hope that an examination of the past will help us chart an even better future.
Message to the Past
I’m always learning new things. That’s one of the things I love about what I do. I learn to be a better game designer; I learn to be a better artist; and I learn to be a better software developer. But the flip side is that I learn about all the things I’ve gotten wrong. I wish I could go back in time and tell my younger self about all the things I’ve learned. Maybe Transcendence would be farther along.
If I could go back in time and talk to myself, these are the kinds of things I’d say.
Nethack is the Beginning, not the End
Transcendence was heavily inspired by Nethack, and it’s benefited greatly. The idea of unidentified barrels, for example, was lifted straight from that seminal Roguelike. But early players would often tell me, “just because Nethack does it that way doesn’t mean you should!” And they were (and are) right!
The Teraton fabricator, for example, was inspired by the polypile feature in Nethack. And while polypiling works in Nethack, the Teraton fabricator has numerous problems with balance and usability. It is a classic example of “Guide Dang It,” in which the only way to succeed is to read a spoiler guide.
Over the years, I’ve learned more about game design, and I’ve been able to refine some of the mechanics. Pilgrim’s Aid at the Sister of Domina is a good example. The first version required a spoiler guide (“how much should I donate?”) and had hidden state (“what’s the Sisters’ attitude towards me?”). The new version (which debuted in 1.9 Beta 2) is much more transparent and approachable.
If I could go back in time, this is one of the things I’d tell myself.
Find your Style and Dial it to 11
Version 0.7 was austere. Space was a solid black with white points drifting by. It was boring and, most of all, unmemorable. It wasn’t until version 1.6 that I added the distinctive volumetric lighting on asteroids. Around the same time I began upgrading the 3D models to be more detailed and textured. Since all the models are turned into sprites in-game, there is no penalty for adding lots of detail.
Visual style is one of the most important aspects of a game, second only to game design. A unique, appealing style is critical for getting your game noticed.
I wish I had paid more attention to that earlier. But better late than never. I’m very excited with the evolution of our visual style, and I plan to keep improving it with every version.
Look for Leverage in Everything
I like to think of Transcendence as an epic-scale indie game. It’s not a short, time-passer like Angry Birds and it’s not a tight narrative game like Portal. Instead, I want it to feel like you’re stepping into a vast universe, with a long history and infinite possibilities. And if I had a $100 million budget, that would be pretty easy.
But since our resources are limited, we need to leverage them as much as possible. “Give me a lever long enough and a fulcrum on which to place it, and I shall move the world.” I’m not sure what Archimedes would think of Transcendence, but his advice applies nonetheless. If we want to build an epic-scale game, we need leverage—a way to do more with less.
Balancing Equations: With hundreds of items in the game it is impossible to balance them all against each other. Is a SmartCannon better than a heavy recoilless? Is an omnidirectional laser better than a Partisan turret? Sure, we could compare each combination (maybe in an Arena battle) but the number of permutations is prohibitive.
Instead, I created an equation that reduces the capabilities of a weapon (or armor, or shields) to a single number. Then we can use that number for comparison.
The current system is not perfect—it has trouble handling items with unique properties. But it’s a good start, and I wish I’d implemented it earlier.
Automated Testing: I’ve always believed in the importance of testing, but I neglected to incorporate that into the original game. More recently I’ve created a suite of automated tests that I can use to detect regressions. Each time I make a significant change to the engine, I run the tests (via TransData). These tests make sure the engine is behaving as expected.
This is no panacea, of course. Bugs and regressions still get through. But for each bug I ask myself, “can we design a test to catch it?” If so, I add another test to the suite so the same bug never appears twice.
In some cases I practice “Test-Driven Development,” which is a fancy way of saying that I create the test first and then keep writing code until the test passes. For example, recently I added a way for the msnFind
function (which returns a list of current missions) to accept a logical-OR in its criteria (“missions from Benedict OR from the Sisters”). I wrote all the tests first, and then wrote the code.
Mods and Contributions: I’m most grateful for all the effort that people have made throughout the years. Bug reports, mods, and code contributions have all made the game significantly better. This is probably the most important form of leverage: designing the game (and process) such that others can contribute to it.
I’m glad mods were a relatively early development. That helped advance the game significantly. If there’s one lesson I could give myself back in time, it would be that: to let more people help.
I’m grateful that so many people have.
Version 0.7
Surprisingly, version 0.7 more or less still runs on modern computers. It has trouble with very large screens (and there is no windowed mode) but otherwise runs quite well.
In this video I try out the game and talk about how much has changed.
If you’d like to try it out for yourself, download it here.
Development Update
This week I worked on finishing up version 1.9 Beta 3.
I’m almost done with the changes to Eridani. I’m working on polishing the text, and then I’ll be done.
I fixed the bug in which contraband boxes yield infinite treasure. This was a subtle regression bug.
I added a way for TransData to dump out the list of words used in the text:
TranData /language /lexicon
I used the word list to fix spelling errors and to be more consistent with terminology. For example, we generally use the word “medtech” instead of “medic” or even “doctor”. [The latter is reserved for very senior, experienced physicians.]
My plan is to release Beta 3 in early December.
There won’t be a Twitch session this week due to the Thanksgiving holiday. If you’re celebrating Thanksgiving (safely) I wish you and your family the best!
Join the Universe
What do you think? Do you like how far Transcendence has come? Do you have ideas for the future? Let me know in the comments below, or write to me: transcendence@kronosaur.com.
You can buy Transcendence on Steam or download a free version on our site. If you’re really brave you can download the development version and/or contribute to the code on GitHub.
And of course, you can subscribe to this email newsletter to get updates and stories about the Transcendence Universe. You can subscribe for free or contribute to the development of the game and receive additional posts.
I was 14 when I first played Transcendence in 2009. The game gave me a heavy inspiration and I spent the whole summer, trying to program something similar with ActionScript. Thank you for beautiful times. Your game brings amazing memories.