Login

Steam publication plan

Timeline

Time Phase
T−10 weeks Steam onboarding
T−9 → T−7 weeks Store setup
T−8 → T−5 weeks AI usage review
T−6 → T−3 weeks Steam integration
T−2 weeks Steam review
Release day Publish

Mandatory platform cost

Item Cost
Steam Direct Fee $100 USD + applicable tax

T−10 weeks — Steam onboarding

Tasks

  • Sign into Steam
  • Register for Steamworks
  • Accept distribution agreements
  • Complete identity verification
  • Configure bank payout information
  • Complete tax forms
  • Pay Steam Direct fee

Result

  • Steamworks dashboard access
  • App ID assigned

T−9 to T−7 weeks — Store setup

Configure store page

Basic metadata

  • Game name
  • Short description
  • Long description
  • Supported languages
  • Categories
  • Tags
  • Pricing

Media

  • Capsule images
  • Header image
  • Screenshots
  • Trailer (optional)

Technical information

  • Minimum specs
  • Recommended specs
  • Supported controllers
  • Multiplayer flags
  • Steam Deck compatibility (optional)

Release settings

TEXT
Visibility → Coming Soon
Planned release date

Requirement

Coming Soon page should remain public for at least 2 weeks before launch.


T−8 to T−5 weeks — AI usage review (only if applicable)

Create:

TEXT
AI_DISCLOSURE.md

Tracking table

Area Tool Included in final game
Code Yes/No Yes/No
Art Yes/No Yes/No
Audio Yes/No Yes/No
Text Yes/No Yes/No
Runtime generation Yes/No Yes/No

Disclosure required if AI generated

  • Art
  • Text
  • Audio
  • Localization
  • Gameplay content
  • Marketing assets

Usually not required

  • Coding assistants
  • Internal productivity tools
  • Prototypes

T−6 to T−3 weeks — Steam integration (Go + Ebitengine)

Install Steam SDK

Project structure:

TEXT
project/
├── cmd/game
├── internal
├── assets
├── steam/
│   ├── sdk/
│   └── lib/
└── build/

Required SDK folders:

TEXT
sdk/public/
sdk/redistributable_bin/

Install Go Steam bindings

BASH
go get github.com/Philipp15b/go-steamworks

Enable:

BASH
CGO_ENABLED=1

Configure Steam App ID

Development only:

TEXT
steam_appid.txt

Example:

TEXT
1234567

Directory:

TEXT
game.exe
steam_appid.txt

Remove before release upload.


Steam initialization

GO
package steam

import steamworks "github.com/Philipp15b/go-steamworks"

func Init() error {
    return steamworks.Init()
}

func Shutdown() {
    steamworks.Shutdown()
}

Startup:

GO
func main() {

    if err := steam.Init(); err != nil {
        panic(err)
    }

    defer steam.Shutdown()

    runGame()
}

Ebitengine callback loop

GO
type Game struct{}

func (g *Game) Update() error {

    steamworks.RunCallbacks()

    return nil
}

Runtime verification

GO
func VerifySteam() bool {
    return steamworks.IsSteamRunning()
}

Optional:

GO
if !VerifySteam() {
    log.Println("Steam unavailable")
}

Achievements

Configure in Steam dashboard.

Example:

GO
func UnlockFirstWin() {

    steamworks.UserStats().
        SetAchievement("FIRST_WIN")

    steamworks.UserStats().
        StoreStats()
}

Steam Cloud

Enable cloud support.

Recommended save locations:

Windows:

TEXT
%USERPROFILE%/AppData/Local/Game

Linux:

TEXT
~/.local/share/game

Example:

GO
func SavePath() string {

    return filepath.Join(
        os.UserConfigDir(),
        "yourgame",
    )
}

Rich Presence (optional)

GO
steamworks.
Friends().
SetRichPresence(
    "status",
    "Playing",
)

Overlay

Check:

GO
steamworks.
Utils().
IsOverlayEnabled()

Open:

GO
steamworks.
Friends().
ActivateGameOverlay(
    "Achievements",
)

Build release binaries

Windows:

BASH
go build \
-ldflags="-s -w" \
-o build/game.exe

Linux:

BASH
go build \
-ldflags="-s -w" \
-o build/game

SteamPipe upload

Build folder:

TEXT
build/
├── game.exe
├── assets/
└── steam_api64.dll

Create:

TEXT
app_build.vdf

Example:

TEXT
"AppBuild"
{
 "AppID" "1234567"

 "ContentRoot" "./build"

 "BuildOutput" "./output"

 "Depots"
 {
   "1234568"
   {
     "FileMapping"
     {
       "LocalPath" "*"
       "DepotPath" "."
       "recursive" "1"
     }
   }
 }
}

Upload:

BASH
steamcmd \
+login USER \
+run_app_build app_build.vdf \
+quit

Branches

Recommended:

TEXT
default
beta
dev

Promotion flow:

TEXT
dev
beta
default

Technical validation

Rendering

  • Fullscreen
  • Windowed
  • DPI scaling

Input

  • Keyboard
  • Mouse
  • Controller

Audio

  • Device reconnect
  • Mute/unmute

Saves

  • Save
  • Load
  • Upgrade old saves

Steam

  • Overlay
  • Achievements
  • Cloud
  • Relaunch

Packaging

Release contains:

TEXT
game.exe
steam_api64.dll
assets/

Release does NOT contain:

TEXT
steam_appid.txt
*.pdb
testdata/
editor files
source code

T−2 weeks — Steam review

Submit:

  • Store page
  • Build

Steam verifies:

  • Build launches
  • Store accuracy
  • Configuration validity

Prepare:

  • Emergency patch branch
  • Release tag
  • Smoke test

Release day

Sequence

TEXT
1. Upload final build
2. Verify store
3. Verify pricing
4. Publish build
5. Press Release App
6. Install from Steam
7. Verify overlay
8. Verify saves
9. Verify achievements
10. Monitor crashes

Final summary

Required

  • Steam account
  • Steamworks onboarding
  • Tax information
  • Bank information
  • Store page
  • Uploadable build
  • Steam review
  • Steam Direct payment

Required only if applicable

  • AI disclosure

Mandatory publication cost

$100 USD (+ applicable tax)