【MirrorNetwork】SteamNetworkingの利用【FacePunch】
皆様お久しぶりです。SANAです。
さてさて、ブロレディ(怪盗探偵ブロンドレディ)の開発も中盤になって参りました。
これまでPhoton頼りでマルチプレイ開発してきた私ですが、今回Steamにて配信ということでSteamNetworkingの導入を検討して四苦八苦しておりました。
最終的に辿り着いた構成を共有致します。
Mirrorネットワーク
様々な通信規格にコンポーネント変えるだけでKCPやWebsocket、SteamNetworkingに変換してくれるライブラリ
Mirror Networking – Open Source Networking for Unity
FacePunchSteamworks
SteamworksSDKのラッピング
GitHub - Facepunch/Facepunch.Steamworks: Another fucking c# Steamworks implementation
FizzyFacePuch
FacePunchSteamworksとMirrorの仲介
Releases · Chykary/FizzyFacepunch · GitHub
この構成に辿り着いた理由はといいますと
1.SteamNetworkingではローカルデバッグできない
Steamにログインしている状態でなければSteamNetworkingは利用ができません。
これまで私はシンボリックリンクで同じプロジェクトを2つUnityで立ち上げてデバッグする手法を取っていましたが、
これができません!!
2台PCがあって、Steamアカウント2つ持ってればいけるのかもしれませんが非常に手間です。
しかし、Mirrorを使用しておけば、ローカルデバッグの間はKCPにしておいてSteam上でテストしたい時にはコンポーネントを差し替えるのみでいけます!
2.推奨環境が利用できない
Steam ネットワーキング (Steamworks ドキュメント)
↑こちらを読む限りISteamNetworkingMessagesというのが推奨されているようですが、
Steamworks.NET(C#用SteamworksSDK)ではまだ対応していません。
なので仲介ライブラリ(Mirror)を使っておけば今後推奨環境も対応してくれるんじゃないか??という算段です。
内部までの調査はまだまこれからですが、これからSteamでマルチプレイのゲームを作りたい方の参考になれば嬉しいです!
今年もまもなく終わりですがブロレディ開発を通して関係者の皆様大変お世話になりました!
来年から本格的にゲームを形にしていきますので、来年も宜しくお願い致します。