Publishing free software video games
writefreesoftware.org
writefreesoftware.org
When games have a required online component, servers shutting down are the most likely reason the game becomes unplayable, more than the client not working on current platforms.
So another option that could be added to the list would be to make the server free software (or at least share its binaries) before the client's assets or the client itself. This can also boost the community if they can host their own servers with custom mods (eg. Minecraft)
For those interested, I've documented the process I adopted to try to increase the bus factor beyond one [0]. I want people who download the game and open it to be able to find a public server instantly from the main menu, even if I am unable to maintain the main server myself. This is done via the game requesting a manifest containing public servers from a GitHub repo, which accepts PRs from those willing to maintain their own servers. Although I am the only one able to accept those PRs right now, it would be silly not to be liberal in onboarding others who show an interest in maintaining the list. That way the game lives on beyond just me.
I also make sure to offer local multiplayer, and in other games I've built I which don't need realtime multiplayer, I try to offer "Play against others by sending an SMS invite" or other novel approaches that don't even need a server.
It is a fun space to work on and try to come up with novel solutions to ensure games continue working into the future.
[0] - https://peter.serwylo.com/2021/07/03/sustainable-server-infr...
I'm not sure how often that actually happened. The only games with parallel universe East Asian audiences belonged to #1 genres like MOBAs. While there was a belief that you could be making the next MOBA, hardly anyone was making realtime multiplayer games at all, so it was extremely unlikely.
It was a misplaced reaction to Ketchapp, the real antagonist. They would rapidly clone and blitz-market games. Indie mobile developers spent a year or more discovering and refining an original, fun mechanic, only to see this well capitalized actor seize their audience by giving the mechanic away for free. From 2014 to 2018, in my opinion, indie mobile developers transitioned to more atmospheric fare, and iOS and Android nowadays are a marketing-and-sizing tool for your inevitable Nintendo Switch audience.
Which brings us back to: what is there exactly to protect? Ketchapp didn't need the source code to clone those games. Nobody needs the source. If you make a PC game and have an audience, it will show up in Steam charts, you can't really keep that secret. And if you don't have an audience, you have seriously nothing to worry about. Since every game usually starts at zero, why protect the source?
My card game Spellsource has been open source for a long time (https://github.com/hiddenswitch/Spellsource) and my colleague and I are in the process of rebooting it. This game is community authored, players write the cards, so it makes mechanical sense to be open source. On the flip side, for the narrative & atmospheric single player experiences indie developers are authoring, it is hard to define what they have to gain.
In the meantime, keep on rocking it!
> if your game has a mandatory online component based on your own servers, then making it free software doesn’t make nearly as much sense, especially if you ultimately decide to shut those servers off
[0] https://writefreesoftware.org/blog/free-software-games/#but-...
This problem is why I don't use software -- including games -- that requires access to a server somewhere.
This seems misleading. Half-Life was released in 1998, but the Quake engine's source code wasn't released under the GPL until 1999, so presumably Valve had a non-Free Software license to use the code.
He tells people, as a joke: I went to Harvard. I got my MBA. I went to USC. I played football.
Each, individually, are true statements. But their sequence communicates a very different meaning. :)
As far as I know, all the popular games were proprietary, so I’d still say it’s incorrect.
But pure source code dumps, besides being valuable to students, usually isn’t that worthwhile. It’s a lot less win-win as well
A lot of huge gaming genres came to be from modding, level editors etc.
https://en.m.wikipedia.org/wiki/List_of_video_games_derived_...
ARTS (Dota, LoL) to battle royale (PUBG, Fortnite, Apex), Tactical shooters (CS), team/hero shooters (TF, OW) and more…
All of these genres came from making modding accessible and are some of the most successful genres to date.
The new trend however is to close games down, DRM, “life service”, fewer possibilities and very strict IP implications on derivative work (we own everything you create etc.)
Free software might be an appropriate answer to this.
I don't know of any popular game that didn't have DRM and didn't have very strict IP implications on fan content (say, after the early 90s maybe?). It's not like the teams behind the original DOTA or CS or TF ever made money selling those, and would have likely been blocked even if they tried.
It's true though that live service games are quite antithetical to modding because of their need to control player progression and sell it.
Still, I would say the divide between games which supported modding and games that didn't has always existed, with much fewer games in the first category, and there are still huge games coming out today that do. It's even become possible to create mods for console games, so it's not all doom and gloom.
Games much, much older than GoG used to have various ways of doing DRM, though to be fair some were laughably easy to bypass (codes printed in the manual and such).
Warcraft 3 (2002, 2003) was infamously lax on IP, leading to e.g. several big DotA clones that employed the modders (Dota2 for Icefrog, LoL for Guinsoo) and legal disputes on who owned which properties [1][2]. Blizzard revised their EULA in 2020 to prevent similar cases. [3]
[1] https://ttabvue.uspto.gov/ttabvue/v?pno=91202572&pty=OPP&eno...
[2] https://arstechnica.com/gaming/2017/05/does-valve-really-own...
[3] https://dotesports.com/general/news/warcraft-iii-reforgeds-u...
Note that I don't think anything in the W3: reforged terms of service would prevent a new game being created based on a W3 mod, it would just prevent it from using the same name and art as the mod. This is exactly what happened to all other successful mods, with Dota2 being pretty much the sole exception.
Also, Riot mostly proved that you don't actually need the artwork or names to be massively successful - you just need to recognize a good idea and be the first to market with a polished implementation of it.
Had Blizzard owned DotA IP, I believe Valve would've had to steer much further away from the map, character and item design. IP extends beyond just art and naming, see e.g. Tetris vs Mino [1]. The case wouldn't have been a guaranteed win for Blizzard, but the early releases of Dota 2 were really closely copied from late releases of DotA, so the argument is there.
> Note that I don't think anything in the W3: reforged terms of service would prevent a new game being created based on a W3 mod, it would just prevent it from using the same name and art as the mod. This is exactly what happened to all other successful mods, with Dota2 being pretty much the sole exception.
Keyword being successful. Many maps have standalone ports that kept their predecessor's name [2][3][4][5], but only Dota 2 is really successful. And again, I believe these wouldn't exist or would've made large changes if Blizzard owned the IP of Warcraft 3 mods.
[1] https://arstechnica.com/gaming/2012/06/defining-tetris-how-c...
[2] https://store.steampowered.com/app/578350/Element_TD/
[3] https://store.steampowered.com/app/537680/Sheep_Tag_2/
[4] https://store.steampowered.com/app/469600/Legion_TD_2__Multi...
[5] https://store.steampowered.com/app/676580/NEO_Impossible_Bos...
Not to mention that Dota 2 also copied the exact skillsets of heroes and items. Not just likeness, but even most silly bugs that were due to the Warcraft engine.
Edit: Anyways, this is getting sidetracked. My point is that Warcraft 3 was lax with intellectual property for the longest time, and mods like DotA most certainly leveraged that.
I would say those things are all hard.
The video "The History of Cataclysm: Dark Days Ahead" (35 minutes) desmonstrates how an open source community can make great games! In this case, a post-apocalyptic roguelike game.
https://www.youtube.com/watch?v=5nHtcmnQQvU
For an, exoctic, 11 minute review of the game watch "Cataclysm: Dark Days Ahead Review | Don't Drink Toilet Water" by SsethTzeentach https://www.youtube.com/watch?v=Cyoj4-niEPc
Any example of a highly successful video game developed from start as open source by the community as opposed to a company releasing their source code for free after launching a game?
It technically started closed source, but has been open source with countless forks existing in parallel for at least 90% of its lifetime.
If you manage to make a successful game don't take shit from anyone about the way the code looks. They're just Monday-morning quarter-backing.
Then there's cases like that Yandere Simulator game, the source code of which got released/leaked and apparently it was so bad that people were making videos taking it apart, but also possibly because they disliked how the developer was leading the project: https://www.youtube.com/results?search_query=yandere+simulat...
But also apparently even the Oracle database source code was pretty grim, this HN post and its top comment still bounces around my mind sometime: https://news.ycombinator.com/item?id=18442637
I wonder what other codebases exist, where the code is inspirationally bad, as in, to the point of making most folks feel better about whatever they're writing and to dispel the illusion of code always needing to be perfect.
Communities like /r/programminghorror (https://old.reddit.com/r/programminghorror/top/?sort=top&t=a...) and /r/softwaregore (https://old.reddit.com/r/softwaregore/top/?sort=top&t=all) are probably sobering in that regard as well.
All that's missing is a site that shows examples of a bad code and how to make the code better besides that, maybe with discussions and different suggestions, based on what people believe in.
I really don't enjoy the discourse regarding "code cleanliness". A lot of the time it's just about "I prefer writing things this way" rather than the code actually being slower/harder to read/maintain/whatever. There's a billion ways to write something and none of them are outright wrong!
He's the exact kind of "I'm the best" that every professional has run into before and cleaned up after.
This wasn't some amateur doing his best with limited resources to give a fun experience to the world, this was a hateful, angry person earning $3500 a month in patreon subscriptions begging for free 3D models from his fans, berating them for giving him free 3D models that "weren't good enough", and refusing to spend a single dime of that revenue on fixing, finishing, polishing, improving etc his abortion of a video game.
Agreed, that's why I think there's arguments that can be made in favor of both DRY/WET, as well as SOLID/CUPID/whatever, even when those are in contradiction with one another, as well as more freeform approaches and KISS/YAGNI. Whatever works for each team and project.
> There's a billion ways to write something and none of them are outright wrong!
However, when your app is doing 2000 DB calls to render a list with some data because of the N+1 problem, I'd say that the code is definitely written wrong. When you need to jump around 20 different files across 6 layers of abstraction that could have easily fit into half of that, then the code might definitely be wrong and unmaintainable.
Code formatting is nonstandard, but consistent. It's readable as text.
It's not very comprehensible as code. Lots of magic constants. Class game extends menu button? There isnt a whole lot of design here.
I've seen and written worse code, but I would not call this beautiful code, just well formatted.
Mindustry is an excellent example of the "have your cake and eat it" open source model. Its sold on Steam, but it's GPL 3.0 and free to download elsewhere. Shrug
I have to stand in awe of people who are both creative and able to manifest that into creative products.
I didn’t realize rimworlds source was available. I’m curious how some of their simulation works, that’s definitely interesting. If the Eula is friendly, I may take a look some day
It isn't, it's decompiled.
Yeah, that really is bare minimum, but its still better than the deliberate obfuscation of many similar games.
Minecraft, meanwhile, is obfuscated but with public mappings. That is a weird situation, but it still works kinda like the game being source available.
Wikipedia: “Released to critical acclaim, Star Control II is widely viewed today as one of the greatest PC games ever made, and has appeared on numerous publications lists of the greatest video games of all time.”
Available as ‘uqm’ in most package managers, or from https://sc2.sourceforge.net/.
But I think the art itself isn't just like code. It's not just the bits used to make images on screen.
There are characters, stories, ideas, and worlds being created derived from the artist's personal life and philosophy. That's the actual appeal, and there are more downsides to making your IP open like this than there are downsides to FOSSing your game code.
https://www.gnu.org/licenses/gpl-faq.html#GPLOtherThanSoftwa...
While I don't play Minetest or the other FOSS minecrafts, I'm so happy to see it happening. When I was able to dig and build, I was relieved.
I don't know what the future holds, but I want my unborn children to experience that feeling of digging all the way down, building all the way up, digging through mountains, and making houses. That was so cool.
Microsoft is a scary company with the way they treat Windows 11, wonder how much longer until there are ads inside Minecraft Java.
That arrangement looks like a good one to me. It leaves plenty of room for the seller to make money while respecting user freedom. And every case I know of where a mod community thrives greatly lenthens the lifetime of the game. Needless to say having the engine source available would be a huge benefit for modders.
Right, the FSF has always had the view that software developers are the only creative professionals who must be shamed for not releasing their hard work for absolutely free. Authors are allowed to hold copyrights on their books, artists on their paintings, musicians on their music; but programmers? Fuck them if they even THINK about trying to maintain control of their creative outputs -- they're clearly evil. J.K. Rowling is allowed to make money on Harry Potter, but you're not allowed to copyright your code.
And can it with "but these 47 people in history have all managed to make a livable income from consulting based on their open-source work!". That's just more of you telling me how I'm supposed to live. I don't want to make money helping incompetent companies install the software I wrote. I want to make money in proportion to the value I add to the world.
I suppose you’re not a big fan of right to repair either then?
Nobody is forcing you to write or use free software. However, freedom is intrinsically valuable, and there’s a huge difference between being able to control your own computing hardware vs reading second rate children’s books.
> I want to make money in proportion to the value I add to the world
That’s a pretty thought, but nobody does. Perhaps you should revise your expectations to be realistic?
I suppose you're not a big fan of puppies then?
> right to repair
This has absolutely nothing to do with copyright except that you lump them both together under "freedom". That's your arbitrary grouping, not mine. You're free to use tape to fix your copy of Harry Potter if it rips. Nobody has ever disputed that. You're not free to mass produce copies of it and sell it for profit.
I am arguing that it's okay that an author enjoy copyright protection on the book, and you're here saying "you're telling me I can't even tape a ripped page in MY copy of Harry Potter!?". It's inconceivable to me that you're making that argument in good faith. I simply do not believe you that you don't see the difference in those situations. If you're about to make the argument that in order to repair a John Deere tractor, you need the right to copy their code into your own competing line of tractors, you've gone off the deep end.
> Perhaps you should revise your expectations to be realistic?
Perhaps we should all work to bring about the world we want to live in, instead of playing Prisoner's Dilemma?
Computer programs are radically different from literary and artistic works. It’s unsurprising that laws that were designed for paper books are less than a great fit for software. Indeed, software probably shouldn’t be eligible for copyright protection at all. Recipes which are another species of algorithm aren’t accorded copyright protection because they are simply a set of instructions.
> Perhaps we should all work to bring about the world we want to live in, instead of playing Prisoner's Dilemma?
In that case you should be paying the users of your proprietary software because you are observably reducing the value of their computer compared to a free alternative.
Yet Recipe Books (particular curated collections of recipes) are afforded copyright protection. If your argument is that copyright should not be given to general algorithms like the FFT, new methods of fast matrix multiplication, the Carmack Hack, etc., then I actually completely agree with you. In all art, there is a level too granular to be copyrightable. In music, it's chord progressions and simple, obvious melodies. In books, it's common idioms and simple sentences like "Terrified, he ran." In programming, it's basic/common algorithms, design patterns, and commonly used control flow. None of that should be afforded copyright protection, and I hate seeing the frivolous lawsuits that come up in all those fields based on these trivial similarities.
Besides, modern Haskell or C# or TypeScript or Rust code is not simply a set of instructions. You could argue that assembly language is. But the vastly different ways to express the same logical things in different languages, including comments, naming conventions, clever tricks, etc. all together comprise a body of artwork (yes, artwork) that is clearly copyrightable.
For what it's worth: IMO code should not be eligible for patent protection. It's actually possible for someone to dislike software patents, support right to repair, and also support copyright protection for programmers.
> you should be paying the users of your proprietary software because you are observably reducing the value of their computer compared to a free alternative
It's hard to argue I'm straw-manning you when you make such obviously outrageous statements. This statement is like a caricature of everything I'm claiming the FSF is.
Mathematical and logical formulas also aren't subject to copyright, so your Haskell argument doesn't hold water even if we do allow that functional code somehow isn't clearly reducible to a set of instructions.
The correct solution is to come up with some kind of legal regime that's actually designed for software rather than trying to torture a law for printing presses into saying something meaningful and equitable about software.
> It's hard to argue I'm straw-manning you when you make such obviously outrageous statements. This statement is like a caricature of everything I'm claiming the FSF is.
What's outrageous about the statement that software that I am free to modify has greater value than software that performs the same function but that I am not free to modify?
Sure, I agree with that. You told me to revise my expectations for something much less unrealistic than that, though. But let's work toward it anyway. In the meantime, let's extend copyright protection to programmers and stop shaming them for accepting it.
> Mathematical and logical formulas also aren't subject to copyright
But mathematical journal paper submissions are! This is not a counter-argument. My point is that code is more than just its function. Code is written for humans, not for computers. Let me ask you this: if your code doesn't compile, is it really a sequence of instructions? No, it's not! It's still copyrightable, though.
> {Outrageous statement} ... "that's outrageous!" ... what's outrageous about {entirely different, much softer statement}!?
This is boring.
Who is shaming programmers for accepting copyright protection? The entire free software copyleft concept, while admittedly a kludge, rests on programmers having copyright protection. However, I and many others can and will continue to shame anyone who violates user freedom because violating the rights of others is shameful behavior.
> This is boring.
Lots of things are boring when you willfully misinterpret them.
Don’t you agree that you’re providing more value by offering software that respects user freedoms than by not?
The problem is you’re relying on copyright to create economic opportunity at the cost of user freedom. A better approach for everyone involved would to be a system that rewards respect for user freedom since that’s providing more value than not. Unfortunately trying to pound the square copyright peg into that round hole just doesn’t work very well so it’s strange that an idealist like you is advocating it so strongly.
This has always been the first reason I haven't open-sourced some of my code. The second being that it's also totally useless, and lots of people could write it better.
The hang up is real, and it's pretty silly we don't discuss it more. I'm constantly aware that my code would be ridiculed by this very same community, even though I think it's not the worst code. The people who would ridicule are the same ones who downvote, so that's a fair indicator of what to expect.
If you have never been embarrassed by your code, you probably haven't stuck around at a single job long enough to see it cause problems.
When I find myself in the hot seat answering to questions about why code was structured this way or that, I usually already want to move on from the project, and it feels like a hostile situation. I know I can always learn and improve from feedback, but oftentimes my intention in putting something out is not to generate feedback but just to make it available. Unfortunately, I've found that most of the time this decays into situations where I have to defend my choices. Which I'll be the first to admit are often made on the spur, because if I were planning on other people picking apart my coding decisions I wouldn't be able to code my side projects nearly as quickly.
[Frequently I think this is because people need to prove they can do something better than I did, and have to grind that axe against my work; which takes whatever utility I might have made and turns it into a pissing contest].
But I just don't want to subject myself to that shit anymore, and the world can get on fine without my code.
tl/dr, the hostility and negativity that usually comes along w/ people giving their opinions makes me not want to share my work with them.
It wasn't the first time I had a problem the public as a coder, because I wrote and ran - meaning, stayed awake and watched, 24/7 - the first Bitcoin casino of any size for a couple years, and a lot of the early players were devs of some description. It was helpful, and I shared my code with players. But it was always a case of "if I were you, I would've..."
Prior to that I had a major run-in against Fox NewsCorp when a whole platform I'd developed solo for an indie game got sold to them and they thought it was my responsibility to explain my code to them. Their strategy to get me to comply with this was to offer me half my normal hourly rate and ask me to sign a contract stating that all my intellectual property belonged to them. No one in that case ever said my code was bad, they just couldn't get a team of 10 coders to understand it so they shut it down and lost the $500k they'd paid for it.
Actually, the response to the non-commercial projects I've put out personally has been fairly "meh" in the last few years - I haven't really promoted them and presumably no one wants or needs them. I think I got like +2 votes on the last thing I showed HN. I have no problem contributing on other people's projects, but it's just a fix here and there if I see something. But the reason I didn't show the code on the thing I put up on HN last? It's that the two people who saw it would undoubtedly just tear my code to pieces, and I have moved on to other things.
/rant. Sorry.
I'm honestly a bit young and haven't experienced such negative feedback yet. I hope I wouldn't take it personally, but I can see why that may be hard, especially coming from someone you respect like that.
You run the code and its (mostly) obvious if it works or not.
For the first 9 years of programming I never shared my code publicly. My code wasnt useful to other people, so it wasnt a big deal.
Then I finally decided to become a professional programmer, I decided to post my best code. No one ever cared.
Today, 13 years of programming experience, I have no problem posting my code. I have written helper functions that are useful to everyone, and maybe my programs are helpful, even just for ideas.
So... don't be too hard on newbies who are playing around.
It was never fixed. I don't think I even got any grief for it. At the end of the day, I had built a utility that went some of the way towards fixing a problem that nobody else was tackling. Shitty code running and working will always beat perfect code nobody ever writes. The most important lesson I have learned to be a better software developer is that if you don't write SOMETHING, no matter how awful it is, you will never get anything done, and you can always make it better.
Also, and this is a thing I've experienced a lot, you can have really good intentions but there is some whole community that just blindsides you and beats the crap out of your work and tells you how stupid you are, to show how smart they are.
I have one (fairly anodyne) friend who works for a huge corporation who never gets tired of telling me that everything I build amounts to technical debt for my clients, because they hire a lone coder. That's the least harsh thing I experience in showing my code to other coders, most of the time.
Weirdly, Copilot is eerily good at replicating my coding style... even my idiosyncratic way of naming variables. But yeah, humans?
And that's only the ones who are actually acting in good faith! There are plenty of people engaging in bad-faith "contributions" to open source as well.
One thing that it all has in common is that the source is rarely better than ugly. It's unlikely that yours is any worse than most others.
The source does not mean anything if there is no working compiler, or if the compiler doesn't support your new shiny platform.
It is the same for servers. Having the source for a whole hosting service depending on some specific hardware doesn't matter.
If we decide to truly care about software legacy, we need to re-think the stack.
Of course, if you want to write and use something like SCUMM for your games, that's appreciated, too...
There is no way to ensure that a vm/compiler will last forever, especially given the infinite amount of potential platforms. Binary search as a concept will last longer than ScummVM.
My problem with these is that they are cross-platform only as long as the maintainers decide they are, you aren't gonna write a vulkan software impl from scratch if the platform doesn't come with one.
Now you can argue that this is all very unlikely, but you have to agree that this is no archival. At some point the project will become unusable because of all the automation code it depends on. Binary search will outlive it.