eukara / freecs

Clean-room Counter-Strike 1.5 in QuakeC, using Nuclide SDK. Previously known as OpenCS! (2016)
https://www.frag-net.com/projects.html
ISC License
183 stars 16 forks source link

dedicated server #36

Closed atomGit closed 4 months ago

atomGit commented 4 months ago

is a dedicated server possible?

i'd like to install a dedicated server on an Arch VPS

i started playing around with this but there seems to be very little documentation on fteqw (fteqw-sv64 -h/--help for example simply tries to start the engine)

$ ./fteqw-sv64
Binary is located at "/storage/Downloads/freecs/game/"
couldn't exec masters.lst
couldn't exec cvars.cfg
Couldn't load plugin ffmpeg
execing server.cfg
Unknown command "sv_clienttrace"
couldn't exec ftesrv.cfg
Exe: FTE git-6496-eb6b127d9
======== Half-Life Initialized ========
Current search path:
 ----------
 ./valve  (e)(w)
 ./valve/zpak001.pk3  (h)
 ./valve/platform.pk3  (h)
 ./valve/platform.pk3/vmap_tex.pk3  (h)
 ./valve/platform.pk3/menu_fonts.pk3  (h)
 ./valve/platform.pk3/menu_fallback.pk3  (h)
 ./valve/platform.pk3/base_textures.pk3  (h)
 ./valve/platform.pk3/base_scripts.pk3  (h)
 ./valve/platform.pk3/base_postproc.pk3  (h)
 ./valve/platform.pk3/base_models.pk3  (h)
 ./valve/platform.pk3/base_glsl.pk3  (h)
 ./valve/dlcache/addon_furtherdata.pk3.63ef2011  (c)(u)(h)
 ./valve/dlcache/pak_patch1110.pk3.b34e619f  (c)(u)(h)
 ./valve/pak0.pak  (c)(h)
 ./platform  (e)(w)
SV_Error: Couldn't load a map. You may need to use the -basedir argument.
Fatal error: SV_Error: Couldn't load a map. You may need to use the -basedir argument.

setting -basedir to anything other than the current directory doesn't seem to work

eukara commented 4 months ago

I have shared my configs and systemd unit files for the test/development servers here: https://code.idtech.space/eukara/fhl-server-configs

The FreeCS specific server config is here: https://code.idtech.space/eukara/fhl-server-configs/src/branch/master/cstrike/server.cfg

The error you got is because no level to play on was specified. You can generally put the one the server should start on at the bottom of the config.

Once you have a custom server.cfg, you can then launch fteqw-sv like this:

./fteqw-sv64 -halflife -game cstrike +exec customServer.cfg

Hope this helps, let me know if anything else is unclear!

atomGit commented 4 months ago

thanks!

server appears to work, but i'm having trouble connecting

./fteqw64 -halflife -game cstrike +connect <ip:port>

freecs loads to a dark screen (with a background image) and then nothing

i didn't use the bootstrap script, nor the systemd configs - i just downloaded and extracted freehl, freecs and fteqw-sv64 onto the server using a non-root account

i think this is a firewall issue - both sides are firewalled (ufw) - on the client i'm not opening any ports and on the server side i'm opening only whatever port the server runs on, but if memory serves, isn't there a range of ports that have to be opened for the server?

