Announcement

Collapse
No announcement yet.

ARK: Server Side Plugin / Mutator

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    ARK: Server Side Plugin / Mutator

    Hello

    I'm completely new to UnrealEngine, so I appologize in advance for any dumb questions or assumptions!

    I want to create a server-side plugin (mutator?) for my ARK: Survival Evolved server. But I feel pretty lost on how and where to start the project.

    I already read https://wiki.unrealengine.com/C%2B%2B_Mutator_Tutorial and https://www.unrealengine.com/blog/damage-in-ue4
    Additionally there is a thread in the Steam Community addressing this issue a little bit: http://steamcommunity.com/workshop/d.../?appid=346110

    The user "Jeed" does a very good job at explaining on how you can achieve something and also already developed a small server-side plugin / mutator.
    Unfortunately he only shows code-snippets and didn't provide a source code for his plugin yet. Initialization, declarations, hooks, etc.
    He also said that his plugin exists of two files: A "version.dll" and a .ini file. I guess the "version.dll" will be loaded by the server automatically. So I created a small empty .dll in Dev-C++, compiled it, renamed it to version.dll and copied it into the Binaries\Win64 folder. But when starting the server after that I get an error message saying that he cannot find the function "VerQueryValueW".

    I want to create a plugin / mutator which renders player structures immune to damage. Or in other words: I want to add a "Indestructable Bases" feature to my server.
    In X64DBG I can open the ShooterGameServer.exe and thankfully the Devs provided a ShooterGameServer.pdb. I figured there is a function:
    Code:
    APrimalStructure::TakeDamage
    When I set a breakpoint in X64DBG, it gets triggered whenever I hit a wall or a storage box. So I guess in my plugin I "just" need to hook this function and basically change its behaviour so it doesn't forward the applied damage, but plain 0.

    How can I achieve that? How can I hook / override this "APrimalStructure::TakeDamage" function in my plugin? I'm basically missing the "plugin skeleton" with all the needed "overhead" for creating a working version.dll which is correctly loaded by the ShooterGameServer.exe.

    What do I need? Can I work with Dev-C++? Or do I need Visual Studio?

    Any help is very appreciated! Thank you very much! <3

    #2
    Hmmm ... 30 views and not a single response.

    I guess there is something fundamentally flawed with my question?

    I'm sitting here since hours trying to figure it out how to create a server-sided mod for that game, but I didn't get much further.

    I guess "Mutators" are only working for Unreal Tournament and no other game? Thats why my question makes no sense. Am I right?

    Comment


      #3
      Originally posted by nuclearping View Post
      I guess "Mutators" are only working for Unreal Tournament and no other game? Thats why my question makes no sense. Am I right?
      This is correct. I had a 3 paragraph reply typed out for you, but accidentally deleted it by pressing "Reply" instead of "Post Quick Reply". In summary, What you are doing is unofficial modding that doesn't involve mutators nor is exclusive to UE4. Try asking on a cheats/modding forum. You'll be injecting a DLL (via an injector or by letting the Server self-inject with a modified DLL, which it looks like the other guy did) and then hooking functions and rerouting them to your own logic. For now, you can hardcode the mod right into the server binary (I did this for an NS2 server mod). There are a couple ways to achieve what you want (I had 4 ways typed out), but the cleanest/simplest/safest way is just to find the damage value being grabbed from the stack/register, and replace the instruction to grab "0" instead.

      Comment


        #4
        Hey

        Thank you very much for responding. This actually really helps me, because it finally clarifies on how to not do it.

        I'm still sitting here trying to figure that out. Gosh ... Like 10+ hours. D: I also came to the same conclusion: Unless the devs of ARK provide a more "user-friendly" way to create server-mods, the only sane solution is via DLL injection / function hijacking.

        http://steamcommunity.com/app/346110...20656456551429

        I will go to bed now. Will implement this when I got up.

        Comment


          #5
          Hey there,

          the problem here is, that we have no idea what the ARK developers do with their servers. This forum here is only for general UE4 Help. We could tell you how to mod for a Game that allows mods, but as long
          as we don't know how ARK manages mods, we can't really help you.

          You would be more helped if you go to ARK Forums.

          ARK itself has no official forum despite the Steam forums, but you could have a look here:

          http://arksurvivalevolvedforum.com/index.php

          This is an unofficial forum and since i posted a Thread on how to create a Server for ARK,
          the Forum user count exploded. Maybe you find someone there who is modding too.
          Open for contracted work | C++/BP (incl. Multiplayer) | Tutoring | VR

          My UE4 Blog/Page with Tutorials and more: Hit me for ALL the things!
          (Including 100+ Pages Multiplayer Network Compendium to get you started.)

          Comment


            #6
            Hello eXi

            The Ark Devs released an "Ark Dev Kit" some days ago. But unfortunately it only focuses on creating "mods" in terms of either creating new maps or modifying the existing "TheIsland" map. But in all cases the mods are bound to a map and need to be delivered with them. So it is mainly "client sided".

            I hoped the UT "Mutator Tutorial" also works for ARK. But I think it won't. But still, when searching the Server's .exe and the provided .PDB file it contains alot of appearances of "Mutator". So it seems like they implemented Mutator support, but without further API or source codes we can't do anything with it anyway I guess.

            So back to Process Injection ...

            Thanks again

            Comment


              #7
              @nuclearping - Judging by some of the statements by Wildcard, I think they will be opening up their native code to modding soon, so it might be worthwhile to simply wait until it's a bit more approachable and doesn't involve hacky DLL injection and such.
              Storyteller - An immersive VR audiobook player

              Dungeon Survival - WIP First person dungeon crawler with a focus on survival and environmental gameplay ala roguelikes

              Comment


                #8
                Originally posted by nuclearping View Post
                Hmmm ... 30 views and not a single response.


                I thought you goin to explain something new and not to ask

                Comment


                  #9
                  check this out its a server sided c++ api: http://arkserverapi.com/
                  we have already made example plugins: http://arkserverapi.com/resources/
                  also all source code is available via github
                  https://github.com/Michidu/ARK-Server-API/
                  https://github.com/ownprox/ArkServerApi/
                  https://github.com/Michidu/Ark-Server-Plugins/

                  also binary versions exist and we are taking server sided plugin requests

                  Comment

                  Working...
                  X