Welcome to AC Web.
Results 1 to 9 of 9
  1. #1

    Question How can I Implement a server for a WoW Mini Client (4.3.4)?


    REGISTER! (FREE)
    Registered members see less ads
    and also gain access to other great features.
    A streaming wow client that downloads game data in the background was introduced in cataclysm patch 4.0.1

    Now in 2020, Blizzard have disabled the servers that stream data of old expansions, effectively killing streaming (mini clients) for cataclysm.(have not tested MoP)

    However, there exists ways where you can set up your own web server and serve WoW game data to your players. Twinstar.cz (Apollo-WoW) 4.3.4 client does exactly that.
    Basically, I am looking for a way to do that.

    What I currently understand about the mechanism:

    1. The server from which the wow client will stream data from is described in the "WoW.mfill" file

    For a fresh 4.3.4 client it looks like this:
    PHP Code:
    version=2
    server
    =akamai
        location
    =http://dist.blizzard.com.edgesuite.net/wow-pod-retail/NA/15050.direct/
    server=blizzard
        location
    =http://dist.blizzard.com/wow-pod-retail/NA/15050.direct/
    manifest_partial=wow-15595-1C2E37918CF0DA8026178526559CA53F.mfil 
    2. By appending the manifest_partial to the server path (location) you will get a document that contains a very long list of game files of all localizations in the form of MPQ archives (and other file types) that the client downloads


    http://dist.blizzard.com/wow-pod-ret...6559CA53F.mfil

    In a way, it seems that manifest_partial tells the client which files to download, their sizes, and if they have special flags attached to them (weirdly none of them have set flags).

    This document is divided into 3 parts.

    1. The version
    Which is in this case "version=2"
    Note that this is the same version in WoW.mfill
    I don't know what this version represents. (expansion?, or version of this mechanism that blizzard is using?, idk)

    2. localizations paths

    PHP Code:
    serverpath=base
        path
    =
    serverpath=locale_koKR
        path
    =
    serverpath=locale_deDE
        path
    =
    serverpath=locale_enGB
        path
    =
    serverpath=locale_esES
        path
    =
    serverpath=locale_frFR
        path
    =
    serverpath=locale_ruRU
        path
    =
    serverpath=locale_enUS
        path
    =
    serverpath=locale_esMX
        path
    =
    serverpath=locale_ptBR
        path
    =
    serverpath=locale_ptPT
        path
    =
    serverpath=locale_enTW
        path
    =
    serverpath=locale_zhTW
        path
    =
    serverpath=locale_zhCN
        path
    =
    serverpath=locale_enCN
        path


    This is expected, as the client needs to know the paths of which localization to download.
    I don't know why path of those particular entries is empty, but I'm guessing because they exist in the root directory of whatever server Blizzard is using...

    These serverpath=local_xxXX seem important in the next segments.

    3. The actual files

    PHP Code:
    file=Data
        name
    =Data
        size
    =0
        fileversion
    =15050
    file
    =Data/koKR
        name
    =Data/koKR
        size
    =0
        fileversion
    =15050
    file
    =Data/deDE
        name
    =Data/deDE
        size
    =0
        fileversion
    =15050
    file
    =Data/enGB
        name
    =Data/enGB
        size
    =0
        fileversion
    =15050
    file
    =Data/esES
        name
    =Data/esES
        size
    =0
        fileversion
    =15050
    file
    =Data/frFR
        name
    =Data/frFR
        size
    =0
        fileversion
    =15050
    file
    =Data/ruRU
        name
    =Data/ruRU
        size
    =0
        fileversion
    =15050
    file
    =Data/enUS
        name
    =Data/enUS
        size
    =0
        fileversion
    =15050
    file
    =Data/esMX
        name
    =Data/esMX
        size
    =0
        fileversion
    =15050
    file
    =Data/ptBR
        name
    =Data/ptBR
        size
    =0
        fileversion
    =15050
    file
    =Data/ptPT
        name
    =Data/ptPT
        size
    =0
        fileversion
    =15050
    file
    =Data/enTW
        name
    =Data/enTW
        size
    =0
        fileversion
    =15050
    file
    =Data/zhTW
        name
    =Data/zhTW
        size
    =0
        fileversion
    =15050
    file
    =Data/zhCN
        name
    =Data/zhCN
        size
    =0
        fileversion
    =15050
    file
    =Data/enCN
        name
    =Data/enCN
        size
    =0
        fileversion
    =15050
    file
    =Data/art.MPQ
        name
    =Data/art.MPQ
        size
    =3943419041
        fileversion
    =15050
        flags
    =0
        path
    =base
    file
    =Data/base-OSX.MPQ
        name
    =Data/base-OSX.MPQ
        size
    =35436561
        fileversion
    =15050
        flags
    =0
        path
    =base
    file
    =Data/base-Win.MPQ
        name
    =Data/base-Win.MPQ
        size
    =28944242
        fileversion
    =15050
        flags
    =0
        path
    =base
    file
    =Data/expansion1.MPQ
        name
    =Data/expansion1.MPQ
        size
    =1426708080
        fileversion
    =15050
        flags
    =0
        path
    =base
    file
    =Data/expansion2.MPQ
        name
    =Data/expansion2.MPQ
        size
    =2689361558
        fileversion
    =15050
        flags
    =0
        path
    =base
    file
    =Data/expansion3.MPQ
        name
    =Data/expansion3.MPQ
        size
    =1066531673
        fileversion
    =15050
        flags
    =0
        path
    =base
    file
    =Data/sound.MPQ
        name
    =Data/sound.MPQ
        size
    =1648263882
        fileversion
    =15050
        flags
    =0
        path
    =base
    file
    =Data/world.MPQ
        name
    =Data/world.MPQ
        size
    =2727901076
        fileversion
    =15050
        flags
    =0
        path
    =base
    file
    =Data/world2.MPQ
        name
    =Data/world2.MPQ
        size
    =579354282
        fileversion
    =15050
        flags
    =0
        path
    =base
    file
    =Data/koKR/expansion1-locale-koKR.MPQ
        name
    =Data/koKR/expansion1-locale-koKR.MPQ
        size
    =2809381
        fileversion
    =15050
        flags
    =0
        path
    =locale_koKR
    file
    =Data/koKR/expansion1-speech-koKR.MPQ
        name
    =Data/koKR/expansion1-speech-koKR.MPQ
        size
    =44490723
        fileversion
    =15050
        flags
    =0
        path
    =locale_koKR
    file
    =Data/koKR/expansion2-locale-koKR.MPQ
        name
    =Data/koKR/expansion2-locale-koKR.MPQ
        size
    =10830440
        fileversion
    =15050
        flags
    =0
        path
    =locale_koKR
    ... 
    Note that you can actually download these files with your browser. Just append the filepath to the end of the servers URL

    For example, downloading world.MPQ
    http://dist.blizzard.com/wow-pod-ret...Data/world.MPQ

    These are the actual files that the client stream from. they have the following properties attached to them
    file: the path of the file on the server
    name: same as file ?
    size: the total size of the MPQ file in bytes
    fileversion: the build version of the game. For cataclysm 4.3.4 this is 15050
    flags: ? (This is 0 for all the files for some reason)
    path: This is the path described by serverpath

    Notice some files have size equal to 0. This probably means they are directories (ex: Data/enGB)

    With all of that out of the way, how can I implement something similiar?

    For starters, I figured just copy paste this document and replicate the same file structure on a webserver. But that seems to good to be true. (not to mention too tiresome!)

    Then there is the issue of the manifest_partial. it looks like a hash? how can I calculate my own? it is a hash of what exactly? Is it even a hash or just a way to locate resources on the server?

    Anyone got ideas how can I start working on this?


    Last edited by mrfawaz; 05-31-2020 at 08:27 PM.

  2. #2

  3. #3
    @Andy know but have to wait for him to reply

  4. #4

  5. #5
    blizzard have server that has game data that we download.
    blizzard shutdown the server that has patch 4.3.4 data.
    another server apollo-wow has server that has patch 4.3.4 data.
    me want to make the same server like blizzard and apollo-wow, but me dont know how to start.

    tbh I should've just said this lol. Much better and easier to understand than a boring and detailed description of the problem I'm facing.

  6. #6
    Quote Originally Posted by mrfawaz View Post
    blizzard have server that has game data that we download.
    blizzard shutdown the server that has patch 4.3.4 data.
    another server apollo-wow has server that has patch 4.3.4 data.
    me want to make the same server like blizzard and apollo-wow, but me dont know how to start.

    tbh I should've just said this lol. Much better and easier to understand than a boring and detailed description of the problem I'm facing.
    My recommendation is just download the Full Client. it'll take a little longer but for sure will be worth it.

  7. #7
    Quote Originally Posted by OMGhixD View Post
    My recommendation is just download the Full Client. it'll take a little longer but for sure will be worth it.
    the easy way its not the solution for this question.

    -----------------------

    Sounds like a great idea to me, not having to rely on anything external (blizzard and others) and having your server handle all of this.

    It is even a great idea to update your own patches and that the server updates clients without having to download the custom content you design from services such as MEGA or mediafire.

    Unfortunately I do not know how all this works. I hope someone can help you progress in your goal
    Last edited by universeofgamer; 06-01-2020 at 06:40 AM.

  8. #8
    You would have to create a custom patch and stream server that follows the exact format as blizzard uses and I do not recommend doing that, alone, because hosting the client files yourself is illegal.

    A friend of mine actually has set up such a stream server for development purposes but it's not really user friendly to do since the average wow player has the IQ of a cucumber.

  9. #9

    REGISTER! (FREE)
    Registered members see less ads
    and also gain access to other great features.
    It really all belongs to blizzard because after all we use your engine without your consent to create "custom" (pirate) servers.
    I do not see bad that if we do one thing the other is not done.

    I understand that the user is "cucumber mind" that is why I see it more useful to have a launcher to download the game as you play without having to wait for everything to be downloaded on the user's computer.
    There are many users that apart from having "cucumber mind" have a patience of "download = 0"

    I remember that there were servers that used this function also with custom patches. When I tried the server "wow warriors for peace" I simply had to download the executable and see how the game was downloading as it progressed from one kingdom to another

 

 

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •