Skip to content

Commit

Permalink
Dedicated Server Build Support for Linux and Windows (#132)
Browse files Browse the repository at this point in the history
* add dedicated server support

* remove unused field

* add for x64 windows

* Fix Server Build not running in headless mode

---------

Co-authored-by: Firdiansyah R <firdi.ansyah20@gmail.com>
  • Loading branch information
firdiar-mita and firdiar authored Aug 19, 2024
1 parent e0ddceb commit 88e8efc
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 9 deletions.
18 changes: 15 additions & 3 deletions Editor/Build/BuildProject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,11 @@ private static bool BuildPlayer(string notification, BuildReleaseType releaseTyp
options = releaseType.buildOptions;
}

if (EditorUserBuildSettings.standaloneBuildSubtarget != architecture.subtarget)
{
EditorUserBuildSettings.standaloneBuildSubtarget = architecture.subtarget;
}

// Save current environment settings
string preBuildDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(platform.targetGroup);
string preBuildCompanyName = PlayerSettings.companyName;
Expand All @@ -356,7 +361,7 @@ private static bool BuildPlayer(string notification, BuildReleaseType releaseTyp
// Generate build path
string buildPath = GenerateBuildPath(BuildSettings.basicSettings.buildPath, releaseType, platform, architecture, scriptingBackend, distribution, buildTime);
string finalBuildName = releaseType.productName;
if(!releaseType.syncAppNameWithProduct)
if (!releaseType.syncAppNameWithProduct)
{
finalBuildName = releaseType.appBuildName;
}
Expand All @@ -376,9 +381,16 @@ private static bool BuildPlayer(string notification, BuildReleaseType releaseTyp

// Build player
FileUtil.DeleteFileOrDirectory(buildPath);

if (architecture.subtarget == StandaloneBuildSubtarget.Server) //without this, server build won't run in headless mode
{
options |= BuildOptions.EnableHeadlessMode;
}
else
{
options &= ~BuildOptions.EnableHeadlessMode;
}

string error = "";

BuildReport buildReport = BuildPipeline.BuildPlayer(new BuildPlayerOptions
{
locationPathName = Path.Combine(buildPath, binName),
Expand Down
6 changes: 4 additions & 2 deletions Editor/Build/Platform/BuildArchitecture.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using UnityEditor;

namespace SuperUnityBuild.BuildTool
Expand All @@ -7,13 +7,15 @@ namespace SuperUnityBuild.BuildTool
public class BuildArchitecture
{
public BuildTarget target;
public StandaloneBuildSubtarget subtarget;
public string name;
public bool enabled;
public string binaryNameFormat;

public BuildArchitecture(BuildTarget target, string name, bool enabled, string binaryNameFormat)
public BuildArchitecture(BuildTarget target, string name, bool enabled, string binaryNameFormat, StandaloneBuildSubtarget subtarget = StandaloneBuildSubtarget.Player)
{
this.target = target;
this.subtarget = subtarget;
this.name = name;
this.enabled = enabled;
this.binaryNameFormat = binaryNameFormat;
Expand Down
6 changes: 4 additions & 2 deletions Editor/Build/Platform/BuildLinux.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using UnityEditor;

namespace SuperUnityBuild.BuildTool
Expand All @@ -13,6 +13,7 @@ public class BuildLinux : BuildPlatform

#endregion


public BuildLinux()
{
enabled = false;
Expand All @@ -27,7 +28,8 @@ public override void Init()
if (architectures == null || architectures.Length == 0)
{
architectures = new BuildArchitecture[] {
new BuildArchitecture(BuildTarget.StandaloneLinux64, "Linux x64", true, "{0}.x86_64")
new BuildArchitecture(BuildTarget.StandaloneLinux64, "Linux x64", false, "{0}.x86_64", StandaloneBuildSubtarget.Player),
new BuildArchitecture(BuildTarget.StandaloneLinux64, "Linux x64 Server", true, "{0}.x86_64", StandaloneBuildSubtarget.Server),
};
}

Expand Down
6 changes: 4 additions & 2 deletions Editor/Build/Platform/BuildPC.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using UnityEditor;

Expand Down Expand Up @@ -41,7 +41,9 @@ public override void Init()
{
architectures = new BuildArchitecture[] {
new BuildArchitecture(BuildTarget.StandaloneWindows, "Windows x86", true, _binaryNameFormats[0]),
new BuildArchitecture(BuildTarget.StandaloneWindows64, "Windows x64", false, _binaryNameFormats[0])
new BuildArchitecture(BuildTarget.StandaloneWindows64, "Windows x64", false, _binaryNameFormats[0]),
new BuildArchitecture(BuildTarget.StandaloneWindows, "Windows x86 Server", false, _binaryNameFormats[0], StandaloneBuildSubtarget.Server),
new BuildArchitecture(BuildTarget.StandaloneWindows64, "Windows x64 Server", false, _binaryNameFormats[0], StandaloneBuildSubtarget.Server),
};
}

Expand Down

0 comments on commit 88e8efc

Please # to comment.