Trouble loading custom bot names
And try this option:
#!/bin/bash # Path to the quake3e dedicated binary EXECUTABLE="./quake3e.ded.x64" # Launch the server with appropriate parameters $EXECUTABLE \ +set fs_basepath /q3server \ +set fs_homepath /q3server/config \ +set fs_cdpath /q3server \ +set fs_game excessiveplus \ +set net_port 27960 \ +set net_ip 0.0.0.0 \ +set dedicated 2 \ +set vm_game 1 \ +set com_hunkmegs 256 \ +exec server \ > q3server.log 2>&1
1. I checked the server with vm_game 0 and it doesn't start for me.
2. I checked the server with .cfg extension and it works exactly the same. So that's not the problem.

What I’m currently paying attention to when starting the server are these two messages:
^1ERROR^7: Could not open 'maps/q3dm17.ents'
Warmup:
^3WARNING^7: assigning unknown <Attribute> 'ShootableItems' in r4e09f.cfg on line 85 column 20
Near: ; Corpse { Gib = no; Time = 5; }
1. maps/q3dm17.ents - is the server clean or does it start like the game with some mod? My spawns don't load on DM17 when I start Quake via the RELOAD mod. Because of this, bots don't appear for me. It's not a fact that we have the same problem, but it happens when there are modified .pk3 files.
2. Just comment out the problematic line with two slashes //
Yes, a nuance, if you tried to change the original .pk3 file, then during the new archiving it was saved incorrectly, so if you do not find the problem in the extra .pk3 files that you accidentally downloaded somewhere or this is some kind of custom mod, then update the original .pk3 files.
Yeah, I was thinking about that too, that warning about the missing native binary is exactly what made me start digging deeper. Setting vm_game 1 means using the built-in VM, so the engine runs the qagame module as bytecode through the QVM interpreter instead of loading it as a native shared library.
I wanted to try that mode because, in theory, it should avoid those startup warnings I was getting.
And again, this mode increases cross-platform compatibility since it behaves the same way across all systems. It's a bit slower than native code execution, but on modern hardware, you really won’t notice the difference.