🌟

GodotSteamの初期化でハマったのでめも

に公開

GodotSteamとは

  • GodotのAssetLibで公開されてる、SteamWorksSDKラッパー
    • サードパーティーツールは避けたい気持ちもあったが、自前でGDNative用意してC++のラッパー書くのに比べたら全然マシ
  • リーダーボード、インベントリ機能、マルチとか欲しい機能は一通り揃ってそう

1. 本当のgetting started

https://godotsteam.com/getting_started/introduction/

4.x系なら Godotエディター上でAssetLib→ GodotSteam 検索、バージョンに合うものを入れれば完了。

・・・のはずだったが、エラーで若干はまった。

まずは以下コードを適当なNodeにつける

extends Node

func _ready() -> void:
	initialize_steam()

func initialize_steam() -> void:
	var initialize_response: Dictionary = Steam.steamInitEx(480, false)
	print("Did Steam initialize?: %s " % initialize_response)

その後以下に注意

  • Steamクライアントを起動しておく
    • devクライアントから本番環境へ繋ぐみたいな気持ちの悪さがあって最初は半信半疑だった(w
  • Getting Startedの例では Steam.steamInitEx() の引数順が間違っていて動かない(!?
    • 1つ目にappIdを指定する。 Steam.steamInitEx(480, false)
  • また ログイン中のSteamアカウントで AppID 480のSpacewarをインストールする
    • Steam クライアントまたはブラウザで steam://install/480 を開く。
      • 普通のゲーム買う感じでライブラリに保存しないといけない。
    • 本番では2万払ってAppIDを作らないといけないのだけど、Steamが開発用のAppIDを用意してくれてる。

にしても、サンプルコードが間違ってる+構文エラー出ないのはビビったw
↓ドキュメント

↓以下、実は間違い

2. Steamオーバーレイで動作確認

  • ゲーム起動したらShift + Tab で表示されるのを確認しよう。
    • ビルド(エクスポート)しなくてもOK
    • ショートカットキーはSteam クライアントが injectしてくれるので、追加実装は不要
      • むしろゲーム側でキーを奪わないこと。InputMap で Shift+Tab をバインドしている場合は削除する。

以上

Discussion