don't click here

Why aren't more fan games open source?

Discussion in 'Fangaming Discussion' started by flarn2006, Feb 27, 2020.

  1. flarn2006


    I know developers have no obligation to share their source code—I'm not claiming otherwise. And I'm not saying I'm ungrateful for what they did provide. I'm just surprised that so few are willing to share source code. Sonic 3 AIR, Sonic World, Project Mettrix/E02...let's not forget Sonic 2 HD. To name just a few. Not bad games by any means (well, the ones I've played at least) but their potential is much more limited than it could be.

    There's always the odd developer who takes offense to people "messing with" their work (oh, the irony.) Sure, whatever, that's your choice; just don't get nasty when I play how I want anyway. (I'm looking at you, Sonic Gather Battle. :P) But in a lot of cases, the source code is just...missing, despite these games never being sold or otherwise monetized in a way that open source would get in the way of. Nothing to explain why they're hiding it. (Again, not that they're obligated to explain it...)

    Maybe those devs also take issue with other people doing things like that. But is it really that common of an attitude, among fangame developers of all people? I could very well be dead wrong—it would be far from the first time—but that just seems unlikely to me. I feel like at least some of these developers aren't trying to limit anyone's options, but instead merely never considered releasing it.

    I know there's some great open source fan games; Sonic Robo Blast 2 is one of the best and probably the most famous. But it seems like that's by far the exception rather than the rule. Why is it? It's not like sharing source code takes extra effort. So that means each of those devs either has some reason why they don't want to (which is fine) or, like I said, just never got the idea to.

    I wish closed source wasn't so widely taken for granted. Why limit people if you don't have any reason to?
  2. Etendo


    Well, they don't need to like you said. And most of the time, don't want to. It is their work that they put in the time and effort into making. I most certainly wouldn't want to do that with any of my fan creations, unless the project wasn't finished and I didn't want to work on it anymore. Why do they need to be open source? most likely projects are made for people to enjoy, not to take the source code and potentially take it for their own or to mess with it. Could just be me, but when you make a project, big or small, you don't really want to be handing out this thing you made that took you months, potentially years to create.
  3. flarn2006


    But people could enjoy it even more that way. Certainly no less. Is it really a problem if they aren't enjoying it in the "right" way?

    And why not? It's your choice; I just don't understand what the harm would be, what specific scenario you're trying to prevent. Other than the proprietary stuff I do for work, I publish all my source code, because why not?

    I really don't get why people get so possessive over their work to the point of trying to prevent others from doing what they want. To me that attitude seems like the kind of thing that would be widely seen as a character flaw. Don't take that the wrong way; I don't mean that as a strike against you or anyone for that matter. I'm just giving some perspective on how I naturally think, whether it's reasonable to think that way or not. But anyway, like I said, it's possible that I've severely underestimated how common that attitude is, and if so, that would be why. (Even though when you think about it, it is kind of ironic for a fangame developer to feel that way. :) )
  4. Etendo


    "But people could enjoy it even more that way. Certainly no less. Is it really a problem if they aren't enjoying it in the "right" way?["

    Well no, but in making something, not everyone may intend to want to release the source of it. Some may just want to make the project, finish it, and move on.

    "And why not? It's your choice; I just don't understand what the harm would be, what specific scenario you're trying to prevent. Other than the proprietary stuff I do for work, I publish all my source code, because why not?"

    Because I made it. I'm the one who put the time and effort into it. You don't need the source to have fun with the released project.

    "I really don't get why people get so possessive over their work to the point of trying to prevent others from doing what they want. To me that attitude seems like the kind of thing that would be widely seen as a character flaw. Don't take that the wrong way; I don't mean that as a strike against you or anyone for that matter. I'm just giving some perspective on how I naturally think, whether it's reasonable to think that way or not. But anyway, like I said, it's possible that I've severely underestimated how common that attitude is, and if so, that would be why. (Even though when you think about it, it is kind of ironic for a fangame developer to feel that way. :) )"

    I don't really think it's possessive to keep what is yours, you made it after all. And just because people choose not to be open source doesn't mean it's going to "prevent people from doing what they want". People can still do what they want, say make a fangame of their own. All the knowledge is out there to do so, you just have to be willing to take the time to learn. I don't think it's ironic for a fangame developer at all either, they took their time to learn something and to make something great out of it. Plus, if it's a big project and you have multiple people working on said project, not all of the team members may want their code released (Sonic 2 HD for instance).

    Don't take what I'm saying as a strike against you, either. I'm just giving my perspective. I'm not against people being open source with their code, I'd just rather keep what I made, to myself.
  5. Pexs


    Otherwise known as Spex Member
    Well, I can think of a few reasons to go either way.

    • One perspective you may be making an assumption about is the idea that whatever source code posted will be useful. It's not guaranteed - lots of professional games barely limp out the door stapled together (like the recently open sourced example VVVVV). Fan games are not professional projects, so I'd place the expectations on that even lower. As an addendum, I'd also say if folks don't want to be associated with bad code then that's also their goal to not showcase that - your only major finished projects being spaghetti piles isn't a good look.
    • Another note is that allowing people to use your code isn't the same as letting people use your art. And making a release separated out from the art assets is also not really a fun task.
    • Lastly, just because a finished work is a fangame, that doesn't mean there aren't any sections of it that can't be used in a professional or proprietary work. If there's something neat you've figured out how to program that you think might be integral to your next project or can be sold off as an asset, then I'd say it makes sense that it wouldn't get open-sourced right?
    Also, open-sourcing things like this shouldn't be done without preparing for whatever is made using your code is released to be associated with you in particular for a while. Knowing the Sonic fandom, I wouldn't really want to open that can of worms personally.

    I don't think there's anything particularly wrong with asking someone to open-source something. The worst thing they could say is no. But don't be surprised if they do. The most high-profile fangames are professional-tier works of love created distinctly without any promise of money, almost made more for the creator's sake than for any particular audience. It's a hard sell trying to convince people to let go of their darlings to get trampled on by a bunch of anons who may or may not respect their work.

    For everybody else, though, they probably just never considered it lol.
    • Agree Agree x 6
    • Like Like x 3
    • List
  6. DigitalDuck


    Arriving four years late. Member
    Lincs, UK
    TurBoa, S1RL
    Essentially what Pexs just said. Everyone wants to take pride in their code, and if there were no such thing as deadlines I'm sure a lot more projects would go open source.

    Once deadlines are involved, however, you're forced to take shortcuts you normally wouldn't, write nigh-unreadable code and little hacks to make things work the right way. People with too much spare time on the internet (like those posting on a Sonic forum :V ) can be judgmental and say "why didn't you write this properly", not understanding that this wasn't done for lack of programming skill, but lack of time.
  7. Hez


    I don't have my stuff open-source just because I don't want a bunch of clones released before my final product is. By the time I release my game, the player will have already been exhausted from the clones using the same idea.
  8. winterhell


    I'm going to ask in return, why do you want the source code to these games? Are you going to improve on them? Make your own fan games with it?

    Traditionally the act of buying a library or an engine in the programming industry has been a tradeoff. To save yourself the time and resources on something instead of implementing it yourself. Which also implies you have the skill to make it and use it. If you don't know C or C++ and how games are made, getting the source code isn't a shortcut to you making a game. If you don't know how to program well, at most you'll have a level editor and the ability to swap sprites.

    And here is a developer's perspective which'll reiterate points stated by others. We are interested in making the games, not the source code. The code is often specifically written for this exact game, and only we understand it. If we were to release it, people will start criticizing it. Then we have to make a proper documentation, clean it up, write tutorials, support it. Thats a lot of extra work.

    I can release the source code to Sonic 3 HD right now, and I won't hear the end of the mockery that I'm not using this design pattern or that "best practices". Or that I'm using this language and not have unit tests. Those things are irrelevant to me. The game works on XP and every Windows created since, on 18 year old computers, and it runs fast. It runs well.
    As for Sonic 2 HD, the source code is practically out there. The game is very moddable. Nobody made any mods. They only did sprite rips and put them online.

    If the above didn't convince you, make yourself a game and you'll understand why people don't release the source code. There are tens of thousands of "How to make a game" tutorials online for that.
    Last edited: Feb 28, 2020
    • Agree Agree x 6
    • Like Like x 1
    • List
  9. Lilly


    United States
    Shang Mu Architect
    I used to wonder why people didn't release their source code, until I learned this lesson the hard way, myself. Once you have a monster with 25,000 lines of code, (or 100,000 to 200,000 lines of duct-tape and spaghetti) and the game runs well enough for most people who play, you're ready to move on to the next game project.

    You would rather not try to document and clean up all of that by yourself, (and like Winterhell said, you have to, because you're the only one who understands it!) and deal with weeks upon weeks of dialogue with people, who have questions about how this or that thing works. You won't be able to "move on" to your next project; you'll be too busy supporting your last one.

    Worse still, you could take the time to document things, clean it up, release the source code- and then nobody proceeds to use it, either because you have a lot of competition with other engines, or none at all, because your relevant fandom doesn't make fan games. With my Shantae Game Maker template I released some years ago, despite spending something like two years putting it all together, literally only one person used it before they gave up and did something else, then the only other person besides that (rightly) criticized how messy it was underneath, and moved on.

    (The worst part was, I found this out by talking to someone else on a Discord server that had nothing to do with the Game Maker community! I would have greatly appreciated the honest feedback, and have since long since put that criticism into practice, but it wasn't given to me directly for years. I'm still mad about that to this day! Not all of us devs have fragile egos, for Heaven's sake; just give it to us straight and polite.)

    There is a profound lack of interest in making Shantae fan games, compared to Sonic, so I've since pulled my source code from the public. It's a shame, because I wanted to foster a fan game scene for the series. And now that I've since gotten better at programming in GML, I won't offer it again even if directly asked, just because my standards are a lot higher now; I would prefer to rewrite it and pare down its code.

    tl;dr: Not everyone wants to expose the spaghetti monsters they've produced on a deadline, or have past experience saying that no one will use their highly-specialized engine, if they did release it publicly. It greatly depends on what game it is, and what interest there is in either modding it or doing total conversions on top of it. (Like SRB2) Interest in modding varies wildly with commercial games, let alone fan games.
  10. Ell678


    Am I Annoying You? Member
    Barrow, England
    Sonic Incursion
    For me, as Incursion uses Sonic GDK, technically the engine is already free and (practically) open source. Some comments on here about wanting to avoid scrutiny are resonating a lot with me - looking back at some of the logic, work arounds and outright stupidity I did early on in Incursion's development was fairly embarrasing and I would hate for others to see it.

    Now, as an entirely personal choice, I have always been open about providing assistance and have done some Sonic GDK tutorials. I like helping out where I can, and hopefully setting people down the right path - but there's no way I'd just outright share huge chunks of Incursion's design.
  11. Noah Copeland

    Noah Copeland

    I think another reason is the amount of poor fangames that could be hacked together from your source. Think about the lazy fan game demos you see that are just the built in Gmate/Worlds/Max test level with three things changed and an extra playable OC character. I can see how someone would not want the same to happen to their hard work.
    It's expected from the aforementioned engines/templates because that's what they are kinda there for. But if you keep seeing your fangame reskinned with poor art and Radicalz The Edgehog, maybe it starts to feel like its hurting your game's rep (even if it's really not).

    Fan games already have a stigma off being poor quality off brand bootlegs, so when someone makes something good that rises to the surface, the creator might wanna do what they can to keep what little prestige they built up in tact.
    • Agree Agree x 4
    • Like Like x 1
    • List
  12. TheKazeblade


    "Our Life is More than a Side-Effect" Member
    Custom-made engines and frameworks are not nearly as common as some people think. You have your notable outliers who are making frameworks for their own projects like Utopia, Hero Engine, Islands and Sonic Core, but those are all still being built on pre-existing open source engines like Unity or evidently UE4 for the newest iteration of Utopia we haven't seen yet. Keep in mind, a vast majority of the fan games out there are made with open source frameworks like Sonic Worlds and its various branches (Delta, Not So Simple, etc) for 2D games and solutions like Hedge Physics and Bumper Engine in Unity for 3D fan games.

    If people are looking for these fan games to be released because they think having access to them can act as a shortcut to learning actual coding or skills using the greater toolsets required for engines like Unity, whatever project they actually have in mind will likely sputter out and die pretty quick. If you don't go into it either with the pre-existing knowledge of how to use the tools or the willingness to put in the dozens if not hundreds of hours to learn how to use them properly, you probably won't make much progress.

    Ask yourself why you want the fan games made open source. If it's because you don't know enough about a given framework to know if it can accomplish what you have in mind or not, you should probably try learning it first and find out for sure. If you know enough to truly know those frameworks can't accomplish what you desire, then there's a chance you know enough to make one yourself. Either way, it will make the need to have fan games made open source unnecessary.

    Obviously most open source frameworks will have their shortcomings. Sonic Worlds is built on the archaic and rapidly aging Clickteam Fusion and Bumper Engine definitely has its limits, but with knowledge or at least the drive to learn you can make solid improvements. That's what frameworks are intended for.
    • Like Like x 1
    • Agree Agree x 1
    • List
  13. Lapper


    Lappering Tech Member
    Sonic Studio, Sonic Physics Guide, Kyle & Lucy, Freedom Planet 2
    I made my own Framework for Sonic Studio in Game Maker Studio 2.

    I feel someone would need some kind of motivation to do that especially if it isn't the original point of the project in the first place. If it's a project they care about why let people modify it and redistribute their own versions straight away.

    Might be felt less if it's a project that many people have helped worked on, so no one really feels extremely attached to it and have only contributed different fragments to it.

    Those that use existing open source frameworks (which I'd guess is common) may as well not release source since most of the code is already out there.

    Personally I'd only consider it after the lifetime of my ''product" is over, and if the source code remains actually nice to look at. That or strip it down to the base framework itself for others to build off of, which seems more likely.
    Last edited: Mar 2, 2020
  14. Sparks


    Sondro Gomez / Kyle & Lucy
    Cause then you have to clean up all the inside jokes hidden in the files and let everyone see how embarrassingly messy your workflow is. :V
  15. winterhell


    //SEGA if you are reading this, please hire me
  16. The Claw

    The Claw

    I'm not a programmer but offering lifetime free tech support for crusty, mashed together code isn't my idea of fun.
    Still I wouldn't have a problem with uploading old experiments I've dabbled in (web pages, RPG Maker, etc). Not that many traces of them remain!
  17. Ritz


    Subhedgehog Member
    I'm going to go out on a limb and say that no fangame has ever been coded well. Whatever you're hoping to learn from other peoples' code will either just confound you or impart some bad habits. I've been grinding away at programming for 2 years now and I'm still not at the level of fully comprehending and assimilating anyone else's code. I'm starting to suspect the only way to really develop that skill is to construct a framework from scratch, at which point you'll have your own engine and won't care about what anyone else is doing. Open source is a romantic idea, but unless we're talking about some enormous corporate-backed endeavor, it always falls on the initial creator to maintain the project and documentation forever because nobody ever contributes.

    That said, extensibility is absolutely the key to SRB2's longevity and it'd be nice if more people at least tried to replicate their success, but that's really just a consequence of DOOM having excellent tooling. That's a whole other responsibility you'd be taking on if you're really serious about making your project attractive to potential contributors.
  18. Cooljerk


    Professional Electromancer Oldbie
    Everything I write is fully copyleft and open source with the least restrictive GPL license I can find. The problem is, it's just not publicly released yet. Call it vanity, but I am basically eternally tidying up my code for "release" because I don't want to put out anything sloppy. It's not that I don't want others to use my source, it's more that I don't want others to have to put up with it yet, haha.

    EDIT: It's also funny because you mention Metrixx and that's a weird example to me. Because, while on the one hand, the source to the game is closed, and there have been instances in the past where Stealth was super protective of his concepts (like the homing attack), the flipside is that Stealth is basically the patriarch of the entire scene. He's shared *soooo* much over the decades, that pointing out that Metrixx was somehow held back is silly. When it was still in development, hands down, nobody in the scene knew as much about sonic game making as Stealth. His tools basically taught everyone the ropes. The important bits that the community needed to glean from Stealth, he would put out in other ways.

    Also, as someone who has been writing a Dreamcast programming book for a very long time now, documenting your code and explaining it to others is super, super time consuming. It feels very honestly like doubling or even tripling your work. And just releasing code out into the wild that only the author understands feels frustrating, both to the author and the audience.
  19. Unlimited Trees

    Unlimited Trees

    we Do a Little Mischief, Mischief... Member
    UNITRES, Project Time, etc.
    you dont want to see pepsi in sonic 1's source.
  20. Cooljerk


    Professional Electromancer Oldbie
    Omar "Bock" Cornut released *excellent* homebrew/fan code over in the SMS world. But then again, he's one of the best developers in the industry. You can see how well he codes in his modern projects like ImGUI.

    TBQH I've learned a *ton* from studying his stuff over the years.