UNET Network Simulatorを使って、遅延をシミュレーションする

ネットワークゲームを作る際は、ネットワークによる情報伝達の遅延やパケットロスを必ず考慮する必要があります。それをサポートする機能であるNetwork Simulatorの使い方を解説します。 ※インターネット接続の場合です。LAN接続前提の場合はそこまで神経質…

UNET NetworkDiscoveryでIPアドレスの入力を省く

UNETでネットワークゲームを作って、別のマシン同士で通信プレイする際に、面倒なのが、IPアドレスの入力です。 口頭で「いちきゅーにーのー、いちろくはちのー、」とかやるのは、あまりにもスマートじゃないです。 このへんをスマートに解決する機能「Netwo…

UNET MatchMakerを使ってインターネット経由で接続する

「ネットワークゲーム」とひと口に言っても、いろんな接続方法があります。まあ、遊ぶ側の視点でネットワークゲームと言えば、インターネット経由での接続が当たり前ですが、様々な理由により、それはそんな気軽に開発できるものではありません。だからUNET…

⑯UNETでFPSを作る

UNETを使って、ネットワーク対応のFPSゲームを作ります。

UNETのソースコードをDLしたり改造したりする方法

UNETのHLAPIの部分はオープンソースとなっており、自由に閲覧したり、改造したりできます。 なお、使っている環境は次の通りです。 Windows 10 Unity 2017.3 Visual Studio 2017

UNET QoS Channels について

UNETでは、通信の品質を選ぶことができます(信頼度と速さに影響します)。

UNET NetworkAnimatorでアニメーションを同期させる

3Dの人型キャラクターが登場するネットワークゲームでは、キャラクターの位置が同期するのは当然として、アニメーションも同期している必要があります。 アニメーションの同期方法は色々と考えられますが、この記事では、UNETが標準で用意しているNetworkAni…

UNET 位置の同期を自作する

UNETにはNetworkTransformという位置同期の仕組みが標準で搭載されています(使い方はこちらで解説しています)。 これを使うと、とても手軽に位置の同期が行えますが、残念ながら色々と問題があるし、かゆいところに手が届かない機能です。 そこで今回は、…

⑬UNETで じゃんけん を作る

UNETを使ってネットワーク対戦のじゃんけんを作ってみたいと思います。 完成イメージ 今回は、UNETのSyncVarとhookを駆使して作ります。Commandを使うのは1箇所のみで、それ以外の機能(例えばClientRPCやMessage等)は使いません。

UNET⑮ ネットワーク対戦のレースゲームを作る

今まで学んだことを組み合わせて、ネットワーク対戦のレースゲームを作ってみたいと思います!! ・・・といっても、本格的な車を走らせたりするのは大変なので、プレイヤーオブジェクトは玉です。玉転がしレースです。 なるべく簡単に作りたかったので、見た目…

UNET⑭ NetworkManagerをカスタマイズして、プレイヤー生成処理などを独自のものにする

通常、NetworkManagerに登録可能なプレイヤーのプレハブは、1つだけです。つまり、全員同じキャラクターしか使えません。 今回は、NetworkManagerを継承した独自クラスを作り、プレイヤー生成処理をカスタマイズすることによって、プレイヤーによって別々の…

UNET⑫ NetworkManagerHUDを自作のUIに置き換える

UNETのNetworkManagerHUD(あのクソダサいデフォルトのUI)を見限って、自作のUIで接続などを行えるようにします。 ※なお今回作るのはLAN接続前提のUIです。インターネット接続のゲームを作りたい場合は、この記事に加えて、こちらの記事も参考にしてみてく…

UNET⑪ Messageを使って情報を送信する

UNETのMessageという機能を使って、サーバー↔クライアント間で情報をやり取りする方法を学んでいきます。 公式マニュアルはこちら Messageを全く使わなくても、ネットワークゲームを作ることは可能です。しかし、UNETの内部ではMessageを多用しており、Messa…

UNET⑩ Spawnで敵キャラなどを生成

今回はNPCを作りながら、Spawnという機能について学びます。 ※ NPCとはNon Player Characterの略で、プレイヤーが操作するキャラクター以外のキャラクター全般のことです。村人とかです。広義では敵キャラ等もNPCです。

UNET⑨ SyncVarで変数を同期する

UNETのSyncVarという機能を使って、各クライアント間で変数を同期します。

UNET⑧ NetworkStartPositionでスポーン地点を指定

UNETのデフォルトでは、プレイヤーキャラクターオブジェクトは原点(0, 0, 0)に生成されます。このままでは、ゲーム開始時は全員が重なった状態となってしまいます。これではおかしいですよね。今回は、NetworkStartPositionを使って、スポーン地点を指定して…

UNET⑦ CommandとClientRPCでチャットを作る

今回は、UNETのCommandとClientRPCを使って、簡易的なチャットシステムを作ります。

UNET⑥ CommandとNetworkTransformで位置を同期

前々回の記事で作ったプロジェクトを改修し、キャラクターの移動と同期を作ります。その過程でCommandとNetworkTransformを詳しく学んでいきます。

UNET⑤ たくさんある情報の送信方法の解説

UNETに用意された数々の情報の送信方法について、概要を説明します。

UNET④ NetworkManagerを使ってみる

いよいよUNETを使い始めます。NetworkManagerとNetworkManagerHUDを使って、サクっとゲーム同士を接続します。

UNET③ ログをゲーム画面上に表示

今回はログをゲーム画面上に表示する機能を作ります。

UNET② UNETの基本知識

UNETを使えば、TCP/IPのことをあまり意識しなくてもプログラムが書けて、たしかに楽です。しかし、登場するキーワード(機能名やクラス名)のあまりの多さに、入門者は混乱必至です。重要なキーワードや基本知識をいくつか説明します。一度で全ては理解でき…

UNET① UNETを勉強する その前に

UNETの機能の説明などをする前に、周辺知識などを整理しておきましょう。

UNET入門 目次

2018年9月19日 追記 Unityの標準ネットワーク機能であったUNETですが、廃止され、新しいより良い仕組みに置き換わるようです。よって、今からUNETを勉強するのはオススメできません。Unity2019では動かないようですし… しかしながら、新しいネットワーク機能…