I have spent 30+ hours looking for how I can increase the number of maps shown in the TA menu for multiplayer. I run a server for my friends. I have read that it is hard coded. I found a post from 2018 ( Maps disappearing from Skirmish menu - #8 by zturtleman ). Although referring to skirmishes rather than multiplayer, this post states that a fix to increase the number of maps shown was added to the source of ioquake3. We were not previously using ioquake; but I installed it in hopes of solving the problem. I installed the most recent “Windows” build available from ioquake3.org. It does not fix the issue in a TA multiplayer server. Is there a fix somewhere? If not, I was a programmer. I can do “C” code. However, I do not know how to get the source nor what to use to compile it. I would appreciate any assistance.
it sounds like you are running a server for your friends directly on windows. It would be preferable to set up a dedicated server using the scripts we have for Linux and developing your own map rotation. You should be able to even run these within Windows using WSL2.
First, set up WSL2:
Then please follow the Linux instructions. use our system administrator guide to get started. Sys Admin Guide – ioquake3
There are a number of guides online about setting up dedicated quake 3 servers that can help with developing a configuration specific to your group at this point.
Also you can get our source code by installing a git front end (or it’ll be easier from the WSL2 command line) and using the command:
git clone https://github.com/ioquake/ioq3
Thanks for the response. However, in my group we go round-robin with each player on heir turn selecting a next map of their choosing. With a couple hundred maps we may or may not play a particular map on any given night and certainly never play maps in the same order. For our purposes the best-of-the-best would be an in game call-vote-map menu that showed every map in our collection and that worked in Team Arena.
Problem is, (1) I have not found one available. (2) I know nothing about finding a “git front end”. (3) After changing the code, I know nothing about how to compile a new VM. I say VM because I read someplace that the limiting buffer size code resides in a VM. I was a programmer; but that was 40+ years ago.
The referenced change only affected the Quake 3 menu, not the Team Arena menu that I apparently forgot about.
You can try downloading this ui.qvm and replace ioquake3’s missionpack\vm\ui.qvm file. (This download will be removed later on.)
Hypothetically this increases the Team Arena start server and call vote map limit from 128 maps to 1024. (It’s possible to run out of buffer space for “scripts\*.arena” filenames in add-on pk3 files though so in practice it may not reach 1024.) It seems to work with ~300 maps I have.
It should work in Start Server from the Main Menu and the in-game Call Vote menu if the server was started with Pure Server: No in the Start Server menu.
Let me know if it works or if maps are still missing.
Code patch
diff --git a/code/ui/ui_gameinfo.c b/code/ui/ui_gameinfo.c
index 0721f8b2..719fd574 100644
--- a/code/ui/ui_gameinfo.c
+++ b/code/ui/ui_gameinfo.c
@@ -136,7 +136,7 @@ void UI_LoadArenas( void ) {
int numdirs;
vmCvar_t arenasFile;
char filename[128];
- char dirlist[1024];
+ char dirlist[4096];
char* dirptr;
int i;
int dirlen;
@@ -152,7 +152,7 @@ void UI_LoadArenas( void ) {
}
// get all arenas from .arena files
- numdirs = trap_FS_GetFileList("scripts", ".arena", dirlist, 1024 );
+ numdirs = trap_FS_GetFileList("scripts", ".arena", dirlist, 4096 );
dirptr = dirlist;
for (i = 0; i < numdirs; i++, dirptr += dirlen+1) {
dirlen = strlen(dirptr);
diff --git a/code/ui/ui_local.h b/code/ui/ui_local.h
index ae181823..ffa3f39c 100644
--- a/code/ui/ui_local.h
+++ b/code/ui/ui_local.h
@@ -611,7 +611,7 @@ typedef struct {
#define MAX_HEADNAME 32
#define MAX_TEAMS 64
#define MAX_GAMETYPES 16
-#define MAX_MAPS 128
+#define MAX_MAPS MAX_ARENAS
#define MAX_SPMAPS 16
#define PLAYERS_PER_TEAM 5
#define MAX_PINGREQUESTS 32
Thank you @zturtleman. The UI Enhanced qvm does show all the maps when used in the baseq3 directory. I am, however, confused over how it sorts the maps. I see that in the Quake 3 pak0.pk3 the arena definitions exist in an “arenas.txt” file rather than a xyz.arena file. Perhaps this explains the weird sorting as all of the add-on maps we have use xyz.arena. In addition, the UI Enhanced mod attempts to sort on map-name. My biggest desire now is to have the maps sorted and listed using their “longname” rather then the short map-name. I may try and can change that. Of course that means I also have to figure out how to build new QVM file.
This probably asking to much. Is there any way you could make available to me the necessary .bat file and source so that I might try sorting by “long-name”? I would treat this as a totally private usage of the tools and modified qvm.
I downloaded the ioquake3 source. I downloaded the source for the referenced ui.qvm. However the only .bat files I could find were in the GitHub - id-Software/Quake-III-Arena: Quake III Arena GPL Source Release repository. When I try compiling it fails miserably. My “c” skills are not what they used to be. Sigh.
We don’t use .bat files to compile ioquake3, here are the instructions from our README:
-
Install Visual Studio Community Edition from Microsoft. https://visualstudio.microsoft.com/vs/community/
-
Install CMake https://cmake.org/cmake/download
-
Clone our git repository either using the command-line or a GUI tool:
git clone git://github.com/ioquake/ioq3.git -
Compile using Visual Studio by selecting our CMakeLists.txt and clicking Build.
-
Or using the command-line:
cmake -S . -B build -G "Visual Studio 17 2022" -
cmake --build build --config Release
if you get stuck, please reply and let us know at what point and we will help.