the server seems to start ok... ``` $ ./fteqw-sv64 -halflife -game cstrike +exec server.cfg Binary is located at "/home/atom/freecs/" execing server.cfg --------- Initializing Server Game ---------- Built: Tue 18 Apr 2023 20:22 QCC: FTEQCC git-6408-d76d14294 2023-04-16 --------- Initializing Plugins ---------- no plugins.txt found. --------- Initializing SoundDef (SERVER) ---------- allocated 26624 bytes for soundDef sfx sample misc/missing.wav does not exist! SoundDef initialized. --------- Initializing PropDefs (SERVER) ---------- allocated 6656 bytes for prop data. allocated 1024 bytes for breakmodels. PropData initialized. --------- Initializing Surface Data ---------- sfx sample debris/glass1.wav does not exist! [bunch of lines removed] sfx sample player/pl_sand4.wav does not exist! surface data initialized with 21 entries. --------- Initializing Decal Groups ---------- decal groups initialized with 7 entries. --------- Initializing Material Data ---------- material data initialized with 2766 entries. sfx sample weapons/explode3.wav does not exist! [bunch of lines removed] sfx sample weapons/explode4.wav does not exist! --------- Initializing SentencesDef (SERVER) ---------- SentencesDef initialized with 574 entries. couldn't exec ftesrv.cfg --------- Map Initialization --------- Map: de_dust2 ----------- Game Map Init ------------ Spawning entities ...101 entities spawned (1 inhibited) Server spawned. execing server.cfg --------- Initializing Server Game ---------- Built: Tue 18 Apr 2023 20:22 QCC: FTEQCC git-6408-d76d14294 2023-04-16 --------- Initializing Plugins ---------- no plugins.txt found. --------- Initializing SoundDef (SERVER) ---------- allocated 26624 bytes for soundDef sfx sample misc/missing.wav does not exist! SoundDef initialized. --------- Initializing PropDefs (SERVER) ---------- allocated 6656 bytes for prop data. allocated 1024 bytes for breakmodels. PropData initialized. --------- Initializing Surface Data ---------- sfx sample debris/glass1.wav does not exist! [bunch of lines removed] sfx sample player/pl_sand4.wav does not exist! surface data initialized with 21 entries. --------- Initializing Decal Groups ---------- decal groups initialized with 7 entries. --------- Initializing Material Data ---------- material data initialized with 2766 entries. sfx sample weapons/explode3.wav does not exist! [bunch of lines removed] sfx sample weapons/explode4.wav does not exist! --------- Initializing SentencesDef (SERVER) ---------- SentencesDef initialized with 574 entries. --------- Map Initialization --------- Map: de_dust2 ----------- Game Map Init ------------ Spawning entities ...101 entities spawned (1 inhibited) Server spawned. Exe: FTE git-6496-eb6b127d9 ======== Half-Life Initialized ======== Publicly listening on /4522 ```
the client says... ``` $ ./fteqw64 -halflife -game cstrike +connect :4523 Binary is located at "/home/atom/Games/freecs/" couldn't exec masters.lst couldn't exec cvars.cfg Couldn't load plugin ffmpeg ====================== CS AUTOEXEC.CFG LOADED ====================== Engine Version: FTE build Jan 15 2023 Setting fullscreen windowed OpenGL Found monitor HDMI-A-0 1920x1080 0,0 GL_VENDOR: AMD GL_RENDERER: AMD Radeon Vega 11 Graphics (radeonsi, raven, LLVM 16.0.6, DRM 3.57, 6.7.4-2-MANJARO) GL_VERSION: 4.6 (Compatibility Profile) Mesa 23.3.5-manjaro1.1 Mesa detected, disabling the use of glsl's invariant keyword. This will result in z-fighting. Use '+set gl_blacklist_mesa_invariant 0' on the commandline to reenable it (but you will probably get glsl compilation errors from your driver). Initiating OpenAL: OpenAL Soft. AL_HRTF_STATUS: DISABLED. OpenGL renderer initialized ------- Half-Life Initialized ------- --------- Initializing Menu ---------- Built: Tue 18 Apr 2023 20:22 QCC: FTEQCC git-6408-d76d14294 2023-04-16 loaded font definition for fonts/fontcon.font loaded font definition for fonts/menu_label.font loaded font definition for fonts/menu_main.font loaded font definition for fonts/menu_label_bold.font loaded font definition for fonts/menu_header.font WARNING: Unknown widget type "LIST" for cvar "fastsprites", ignoring WARNING: Unknown widget type "LIST" for cvar "cl_righthand", ignoring WARNING: Unknown widget type "LIST" for cvar "_vgui_menus", ignoring WARNING: Unknown widget type "LIST" for cvar "mp_forcecamera", ignoring Couldn't load plugin 2 Connecting to :4523... Connecting to :4523... Connecting to :4523... Wrote /home/atom/Games/freecs/cstrike/game.cfg ```
atomGit commented 4 months ago

