How to Make a Game Launcher and an Auto Updater With WPF | C# Game Launcher Tutorial

In this launcher tutorial you’ll learn how to make a game launcher and an auto updater for your Unity (or other) games.
If you get stuck or have questions, ask them on my Discord server:

⮞ Source code:
⮞ Google Drive link converter:

⮞ Support me on Ko-fi:
⮞ Website:
⮞ Instagram:
⮞ GitHub:

In this game launcher tutorial, we set up a launcher that can also automatically install updates for players. When I created a launcher and auto updater for my Unity multiplayer game in one of my devlogs, I got a lot of comments asking for a tutorial on how to do this, so here it is!

By the end of this tutorial, you’ll know how to make a launcher and game updater for your Unity games. You can also use it to automatically update games built with other engines—even regular applications will work!

#UnityTutorial #GameLauncher #Unity3D #AutoUpdater #GameDev


Xem thêm bài viết khác:


  • Tom Weiland

    Here's the source code:

    If you've run into issues with the zip file not extracting properly, it may be caused by Google Drive sometimes showing a confirmation page when downloading files. This prevents the zip file from downloading properly, which in turn means that it can't be unzipped. Unfortunately I never ran into this problem myself when building my launcher, so I wasn't able to account for it in this video, but here's a StackOverflow answer that mentions a GitHub repo which you should be able to use to circumvent the popup:
    From my research it sounds like the confirmation only pops up if the file is larger than a certain size, although I'm not sure what that threshold is. The SO answer claims that it's 50mb (my zipped folder was 20mb), but others have apparently gotten the popup with files under 30mb.

    This error should only occur when using Google Drive (or any other storage services that may prompt you to confirm a download), so if you aren't using that to host your files you won't run into this. For testing purposes you can also use a file path on your computer as the download link!

    June 19, 2020 - 4:54 am Reply
  • Eli_Stormkiller

    How do I change the directory where it installs? I want my game to create a folder on the first-time install, in C:eLlama StudiosGameFolder. And every time after that, I want it to remove the old version and install the new version.

    June 19, 2020 - 4:54 am Reply
  • LanPodder

    This is actually a neat tutorial

    June 19, 2020 - 4:54 am Reply
  • Jelo

    i was looking for a game launcher tutorial for a while lol ty

    June 19, 2020 - 4:54 am Reply
  • Stupidrobot7 Gameplays

    How to get the WPS app?

    June 19, 2020 - 4:54 am Reply
  • NoGhost

    I have a error in the Code:

    CS0103 The name version text does not exist in the current context. 2x
    ) expected 1x

    Can you please help me? I just copied the code from github. i dunno if i missed anything, but then, can you tell me in what a line? (I mean the error with the Version Text)

    But i dont understand the second error. I should be checking it.

    June 19, 2020 - 4:54 am Reply
  • jack marshall

    Just wanted to say Tom loving these videos. They are super informative and a massive help. Thank you

    June 19, 2020 - 4:54 am Reply
  • Danu[VIP]

    i had an Error but i dont know why
    i dont know why but it works since i deleted empty lines and i think i installed .Net core v.5

    June 19, 2020 - 4:54 am Reply
  • legoeugen Loks Gaming

    For me the update is always missing (error finishing download: and other errors. what should i do?
    PS: I have to write it down because I cannot copy and I am taken for the spelling that I am bad in English
    Edit: i have screen shot the error you can look the error at here:

    June 19, 2020 - 4:54 am Reply
  • Rugbug Redfern

    Would this also work to retrieve the game files from a github repository? Or do I need to use a service that can host a .zip file like Google Drive?

    June 19, 2020 - 4:54 am Reply
  • xyba

    Very good and useful tutorial, my problem is that my users are now complaining about the fact that they have to install the .NET core framework.
    Already tried to converting the entire code to .NET but somehow it doesn't do anything on start up, in .NET Core everything works perfectly fine.

    June 19, 2020 - 4:54 am Reply
  • Icey

    At 4:20 / 12:04 The .Content is red marked to me. How to fix? (Edit i made it a window form application instead still possible?)

    June 19, 2020 - 4:54 am Reply
  • B1Q

    you can also press Ctrl+R+G to remove unused namespaces

    June 19, 2020 - 4:54 am Reply
  • Icey

    Can`t you just make the Launcher with the toolbox and then write all the code?

    June 19, 2020 - 4:54 am Reply
  • Not Entered


    Me: Doesn't have a computer.

    Also me: takes out the microwave

    June 19, 2020 - 4:54 am Reply
  • SpamIsGaming

    Amazing tutorial, very helpful! Anyone else try to type in the direct download link to try and get the game lmao

    June 19, 2020 - 4:54 am Reply
  • HetBanaanPortaal

    hey dude can you please work on that game i would love another pirate game there arent much good ones arround that are new

    June 19, 2020 - 4:54 am Reply
  • Mohit Sethi

    Really cool, needed this badly! Thanks a lot. Became a fan of yours.

    June 19, 2020 - 4:54 am Reply
  • robinnlmn


    June 19, 2020 - 4:54 am Reply
  • robinnlmn

    Hi im doing the launcher and in the DownloadingGameCompleteCallback there is a error with : ZipFile.ExtractToDirectory(gameZip, rootPath, true);

    Can someone pls help

    June 19, 2020 - 4:54 am Reply
  • EAGE Studios

    Dude you are real hero 🙂

    June 19, 2020 - 4:54 am Reply

    Awesome tutorial, clear, easily followed and at the same time in depth.

    June 19, 2020 - 4:54 am Reply
  • Speiger

    Eh i suggest you reedit the video because you put a missing warning out.
    Google Drive and other things actually start to block files or even block accounts if your links get to much traffic. (Google just blocks the file for a longer time)
    Some are big but most of them are actually quite small.
    So I would not suggest to simply host it anywhere and forget it.

    June 19, 2020 - 4:54 am Reply
  • Ray Schwarz

    Hm weird I can only open that project with VS 2019 not 2017 or 2015 🤔
    It doesnt matter but I just wonder why it is like that^^

    Thanks again for the GitHub and all of ur Vids <3

    June 19, 2020 - 4:54 am Reply
  • Ray Schwarz

    After 5 Secs I thought:
    I LOVE YOU ! 😆
    Thanks rly rly nice, usefull AND awesome ! 🙂

    June 19, 2020 - 4:54 am Reply
  • Master of Fire9990


    June 19, 2020 - 4:54 am Reply
  • Galax P

    Very good video as always!

    June 19, 2020 - 4:54 am Reply
  • Club Linux

    If your gonna make a launcher for multiple platforms you will need to use something like Electron or QT creator

    June 19, 2020 - 4:54 am Reply
  • Scart3 Redup

    Thanks! Really the only straight on turorial I could find! Appreciate it man! 👌

    June 19, 2020 - 4:54 am Reply
  • Shortiez

    Great Tutorial!
    how would we do a progress bar for the download?

    June 19, 2020 - 4:54 am Reply
  • rDice

    Why would you make one in C#, you could just make one using something like electron rather than C#. Then you don't have to struggle with porting the launcher.

    June 19, 2020 - 4:54 am Reply
  • Blueking 0518

    ima take thiis and us this for all my games so you only need to have the launcher and you can choose what game you want

    June 19, 2020 - 4:54 am Reply
  • KnowledgeDH

    Did you spend the time coding this previously then copied off that code, or does everything just naturally go well for you?

    June 19, 2020 - 4:54 am Reply
  • Rob Lang

    Tutorial is excellent, as always! I'd add more specific error trapping to give the user more info on how to solve problems. Also I would write an Equals/Hash pair for the version number struct.

    Loving the tutorials, tho, they're great!

    Like the new end screen, forgotten that I'd appear on it.

    June 19, 2020 - 4:54 am Reply
  • Italian Stallion

    Hey, awesome tutorial im just getting this one error. my zip folder only downloads to 39 kb then I get the error: System.IO.InvalidDataException:End of Central Directory record could not be found. any help would be awesome cheers!

    June 19, 2020 - 4:54 am Reply
  • Cooltrain

    Would it be possible to use the games.exe version for version tracking, cutting the need for the txt?

    June 19, 2020 - 4:54 am Reply
  • Galaxy MStudios

    Can you make a tutorial for multiplayer about walking animations? Edit: "And also: Thanks for your good tutorials :D"

    June 19, 2020 - 4:54 am Reply
  • xzippyzachx

    I think I'm gonna try this out! It will be very useful when developing a game because it is updating frequently. This will make it much easier for testers to get the constant new updates. Also nice end screen. You just need to fit in the subscribe card somewhere…

    June 19, 2020 - 4:54 am Reply
  • ArcadeArchie

    As a tip if you're using a high resolution picture (in my case 10929 by 5553)and get wierd artifacts use the <Image.Source> and <BitmapImage> elements and set the DecodePixel-Height/Width of the BitmapImage to the desired resolution that fixed it for me.
    For example:

    <Image Stretch="UniformToFill">


    <BitmapImage DecodePixelWidth="1920" DecodePixelHeight="1080" UriSource="{Binding MainImage}"/>



    June 19, 2020 - 4:54 am Reply

Leave A Comment

Your email address will not be published.