April 1 is Source Code Amnesty Day (it happened!)

Ah, but Amanda… Has anyone but you ever thought to fizz their code? I think not.


@JoshGrams I have totally operated under those exact principles. Hence my ~500 macros that abbreviate many common methods to two or three letters etc. (TADS3) I like the idea of modularity and expandability, and feel good about it when I do things that way, but I won’t hesitate to invoke your principles and crutch something together when I’ve just got so much else to attend to.
@DeusIrae , unfortunately I won’t have any released code to share by then, but I like the idea! Although it’s probably quite few folks around here interested in reading TADS3 code, and even less who want to read 50k lines of it.
My game source is amusing to me, because I have been working on it since I very first learned programming of any kind. There are some blocks that have been left untouched since I was just a programming babe dabbling with finger paints. Anyway, I feel like we’re all in the same boat here, other than some individuals coming from a long professional coding background…


And the flip side: IF game code written by professional / highly experienced authors is worse than you think!

Most of my Inform games have source code posted. I don’t know how often anyone looks at it. But if you do, you’ll see an awful lot of “bang in a global variable, great, it works now”. A lot of “copy and paste a rule twenty times because that’s easier than coming up with an elegant solution”.

The core mechanic of a game might be carefully designed. (The goal/spell system of Hadean Lands is complicated and required careful thought.) But the more of a game you write, the less you worry about elegance. Towards the end you’re hammering in rules by brute force. Why not? Once you release it, you’re probably not going to update it more than a couple more times, so it doesn’t need to be clean code.


Anyway, what I’m saying is, this is a good idea.

I’ll go farther. If people commit to releasing source code on April 1, I’ll meet you there and post the Hadean Lands source code, which has never been released in downloadable form. :)

(I was already planning to post it next year, on the tenth anniversary of HL’s release. But this seems like a better opportunity.)


I submitted 3 more source code files to the ifarchive (77 Verbs, Magpie Takes the Train, and Sherlock Indomitable), and will update my ifdb pages on April 1.


Uh, it’s like you’re saying I’ve been doing it wrong all these times. In fact, not only I design things thoroughly, but also do multiple passes on it, each time a refinement.

There’s pantser. There’s planner. And there’s me, “percolator”.


Honestly, as long as a playable game comes out the other side, there really isn’t a wrong way if it works for you. You could be commenting your code in Klingon for all it matters. I wouldn’t sweat it.


Inform doesn’t support Klingon in source code.


And I am pretty sure there will be at least one IF/SF addict somewhere on this planet who would go and grab his/her Klingon Dictionary just to see what gems they could find…

And yep commenting in any language works fine… Unfortunately I do not know Klingon…

The Test Lab is a room. "Many devious tests are conducted here."

The fun thing about working in Twine is that anymeowdy with the inclination can take a peek at the disaster of your coding really easily. Autumn runs a blog where she posts the interface with all the little squares so people can see how others laid out their branching and stuff, and I always get mildly embarrassed since some people pretty theirs up before posting and mine are sort of scraggly and all over the place in what made the most sense to me in terms of one box flowing to another, or divvying up choices and loops.

That being said, when April rolls around, maybe I’ll learn some cool stuff from all of the Inform projects you guys drop!



Autumn’s side blog for those interested: Twine Garden v2 on Tumblr
(the revival of Twine Garden)
but it doesn’t show the code, just the Twine map


There’s a latinized version of the Klingon Script, so as long as Inform supports the English Alphabet in its commenting, we should be all good.


You’re not taking the wrong approach.

The issue I have is when someone suggests a dev plan for multiple approaches, but also plan down to the source code token. At that point, you’re just writing multiple fully-realized implementations, and ditching the ones that don’t work the best.

I feel like your strategy is optimal. You plan to a high degree of detail, but it seems like your multiple-pass method allows you to home in on the best approach.


Would it not make sense to share the “best” part of your game as opposed to the whole thing? Or perhaps, create a library (after the fact) of really good game mechanisms and categorize them by platform/solution.
For example, all good inventory systems could go into an inventory system library, sorted by platform or development language.

Then we’d have a very concise library of very good snippets to reuse in our preferred code base.

1 Like

Wow, very cool that folks are into this! I’ve updated the thread title accordingly. Couple thoughts/responses:

That makes sense – I was figuring it’d make sense to have each year’s Amnesty Day largely apply to the previous year’s released games (why yes, I’m already assuming there’ll be Amnesty Day 2024).

Ha, that’s much more rational! I wonder if the difference is because the source code for some systems is hidden by default – it’s inevitable that there’ll be typos when we write email but we just kind of assume that’s the case (and see everybody else’s), for example, whereas having to make a decision on whether to release the source code activates critical faculties that otherwise lay dormant?

It may be against the spirit of the day, but I would love to take you up on this at least as to Eleusinian Miseries – I have a perverse hope my cack-handedness will overcome your positive thinking and you won’t be able to find even one thing to praise :slight_smile:

This is actually a profound and encouraging point – I actually do take a fair bit of pride at being able to whip up 80%-correct solutions without too much trouble at this point, and that’s usually good enough (except when it isn’t…)

Having tested some of your game and seen how sophisticated and smooth it is now, I’m amazed by this! But yeah, my first game has some commented-out stuff that’s pretty much copy-and-pasted from the first couple of examples in the Inform docs :slight_smile:

OK well I’m not sure zarf got the whole “flood the zone with awful code” part of the idea, but this would be amazing!

Oh, good point, I forgot the IF Archive lag – I’ll try to get mine in early too.

Oh, this is very cool, thanks for linking! The one for Copyright of Silence is especially interesting, since that’s an odd duck in gameplay terms too.

At least as to my code, I think you are radically overestimating the amount of organization and modularity I can typically achieve :slight_smile:


No, the point is to get it all out there. If you sit around agonizing about “what’s my really good code”, you’ll post one cleaned-up example and then give up.


Having the source code to my hypertext games out there has meant several people submitting typographic or spelling fixes, and one full-blown translation into Portuguese. I suppose I could’ve found the former embarrassing but I just think of it as preventing future embarrassment!


Happy to join in on this! I plan to upload the final release versions of my Inform 7 source code for Border Reivers and Napier’s Cache. I’ll upload the source code to IF archive but also link to it from IFDB. It does help that it’s all some years in the past for me. I’m pretty much past caring how the code looks! And this is a great initiative. Also thanks to @zarf for the heads up on his blog. I might have missed this thread otherwise.


Just FYI. I already released the ScottKit source code for my game, The Golden Goose here. Permission granted if you want to archive it to IF site wherever…

There are some good suggestions for improvement. Alas, I neglected to implement them. :sweat_smile:


I’ve been thinking of making my source code available for quite a while, but there always seems to be something more urgent that needs to be done first. This initiative gives me a reason and a target date to aim for.