i assumed the fte console output gave the correct port so i never biothered to check what port the server is actually running on, which brings up two questions:

  1. can the fte server port be changed? sv_port seems to have no effect
  2. why does fte report it's listening on port 45xx when ss -lntu says it's listening on 27500?

when i open 27500 on the server side, the client output is a bit different - mainly "Game mismatch: This is a FTE-HalfLife server"

com_protocolname reports nuclicide (i think - the font very small)

server command: ./fteqw-sv64 +sv_public 0 -halflife -game cstrike +exec server.cfg client command: ./fteqw64 -halflife -game cstrike +connect <ip>:27500

console output ``` $ ./fteqw64 -halflife -game cstrike +connect :27500 Binary is located at "/home/atom/Games/freecs/" couldn't exec masters.lst couldn't exec cvars.cfg Couldn't load plugin ffmpeg ====================== CS AUTOEXEC.CFG LOADED ====================== Engine Version: FTE build Jan 15 2023 Setting fullscreen windowed OpenGL Found monitor HDMI-A-0 1920x1080 0,0 GL_VENDOR: AMD GL_RENDERER: AMD Radeon Vega 11 Graphics (radeonsi, raven, LLVM 16.0.6, DRM 3.57, 6.7.4-2-MANJARO) GL_VERSION: 4.6 (Compatibility Profile) Mesa 23.3.5-manjaro1.1 Mesa detected, disabling the use of glsl's invariant keyword. This will result in z-fighting. Use '+set gl_blacklist_mesa_invariant 0' on the commandline to reenable it (but you will probably get glsl compilation errors from your driver). Initiating OpenAL: OpenAL Soft. AL_HRTF_STATUS: DISABLED. OpenGL renderer initialized ------- Half-Life Initialized ------- --------- Initializing Menu ---------- Built: Tue 18 Apr 2023 20:22 QCC: FTEQCC git-6408-d76d14294 2023-04-16 loaded font definition for fonts/fontcon.font loaded font definition for fonts/menu_label.font loaded font definition for fonts/menu_main.font loaded font definition for fonts/menu_label_bold.font loaded font definition for fonts/menu_header.font WARNING: Unknown widget type "LIST" for cvar "fastsprites", ignoring WARNING: Unknown widget type "LIST" for cvar "cl_righthand", ignoring WARNING: Unknown widget type "LIST" for cvar "_vgui_menus", ignoring WARNING: Unknown widget type "LIST" for cvar "mp_forcecamera", ignoring Couldn't load plugin 2 Connecting to :27500... :27500: print Game mismatch: This is a FTE-HalfLife server Connecting to :27500... :27500: print Game mismatch: This is a FTE-HalfLife server Connecting to :27500... :27500: print Game mismatch: This is a FTE-HalfLife server Wrote /home/atom/Games/freecs/cstrike/game.cfg ```
xplshn commented 4 months ago

Out of curiosity, will the server be public? FreeCS is cool but I ain't got no one to play it with, sadly.

atomGit commented 4 months ago

hi @xplshn - i'm not sure whether it will be public or semi-private - for now i just want to see if it's a doable endeavor and try to see what the security implications are

that said, i'd be glad to accommodate you when (if?) i get this all working - i bookmarked your comment so i can remember to look you up

ELinks looks interesting - scarfed that from your neocities site

atomGit commented 4 months ago

@xplshn - was reading your blog - seems we have a common opinion regarding what the interwebs has devolved into - get a hold of me at... [removed]

xplshn commented 4 months ago

Got it, sent you an email, and also, thanks for reading my blog.

xplshn commented 4 months ago

