Affichage des articles dont le libellé est third party server. Afficher tous les articles
Affichage des articles dont le libellé est third party server. Afficher tous les articles

mercredi 28 décembre 2016

Dedicated Server packaging

Dedicated server packaging


I found that Url in the wiki : https://wiki.unrealengine.com/Dedicated_Server_Guide_(Windows_%26_Linux)

But I don't know it is outdated, or I have particular case, but following this, didn't success for me.
So I will give you my way to do, and few tricks, because some configuration steps are necessary and there is no place aggregating those informations.

In my game, I will have one server per map, because each map must be persistent, and is not upon a player.
So I have to generate one server per map.

Tricks & Settings


If you have already launched your game through commandLine like "ue4editor projectName mapName -server/-game", it is quite simple, because you give in parameters the name of your map.
So in your test, you can go map/through map just changing your command line parameters.

When you generate/package your game, it will fix these setting once per package.
First step, you will have to configure under the editor the maps & modes settings.
In these window, you precise which map the client will start with, and which map the server will start with.


Another trick is about package non ue4 files. I manage some configurations files, or data files (json files) in my game to store dialogs, missions, ..., and these files are open by C++ code.
So Ue4editor didn't consider them like assets. In consequence, when you package your game, those directory, and files are not packaging. so bad....
So go to your settings, packaging settings, I recommand to uncheck use pak file in a first time, because you will be happy to see the package content in the first time to validate its content.

Go down, to to Additionnal non assets directories to package, and browse to your directory to add it to your package.


You can refer to the wiki for other steps until unreal front cooking. I don't use unreal Front to package & prepare my game.
I use Ue4editor, through file->package project.

Packaged


At the end of the processus, you will have a directory "game" with WindowNoEditor, with two directories Engine, and yourGame.
Go through yourGame/Binaries/<platform>/ you must find a yourgame.exe, and yourgameserver.exe.
If you don't have your executable, maybe you forget to generate with visual studio (see the step in the wiki).
In certain case, you have to copy the binaries yourself, from your building directory, to your game package.

That's it. I recommand to through a shell script, or command line to launch with "-log" parameters to check that your server & games runs without problem.

I hope it will help people who want to manage dedicated server.

Thyshimrod

dimanche 14 février 2016

Third Party server with UE4 : part 3 : C++ : connect and read socket

I ve created mainly two functions, one to connect, one other to read socket


I think it is quite easy to understand, and easy to modify to what you need, because apart port and ip, you don't have to modify lot of thing :D.

this->connected, is a variable to store connection status, you can use in a function like isConnected :D


This function will read the socket, retrieve the data in receivedData.
In my case, I will deserialize data from string to json, and I will store the message into a customize class, which will store all message.

This function is called each tick, because I have not lot of information send into these socket.
If you prefer to thread it, you can





Third Party server with UE4 : part 2 : C++ : include package

For now, we need C++ code.
I will not explain how ue manage class, path to includes, and so on. All is not very clear for me.
It seems that when you need to use "package", you have to include it in your build.cs.

Here it is a screenshot of filetree on my computer, of the engine source. In red the non exhaustive list of package under source/runtime.

We will need socket package, and networking, so in my build.cs

using UnrealBuildTool;

public class pocshim : ModuleRules
{
    public pocshim(TargetInfo Target)
    {
        PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore","Blu", "Networking", "Sockets","Json" });

    }
}