Download

why can't find session in packaged Multiplayer Shootout wuth steam?

Hi, i enabled steam in Multiplayer Shootout example, so packaged game work anbd i see my steam name in hosted game

but when i launched same packaged game on second PC with another steam account - i can’t find hosted game

so why? i tryed switch in menu internet mode to lan, but still can’t find hosted session

if you like to try on your own PCs just download this packaged game Multiplayer Shootout with steam.rar — Yandex.Disk

p.s. right window is just a team viewer connection to remote PC, because i don’t have it at home, so remote PC of couse have internet and steam there work fine when hosting a game, so i see my steam name and on both PC shift+tab work fine 2015-05-06 20-02-02 Скриншот экрана.png — Yandex.Disk

i checked what game does in network when you search for internet session (i did it with TCP view) and seems it use UPD on port 14001 shootout with vac.png — Yandex.Disk, to compare i lainched valve’s game team fortress 2 (it’s exe file called hl2 endeed) and when i does session search in TF2 there’s no such port, but maybe TF2 use just different one 2015-05-08 11-55-45 Скриншот экрана.png — Yandex.Disk

trying google steam api with UPD 14001 doesn’t give a clue, only discussion on some games also not searching session over this port

for some reason there isn’t 14001 port on Steam Support :: Required Ports for Steam

steam provide spacewar as example game of steam features Steamworks API Example Application (SpaceWar) (Steamworks Documentation) and what’s interesting, when you press “find lobby” in menu it find tons of sessions, but game process:

  1. doesn’t make any network actions (checked with TCP view)
  2. doesn’t make any file operations or anything else (checked with process monitor)

in spacewar source code find lobby coded as


else if ( m_eGameState == k_EClientFindLobby )
{
m_pLobbyBrowser->Refresh();
SteamFriends()->SetRichPresence( “status”, “Main menu: finding lobbies” );
}

void CLobbyBrowser::Refresh()
{
if ( !m_bRequestingLobbies )
{
m_bRequestingLobbies = true;
// request all lobbies for this game
SteamAPICall_t hSteamAPICall = SteamMatchmaking()->RequestLobbyList();
// set the function to call when this API call has completed
m_SteamCallResultLobbyMatchList.Set( hSteamAPICall, this, &CLobbyBrowser::OnLobbyMatchListCallback );
m_pMenu->ShowSearching();
}
}

void CLobbyBrowser::OnLobbyMatchListCallback( LobbyMatchList_t *pCallback, bool bIOFailure )
{
m_ListLobbies.clear();
m_bRequestingLobbies = false;

if ( bIOFailure )
{
	// we had a Steam I/O failure - we probably timed out talking to the Steam back-end servers
	// doesn't matter in this case, we can just act if no lobbies were received
}

// lobbies are returned in order of closeness to the user, so add them to the list in that order
for ( uint32 iLobby = 0; iLobby < pCallback->m_nLobbiesMatching; iLobby++ )
{
	CSteamID steamIDLobby = SteamMatchmaking()->GetLobbyByIndex( iLobby );

	// add the lobby to the list
	Lobby_t lobby;
	lobby.m_steamIDLobby = steamIDLobby;
	// pull the name from the lobby metadata
	const char *pchLobbyName = SteamMatchmaking()->GetLobbyData( steamIDLobby, "name" );
	if ( pchLobbyName && pchLobbyName[0] )
	{
		// set the lobby name
		sprintf_safe( lobby.m_rgchName, "%s", pchLobbyName );
	}
	else
	{
		// we don't have info about the lobby yet, request it
		SteamMatchmaking()->RequestLobbyData( steamIDLobby );
		// results will be returned via LobbyDataUpdate_t callback
		sprintf_safe( lobby.m_rgchName, "Lobby %d", steamIDLobby.GetAccountID() );
	}

	m_ListLobbies.push_back( lobby );
}

m_pMenu->Rebuild( m_ListLobbies );

}

How enable engine internal debug messages?

How enable engine internal debug messages?

such as these UE_LOG_ONLINE

void FOnlineAsyncTaskSteamFindLobbies::Tick()
{
	ISteamUtils* SteamUtilsPtr = SteamUtils();
	check(SteamUtilsPtr);

	if (!bInit)
	{
		// Don't try to search if the network device is broken
		if (ISocketSubsystem::Get()->HasNetworkDevice())
		{
			// Make sure they are logged in to play online
			if (SteamUser()->BLoggedOn())
			{
				UE_LOG_ONLINE(Verbose, TEXT("Starting search for Internet games..."));

				// Setup the filters
				CreateQuery();
				// Start the async search
				CallbackHandle = SteamMatchmakingPtr->RequestLobbyList();
			}
			else
			{
				UE_LOG_ONLINE(Warning, TEXT("You must be logged in to an online profile to search for internet games"));
			}
		}
		else
		{
			UE_LOG_ONLINE(Warning, TEXT("Can't search for an internet game without a network connection"));
		}

		bInit = true;
	}

seems it’s defined as

#define UE_LOG_ONLINE(Verbosity, Format, ...) \
{ \
	UE_LOG(LogOnline, Verbosity, TEXT("%s%s"), ONLINE_LOG_PREFIX, *FString::Printf(Format, ##__VA_ARGS__)); \
}

but in packaged/standalone game i don’t see them in console log window (yeah, i know about -log for packaged game)

no idea? anyone?

no one here to help? does someone ever have a working version of searching online sessiong in UE4? :smiley:

Been doing stuff with steam over the last week.
For a packaged game, does it still auto-produce the steam_appid.txt in the \MultiplayerShootout\Binaries\Win64 directory when you run it?

yes, it’s here and contain only 480

fixed by epics in 4.8.0