Hmm, have you tried to run it in a container? In order to isolate it from the rest of the server. It does not add any overhead to use Docker/Podman, etc.

March 3, 2024 at 12:58 AM, "atomGit" @.***> wrote:

hi @xplshn https://github.com/xplshn - i'm not sure whether it will be public or semi-private - for now i just want to see if it's a doable endeavor and try to see what the security implications are

that said, i'd be glad to accommodate you when (if?) i get this all working - i bookmarked your comment so i can remember to look you up

ELinks looks interesting - scarfed that from your neocities site

Reply to this email directly, view it on GitHub https://github.com/eukara/freecs/issues/36#issuecomment-1975012219 , or unsubscribe https://github.com/notifications/unsubscribe-auth/A3MRASS7XDR7CKA3S7565VTYWKNV3AVCNFSM6AAAAABEA7T6M6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNZVGAYTEMRRHE .

You are receiving this because you were mentioned.

atomGit commented 4 months ago

no matter what i try the client keeps responding... Game mismatch: This is a FTE-HalfLife server

server file structure:

~/freehl
..crash.log
..default.fmf
..fteqw-sv64
..fullchain.pem
..privkey.pem

~/freehl/cstrike
../platform
..csprogs.dat
..ftesrv.cfg
..mapcycle.txt
..motd.txt
..pak0.pk3
..progs.dat
..server.cfg
..ssqccore.txt
..zpak001.pk3

~/freehl/valve
..csprogs.dat
..menu.dat
..platform.pk3
..progs.dat
..zpak001.pk3

server command: $ ./fteqw-sv64 -halflife -game cstrike +sv_public 0 +set deathmatch 1 +exec server.cfg client command: $ ./fteqw64 -halflife -game cstrike +connect <ip>

server does not exec fteqw.cfg... couldn't exec ftesrv.cfg i tried putting the file in the root of the game dir along side fteqw-sv64, as well as in the cstrike folder - is this file needed and, if so, how to exec it?

default.fmf (server) ``` FTEMANIFEST 1 GAME valve ( i tried changing to 'cstrike') NAME "Half-Life" BASEGAME platform BASEGAME valve ( i tried changing to 'cstrike') // you don't really want to change these RTCBROKER master.frag-net.com:27950 PROTOCOLNAME "Nuclide" MAINCONFIG game.cfg DOWNLOADSURL "http://www.frag-net.com/dl/packages" -exec platform_default.cfg // load ffmpeg for the logo.avi file -plug_load ffmpeg // override some liblist.gam entries -set gameinfo_chatroom "halflife" ```
cstrike/server.cfg (server) ``` hostname "FreeCS Test Server" set sv_public 0 set deathmatch 1 set coop 0 set maxplayers 3 set timelimit 20 set pausable 0 map de_dust2 ```
default.fmf (client) ``` FTEMANIFEST 1 GAME valve NAME "Half-Life" BASEGAME platform BASEGAME valve // you don't really want to change these RTCBROKER master.frag-net.com:27950 PROTOCOLNAME "Nuclide" MAINCONFIG game.cfg DOWNLOADSURL "http://www.frag-net.com/dl/packages" -exec platform_default.cfg // load ffmpeg for the logo.avi file -plug_load ffmpeg // override some liblist.gam entries -set gameinfo_chatroom "halflife" ```
server console... ``` $ ./fteqw-sv64 -halflife -game cstrike +sv_public 0 +set deathmatch 1 +exec server.cfg Binary is located at "/home/atom/freecs/" execing server.cfg --------- Initializing Server Game ---------- Built: Tue 18 Apr 2023 20:22 QCC: FTEQCC git-6408-d76d14294 2023-04-16 --------- Initializing Plugins ---------- no plugins.txt found. --------- Initializing SoundDef (SERVER) ---------- allocated 26624 bytes for soundDef sfx sample misc/missing.wav does not exist! SoundDef initialized. --------- Initializing PropDefs (SERVER) ---------- allocated 6656 bytes for prop data. allocated 1024 bytes for breakmodels. PropData initialized. --------- Initializing Surface Data ---------- sfx sample debris/glass1.wav does not exist! [extra lines removed] surface data initialized with 21 entries. --------- Initializing Decal Groups ---------- decal groups initialized with 7 entries. --------- Initializing Material Data ---------- material data initialized with 2766 entries. sfx sample weapons/explode3.wav does not exist! [extra lines removed] --------- Initializing SentencesDef (SERVER) ---------- SentencesDef initialized with 574 entries. execing ftesrv.cfg --------- Map Initialization --------- Map: de_dust2 ----------- Game Map Init ------------ Spawning entities ...101 entities spawned (1 inhibited) Server spawned. execing server.cfg --------- Initializing Server Game ---------- Built: Tue 18 Apr 2023 20:22 QCC: FTEQCC git-6408-d76d14294 2023-04-16 --------- Initializing Plugins ---------- no plugins.txt found. --------- Initializing SoundDef (SERVER) ---------- allocated 26624 bytes for soundDef sfx sample misc/missing.wav does not exist! SoundDef initialized. --------- Initializing PropDefs (SERVER) ---------- allocated 6656 bytes for prop data. allocated 1024 bytes for breakmodels. PropData initialized. --------- Initializing Surface Data ---------- sfx sample debris/glass1.wav does not exist! [extra lines removed] surface data initialized with 21 entries. --------- Initializing Decal Groups ---------- decal groups initialized with 7 entries. --------- Initializing Material Data ---------- material data initialized with 2766 entries. sfx sample weapons/explode3.wav does not exist! [extra lines removed] --------- Initializing SentencesDef (SERVER) ---------- SentencesDef initialized with 574 entries. --------- Map Initialization --------- Map: de_dust2 ----------- Game Map Init ------------ Spawning entities ...101 entities spawned (1 inhibited) Server spawned. Exe: FTE git-6496-eb6b127d9 ======== Half-Life Initialized ======== ^C ```

