Hi all! Since the release of our 2 games, 19 Once and Zugzwang, @Joey made a blog post about this. In particular, this last paragraph.
Finally, there is another meta layer of the story which won’t be obvious to anyone else except future biographers. 19 Once is about teenagers who were friends during their A-levels (aged 16-18) but drifted apart afterwards. My co-author and frequent collaborator Melvin Rangasamy met at sixth-form college at this age, in a Computer Science class, in 2004. Like Esther and Paige (in one of the endings), we ended up going to the same university. There we played a lot of chess in the university café, and began working on our first text adventures together. We’re still friends, making games twenty years on. So our personal answer to the narrative question “can teenage friendships stand the test of time?” is a reassuring “sometimes”!
This gave me the idea to give everyone the opportunity to ask us anything and this is that opportunity! So, go ahead and ask to your heart’s desire!
This idea was inspired by Ryan Veeder’s post (@Afterward) a couple of years back. However, I don’t’ve theme music for this service, so you’ll’ve to make do with a PNG image!
How do you share your code back and forth? Do you have an elaborate git-style system or do you just copy it in an email as plaintext? And who’s in charge of cover art?
So, we originally emailed source code to each other and then used WinMerge/Meld to merge the versions. Actually, even earlier than that, I’d head over with the source on a USB drive and do the merge in person. Recently, we’ve started using GitHub for this and this seems to be over new way forward.
Cover Art kinda varies. I think it’s more a case who comes up with the idea first. Most of the time Joey does this, he did the cover art for Calm, EFS and Sub Rosa mainly because he’s more creative than I am. However, I did the cover art for the mirrored games, since I had a good idea what I wanted to do and I was able to use a python script to get the result I wanted.
This might be your most eye-melting colour design yet, Melvin.
To add to Melvin’s reply, the way we worked in the past was often fairly asynchronous. I’d do a pass on the game and send it over, then it’d come back from Melvin with better code and more features, and then I’d fill in the new descriptive text required. We’ve long had a system where incomplete strings are tagged by Melvin with either [description needed] or [description incomplete]. I’d then use the search function in Inform’s IDE to create a job list.
Now we’ve moved to using github, I’ve been slowly working through writing mini example games for his extensions.
We generally don’t tend to get very many disagreements in general due to the fact that the bits that we work on are very different. Also, we’re generally very agreeable to each others suggestions and ideas. Usually, I get final say on coding and structure and Joey gets final say on writing and design as per our strengths and weaknesses and we mostly keep to these areas accordingly (by choice). But when we do, it’s usually a case of discussion, persuasion and experimentation.
One great example of this is when we made Calm. There’s a bit where you need to smother some barbed wires in order to climb over them. We included a mattress and a doormat in order to do this. However, I wasn’t convinced that a doormat would be thick enough to do this and that the barbed wires would just go straight through. So we took a doormat, found some barbed wires and attempted to smother them to get over them. This ended up being successful, so we ended up including it in the game.
The most persistent disagreement was over code style. I liked using indents for IF statements, while Melvin preferred the un-indented if/end if structure. Such as:
if the monkey is in the crate begin;
say "The monkey screeches most inconsolably.";
end if;
vs
if the monkey is in the crate:
say "The monkey screeches most inconsolably."
In the end, I wrote code my way, he did it his way, and I wouldn’t mind overly if he converted stuff over to his format if it bothered him. Melvin is more diligent about naming rules and the like, and so I was generally happy to let him reformat things I did as he saw fit.
I think we’ll continue to see people experiment with forms. I think we may see more low-puzzle games with a world model. Textual walking sims, if you like.
I also think that we may see more IF authors branch out into multimedia stuff as Inform looks like it might position itself as a narrative engine that could be plugged into, say, Godot or Unity.
This is the age-old problem for any coder collaboration, is it not?
We solved it on big projects by picking someone somewhat arbitrarily (they were in charge) and they wrote rules for style-cop, some kind of plugin for Visual Studio, and then it proceeded to mangle everyone’s code into a style that everyone could easily understand, and hate, equally.
There is unrest, in the forest.
There is trouble with the trees.
For the maples want more sunlight,
and the oaks ignore their pleas.
[…]
Now there’s no more oak oppression,
for they cast a noble law,
and the trees are all kept equal,
by hatchet, axe, and saw!
– “The Trees” by RUSH
This one’s more of a historic disagreement as the original reason I preferred the unindented syntax no longer exists now, see this post for more details. Nowadays I mostly tend to leave the indented syntax as is now, only sparsely converting for consistency. That said, if/when we start a new project from scratch, it will highly likely only use the colon indentation syntax.
I highly recommend naming rules, particularly for larger projects, as it makes debugging so much easier. The debugging commands will tell you what rule is causing issues when the rule is named.
I don’t see if being too much different than it is today, as I was around 10 years ago and it’s not hugely different than it was then. @Joey’s answer gives a lot more insight on this one.
Funny thing is that we’re so agreeable on pretty much everything that this just seemed more like a minor quibble than an full out disagreement.
Another point is that we tend to be objective rather than subjective in our disagreements when it does happen. So, if we can show to the other that something is better, that’ll be the new choice or way of doing things etc.
what made yall think up the leave no trace puzzle in sub rosa? would be so easy to just finish the main puzzles and have that be the win condition, esp cuz they’re no small feat in and of themselves.
I’m pretty sure it was part of the design from the beginning. If I remember rightly, the process went like:
I suggest making a short simple puzzle game, like Mammal.
It needed a hook, and my first thought was “using magical objects”
When the design was decided “hunting secrets” instead of “hunting treasure”, that led to the idea of breaking into a rival’s house, and so keeping secret yourself, and so not leaving a trace.
So the core puzzle idea flowed straight from the themes of the game as they emerged through the early iterative design phase.
I found a walkthrough for the first puzzle chain planned, and half of this didn’t actually end up in the final game, but the idea of not leaving a trace was baked in from the start:
Proto-Sub Rosa
HOW TO ENTER GREENHOUSE
(start in rose garden)
get rock
throw rock at glass pane
enter hole
-ALTERNATIVE
open door = door is locked
pick lock = can’t pick lock while wearing gloves
remove gloves. Pick lock. Open door. (if door is opened while not wearing leave fingerprints on door). Enter greenhouse/go west/in.
HOW TO GET LETTER SECRET
Go west from greenhouse to kitchen
Go west from kitchen to Guard Hall (if guard is still active, player will undo)
-GETTING PAST GUARD
Open kitchen door
Throw sleep powder through kitchen door
Go up from Guard Hall
Go east from Upper Hallway (first opening the study door)
Look in fireplace = see ashes
Get ashes = can’t pick them up with your hands
GETTING ASHES
Go to kitchen
Open cupboard
Get vacuum
Go to library
Suck ashes = vacuum currently full
Empty vacuum. Suck ashes
Go to kitchen. Open refresher
Empty vacuum into refresher. Close lid.
Activate refresher. Open lid
Get letter. Read letter
CLEANING UP AFTER LETTER SECRET
Put letter on stove. Activate stove. Suck ashes.
Blow ashes into fire
Suck excess sleep powder. Go to rose garden. Empty powder.
Suck back the dirt that was originally in the vacuum
Close/open doors as they were to begin with