This one goes out to the hobbyists and the solo devs, as I’d guess anyone employed in the industry is already using such basics.

But it does seem to be a particular problem among less experienced game developers, to avoid using version control (also known as source control) and risk losing progress if not their entire project.

Just in the last few weeks I’ve seen a video from a well-known indie dev admitting he got himself into a tangle through not using it, another one with a guy trying to make a game in a weekend only to have his files irretrievably corrupted on the last night. And endless Discord conversations in which someone has lost a significant amount of work and needs to be talked down from a ledge.

Plus it came up in the game jam advice thread, so it’s been on my mind and I thought it deserved its own post.

Why is this so prevalent in game dev? I have a few ideas, mostly around misunderstandings and perceived complexity. But it’s a bit heartbreaking to see people lose such huge chunks of work, not to mention demotivating for the person involved, so a PSA it is!

Why you should be using version control

  • Backups - Each commit is an emergency backup of your code at a particular point in time. Hard drive fails? Well, luckily you’ve only lost the work done since you pushed the last commit. Note: I do recommend taking regular backups to store elsewhere and not relying on just this, but it’s a good start.
  • Experimentation & rollback - You can feel free to try new things, break stuff, safe in the knowledge that if it all sets on fire you can just roll back to the last commit and pretend nothing happened.
  • Teamwork - Sharing code and working together without overwriting stuff can be a bit of a nightmare. Version control helps to prevent issues and keep things running smoothly in a team situation.
  • Branches - Maybe you’re working in a team and want to try adding a new feature without bothering anyone else. Or maybe you’re working solo but want to keep your wild experiments separate to your stable codebase. Either way, sorted.
  • Paper trail - Ever discovered an obscure bug and wondered when it crept in and how (or maybe even whodunnit)? Now you can find out.
  • Versioning - Clue’s in the name really, but once you start thinking about game releases and versions the ability to differentiate between stable release branch and work-in-progress branch is gonna come in clutch.
  • And probably plenty other reasons that I can’t think of right now off the top of my head but hopefully you get the idea.

How to get started

There are two things you’ll need to start, the actual version control software and a place to host your project.

The most popular source control software is Git, and the most popular host is Github. Honestly you might as well learn these first because even if you decide to move to an alternative later, they’re massively popular in the industry and most teams and places of work will expect this knowledge anyway.

This post is long enough already without trying to add an actual tutorial in here but info on the exact process is easy enough to find. You’re smart, you’ll do fine.

You can interact with your project through the command line, but you can also install a more user-friendly GUI. The two most popular tend to be SourceTree and Github Desktop.

You can also find engine-specific help and .gitignore files etc online, so do make sure to search for those.

Before you start your next project. Before you work on that new feature for your work-in-progress game. Before you lose something you’d really rather not have lost. Please, please use version control.