also what about game.cfg? is it needed? what goes in it? where does it need to reside?

same questions for platform_default.cfg

eukara commented 4 months ago

Get rid of any FreeHL/FreeCS files (Including the default.fmf file). Some changes have happened recently to make installation a lot easier. Newer release builds don't have it (like those on Frag-Net.com. Just grab the two .pk3 files for FreeHL and FreeCS, shove them into valve/ and cstrike/ respectively. The -halflife switch will also set com_protocolname to FTE-HalfLife. A default.fmf will override that.

The bootstrap script basically just extracts the content, downloads the latest .pk3 files and moves them in the right place. If you have issues still, you can try that too.

I should also note that the sv_public 2 setting you may want to switch to 1. The value 2 will make it use frag-net.com's RTC broker (meaning no port forwarding) which is also the default when hosting games through the menu.

atomGit commented 4 months ago

this is getting very confusing and i'm getting no where fast - again, i keep getting the same message with or without a default.fmf...

Game mismatch: This is a FTE-HalfLife server

imagine you want to set up a dedicated cs server and a client to connect to that server - you're starting with nothing...

eukara commented 4 months ago

Well, I have shared the bootstrap script for the server.

As for the client, without having to compile anything at all - no git, no building of any code (including QuakeC) you only need the following:

  1. Half-Life, the CD-ROM version. Some installation patched to version 1.1.1.0 ideally. There are some scripts in the git repo that can help with extracting content from the disk under Linux. But most people already have an installation around.
  2. Counter-Strike 1.5, installed within that directory as you do with any other mod.
  3. FreeHL saved under Half-Life/valve/package_valve.pk3
  4. FreeCS saved under Half-Life/cstrike/package_cstrike.pk3
  5. FTEQW. Placed in the root dir of Half-Life, or your PATH or whatever.

FTEQW should auto-detect it as Half-Life. It is programmed to look for valve/liblist.gam, and if that exists launch with the -halflife settings. So even simply running fteqw is supposed to launch at least Half-Life. At least if you're running a recent version.

