RPL4LOBBY implements the multiplayer front door on ISteamMatchmaking. The setup menu grows HOST STEAM RACE / JOIN STEAM RACE buttons when the Steam wire is live; hosting creates a tagged public lobby, joining finds one. Every member publishes FakeIP + fake ports + persona + loadout as member data; the room screen lists members (host marked) and gives the owner a launch button. Launching writes a nonced go-roster into lobby data. Each pod registers every peer with the Steam transport (two-port peer table: engine console/game ports map to Steam fake ports on connect) and enters the race: the owner through the hosted-race path - it builds the multi-pilot egg from real personas and loadouts and its console marshals everyone - and members as network pods that boot straight into WaitingForEgg for the owner to feed over the wire. The lobby outlives races: members loop back through WinMain into the room (no local console needed - MissionCompleted is waived for member races), and the owner returns to the room after its results screen. Leaving the lobby clears the hosted-race priming. Verified on this box: menu buttons appear under RP412STEAM=1, hosting creates a lobby on the Steam backend, the room runs and leaves back to the menu; single-player cycling and the LAN hosted race both still pass. Full three-account mesh test is next, on real hardware. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
186 lines
8.6 KiB
XML
186 lines
8.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
<ItemGroup Label="ProjectConfigurations">
|
|
<ProjectConfiguration Include="Debug|Win32">
|
|
<Configuration>Debug</Configuration>
|
|
<Platform>Win32</Platform>
|
|
</ProjectConfiguration>
|
|
<ProjectConfiguration Include="Release|Win32">
|
|
<Configuration>Release</Configuration>
|
|
<Platform>Win32</Platform>
|
|
</ProjectConfiguration>
|
|
</ItemGroup>
|
|
<PropertyGroup Label="Globals">
|
|
<ProjectGuid>{01B740F7-5D4E-4E42-893F-CE018E5EE785}</ProjectGuid>
|
|
<RootNamespace>RP_L4</RootNamespace>
|
|
<Keyword>Win32Proj</Keyword>
|
|
</PropertyGroup>
|
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
<PropertyGroup Label="Configuration">
|
|
<ConfigurationType>Application</ConfigurationType>
|
|
<PlatformToolset>v143</PlatformToolset>
|
|
<CharacterSet>Unicode</CharacterSet>
|
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
|
|
<UseDebugLibraries>true</UseDebugLibraries>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
|
|
<UseDebugLibraries>false</UseDebugLibraries>
|
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
</PropertyGroup>
|
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
<PropertyGroup>
|
|
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
|
<IntDir>$(Configuration)\</IntDir>
|
|
<TargetName>rpl4opt</TargetName>
|
|
<!-- Legacy DirectX SDK (June 2010) after the Windows SDK so modern headers/libs win;
|
|
only d3dx9 and dxerr actually come from it. -->
|
|
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include;..\extern\steamworks_sdk_164\sdk\public</IncludePath>
|
|
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib\x86;..\extern\steamworks_sdk_164\sdk\redistributable_bin</LibraryPath>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
|
|
<LinkIncremental>true</LinkIncremental>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Configuration)'=='Release'">
|
|
<LinkIncremental>false</LinkIncremental>
|
|
</PropertyGroup>
|
|
<ItemDefinitionGroup>
|
|
<ClCompile>
|
|
<WarningLevel>Level3</WarningLevel>
|
|
<ConformanceMode>false</ConformanceMode>
|
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
|
<!-- The engine's on-disk and on-wire binary formats assume 1-byte packing. -->
|
|
<StructMemberAlignment>1Byte</StructMemberAlignment>
|
|
<!-- RP412_STEAM: Steam transport available; activated at runtime by RP412STEAM=1. -->
|
|
<PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;WINDOWS_IGNORE_PACKING_MISMATCH;_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS;RP412_STEAM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
<DisableSpecificWarnings>4996;4244;4267;4305;4018;4138;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
</ClCompile>
|
|
<Link>
|
|
<SubSystem>Windows</SubSystem>
|
|
<TargetMachine>MachineX86</TargetMachine>
|
|
<!-- Same source files are compiled into both Munga_l4.lib and this exe
|
|
(WTPresets.cpp et al.), as in the original projects. -->
|
|
<AdditionalOptions>/FORCE:MULTIPLE %(AdditionalOptions)</AdditionalOptions>
|
|
<AdditionalLibraryDirectories>..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
<!-- legacy_stdio_definitions satisfies the June-2010 dxerr.lib on modern MSVC. -->
|
|
<AdditionalDependencies>ws2_32.lib;dinput8.lib;dxguid.lib;OpenAL32.lib;libsndfile-1.lib;d3d9.lib;legacy_stdio_definitions.lib;steam_api.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
</Link>
|
|
</ItemDefinitionGroup>
|
|
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
|
|
<ClCompile>
|
|
<Optimization>Disabled</Optimization>
|
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
|
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
</ClCompile>
|
|
<Link>
|
|
<AdditionalDependencies>d3dx9d.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
</Link>
|
|
</ItemDefinitionGroup>
|
|
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
|
|
<ClCompile>
|
|
<Optimization>Full</Optimization>
|
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
|
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
</ClCompile>
|
|
<Link>
|
|
<AdditionalDependencies>d3dx9.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
<OptimizeReferences>true</OptimizeReferences>
|
|
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
|
</Link>
|
|
</ItemDefinitionGroup>
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\MUNGA_L4\Munga_L4.vcxproj">
|
|
<Project>{F988B198-A386-40DD-A50E-9A5CE17A92A5}</Project>
|
|
</ProjectReference>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<ClCompile Include=".\RPL4.CPP" />
|
|
<ClCompile Include=".\RPL4APP.cpp" />
|
|
<ClCompile Include=".\RPL4CONSOLE.cpp" />
|
|
<ClCompile Include=".\RPL4FE.cpp" />
|
|
<ClCompile Include=".\RPL4LOBBY.cpp" />
|
|
<ClCompile Include=".\RPL4ARND.cpp" />
|
|
<ClCompile Include=".\RPL4GAUG.cpp" />
|
|
<ClCompile Include=".\RPL4GRND.cpp" />
|
|
<ClCompile Include=".\RPL4MODE.cpp" />
|
|
<ClCompile Include=".\RPL4MPPR.cpp" />
|
|
<ClCompile Include=".\RPL4MSSN.cpp" />
|
|
<ClCompile Include=".\RPL4PB.cpp" />
|
|
<ClCompile Include=".\RPL4TOOL.cpp" />
|
|
<ClCompile Include=".\RPL4VID.cpp" />
|
|
<ClCompile Include=".\WTPresets.cpp" />
|
|
<ClCompile Include="..\RP\BLOCKER.cpp" />
|
|
<ClCompile Include="..\RP\BOOSTER.cpp" />
|
|
<ClCompile Include="..\RP\CHUTE.cpp" />
|
|
<ClCompile Include="..\RP\CRUSHER.cpp" />
|
|
<ClCompile Include="..\RP\DEMOPACK.cpp" />
|
|
<ClCompile Include="..\RP\RIVET.cpp" />
|
|
<ClCompile Include="..\RP\RPCNSL.cpp" />
|
|
<ClCompile Include="..\RP\RPDIRECT.cpp" />
|
|
<ClCompile Include="..\RP\RPMSSN.cpp" />
|
|
<ClCompile Include="..\RP\RPPLAYER.cpp" />
|
|
<ClCompile Include="..\RP\RPREG.cpp" />
|
|
<ClCompile Include="..\RP\RPTOOL.cpp" />
|
|
<ClCompile Include="..\RP\RUNNER.cpp" />
|
|
<ClCompile Include="..\RP\SCORZONE.cpp" />
|
|
<ClCompile Include="..\RP\THRUSTER.cpp" />
|
|
<ClCompile Include="..\RP\VTV.cpp" />
|
|
<ClCompile Include="..\RP\VTVMPPR.cpp" />
|
|
<ClCompile Include="..\RP\VTVPWR.cpp" />
|
|
<ClCompile Include="..\RP\VTVSUB.cpp" />
|
|
<ClCompile Include="..\RP\WEAPSYS.cpp" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<ClInclude Include=".\RPL4.h" />
|
|
<ClInclude Include=".\RPL4.HPP" />
|
|
<ClInclude Include=".\RPL4APP.h" />
|
|
<ClInclude Include=".\RPL4CONSOLE.h" />
|
|
<ClInclude Include=".\RPL4FE.h" />
|
|
<ClInclude Include=".\RPL4LOBBY.h" />
|
|
<ClInclude Include=".\RPL4ARND.h" />
|
|
<ClInclude Include=".\RPL4GAUG.h" />
|
|
<ClInclude Include=".\RPL4GRND.h" />
|
|
<ClInclude Include=".\RPL4MODE.h" />
|
|
<ClInclude Include=".\RPL4MPPR.h" />
|
|
<ClInclude Include=".\RPL4MSSN.h" />
|
|
<ClInclude Include=".\RPL4PB.h" />
|
|
<ClInclude Include=".\RPL4VER.h" />
|
|
<ClInclude Include=".\RPL4VID.h" />
|
|
<ClInclude Include=".\WTPresets.h" />
|
|
<ClInclude Include="..\RP\BLOCKER.h" />
|
|
<ClInclude Include="..\RP\BOOSTER.h" />
|
|
<ClInclude Include="..\RP\CHUTE.h" />
|
|
<ClInclude Include="..\RP\CRUSHER.h" />
|
|
<ClInclude Include="..\RP\DEMOPACK.h" />
|
|
<ClInclude Include="..\RP\RIVET.h" />
|
|
<ClInclude Include="..\RP\RP.h" />
|
|
<ClInclude Include="..\RP\RPCNSL.h" />
|
|
<ClInclude Include="..\RP\RPDIRECT.h" />
|
|
<ClInclude Include="..\RP\RPMSSN.h" />
|
|
<ClInclude Include="..\RP\RPPLAYER.h" />
|
|
<ClInclude Include="..\RP\RPREG.h" />
|
|
<ClInclude Include="..\RP\RPTOOL.h" />
|
|
<ClInclude Include="..\RP\RUNNER.h" />
|
|
<ClInclude Include="..\RP\SCORZONE.h" />
|
|
<ClInclude Include="..\RP\THRUSTER.h" />
|
|
<ClInclude Include="..\RP\VTV.h" />
|
|
<ClInclude Include="..\RP\VTVMPPR.h" />
|
|
<ClInclude Include="..\RP\VTVPWR.h" />
|
|
<ClInclude Include="..\RP\VTVSUB.h" />
|
|
<ClInclude Include="..\RP\WEAPSYS.h" />
|
|
</ItemGroup>
|
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
</Project>
|
|
|