Skip to content

Commit

Permalink
Add dediserver test
Browse files Browse the repository at this point in the history
Add dediserver test
  • Loading branch information
tuntematonjr authored Dec 1, 2024
2 parents b9d43c7 + aafcc35 commit 5859caa
Show file tree
Hide file tree
Showing 4 changed files with 196 additions and 5 deletions.
47 changes: 42 additions & 5 deletions .hemtt/project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,12 @@ enabled = false

[hemtt.launch.default]
workshop = [
"450814997",
"463939057",
"894678801",
"450814997", # CBA
"463939057", # ACE
"894678801", # TFAR
"1776575634",
"623475643",
"1420348567",
"894678801",
]
parameters = [
"-skipIntro", # These parameters are passed to the Arma 3 executable
Expand All @@ -38,4 +37,42 @@ parameters = [
]

[hemtt.release]
folder = "Tun_Utility"
folder = "Tun_Utility"


[hemtt.launch.server]
workshop = [
"450814997", # CBA
"463939057", # ACE
"894678801", # TFAR
"1776575634",
"623475643",
"1420348567",
]
parameters = [
"-server",
"-port=2302",
"-filePatching",
"-cfg=C:\\Users\\mikal\\Documents\\GitHub\\tun-utilities\\server\\server_basic.cfg",
"-config=C:\\Users\\mikal\\Documents\\GitHub\\tun-utilities\\server\\server_config.cfg",
]

[hemtt.launch.player]
workshop = [
"450814997", # CBA
"463939057", # ACE
"894678801", # TFAR
"1776575634",
"623475643",
"1420348567",
]
parameters = [
"-debug",
"-filePatching",
"-world=empty",
"-noPause",
"-noPauseAudio",
"-connect=localHost",
"-port=2302",
"-window",
]
47 changes: 47 additions & 0 deletions debugMultiplayer.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
@echo off

echo Copied from, credits for them: https://github.com/MultiTheFranky/rtf-42nd/blob/main/debugMultiplayer.bat

rem create a loop
:fullLoop

rem Check if HEMMT is installed
if not exist hemtt.exe (
echo Hemtt is not installed, please check the README.
exit
)

rem Launch the HEMTT server
hemtt launch server

rem Check if the process gives an error
if errorlevel 1 goto armaClosed

rem Sleep for 5 seconds
timeout /t 5 >nul

rem Launch the Arma 3 clients (2 clients)
hemtt launch player -i 2 -Q

rem sleep for 5 seconds
timeout /t 5 >nul

rem Check every 1 second if Arma 3 is still running
:loop
tasklist /fi "imagename eq arma3_x64.exe" | find /i /n "arma3_x64.exe" >nul
if errorlevel 1 goto armaClosed
timeout /t 1 >nul
goto loop
:armaClosed

rem Restart options
ECHO 1.Restart only
ECHO 2.Close
ECHO.

CHOICE /C 12 /M "Select an option: "
IF ERRORLEVEL 2 GOTO stopDebug
IF ERRORLEVEL 1 GOTO fullLoop

:stopDebug
exit
25 changes: 25 additions & 0 deletions server/server_basic.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// These options are created by default
language="English";
adapter=-1;
3D_Performance=1.000000;
Resolution_W=800;
Resolution_H=600;
Resolution_Bpp=32;
terrainGrid=25;
viewDistance = 2000;


// These options are important for performance tuning

MinBandwidth = 131072; // Bandwidth the server is guaranteed to have (in bps). This value helps server to estimate bandwidth available. Increasing it to too optimistic values can increase lag and CPU load, as too many messages will be sent but discarded. Default: 131072
MaxBandwidth = 2147483647; // Bandwidth the server is guaranteed to never have. This value helps the server to estimate bandwidth available.

MaxMsgSend = 256; // Maximum number of messages that can be sent in one simulation cycle. Increasing this value can decrease lag on high upload bandwidth servers. Default: 128
MaxSizeGuaranteed = 512; // Maximum size of guaranteed packet in bytes (without headers). Small messages are packed to larger frames. Guaranteed messages are used for non-repetitive events like shooting. Default: 512
MaxSizeNonguaranteed = 256; // Maximum size of non-guaranteed packet in bytes (without headers). Non-guaranteed messages are used for repetitive updates like soldier or vehicle position. Increasing this value may improve bandwidth requirement, but it may increase lag. Default: 256

MinErrorToSend = 0.001; // Minimal error to send updates across network. Using a smaller value can make units observed by binoculars or sniper rifle to move smoother. Default: 0.001
MinErrorToSendNear = 0.01; // Minimal error to send updates across network for near units. Using larger value can reduce traffic sent for near units. Used to control client to server traffic as well. Default: 0.01

MaxCustomFileSize = 160000; // (bytes) Users with custom face or custom sound larger than this size are kicked when trying to connect.
class sockets{ maxPacketSize = 1400;};
82 changes: 82 additions & 0 deletions server/server_config.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
//
// server.cfg
//
// comments are written with "//" in front of them.


// GLOBAL SETTINGS
hostname = "Tun Test"; // The name of the server that shall be displayed in the public server list
password = ""; // Password for joining, eg connecting to the server
passwordAdmin = "isottissit"; // Password to become server admin. When you're in Arma MP and connected to the server, type '#login xyz'
serverCommandPassword = ""; // Password required by alternate syntax of [[serverCommand]] server-side scripting.
logFile = "server_console.log"; // Tells ArmA-server where the logfile should go and what it should be called
admins[] = {
""
};


// WELCOME MESSAGE
motd[] = {
""
};
motdInterval = 0; // Time interval (in seconds) between each message
drawingInMap = false;

// JOINING RULES
maxPlayers = 32; // Maximum amount of players. Civilians and watchers, beholder, bystanders and so on also count as player.
kickDuplicate = 0; // Each ArmA version has its own ID. If kickDuplicate is set to 1, a player will be kicked when he joins a server where another player with the same ID is playing.
verifySignatures = 0; // Verifies .pbos against .bisign files. Valid values 0 (disabled), 1 (prefer v2 sigs but accept v1 too) and 2 (only v2 sigs are allowed).
allowedFilePatching = 2; // Allow or prevent client using -filePatching to join the server. 0, is disallow, 1 is allow HC, 2 is allow all clients (since Arma 3 1.49+)

steamProtocolMaxDataSize = 1024; // Increasing this value will fix the modlist length limit in Arma 3 Launcher but mignt not be supported by some routers.
loopback = 1; // Enforces LAN only mode.
upnp = 0; // This setting might slow up server start-up by 600s if blocked by firewall or router.

// VOTING
voteMissionPlayers = 1; // Tells the server how many people must connect so that it displays the mission selection screen.
voteThreshold = 0; // 33% or more players need to vote for something, for example an admin or a new map, to become effective
allowedVoteCmds[] = {};
allowedVotedAdminCmds[] = {};


// INGAME SETTINGS
disableVoN = 1; // If set to 1, Voice over Net will not be available
vonCodec = 0; // If set to 1 then it uses IETF standard OPUS codec, if to 0 then it uses SPEEX codec (since Arma 3 update 1.58+)
skipLobby = 0; // Overridden by mission parameters
vonCodecQuality = 3; // since 1.62.95417 supports range 1-20 //since 1.63.x will supports range 1-30 //8kHz is 0-10, 16kHz is 11-20, 32kHz(48kHz) is 21-30
persistent = 0; // If 1, missions still run on even after the last player disconnected.
timeStampFormat = "short"; // Set the timestamp format used on each report line in server-side RPT file. Possible values are "none" (default),"short","full".
BattlEye = 0; // Server to use BattlEye system

// TIMEOUTS
disconnectTimeout = 0; // Time to wait before disconnecting a user which temporarly lost connection. Range is 5 to 90 seconds.
maxDesync = 150; // Max desync value until server kick the user
maxPing= 200; // Max ping value until server kick the user
maxPacketLoss= 50; // Max packetloss value until server kick the user
kickClientsOnSlowNetwork[] = { 0, 0, 0, 0 }; //Defines if {<MaxPing>, <MaxPacketLoss>, <MaxDesync>, <DisconnectTimeout>} will be logged (0) or kicked (1)
lobbyIdleTimeout = -1; // The amount of time the server will wait before force-starting a mission without a logged-in Admin.


// SCRIPTING ISSUES
onUserConnected = ""; //
onUserDisconnected = ""; //
doubleIdDetected = ""; //

// SIGNATURE VERIFICATION
onUnsignedData = "kick (_this select 0)"; // unsigned data detected
onHackedData = "kick (_this select 0)"; // tampering of the signature detected
onDifferentData = ""; // data with a valid signature, but different version than the one present on server detected


// MISSIONS CYCLE (see below)
randomMissionOrder = False; // Randomly iterate through Missions list
autoSelectMission = False; // Server auto selects next mission in cycle

class Missions {
}; // An empty Missions class means there will be no mission rotation

missionWhitelist[] = {};
// An empty whitelist means there is no restriction on what missions available

// HEADLESS CLIENT

0 comments on commit 5859caa

Please sign in to comment.