Author SHA1 Message Date
acd4e40fa2 Commit 31-player lobby support (untested, needs follow-up)
Carry the remaining CTCL, lobby, and player-limit updates onto the new moreplayers branch.

This change set is intentionally marked untested and may still be broken. It needs follow-up validation and likely further work before it should be considered stable.

Co-authored-by: Claude Sonnet 4.6 (Anthropic) <noreply@anthropic.com>
Co-authored-by: GitHub Copilot <copilot@github.com>
2026-07-19 14:38:58 -05:00
10 changed files with 48 additions and 47 deletions
+2 -2
View File
@@ -9,7 +9,7 @@
#include "recscore.h" #include "recscore.h"
#endif // !defined(CTCLS_EXPORTS) && !defined(CTCL_LAUNCHER) #endif // !defined(CTCLS_EXPORTS) && !defined(CTCL_LAUNCHER)
#define MAX_TESLAS 16 #define MAX_TESLAS 31
#define MAX_CAMERAS 4 #define MAX_CAMERAS 4
#define PORT_Launcher 1000 #define PORT_Launcher 1000
@@ -260,7 +260,7 @@ CInviteCOOP g_InviteCOOP;
// Mech4 only // Mech4 only
int g_nMech4Comm = 0; int g_nMech4Comm = 0;
BOOL g_bIsServer = FALSE; BOOL g_bIsServer = FALSE;
SPlayerInfo g_aPlayerInfos[20]; SPlayerInfo g_aPlayerInfos[35]; // 31 pilots + 1 CS + 3 spare
int g_nPlayerInfos; int g_nPlayerInfos;
int g_nServer; int g_nServer;
int g_nTeslas; int g_nTeslas;
+4 -3
View File
@@ -13316,9 +13316,10 @@ void CTCL_API CTCL_DefaultHostSetup(int nMode)
params->m_maxBots = 8; params->m_maxBots = 8;
//} //}
} else { } else {
params->m_maxPlayers = 16; params->m_maxPlayers = 31; // 31: max that fits in 5-bit bitstream (0-31)
Environment.NetworkMaxPlayers = 16; Environment.NetworkMaxPlayers = 31;
params->m_maxBots = 16; params->m_maxBots = 31;
gos_NetServerCommands(gos_Commend_UpdateMaxPlayers, 0); // push the updated limit to the live DirectPlay session
} }
params->m_allow3rdPerson = 1; params->m_allow3rdPerson = 1;
if ((nMode != 0) && (nMode != 4)) { if ((nMode != 0) && (nMode != 4)) {
+4 -4
View File
@@ -808,8 +808,8 @@ void NetMissionParameters::MWNetMissionParameters::SaveParameters(DynamicMemoryS
stream->WriteBits(&m_pureMapCycle,1); stream->WriteBits(&m_pureMapCycle,1);
stream->WriteBits(&m_maxPlayers, 5); // 16 players maximum stream->WriteBits(&m_maxPlayers, 5); // max 31 players
stream->WriteBits(&m_maxBots, 5); // 16 players maximum stream->WriteBits(&m_maxBots, 5); // max 31
stream->WriteBits(&m_mapID, 16); // 65535 maps available stream->WriteBits(&m_mapID, 16); // 65535 maps available
stream->WriteBits(&m_mapClientCRC, 64); stream->WriteBits(&m_mapClientCRC, 64);
@@ -927,8 +927,8 @@ void NetMissionParameters::MWNetMissionParameters::LoadParameters(MemoryStream *
stream->ReadBits(&m_useMapCycle,1); stream->ReadBits(&m_useMapCycle,1);
stream->ReadBits(&m_pureMapCycle,1); stream->ReadBits(&m_pureMapCycle,1);
stream->ReadBits(&m_maxPlayers, 5); // 16 players max stream->ReadBits(&m_maxPlayers, 5); // max 31 players
stream->ReadBits(&m_maxBots, 5); // 16 players max stream->ReadBits(&m_maxBots, 5); // max 31
stream->ReadBits(&m_mapID, 16); // 65535 maps available stream->ReadBits(&m_mapID, 16); // 65535 maps available
stream->ReadBits(&m_mapClientCRC, 64); stream->ReadBits(&m_mapClientCRC, 64);
+1 -1
View File
@@ -150,7 +150,7 @@ extern int g_nMech4Comm;
// server & client only // server & client only
extern BOOL g_bIsServer; extern BOOL g_bIsServer;
// console(All), server & client only(g_aPlayerInfos[0]), server only(g_aPlayerInfos[1..g_nBOTs] // console(All), server & client only(g_aPlayerInfos[0]), server only(g_aPlayerInfos[1..g_nBOTs]
extern SPlayerInfo g_aPlayerInfos[20]; extern SPlayerInfo g_aPlayerInfos[35]; // 31 pilots + 1 CS + 3 spare
extern int g_nPlayerInfos; extern int g_nPlayerInfos;
extern int g_nServer; extern int g_nServer;
extern int g_nTeslas; extern int g_nTeslas;
@@ -885,7 +885,7 @@ void __stdcall GetGameOSEnvironment(char* CommandLine)
Environment.allowMultipleApps = false; Environment.allowMultipleApps = false;
Environment.AllowJoinInProgress = true; Environment.AllowJoinInProgress = true;
Environment.NetworkGame = true; Environment.NetworkGame = true;
Environment.NetworkMaxPlayers = 16; Environment.NetworkMaxPlayers = 31; // max 31 (fits in 5-bit bitstream)
Environment.NetworkGUID[0] = 0x95; Environment.NetworkGUID[0] = 0x95;
Environment.NetworkGUID[1] = 0x78; Environment.NetworkGUID[1] = 0x78;
Environment.NetworkGUID[2] = 0xFF; Environment.NetworkGUID[2] = 0xFF;
@@ -9,7 +9,7 @@
#include "recscore.h" #include "recscore.h"
#endif // !defined(CTCLS_EXPORTS) && !defined(CTCL_LAUNCHER) #endif // !defined(CTCLS_EXPORTS) && !defined(CTCL_LAUNCHER)
#define MAX_TESLAS 16 #define MAX_TESLAS 31
#define MAX_CAMERAS 4 #define MAX_CAMERAS 4
#define PORT_Launcher 1000 #define PORT_Launcher 1000
@@ -263,7 +263,7 @@ CInviteCOOP g_InviteCOOP;
// Mech4 only // Mech4 only
int g_nMech4Comm = 0; int g_nMech4Comm = 0;
BOOL g_bIsServer = FALSE; BOOL g_bIsServer = FALSE;
SPlayerInfo g_aPlayerInfos[20]; SPlayerInfo g_aPlayerInfos[35]; // 31 pilots + 1 CS + 3 spare
int g_nPlayerInfos; int g_nPlayerInfos;
int g_nServer; int g_nServer;
int g_nTeslas; int g_nTeslas;
+2 -2
View File
@@ -9,7 +9,7 @@
#include "recscore.h" #include "recscore.h"
#endif // !defined(CTCLS_EXPORTS) && !defined(CTCL_LAUNCHER) #endif // !defined(CTCLS_EXPORTS) && !defined(CTCL_LAUNCHER)
#define MAX_TESLAS 16 #define MAX_TESLAS 31
#define MAX_CAMERAS 4 #define MAX_CAMERAS 4
#define PORT_Launcher 1000 #define PORT_Launcher 1000
@@ -263,7 +263,7 @@ CInviteCOOP g_InviteCOOP;
// Mech4 only // Mech4 only
int g_nMech4Comm = 0; int g_nMech4Comm = 0;
BOOL g_bIsServer = FALSE; BOOL g_bIsServer = FALSE;
SPlayerInfo g_aPlayerInfos[20]; SPlayerInfo g_aPlayerInfos[35]; // 31 pilots + 1 CS + 3 spare
int g_nPlayerInfos; int g_nPlayerInfos;
int g_nServer; int g_nServer;
int g_nTeslas; int g_nTeslas;
@@ -86,7 +86,7 @@ void NetMissionParameters::AdeptNetMissionParameters::ResetParameters(void)
{ {
m_runDedicated = 0; m_runDedicated = 0;
m_closedGame = 0; m_closedGame = 0;
m_playerLimit = 16; m_playerLimit = 31; // max 31 (fits in 5-bit bitstream)
m_visibility = 0; m_visibility = 0;
+2 -2
View File
@@ -9,7 +9,7 @@
#include "recscore.h" #include "recscore.h"
#endif // !defined(CTCLS_EXPORTS) && !defined(CTCL_LAUNCHER) #endif // !defined(CTCLS_EXPORTS) && !defined(CTCL_LAUNCHER)
#define MAX_TESLAS 16 #define MAX_TESLAS 31
#define MAX_CAMERAS 4 #define MAX_CAMERAS 4
#define PORT_Launcher 1000 #define PORT_Launcher 1000
@@ -263,7 +263,7 @@ CInviteCOOP g_InviteCOOP;
// Mech4 only // Mech4 only
int g_nMech4Comm = 0; int g_nMech4Comm = 0;
BOOL g_bIsServer = FALSE; BOOL g_bIsServer = FALSE;
SPlayerInfo g_aPlayerInfos[20]; SPlayerInfo g_aPlayerInfos[35]; // 31 pilots + 1 CS + 3 spare
int g_nPlayerInfos; int g_nPlayerInfos;
int g_nServer; int g_nServer;
int g_nTeslas; int g_nTeslas;
@@ -72,8 +72,8 @@
#define USE_O_MORE_PODS $$g_nMechPodNum$$ // 0 = use only 8 #define USE_O_MORE_PODS $$g_nMechPodNum$$ // 0 = use only 8
#if USE_O_MORE_PODS #if USE_O_MORE_PODS
#define MAX_ROSTER_COUNT 16 // Was 8 #define MAX_ROSTER_COUNT 31 // max within 5-bit bitstream (0-31)
#define MAX_TEAMMATE_COUNT 8 // Was 4 #define MAX_TEAMMATE_COUNT 15 // Was 4, then 8
#else #else
#define MAX_ROSTER_COUNT 8 #define MAX_ROSTER_COUNT 8
#define MAX_TEAMMATE_COUNT 4 // Was 4 #define MAX_TEAMMATE_COUNT 4 // Was 4
@@ -364,7 +364,7 @@ main
cur_team_val = callback($$CTCL_GetTeamParams$$, cur_team_count[0]) cur_team_val = callback($$CTCL_GetTeamParams$$, cur_team_count[0])
int skin_id ///////VERY IMPORTANT FOR NEW SKIN INTERFACE int skin_id ///////VERY IMPORTANT FOR NEW SKIN INTERFACE
int skin_ids[17] int skin_ids[32]
int update_skin = false int update_skin = false
// MSL 5.05 // MSL 5.05
int decal_id ///////VERY IMPORTANT FOR NEW DECAL INTERFACE int decal_id ///////VERY IMPORTANT FOR NEW DECAL INTERFACE
@@ -522,7 +522,7 @@ main
///---------holds faction name for scroll list ///---------holds faction name for scroll list
string faction_name[17] string faction_name[32]
callback($$Shell_CallbackHandler$$, ShellInitMPScreen) callback($$Shell_CallbackHandler$$, ShellInitMPScreen)
@@ -645,12 +645,12 @@ main
team_legal_to_join[8] = TRUE team_legal_to_join[8] = TRUE
int update_team = 0 int update_team = 0
int max_players = 16 int max_players = 31 // max within 5-bit bitstream
int player_num = 0 int player_num = 0
// int num_of_teams = 8 // int num_of_teams = 8
int mech_id int mech_id
int name_color[17] int name_color[32]
int lupe int lupe
for lupe = 0; lupe < nRosterCount;lupe++ for lupe = 0; lupe < nRosterCount;lupe++
@@ -675,33 +675,33 @@ main
player_num = -1 player_num = -1
// ComboBox for the Player Type // ComboBox for the Player Type
object o_BotList[17] object o_BotList[32]
object o_BotList_bu[17] object o_BotList_bu[32]
int m_naLastSelected[17] int m_naLastSelected[32]
for x = 0; x < nRosterCount; x++ for x = 0; x < nRosterCount; x++
{ {
m_naLastSelected[x] = 0 m_naLastSelected[x] = 0
} }
object o_Editbox[17] object o_Editbox[32]
object o_print_text[17] object o_print_text[32]
object o_mech_variant[17] object o_mech_variant[32]
object o_mech_variant_bu[17] object o_mech_variant_bu[32]
#if USE_O_MECH_VARIANT2 #if USE_O_MECH_VARIANT2
object o_mech_variant2[17] object o_mech_variant2[32]
object o_mech_variant2_bu[17] object o_mech_variant2_bu[32]
#endif // USE_O_MECH_VARIANT2 #endif // USE_O_MECH_VARIANT2
object o_mech_rand[17] object o_mech_rand[32]
object o_skins[17] object o_skins[32]
object o_skins_bu[17] object o_skins_bu[32]
// MSL 5.05 // MSL 5.05
object o_decal[18] object o_decal[32]
object o_decal_bu[18] object o_decal_bu[32]
object o_team[18] object o_team[32]
object o_team_bu[18] object o_team_bu[32]
object o_decal_box[18] object o_decal_box[32]
object o_skin_box[18] object o_skin_box[32]
object o_status[18] object o_status[32]
int roster_posy[18] int roster_posy[32]
int coolbaby int coolbaby
int stock_size = 0 int stock_size = 0
@@ -1005,7 +1005,7 @@ main
o_decal[x].list_item[15] = "16" o_decal[x].list_item[15] = "16"
o_decal[x].list_item[16] = "17" o_decal[x].list_item[16] = "17"
for coolbaby = 17;coolbaby < o_decal[x].list_size+1;coolbaby++ for coolbaby = 17;coolbaby < o_decal[x].list_size;coolbaby++
o_decal[x].list_item[coolbaby] = conv$(coolbaby+1) o_decal[x].list_item[coolbaby] = conv$(coolbaby+1)
o_decal[x].nselected = 3 o_decal[x].nselected = 3
@@ -1072,7 +1072,7 @@ main
o_skins[x].list_item[14] = "15" o_skins[x].list_item[14] = "15"
o_skins[x].list_item[15] = "16" o_skins[x].list_item[15] = "16"
for coolbaby = 16;coolbaby < o_skins[x].list_size+1;coolbaby++ for coolbaby = 16;coolbaby < o_skins[x].list_size;coolbaby++
o_skins[x].list_item[coolbaby] = conv$(coolbaby+1) o_skins[x].list_item[coolbaby] = conv$(coolbaby+1)
o_skins[x].nselected = 3 o_skins[x].nselected = 3
@@ -2714,7 +2714,7 @@ main
} }
} }
// MSL 5.06 // MSL 5.06
if nLaunchState == 0 && (nTempPlayerCount > 16) if nLaunchState == 0 && (nTempPlayerCount > 31)
{ {
o_error_string.text = "Too many player/bots" o_error_string.text = "Too many player/bots"
nLaunchState = -7 nLaunchState = -7