Platform submission processes, certification requirements, and distribution across Steam, Epic, console, and mobile platforms.
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā STEAM ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā ā” Steamworks SDK integration ā
ā ā” Achievements, Cloud Saves, Trading Cards ā
ā ā” Store assets: ā
ā ⢠Header (460x215) ā
ā ⢠Capsule (231x87, 467x181, 616x353) ā
ā ⢠Screenshots (1920x1080 min, 5+ required) ā
ā ⢠Trailer (MP4, 1080p recommended) ā
ā ā” Age rating (IARC) ā
ā ā” Review time: 1-5 business days ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā PLAYSTATION ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā ā” PlayStation Partners registration ā
ā ā” DevKit access ā
ā ā” TRC (Technical Requirements Checklist) ā
ā ā” Trophies (Platinum, Gold, Silver, Bronze) ā
ā ā” ESRB/PEGI rating certificate ā
ā ā” Accessibility features ā
ā ā” Certification: 2-4 weeks ā
ā ā” Slot fee required ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā XBOX ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā ā” Xbox Partner Center access ā
ā ā” XR (Xbox Requirements) compliance ā
ā ā” Achievements (1000G base game) ā
ā ā” Smart Delivery support ā
ā ā” Game Pass consideration ā
ā ā” Certification: 1-3 weeks ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā iOS APP STORE ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā ā” Apple Developer Program ($99/year) ā
ā ā” App Store Connect setup ā
ā ā” App icons (1024x1024) ā
ā ā” Screenshots per device size ā
ā ā” Privacy policy URL ā
ā ā” App Review Guidelines compliance ā
ā ā” IAP testing with sandbox ā
ā ā” Review time: 24-48 hours (typically) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā GOOGLE PLAY ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā ā” Google Play Console ($25 one-time) ā
ā ā” App signing with Play App Signing ā
ā ā” Store listing assets ā
ā ā” Content rating questionnaire ā
ā ā” Data safety form ā
ā ā” Target API level compliance ā
ā ā” Review time: Hours to 7 days ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
// ā
Production-Ready: Steamworks Integration
public class SteamManager : MonoBehaviour
{
public static SteamManager Instance { get; private set; }
public static bool Initialized { get; private set; }
[SerializeField] private uint _appId = 480; // Test app ID
private void Awake()
{
if (Instance != null) { Destroy(gameObject); return; }
Instance = this;
DontDestroyOnLoad(gameObject);
try
{
if (SteamAPI.RestartAppIfNecessary(new AppId_t(_appId)))
{
Application.Quit();
return;
}
Initialized = SteamAPI.Init();
if (!Initialized)
{
Debug.LogError("[Steam] Failed to initialize. Is Steam running?");
return;
}
Debug.Log($"[Steam] Initialized. User: {SteamFriends.GetPersonaName()}");
}
catch (System.Exception e)
{
Debug.LogError($"[Steam] Exception: {e.Message}");
}
}
private void Update()
{
if (Initialized)
SteamAPI.RunCallbacks();
}
public void UnlockAchievement(string achievementId)
{
if (!Initialized) return;
SteamUserStats.SetAchievement(achievementId);
SteamUserStats.StoreStats();
}
private void OnApplicationQuit()
{
if (Initialized)
SteamAPI.Shutdown();
}
}
PRE-SUBMISSION CHECKLIST:
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā BUILD PREPARATION: ā
ā ā” Final QA pass completed ā
ā ā” All known critical bugs fixed ā
ā ā” Performance targets met ā
ā ā” Build size optimized ā
ā ā” Version number updated ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā STORE ASSETS: ā
ā ā” All required images uploaded ā
ā ā” Trailer uploaded and reviewed ā
ā ā” Store description finalized ā
ā ā” Tags and categories set ā
ā ā” Pricing configured ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā LEGAL/COMPLIANCE: ā
ā ā” Age rating obtained ā
ā ā” Privacy policy published ā
ā ā” EULA prepared (if needed) ā
ā ā” Copyright/trademark cleared ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā PLATFORM-SPECIFIC: ā
ā ā” SDK properly integrated ā
ā ā” Achievements/trophies configured ā
ā ā” Cloud save working ā
ā ā” Platform TRC/XR requirements checked ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā PROBLEM: Steam review rejected ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā COMMON REASONS: ā
ā ⢠Incorrect content descriptors ā
ā ⢠Missing EULA/privacy policy ā
ā ⢠Store assets don't meet specs ā
ā ⢠Build crashes on launch ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā SOLUTIONS: ā
ā ā Read rejection reason carefully ā
ā ā Update specific items mentioned ā
ā ā Retest before resubmitting ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā PROBLEM: Console certification failed ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā COMMON REASONS: ā
ā ⢠TRC/XR violation ā
ā ⢠Crash during suspend/resume ā
ā ⢠Memory usage exceeds limits ā
ā ⢠Missing required features ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā SOLUTIONS: ā
ā ā Address each failure point specifically ā
ā ā Rerun full certification tests locally ā
ā ā Document fixes for future submissions ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā PROBLEM: App Store rejection ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā COMMON REASONS: ā
ā ⢠Guideline 4.3 (spam/duplicate) ā
ā ⢠IAP issues ā
ā ⢠Privacy concerns ā
ā ⢠Crashes or bugs ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā SOLUTIONS: ā
ā ā Review App Store Guidelines ā
ā ā Appeal if rejection seems incorrect ā
ā ā Request phone call with reviewer ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
| Platform | Fee | Revenue Share | Review Time |
|---|---|---|---|
| Steam | $100/game | 70/30 (scaling) | 1-5 days |
| Epic | None | 88/12 | 1-2 weeks |
| PlayStation | Slot fee | 70/30 | 2-4 weeks |
| Xbox | Free (ID@Xbox) | 70/30 | 1-3 weeks |
| iOS | $99/year | 70/30 (85/15) | 1-2 days |
| Android | $25 one-time | 85/15 | Hours-7 days |
Use this skill: When publishing games, meeting platform requirements, or distributing across platforms.