This commit is contained in:
Riley Labrecque
2014-01-29 13:01:45 +02:00
parent d733f538e6
commit dc44b16c7b
48 changed files with 199 additions and 87 deletions
+26
View File
@@ -11,6 +11,32 @@ website at: http://partner.steamgames.com
Revision History:
----------------------------------------------------------------
v1.06 30th September 2009
----------------------------------------------------------------
Voice
* ISteamUser::GetCompressedVoice() has been replaced with ISteamUser::GetVoice which can be used to retrieve compressed and uncompressed voice data
* Added ISteamUser::GetAvailableVoice() to retrieve the amount of captured audio data that is available
Matchmaking
* Added a new callback LobbyKicked_t that is sent when a user has been disconnected from a lobby
* Through ISteamMatchmakingServers, multiple server list requests of the same type can now be outstanding at the same time
Steamworks Setup Application:
* Streamlined configuration process
* Now supports EULAs greater than 32k bytes
Content Tool
* Added DLC checkbox to depot creation wizard
Other
* Added SteamAPI_IsSteamRunning()
* Added SteamAPI_RestartApp() so CEG users can restart their game through Steam if launched through Windows Games Explorer
----------------------------------------------------------------
v1.05 11th June 2009
----------------------------------------------------------------
+13 -3
View File
@@ -54,12 +54,22 @@ int APIENTRY RealMain(HINSTANCE hInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
/*
if ( !SteamAPI_IsSteamRunning() )
{
// if Steam is not running, SteamAPI_RestartApp starts the local Steam client and also launches this game again
// Once you get a public Steam AppID assigned for this game, you need to replace k_uAppIdInvalid with it.
SteamAPI_RestartApp( k_uAppIdInvalid );
return EXIT_FAILURE;
}
*/
// Init Steam CEG
if ( !Steamworks_InitCEGLibrary() )
{
OutputDebugString( "Steamworks_InitCEGLibrary() failed\n" );
::MessageBox( NULL, "Steam must be running to play this game (InitDrmLibrary() failed).\n", "Fatal Error", MB_OK );
return -1;
return EXIT_FAILURE;
}
// Initialize SteamAPI, if this fails we bail out since we depend on Steam for lots of stuff.
@@ -73,7 +83,7 @@ int APIENTRY RealMain(HINSTANCE hInstance,
{
OutputDebugString( "SteamAPI_Init() failed\n" );
::MessageBox( NULL, "Steam must be running to play this game (SteamAPI_Init() failed).\n", "Fatal Error", MB_OK );
return -1;
return EXIT_FAILURE;
}
// set our debug handler
@@ -231,7 +241,7 @@ int APIENTRY RealMain(HINSTANCE hInstance,
Steamworks_TermCEGLibrary();
// exit
return 0;
return EXIT_SUCCESS;
}
+35 -12
View File
@@ -42,10 +42,9 @@ CServerBrowser::CServerBrowser( CGameEngine *pGameEngine )
m_pGameEngine = pGameEngine;
m_nServers = 0;
m_bRequestingServers = false;
m_ServerType = eInternetServer;
m_hServerListRequest = NULL;
m_pMenu->Rebuild( m_ListGameServers, m_bRequestingServers );
m_pMenu->SetHeading( "Internet Server browser" );
}
@@ -54,6 +53,12 @@ CServerBrowser::CServerBrowser( CGameEngine *pGameEngine )
//-----------------------------------------------------------------------------
CServerBrowser::~CServerBrowser()
{
if ( m_hServerListRequest )
{
SteamMatchmakingServers()->ReleaseRequest( m_hServerListRequest );
m_hServerListRequest = NULL;
}
if ( m_pMenu )
delete m_pMenu;
// ...
@@ -69,10 +74,16 @@ void CServerBrowser::RefreshInternetServers()
if ( m_bRequestingServers )
return;
// If another request is outstanding, make sure we release it properly
if ( m_hServerListRequest )
{
SteamMatchmakingServers()->ReleaseRequest( m_hServerListRequest );
m_hServerListRequest = NULL;
}
OutputDebugString( "Refreshing internet servers\n" );
// Track that we are now in a refresh, what type of refresh, and reset our server count
m_bRequestingServers = true;
m_ServerType = eInternetServer;
m_nServers = 0;
m_ListGameServers.clear();
m_pMenu->SetHeading( "Internet Server browser" );
@@ -101,7 +112,7 @@ void CServerBrowser::RefreshInternetServers()
// bugbug jmccaskey - passing just the appid without filters results in getting all servers rather than
// servers filtered by appid alone. So, we'll use the filters to filter the results better.
SteamMatchmakingServers()->RequestInternetServerList( SteamUtils()->GetAppID(), &pFilter, ARRAYSIZE(pFilters), this );
m_hServerListRequest = SteamMatchmakingServers()->RequestInternetServerList( SteamUtils()->GetAppID(), &pFilter, ARRAYSIZE(pFilters), this );
}
@@ -114,10 +125,16 @@ void CServerBrowser::RefreshLANServers()
if ( m_bRequestingServers )
return;
OutputDebugString( "Refreshing internet servers\n" );
// If another request is outstanding, make sure we release it properly
if ( m_hServerListRequest )
{
SteamMatchmakingServers()->ReleaseRequest( m_hServerListRequest );
m_hServerListRequest = NULL;
}
OutputDebugString( "Refreshing LAN servers\n" );
// Track that we are now in a refresh, what type of refresh, and reset our server count
m_bRequestingServers = true;
m_ServerType = eLANServer;
m_nServers = 0;
m_ListGameServers.clear();
m_pMenu->SetHeading( "LAN Server browser" );
@@ -125,16 +142,18 @@ void CServerBrowser::RefreshLANServers()
m_pMenu->Rebuild( m_ListGameServers, m_bRequestingServers );
// LAN refresh doesn't accept filters like internet above does
SteamMatchmakingServers()->RequestLANServerList( SteamUtils()->GetAppID(), this );
m_hServerListRequest = SteamMatchmakingServers()->RequestLANServerList( SteamUtils()->GetAppID(), this );
}
//-----------------------------------------------------------------------------
// Purpose: Callback from Steam telling us about a server that has responded
//-----------------------------------------------------------------------------
void CServerBrowser::ServerResponded( int iServer )
void CServerBrowser::ServerResponded( HServerListRequest hReq, int iServer )
{
gameserveritem_t *pServer = SteamMatchmakingServers()->GetServerDetails( m_ServerType, iServer );
// Assert( hReq == m_hServerListRequest );
gameserveritem_t *pServer = SteamMatchmakingServers()->GetServerDetails( hReq, iServer );
if ( pServer )
{
// Filter out servers that don't match our appid here (might get these in LAN calls since we can't put more filters on it)
@@ -153,8 +172,10 @@ void CServerBrowser::ServerResponded( int iServer )
//-----------------------------------------------------------------------------
// Purpose: Callback from Steam telling us about a server that has failed to respond
//-----------------------------------------------------------------------------
void CServerBrowser::ServerFailedToRespond( int iServer )
void CServerBrowser::ServerFailedToRespond( HServerListRequest hReq, int iServer )
{
// Assert( hReq == m_hServerListRequest );
// bugbug jmccaskey - why would we ever need this? Remove servers from our list I guess?
}
@@ -162,10 +183,12 @@ void CServerBrowser::ServerFailedToRespond( int iServer )
//-----------------------------------------------------------------------------
// Purpose: Callback from Steam telling us a refresh is complete
//-----------------------------------------------------------------------------
void CServerBrowser::RefreshComplete( EMatchMakingServerResponse response )
void CServerBrowser::RefreshComplete( HServerListRequest hReq, EMatchMakingServerResponse response )
{
// Assert( hReq == m_hServerListRequest );
// Doesn't really matter to us whether the response tells us the refresh succeeded or failed,
// we just rack whether we are done refreshing or not
// we just track whether we are done refreshing or not
m_bRequestingServers = false;
}
+5 -5
View File
@@ -66,9 +66,9 @@ public:
void RunFrame();
// ISteamMatchmakingServerListResponse
void ServerResponded( int iServer );
void ServerFailedToRespond( int iServer );
void RefreshComplete( EMatchMakingServerResponse response );
void ServerResponded( HServerListRequest hReq, int iServer );
void ServerFailedToRespond( HServerListRequest hReq, int iServer );
void RefreshComplete( HServerListRequest hReq, EMatchMakingServerResponse response );
private:
@@ -81,8 +81,8 @@ private:
// Track whether we are in the middle of a refresh or not
bool m_bRequestingServers;
// Track what type of servers we are currently displaying
EMatchMakingType m_ServerType;
// Track what server list request is currently running
HServerListRequest m_hServerListRequest;
// Menu object
CServerBrowserMenu *m_pMenu;
BIN
View File
Binary file not shown.
+1
View File
@@ -146,6 +146,7 @@ enum { k_iClientRemoteStorageCallbacks = 1300 };
enum { k_iSteamUserItemsCallbacks = 1400 };
enum { k_iSteamGameServerItemsCallbacks = 1500 };
enum { k_iClientUtilsCallbacks = 1600 };
enum { k_iSteamGameCoordinatorCallbacks = 1700 };
#endif // ISTEAMCLIENT_H
+47 -17
View File
@@ -237,6 +237,11 @@ public:
// large size of server lists.
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// Typedef for handle type you will receive when requesting server list.
//-----------------------------------------------------------------------------
typedef void* HServerListRequest;
//-----------------------------------------------------------------------------
// Purpose: Callback interface for receiving responses after a server list refresh
// or an individual server update.
@@ -251,13 +256,13 @@ class ISteamMatchmakingServerListResponse
{
public:
// Server has responded ok with updated data
virtual void ServerResponded( int iServer ) = 0;
virtual void ServerResponded( HServerListRequest hRequest, int iServer ) = 0;
// Server has failed to respond
virtual void ServerFailedToRespond( int iServer ) = 0;
virtual void ServerFailedToRespond( HServerListRequest hRequest, int iServer ) = 0;
// A list refresh you had initiated is now 100% completed
virtual void RefreshComplete( EMatchMakingServerResponse response ) = 0;
virtual void RefreshComplete( HServerListRequest hRequest, EMatchMakingServerResponse response ) = 0;
};
@@ -349,12 +354,18 @@ class ISteamMatchmakingServers
{
public:
// Request a new list of servers of a particular type. These calls each correspond to one of the EMatchMakingType values.
virtual void RequestInternetServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
virtual void RequestLANServerList( AppId_t iApp, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
virtual void RequestFriendsServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
virtual void RequestFavoritesServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
virtual void RequestHistoryServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
virtual void RequestSpectatorServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
// Each call allocates a new asynchronous request object.
// Request object must be released by calling ReleaseRequest( hServerListRequest )
virtual HServerListRequest RequestInternetServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
virtual HServerListRequest RequestLANServerList( AppId_t iApp, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
virtual HServerListRequest RequestFriendsServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
virtual HServerListRequest RequestFavoritesServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
virtual HServerListRequest RequestHistoryServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
virtual HServerListRequest RequestSpectatorServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
// Releases the asynchronous request object and cancels any pending query on it if there's a pending query in progress.
// RefreshComplete callback is not posted when request is released.
virtual void ReleaseRequest( HServerListRequest hServerListRequest ) = 0;
/* the filters that are available in the ppchFilters params are:
@@ -371,25 +382,31 @@ public:
// Get details on a given server in the list, you can get the valid range of index
// values by calling GetServerCount(). You will also receive index values in
// ISteamMatchmakingServerListResponse::ServerResponded() callbacks
virtual gameserveritem_t *GetServerDetails( EMatchMakingType eType, int iServer ) = 0;
virtual gameserveritem_t *GetServerDetails( HServerListRequest hRequest, int iServer ) = 0;
// Cancel an request which is operation on the given list type. You should call this to cancel
// any in-progress requests before destructing a callback object that may have been passed
// to one of the above list request calls. Not doing so may result in a crash when a callback
// occurs on the destructed object.
virtual void CancelQuery( EMatchMakingType eType ) = 0;
// Canceling a query does not release the allocated request handle.
// The request handle must be released using ReleaseRequest( hRequest )
virtual void CancelQuery( HServerListRequest hRequest ) = 0;
// Ping every server in your list again but don't update the list of servers
virtual void RefreshQuery( EMatchMakingType eType ) = 0;
// Query callback installed when the server list was requested will be used
// again to post notifications and RefreshComplete, so the callback must remain
// valid until another RefreshComplete is called on it or the request
// is released with ReleaseRequest( hRequest )
virtual void RefreshQuery( HServerListRequest hRequest ) = 0;
// Returns true if the list is currently refreshing its server list
virtual bool IsRefreshing( EMatchMakingType eType ) = 0;
virtual bool IsRefreshing( HServerListRequest hRequest ) = 0;
// How many servers in the given list, GetServerDetails above takes 0... GetServerCount() - 1
virtual int GetServerCount( EMatchMakingType eType ) = 0;
virtual int GetServerCount( HServerListRequest hRequest ) = 0;
// Refresh a single server inside of a query (rather than all the servers )
virtual void RefreshServer( EMatchMakingType eType, int iServer ) = 0;
virtual void RefreshServer( HServerListRequest hRequest, int iServer ) = 0;
//-----------------------------------------------------------------------------
@@ -410,7 +427,7 @@ public:
// to one of the above calls to avoid crashing when callbacks occur.
virtual void CancelServerQuery( HServerQuery hServerQuery ) = 0;
};
#define STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION "SteamMatchMakingServers001"
#define STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION "SteamMatchMakingServers002"
// game server flags
const uint32 k_unFavoriteFlagNone = 0x00;
@@ -560,6 +577,19 @@ struct LobbyMatchList_t
};
//-----------------------------------------------------------------------------
// Purpose: posted if a user is forcefully removed from a lobby
// can occur if a user loses connection to Steam
//-----------------------------------------------------------------------------
struct LobbyKicked_t
{
enum { k_iCallback = k_iSteamMatchmakingCallbacks + 12 };
uint64 m_ulSteamIDLobby; // Lobby
uint64 m_ulSteamIDAdmin; // User who kicked you - possibly the ID of the lobby itself
uint8 m_bKickedDueToDisconnect; // true if you were kicked from the lobby due to the user losing connection to Steam (currently always true)
};
//-----------------------------------------------------------------------------
// Purpose: Result of our request to create a Lobby
// m_eResult == k_EResultOK on success
@@ -580,10 +610,10 @@ struct LobbyCreated_t
uint64 m_ulSteamIDLobby; // chat room, zero if failed
};
// used by now obsolete RequestFriendsLobbiesResponse_t
// enum { k_iCallback = k_iSteamMatchmakingCallbacks + 14 };
#endif // ISTEAMMATCHMAKING
+25 -11
View File
@@ -75,21 +75,37 @@ public:
// this will usually be something like "C:\Progam Files\Steam\userdata\<SteamID>\<AppID>\local"
virtual bool GetUserDataFolder( char *pchBuffer, int cubBuffer ) = 0;
// Starts voice recording. Once started, use GetCompressedVoice() to get the data
// Starts voice recording. Once started, use GetVoice() to get the data
virtual void StartVoiceRecording( ) = 0;
// Stops voice recording. Because people often release push-to-talk keys early, the system will keep recording for
// a little bit after this function is called. GetCompressedVoice() should continue to be called until it returns
// a little bit after this function is called. GetVoice() should continue to be called until it returns
// k_eVoiceResultNotRecording
virtual void StopVoiceRecording( ) = 0;
// Gets the latest voice data. It should be called as often as possible once recording has started.
// nBytesWritten is set to the number of bytes written to pDestBuffer.
virtual EVoiceResult GetCompressedVoice( void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten ) = 0;
// Determine the amount of captured audio data that is available in bytes.
// This provides both the compressed and uncompressed data. Please note that the uncompressed
// data is not the raw feed from the microphone: data may only be available if audible
// levels of speech are detected.
virtual EVoiceResult GetAvailableVoice(uint32 *pcbCompressed, uint32 *pcbUncompressed) = 0;
// Decompresses a chunk of data produced by GetCompressedVoice(). nBytesWritten is set to the
// number of bytes written to pDestBuffer. The output format of the data is 16-bit signed at
// 11025 samples per second.
// Gets the latest voice data from the microphone. Compressed data is an arbitrary format, and is meant to be handed back to
// DecompressVoice() for playback later as a binary blob. Uncompressed data is 16-bit, signed integer, 11025Hz PCM format.
// Please note that the uncompressed data is not the raw feed from the microphone: data may only be available if audible
// levels of speech are detected, and may have passed through denoising filters, etc.
// This function should be called as often as possible once recording has started; once per frame at least.
// nBytesWritten is set to the number of bytes written to pDestBuffer.
// nUncompressedBytesWritten is set to the number of bytes written to pUncompressedDestBuffer.
// You must grab both compressed and uncompressed here at the same time, if you want both.
// Matching data that is not read during this call will be thrown away.
// GetAvailableVoice() can be used to determine how much data is actually available.
virtual EVoiceResult GetVoice( bool bWantCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, bool bWantUncompressed, void *pUncompressedDestBuffer, uint32 cbUncompressedDestBufferSize, uint32 *nUncompressBytesWritten ) = 0;
// Decompresses a chunk of compressed data produced by GetVoice().
// nBytesWritten is set to the number of bytes written to pDestBuffer unless the return value is k_EVoiceResultBufferTooSmall.
// In that case, nBytesWritten is set to the size of the buffer required to decompress the given
// data. The suggested buffer size for the destination buffer is 22 kilobytes.
// The output format of the data is 16-bit signed at 11025 samples per second.
virtual EVoiceResult DecompressVoice( void *pCompressed, uint32 cbCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten ) = 0;
// Retrieve ticket to be sent to the entity who wishes to authenticate you.
@@ -111,7 +127,7 @@ public:
virtual EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID ) = 0;
};
#define STEAMUSER_INTERFACE_VERSION "SteamUser012"
#define STEAMUSER_INTERFACE_VERSION "SteamUser013"
// callbacks
@@ -198,6 +214,4 @@ struct ValidateAuthTicketResponse_t
};
#endif // ISTEAMUSER_H
-12
View File
@@ -41,18 +41,6 @@ enum EMatchMakingServerResponse
eNoServersListedOnMasterServer // for the Internet query type, returned in response callback if no servers of this type match
};
enum EMatchMakingType
{
eInternetServer = 0,
eLANServer,
eFriendsServer,
eFavoritesServer,
eHistoryServer,
eSpectatorServer,
eInvalidServer
};
// servernetadr_t is all the addressing info the serverbrowser needs to know about a game server,
// namely: its IP, its connection port, and its query port.
class servernetadr_t
+14 -1
View File
@@ -53,6 +53,13 @@
// S_API void SteamAPI_Init(); (see below)
S_API void SteamAPI_Shutdown();
// checks if a local Steam client is running
S_API bool SteamAPI_IsSteamRunning();
// restart your app through Steam to enable required Steamworks features
S_API bool SteamAPI_RestartApp( uint32 unOwnAppID );
// crash dump recording functions
S_API void SteamAPI_WriteMiniDump( uint32 uStructuredExceptionCode, void* pvExceptionInfo, uint32 uBuildID );
S_API void SteamAPI_SetMiniDumpComment( const char *pchMsg );
@@ -229,12 +236,16 @@ public:
~CCallback()
{
Unregister();
if ( m_nCallbackFlags & k_ECallbackFlagsRegistered )
Unregister();
}
// manual registration of the callback
void Register( T *pObj, func_t func )
{
if ( !pObj || !func )
return;
if ( m_nCallbackFlags & k_ECallbackFlagsRegistered )
Unregister();
@@ -244,11 +255,13 @@ public:
}
m_pObj = pObj;
m_Func = func;
// SteamAPI_RegisterCallback sets k_ECallbackFlagsRegistered
SteamAPI_RegisterCallback( this, P::k_iCallback );
}
void Unregister()
{
// SteamAPI_UnregisterCallback removes k_ECallbackFlagsRegistered
SteamAPI_UnregisterCallback( this );
}
+2
View File
@@ -73,6 +73,8 @@ enum EResult
k_EResultAdministratorOK = 46, // allowed to take this action, but only because requester is admin
k_EResultContentVersion = 47, // A Version mismatch in content transmitted within the Steam protocol.
k_EResultTryAnotherCM = 48, // The current CM can't service the user making a request, user should try another.
k_EResultPasswordRequiredToKickSession = 49, // You are already logged in elsewhere, this cached credential login has failed.
k_EResultAlreadyLoggedInElsewhere = 50 // You are already logged in elsewhere, you must wait
};
+1
View File
@@ -88,6 +88,7 @@ const DepotId_t k_uDepotIdInvalid = 0x0;
typedef uint32 RTime32;
typedef uint32 CellID_t;
const CellID_t k_uCellIDInvalid = 0xFFFFFFFF;
// handle to a Steam API call
typedef uint64 SteamAPICall_t;
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,21 @@
"sku"
{
"name" "Spacewar"
"subscriptionID" "0"
"appID" "480"
"disks" "1"
"language" "english"
"backup" "0"
"apps"
{
"0" "480"
}
"depots"
{
"0" "481"
}
"packages"
{
"1 0" "179664"
}
}
@@ -6,6 +6,7 @@
{
"process 1" "%INSTALLDIR%\\redist\\vcredist_x86.exe"
"command 1" "/q:a"
"Description" "Microsoft VC Redist Package"
"NoCleanUp" "1"
}
}
@@ -20,7 +20,7 @@ root\autorun.inf :
root\splash.tga :
Image displayed by Steam while installing files from disk (392x165 pixel)
root\resources\setup_default.ini :
root\setup.ini :
This is the first config file loaded by Setup regardless the chosen
language. This file configures any language independent settings for this
game like AppID or menu appearance. The syntax is "parameter" "value", a full
@@ -38,21 +38,18 @@ root\resources\SteamInstall_<language>.msi :
Steam MSIs that install Steam on the users machine. Can be removed if no
matching setup_<language>.ini is provided.
root\resources\steam.inf :
This file configures the Steam installer MSIs. Update the files GameName,
RequiredSize and RequiredString according to your game.
root\resources\installscript.vdf :
This is a script file in KeyValues format to run 3rd party installers before
Steam and the game are installed. If you don't need to run any other installers,
set "ScriptFile" to "" and remove this file and SteamService.exe.
Steam and the game are installed. This file is optional and can be removed.
root\resources\eula.rtf :
The end user license agreement shown before the user installs the game. If no
EULA is required, set "EulaFile" to "" and remove this file.
The end user license agreement shown before the user installs the game.
This file is optional. If you have localized versions of this file,
name them eula_<language>.rtf
root\resources\setup.bmp :
The Setup background image as 640x480 pixel BMP file.
The Setup background image as 640x480 pixel BMP file. If you have
localized versions of this file, name them setup_<language>.bmp
root\resources\click.wav :
Played when a button is click. Delete file to play no sound.
@@ -70,14 +67,7 @@ Setup_*.ini configuration values:
"Game" : game name as it appears in the Setup menu
"AppID" : Steam AppID for this game
"Language" : overrides current language, usually not needed
"ImageFile" : menu background image BMP 640x480. If not set at all,
"resources\setup_<language>.bmp" will be used.
"EulaFile" : end user license as RTF file, set to "" for none. If not set at
all, "resources\eula_<language>.rtf" will be used.
"ScriptFile" : script file for 3rd party installers, set to "" for none. If not
set at all, "resources\script_<language>.vdf" will be used.
"MSIFile" : specifies the SteamInstaller to be used, usually not needed to
be set and defaults to "resources\steaminstall_<language>.msi"
"RequiredSize" : Required free disc space in KB
"URL" : target web URL for technical support button
"FontName" : menu Windows font like "Impact" or "Arial"
"FontHeight" : menu font height, eg "24"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 900 KiB

After

Width:  |  Height:  |  Size: 900 KiB

@@ -1,8 +0,0 @@
[Ident]
Version=1.0.0.0
PatchVersion=1.0.0.0
Title=The Example Game
GameName=Example Game
RequiredSize=4500000
RequiredString=4.5
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 KiB

After

Width:  |  Height:  |  Size: 190 KiB