Last resort for your current situation: You can always override com_protocolname if something, somehow is setting it to the wrong value. Do set com_protocolname FTE-HalfLife in console before connecting and that should always work.

atomGit commented 4 months ago

on Arch the bootstrap script dies when trying to compile rewise:

[$MAKETOOL CC=cc](freehlded-bootstrap.sh: line 107: CC=cc: command not found)

solved by compiling rewise locally and copying it to the server (i don't have the AUR enabled on the remote side)

atomGit commented 4 months ago

update: this issue is solved in my next post, however the build logs don't look too healthy to me (see attached)

same issue: Game mismatch: This is a FTE-HalfLife server

here's what i did on the server side to get a cs dedicated server...

  1. followed instructions exactly: https://code.idtech.space/eukara/fhl-server-configs
  2. ran the copy-cfgs.sh script - i didn't touch any files afterwards except i changed set sv_public 0
  3. ./fteqw-sv64 -halflife -game cstrike +sv_public 0 +set deathmatch 1 +set maxplayers 16 +map de_dust2

on the client side...

  1. followed the build instructions exactly in the ReadMe.md on this repo
  2. grabbed the game data files using the install_from_archiveorg.sh script
  3. ./fteqw64 -halflife -game cstrike +connect

again, i didn't edit any of the files

server output... ``` $ ./fteqw-sv64 -halflife -game cstrike +sv_public 0 +set deathmatch 1 +set maxplayers 16 +map de_dust2 Binary is located at "/home/atom/freehl/" execing server.cfg Plugin_Init: No plugins.txt found. Plugins disabled. precache_sound: SFX sample "debris/flesh4.wav" does not exist. precache_sound: SFX sample "player/pl_sand1.wav" does not exist. precache_sound: SFX sample "player/pl_sand2.wav" does not exist. precache_sound: SFX sample "player/pl_sand3.wav" does not exist. precache_sound: SFX sample "player/pl_sand4.wav" does not exist. Generating new GNUTLS key+cert... Wrote ./privkey.pem Wrote ./fullchain.pem Certificate generated Sound_Precache: No SoundDef "Player.Pain" found. couldn't exec ftesrv.cfg MapTweaks_Init: Missing file scripts/maptweaks.txt NSIO::SpawnKey (0): worldspawn has unknown key "mapversion" with value "220" NSIO::SpawnKey (170): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (171): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (172): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (188): func_bomb_target has unknown key "target" with value "tgt_b" NSIO::SpawnKey (206): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (207): func_illusionary has unknown key "zhlt_lightflags" with value "3" NSIO::SpawnKey (208): func_illusionary has unknown key "zhlt_lightflags" with value "3" NSIO::SpawnKey (209): func_illusionary has unknown key "zhlt_lightflags" with value "3" NSIO::SpawnKey (210): func_illusionary has unknown key "zhlt_lightflags" with value "3" NSIO::SpawnKey (215): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (217): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (218): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (219): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (220): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (221): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (222): func_bomb_target has unknown key "target" with value "tgt_a" NSIO::SpawnKey (264): trigger_camera has unknown key "deceleration" with value "500" NSIO::SpawnKey (264): trigger_camera has unknown key "acceleration" with value "500" NSIO::SpawnKey (265): trigger_camera has unknown key "deceleration" with value "500" NSIO::SpawnKey (265): trigger_camera has unknown key "acceleration" with value "500" NSIO::SpawnKey (267): trigger_camera has unknown key "deceleration" with value "500" NSIO::SpawnKey (267): trigger_camera has unknown key "acceleration" with value "500" Server spawned. Plugin_Init: No plugins.txt found. Plugins disabled. precache_sound: SFX sample "debris/flesh4.wav" does not exist. precache_sound: SFX sample "player/pl_sand1.wav" does not exist. precache_sound: SFX sample "player/pl_sand2.wav" does not exist. precache_sound: SFX sample "player/pl_sand3.wav" does not exist. precache_sound: SFX sample "player/pl_sand4.wav" does not exist. Sound_Precache: No SoundDef "Player.Pain" found. MapTweaks_Init: Missing file scripts/maptweaks.txt NSIO::SpawnKey (0): worldspawn has unknown key "mapversion" with value "220" NSIO::SpawnKey (170): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (171): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (172): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (188): func_bomb_target has unknown key "target" with value "tgt_b" NSIO::SpawnKey (206): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (207): func_illusionary has unknown key "zhlt_lightflags" with value "3" NSIO::SpawnKey (208): func_illusionary has unknown key "zhlt_lightflags" with value "3" NSIO::SpawnKey (209): func_illusionary has unknown key "zhlt_lightflags" with value "3" NSIO::SpawnKey (210): func_illusionary has unknown key "zhlt_lightflags" with value "3" NSIO::SpawnKey (215): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (217): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (218): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (219): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (220): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (221): func_breakable has unknown key "gibmodel" with value "models/mil_crategibs.mdl" NSIO::SpawnKey (222): func_bomb_target has unknown key "target" with value "tgt_a" NSIO::SpawnKey (264): trigger_camera has unknown key "deceleration" with value "500" NSIO::SpawnKey (264): trigger_camera has unknown key "acceleration" with value "500" NSIO::SpawnKey (265): trigger_camera has unknown key "deceleration" with value "500" NSIO::SpawnKey (265): trigger_camera has unknown key "acceleration" with value "500" NSIO::SpawnKey (267): trigger_camera has unknown key "deceleration" with value "500" NSIO::SpawnKey (267): trigger_camera has unknown key "acceleration" with value "500" Server spawned. Exe: FTE git-6496-eb6b127d9 ======== Half-Life Initialized ======== ```
client output... ``` $ ./fteqw64 -halflife -game cstrike +connect Binary is located at "/home/atom/Games/freehl/" couldn't exec config.cfg couldn't exec nuclide.cfg couldn't exec autoexec.cfg Engine Version: FTE build Jan 15 2023 Setting fullscreen windowed OpenGL Found monitor HDMI-A-0 1920x1080 0,0 GL_VENDOR: AMD GL_RENDERER: AMD Radeon Vega 11 Graphics (radeonsi, raven, LLVM 16.0.6, DRM 3.57, 6.7.4-2-MANJARO) GL_VERSION: 4.6 (Compatibility Profile) Mesa 23.3.5-manjaro1.1 Mesa detected, disabling the use of glsl's invariant keyword. This will result in z-fighting. Use '+set gl_blacklist_mesa_invariant 0' on the commandline to reenable it (but you will probably get glsl compilation errors from your driver). Initiating OpenAL: OpenAL Soft. AL_HRTF_STATUS: DISABLED. OpenGL renderer initialized ------- Nuclide Initialized ------- Connecting to ... :27500: print Game mismatch: This is a FTE-HalfLife server Connecting to ... :27500: print Game mismatch: This is a FTE-HalfLife server ```

build logs attached...

logs.txt

eukara commented 4 months ago

So you're still compiling FreeCS etc. yourself. While you don't have to do that, since the game-logic is architecture/platform independent, here's what you will have to do:

If you want to play with release builds, you can copy the csprogs.dat and progs.dat over into a non development directory, using the client instructions I stated above. You could also change the default.fmf, which seems to still be present somewhere, to be FTE-HalfLife instead of Nuclide. Or manually change it via the console as stated in my last post.

The git is for development, there's a few key differences between development builds of games (the platform directory does not exist). It's also why they're under a different protocol (Nuclide as opposed to FTE-HalfLife). Not every Nuclide game should be able to connect to a Half-Life game. Like The Wastes for example. Otherwise they will show up in each others server browsers. They also avoids some directory conflicts with other mods/games.

I will try to give the game specific Makefiles a bit more capability into building a proper release build. I expected most people to just download the release archives because bootstrapping a game-engine, plus compilers and game-logic just to play it is really a lot to ask.

And when you're building/modifying FreeHL/FreeCS code, the only artifacts of importance are valve/menu.dat, valve/progs.dat, valve/csprogs.dat, cstrike/progs.dat and cstrike/csprogs.dat.

gamedir/zpak*.pk3dir contains scripts and other assets that the .dat files need to run. That gets compressed into a pk3 (zip) file and attached to the release builds. In the development directory it's merely a directory (for obvious reasons) but that also means it cannot be checked for purity. Which is what some servers do (see the cvar sv_pure) to check if you're running an unmodified game. Which is also why development builds (even when forcing the protocol) won't be able to connect to some servers.

atomGit commented 4 months ago

finally .... !!! SUCCESS !!!

set com_protocolname FTE-HalfLife in console before connecting did the trick

why is that necessary though?

atomGit commented 4 months ago

sorry, i didn't yet see your comment when i made my last post - i will look that over carefully

atomGit commented 4 months ago

So you're still compiling FreeCS etc. yourself.

well, i wasn't, but i thought that might solve my 'game mismatch' issue - i found i also really like the clear and plain nuclide UI vs. the usual HL/CS UI

You could also change the default.fmf, which seems to still be present somewhere ...

yes, it is - perhaps in the hlserver4110.exe archive

so when you say it isn't necessary to build, you're talking strictly about the client, correct? running the server bootstrap script is still the best way to go on the server side, yes?

ps: can't hardly describe how cool it was when i finally connected to the server! awsome!

eukara commented 4 months ago

Technically all you would ever need to build is FTEQW. FreeCS and FreeHL are 100% QuakeC. The menu, the client and server logic is 100% platform independent and portable. Running solely through FTEQW's QCVM. Doesn't matter if client or server. This means if someone ported FTEQW by itself to some esoteric platform, like the PS Vita, all these games should just run as-is

atomGit commented 4 months ago

default.fmf is in your latest freehl release: valve-04-18-2023.zip

just mentioning because you seemed to not be certain :)