End post.

  • temeela [she/them]
    link
    fedilink
    English
    arrow-up
    12
    ·
    1 year ago

    I have seen people use Google Drive during a jam, as a team, I was flabbergasted! I was in charge of the git repo and quality control of our code in one of my biggest projects and I cannot begin to praise git enough. Git blame, feature branches and rollbacks have saved our team’s bacon a bunch of times. 10/10 advice, do make sure to start using it yesterday.

    • TeaHandsOPM
      link
      fedilink
      English
      arrow-up
      6
      ·
      1 year ago

      Ok I’ve seen the “but I use Google Drive for backups so it’s fine” argument a few times from solo devs, but in a team? When you’re in a hurry? Argh, nightmare fuel.

  • Redkey@programming.dev
    link
    fedilink
    English
    arrow-up
    11
    ·
    1 year ago

    And don’t forget that git isn’t GitHub! You can use git locally and make your own offsite backups, or I believe that there are other git-based online services as well. As a solo dev working on personal projects, I found it much easier simply to ignore the online issue completely, but git on its own is still super useful.

  • Dranoel
    link
    fedilink
    English
    arrow-up
    8
    ·
    1 year ago

    It amazes me that some people don’t use it. There’s only a few commands to learn, and it will save you so much time in the long run.

    • TeaHandsOPM
      link
      fedilink
      English
      arrow-up
      3
      ·
      1 year ago

      Add stuff, commit stuff, push stuff. Like 99% of the time that’s all you need to know how to do, especially if you’re working alone.

      But I think maybe part of the problem is people think it’s going to be a lot more complicated than that, and who wants to learn something big and complicated when you’re already trying to learn game dev, you know? At least that’s my theory.

  • ring_raitch
    link
    fedilink
    English
    arrow-up
    6
    ·
    1 year ago

    And! If you have data science needs! All of the above goes for large data files and pipelines too! Please please PLEASE give DVC a try. DVC.org 😊 and the GitHub equivalent, dagshub.

    It’s not the only option or there but damn, it works pretty seamlessly. And all just sitting right on top of git, too.

    • TeaHandsOPM
      link
      fedilink
      English
      arrow-up
      3
      ·
      1 year ago

      This is a new one on me, looks very cool though! Thanks for sharing 😄

  • sbv@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    6
    ·
    1 year ago

    I use version control on my hobby projects because I get a sense of closure when I finish a task, run the tests, then commit+merge back to master. Getting it into version control makes the accomplishment seem more significant.

    And I’m terrified my house will be destroyed by a meteor and I’d have to start over from scratch.

    • emptyother@lemmy.world
      link
      fedilink
      English
      arrow-up
      7
      ·
      1 year ago

      Thats an irrational fear. You should be more afraid of sharks. If they get into your house, they WILL delete your code.

      • sbv@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        3
        ·
        1 year ago

        Holy shit. Sharks are the worst. One got into my house once and switched a bunch of my boolean &&s to bitfiddling &s. It took forever to track down.

        I hate sharks.

    • TeaHandsOPM
      link
      fedilink
      English
      arrow-up
      4
      ·
      1 year ago

      Hah, yes I should maybe have added “soothes irrational fears” to the list somewhere too.

      You’re right about the sense of closure though! Nothing like finally making a working commit to round off work on a feature, oof, feelsgodman.

  • emptyother@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    ·
    1 year ago

    What alternatives to git are popular-ish these days?

    Before I was introduced to git, i had only tried Microsofts SVN server and it was a crap experience compared to git. Git just clicked with me, i fell instantly in love with it. It was fast and logical. And its file merging worked great. The only drawback was the program command args, it was hard to understand. So I relied a lot on GUI apps. And still do because I suck at memorizing more complex commands and args and at navigating the history graph with only colored ascii text.

    • TeaHandsOPM
      link
      fedilink
      English
      arrow-up
      3
      ·
      1 year ago

      Haha, I won’t say this was entirely uninspired by you, but I will say it’s come up a lot in conversations I’ve been a part of lately so you’re far from the only one 😅

      • saffron@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 year ago

        It’s for my own good, I know! Totally learned how to add things to a commit but then remove things that shouldn’t be there and got added by accident. Look at me go!

    • TeaHandsOPM
      link
      fedilink
      English
      arrow-up
      3
      ·
      edit-2
      1 year ago

      I didn’t want to mention that in the op because I didn’t want to confuse anyone coming into this for the first time, but you’re right it can be a problem.

      I’d expect (and correct me if I’m wrong here) that by the time someone is running into this issue they’re generally going to be experienced enough to know about the basics of version control. But there are options, Git LFS is one, Perforce is another, and some folks self host their own instance of Gitlab to get around repo size limits of sites like Github.

    • berdandy@lemmy.ca
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      git+lfs is a bandaid for the problem, and theoretically would solve the issue, but the tools are still rather limited. Sparse checkouts, shallow clones, git subtree and git submodule are all somewhat useful to mitigate large file issues. I’ve also been meaning to check out the meta meta-repository tool for my own personal stuff.

      In the industry, perforce is often used, or a custom rolled solution that is a heterogeneous mix of git for source, svn (or something else) for binaries. If you’re made of money, alienbrain has always looked great to me, but I’ve never had the opportunity to use it.