迷走テクノロギア

妄言に限りなく近い何か

【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ではローカルデバッグできない

f:id:sanaftg:20201230162440p:plain

Steamにログインしている状態でなければSteamNetworkingは利用ができません。

これまで私はシンボリックリンクで同じプロジェクトを2つUnityで立ち上げてデバッグする手法を取っていましたが、

これができません!!

f:id:sanaftg:20201230162921p:plain

2台PCがあって、Steamアカウント2つ持ってればいけるのかもしれませんが非常に手間です。

しかし、Mirrorを使用しておけば、ローカルデバッグの間はKCPにしておいてSteam上でテストしたい時にはコンポーネントを差し替えるのみでいけます!

2.推奨環境が利用できない

Steam ネットワーキング (Steamworks ドキュメント)

↑こちらを読む限りISteamNetworkingMessagesというのが推奨されているようですが、

Steamworks.NET(C#用SteamworksSDK)ではまだ対応していません。

なので仲介ライブラリ(Mirror)を使っておけば今後推奨環境も対応してくれるんじゃないか??という算段です。

内部までの調査はまだまこれからですが、これからSteamでマルチプレイのゲームを作りたい方の参考になれば嬉しいです!

今年もまもなく終わりですがブロレディ開発を通して関係者の皆様大変お世話になりました!

来年から本格的にゲームを形にしていきますので、来年も宜しくお願い致します。

f:id:sanaftg:20201230163934p:plain