This is a read only copy without any forum functionality of the old Modcraft forum.
If there is anything that you would like to have removed, message me on Discord via Kaev#5208.
Big thanks to Alastor for making this copy!

Menu

Author Topic: [PROJECT] [WIP] Community Launcher  (Read 2739 times)

Garthog

  • Contributors
  • Polygonshifter
  • *****
  • Posts: 56
    • View Profile
[PROJECT] [WIP] Community Launcher
« on: February 23, 2012, 07:18:21 pm »
Hello,

I'm here to present my project of a Community Launcher. First, what is it ? It's basically a launcher, with two important features that were missing in a lot of launcher I saw : Patching / Autoupdate.

I think that it's the only use for a launcher. Spread your custom modifications / eventually add some repair | check functions. And this is what I expect my launcher to do. Spread your patches, without having to worry about versionning etc..

It will get a patchlist to download from a Host you specify, at a URL you specify ( for now, and for test purpose, url is http://localhost/update/getlist.php, and it send two parameters : Launcher version, Patch version ). And it'll download every patch you provide in this page.

How does the patching works ?

First, it creates a file inside your Data folder, ( which is - for now - names patch-R.MPQ ), which contains your data. When created, it's empty. Then, you just have to add some updates.

Updates are in .rvp format ( It's MPQ but I needed to find a name, to make a difference ). It has a patching sequence inside, which - for now - has three command :

a [FileName] : it replace or add FileName in the patch-R from the .RVP update
d [FileName] : it deletes FileName from the patch-R
e [FileName] [Destination] : it extracts the FileName, from .RVP, to Destination, on the local filesystem

For exemple, if you have a .rvp archive, which contains 3 files :

- patch_sequence
- Test.rar
- WORLD/test.dbc

and if the patch_sequence is

Quote
a WORLD/test.dbc
d WORLD/Map.exemple
e Test.rar C:/sometest.rar

It will update / add WORLD/test.dbc in patch-R, delete WORLD/Map.exemple from patch-R, and extract Test.rar to that location.

This system is simple, but it permits ( with a good versionning ) to send a lot of update, and keep a trace of each. For exemple, if you have a patch which weight 300mo, and you have to delete or update one file, your update will only contain that file, and that patch_sequence. It will increment the patch-R version, etc.. etc..

It's coded in C++, and use StormLib and Qt. I develope it with QtCreator.

Working features :

- Logging ( For debug purposes )
- All MPQ manipulations ( create / add file / update file / remove file / apply patch file etc.. )
- Versionning ( For now it's still very basic, but you can set the version of your launcher, and of a patch )
- Queuing / Downloading files, and apply all the patches when downloaded.
- Versionning is done
- Webpart has been done

TODO List before release :

- Auto-update of the Launcher. ( Quite done, but I have to modify the .pro, in order to auto-increment version, auto-generate the update, and then you just have to upload it to some host )
- Translate it with QtLinguist ( and put all these tr() )
- Code basic GUI functions ( Menu, Clear cache, Launch game etc.. :p )
- Make the GUI beautiful
- Compile with static version of qt
- Test it

TODO List which is not needed before release ( and which won't be worked before ) :

- StormLib is loaded with a QLibrary hack. It should be static, like that, no StormLib.dll
- Improve patching ( Adding some command, like Exe modification etc.. )
- Support for Changelog, for patch
- Adding some asynchronous cryptography ( for exemple, if you want to download only signed patch etc.. etc.. )

When it will be fully working and when it'll be easy to do autoupdate, I'll release source code.
Feel free to ask if you didn't understand something, or if you have a suggestion / question !

Garthog.
« Last Edit: March 01, 2012, 10:59:13 pm by Admin »

Keta

  • Contributors
  • Model Change Addict
  • *****
  • Posts: 210
    • View Profile
Re: [PROJECT] [WIP] Community Launcher
« Reply #1 on: February 23, 2012, 11:54:43 pm »
Dude, this is AWESOME! o_o
Keep up the epic work ^_^

Thanks
Keta
« Last Edit: January 01, 1970, 01:00:00 am by Admin »

Steff

  • Administrator
  • Creator of Worlds
  • *****
  • Posts: 4551
    • View Profile
Re: [PROJECT] [WIP] Community Launcher
« Reply #2 on: February 24, 2012, 07:05:22 am »
I also started a launcher and I think I had an idea that would be very nice in this one too.

We are a modding community and (hopefully) there will be many servers out there to play on. So you will need a wow copy for every server or you must copy every time MPQs and the realm list around.

What about a launcher that do this for you. Server guys get a tool where they define some stuff. Server IP, needed patch names (or we define how the must be named) a description and perhaps a banner to show in the launcher.

Now the player just have to download a file this tool creates and put it in the launcher sub folder. If he starts the launcher he get a list off all added servers and can switch the server and just press start to play.

There he see the description, the banner and perhaps some stats of the server. Like rates or type (RP PVP etc).

The launcher will then copy the MPQs (or use system links if this works), copy the realm list and start wow.
« Last Edit: January 01, 1970, 01:00:00 am by Admin »
Please mark as solved if solved.
Don't ask if you could ask a question... JUST ask the Question.
You can send me also offline messages. I will answer if I get online.
Skype: project.modcraft
Discord: steff#6954

Garthog

  • Contributors
  • Polygonshifter
  • *****
  • Posts: 56
    • View Profile
Re: [PROJECT] [WIP] Community Launcher
« Reply #3 on: February 24, 2012, 01:59:01 pm »
It's a good Idea, but then it would need a lot of extra work, especially when there is exe modification etc.. :p
Also, when it will be released, (i hope) spreading custom content will be easier, but we still need a tool to create patches ( for big patches / patch sequence ) and eventually some world editor ( like Blizzard one :p ), but that's for long term !
« Last Edit: January 01, 1970, 01:00:00 am by Admin »

Eatos

  • Registred Member
  • LUA Script Tinker
  • *****
  • Posts: 46
    • View Profile
Re: [PROJECT] [WIP] Community Launcher
« Reply #4 on: February 24, 2012, 03:32:17 pm »
I am an Old Delphi programer and this issue i have solved on very simple yet effective way...
For Auto Patching i made it a launcher on load check if file on the site, which players download it, is changed or modified and it is bigger then current one then start downloading it, if it is not open wow...
And for downloading i used a simple function that is in all windows :)
« Last Edit: January 01, 1970, 01:00:00 am by Admin »

Sina

  • Registred Member
  • Wiki Incarnate
  • *****
  • Posts: 161
    • View Profile
Re: [PROJECT] [WIP] Community Launcher
« Reply #5 on: February 24, 2012, 09:24:08 pm »
: D We also wanted to create such a (many server-)launcher for RP-Welten, but i can't code and our coder is working on the page.

Also your launcher would be cool for new, small projects (:

Keep it up (:
« Last Edit: January 01, 1970, 01:00:00 am by Admin »