atomGit commented 4 months ago

update: given recent updates this post became obsolete

You could also change the default.fmf, which seems to still be present somewhere, to be FTE-HalfLife instead of Nuclide

that was the problem all along - with your release builds of hl/cs that fmf needs to be present and PROTOCOLNAME set to "FTE-HalfLife"

if the file isn't there, Game mismatch: This is a FTE-HalfLife server

and of course the other option is to specify that in the game console before connect as you said

i'm working on a readme for all this

eukara commented 4 months ago

default.fmf is in your latest freehl release: valve-04-18-2023.zip

just mentioning because you seemed to not be certain :)

They're the latest release... on GitHub. I admit I have not been uploading new releases here due to a growing dislike of this platform. Edit: Went ahead and uploaded new builds on GH.

atomGit commented 4 months ago

... due to a growing dislike of this platform

i hear ya, though in my case it's probably for a different reason (owned by microsuck)

atomGit commented 4 months ago

@eukara - is there any ability to admin (rcon) a server (or 3rd party tool)?

ok, looks like rcon is available, but how is the password set?

also, can a password for the server be set? i tried set sv_password "<password>" in cstrike/server.cfg but it doesn't seem to have an effect - i tried sending the password a bunch of different ways on the client side

atomGit commented 4 months ago

freehlded-bootstrap.sh: line 116: CC=cc: command not found

as mentioned, i have the server working, however i'm trying to figure this out - i'm a dummy with compiling anything

$ command -v cc
/usr/bin/cc

$ command -v gcc
/usr/bin/gcc

so why then CC=cc: command not found?

for $MAKETOOL CC=cc i tried CC=gcc, CC=/usr/bin/gcc , CC=/usr/bin/cc

this is on Manjaro (Arch for dummies!)

eukara commented 4 months ago

Looks like MAKETOOL wasn't being checked right. Try now!

atomGit commented 4 months ago

works like a champ!