全体の流れの共有

9d2c38e6fe48e61528f6b2d34370768f

この章で学ぶこと

全体の流れの共有をします。

講義概要

4b2e47e732ed2fa258a4454329da1a1e

Unity でのネットワークの基礎を Unity クライアント側とサーバー側の両方を動作させながら、ネットワークの利点・注意点・実装方法を学びます。実際の Unity コンテンツへどう活用するかの具体的な手法も体験します。学んだ知識を自分のコンテンツへの実践し、ネットワーク機能を加え発展させたコンテンツを成果物として発表します。

業界・職種対応ポイント

8a9af3d7fb6e7a81b4b6b57a9080cee8

  • ネットワークを使ったゲームコンテンツ開発への理解が深まり、開発だけでなく企画の幅が広がる。
  • Unity でのフレームワークになるべく頼らない基礎的なネットワーク実装ができるようになる。
  • サーバー側も自ら簡易的に構築してクライアント・サーバー双方の働きが実装ができるようになる。
  • GitHub Codespaces を使ったモダンなプロトタイピング手法を体験できる。
  • Slack を用いたコミュニケーションや質問が伴った開発手法を体験できる。

成果発表会

0cf53b2bde609243bc1b0d55d82b5d6e

大事なポイントです。

第 2 ターム 最終で成果発表会です。2 年生 3 年生合同で行います。授業の状況を見て詳細は決めていきますが以下のポイントで考えています。

  • 授業で学んだことを自分の作っている Unity 制作物の仕組みに組み込んでみる
  • 授業で学んだものをベースに新しく何かを作ってみる
  • 授業で学んだものからよりいろいろ組み合わせて制作物を作る

このような作り方を行って、成果を発表いただきます。

人数次第で 1 人あたりの時間は変わりそうですが、5 ~ 10 分程度で発表、5 ~ 10 分の質疑応答を予定しています。プレゼン力・実装力・発想力・チャレンジ力といった軸で評価する予定です。

とにもかくにも term2-3 で、最終的に決まったルールやポイントを伝えます。まずは、授業を楽しんで、自分の制作にどう活用するかを考えながら進めていきましょう~。

事前準備

事前準備をもとに進めていきます。

image

事前準備

コミュニケーション

aae5fcbb30bf9d55b7249a6d6bd44697

現場では対面授業。Slack でも質問を受け付けます!

講師のスキル

13de54927bc6437f8b51d6a60e676a6a

  • Web 系の技術には強いです。
  • デザイナーではないので、3Dのかっこいいエフェクトやビジュアルには苦手です。
  • 今回 Unity 側で使われる C# にはある程度の心得はあるので「ある程度」アドバイスができます。複雑な仕組みや自分固有の仕組みはできるところはサポートしますが、自分で頑張っていきましょう。
  • 今回サーバ側で使う Node.js の言語である JavaScript は得意としているので、ぜひ聞いてください。JavaScript の文献は、インターネットにもたくさんあるので、自分でも調べながら進めましょう。
  • とにもかくにも、この授業がうまく理解でき皆さんのスキルになるように頑張りますのでよろしくお願いします!

作業フォルダの準備

b0cb6d5c90ea28c5508f3e37f711642a

今回の授業の作業をフォルダを決めます。

おすすめは C ドライブの直下に vantan_unity_network_study をつくる形です。

もし、みなさんの PC で作業フォルダについて独自に管理をしている場合は、そのフォルダ内で vantan_unity_network_study をつくりましょう。

できれば避けてほしいのは、デスクトップ直下に vantan_unity_network_study を置くことです。これは、デスクトップに他のファイルもある状況だと、授業ファイルが探しにくくなり作業開始や途中再開、復習などがしづらくなるので避けて下さい。

image

ということで、まず、わたし(田中)と API の話を軸にウォームアップしてきましょう。

わたしとネットワーク(=Web)

image

最初の講師紹介でも軽くお伝えしましたが、わたしとネットワーク(=Web)のことを話します。

image

まず、情報を扱うのが楽しいので Web 制作へすすみました。そして、会社員からフリーランスへ。

image

伝える媒体が PC からスマホへ変化。

image

その後、Web フロントエンドとして関わりながらも、現実世界にデータで触れるアプローチとして IoT や VR などにも関わって現在に至ります。

データをやり取りする API と出会った

9a45d7f04c9ddc93a5231f7a4a0adc58

ネットワークと制作を続けていくと、いろいろなデータとつないで作っていくことになります。

050b06cb1b478dad95b4e52e31c930c4

そして、このいろいろなデータやサービスにつながるものが API と呼ばれていることを知り、API を軸にして探していくと、作るうえでもプラスになることが見えてきました。

API とは

さて、あらためて API とはこういうものです。

image

参考資料 : http://e-words.jp/w/API.html

image

API とは、 Application Programming Interface の頭文字です。データを提供したり、何かしらの機能を提供するソフトウェアの一部を、私たちのような外部の人間が扱えるように公開されている窓口です。HTTP プロトコルでやり取りしていることが多いです。

たとえば、Web アプリケーションなどインターネットの様々な仕組みを構築するとき、 API からデータを取得して加工して表示することが多いです。データや機能を借り受けるということですね。

✅ポイント

  • 現時点ではネットワークでデータをつなげる仕組みに「API」という仕組みがあると理解できてれば OK です

API とクリエイティブ

image

みなさんの「つくる」視点からも API は大事な役割あります。それは「API は技術同士をつなげる良き接着剤」というポイントです。

自分が API へつなげることで、自分だけでは用意できなかったデータや仕組みで制作物を面白くできたり、何かの API を存在を知ることで、自分の企画に新しい視点が生まれます。

何かをつくっていく上で、とても勉強になるクリエイティブの古典で「アイデアのつくり方」というジェームス W.ヤング氏の書かれた本があります。

image

この中で「アイデアは既存の要素の新しい組み合わせである」とあります。様々な技術とつながって新しい世界(データ)をみせてくれる API は、カジュアルに発想の組み合わせをしていく助けになります。

image

さて、こちらの図は、私が使ったことのある API や、まだ使ったことはないが知っている API をまとめてみたものです。

みなさんもイチから仕組みを構築してシステムをつくることももちろん大事ですが、このように API を知ることで、データを用意出来たり、ひとりでは難しい仕組みを導入出来たり、API を通じて新しい技術に触れることができます。

✅ポイント

  • ネットワークでデータをつなげることで、自分の仕組みによりよくしていくことができます
  • クリエイティブの目線から見ても、データをつなげることで発想を広げることができます

だいたい API は HTTP プロトコルでできてる

96b1357e0be36546141716fa6d6aa5f0

なお、今回紹介したような API は HTTP プロトコルという仕組みでやり取りできます。HTTP プロトコルは、Wenb 技術や、みなさんがブラウザでやりとりしている時に使われているものです。

今回は HTTP プロトコルを Unity で扱えるようになって外部の API ともつながれるよう学んでいきます。

ネットワークと Unity

d486e556a0d145d472c3cfbf4e2ab2df

さて、いよいよ、皆さんとのかかわりのある Unity および 3D との関わりの話。

私は、現実世界をデータで関われる HoloLens 2 のような MR デバイスであったり、Oculus Quest のような VR での 3D データを介したコミュニケーションにとても可能性を感じていて Unity を触れるようになりました。

image

このような Web 技術(WebSocket)とつなげるようなプロトタイプや、

image

このような IoT + 3D + デバイスなプロトタイプなどを日々作っています。

ですので、Unity を知り尽くしたプロではないですし、もちろん、すごい 3D エフェクトや演出ができるようなスキルは弱めですが、Unity とは API ・ Web ・ IoT など、他の素敵な技術を組み合わせて、いろいろと自分でプロトタイプをつくりながら未来を感じつつ制作し続けています。

b79bb223694d5c9f4d199b4a81125130

Unity で制作していくと Unity の中でいろいろな機能を使って、ビジュアルや企画が凝縮されてよくなっていくと思います。

01e5fcba3dd717beaabf4910bf359d8a

ネットワーク機能を活用することで、外部の他の仕組み(コンテンツ)につながって自分の制作に活用することができます。

b4dfdd64f3b724e8c5e666fe17913e15

また、ネットワークからサーバを活用できると、ユーザーとのコミュニケーション、ゲームデータ保存、ランキング機能なども自分の制作に加えることもできます。

マルチプレイヤーゲーム作成の概要 - Unity マニュアル https://docs.unity3d.com/ja/2020.3/Manual/UNetOverview.html

実は Unity にも上記のような高度なネットワークの仕組みもあるのですが、今回のようなネットワークの基礎的な仕組みが分かっていると、より深い理解で使いこなせます。「あ、この機能は自分で実装したけど大変だったことが簡単になってすごい良い」という気づきも得ながら進めることができるでしょう。

ゲーム制作の現場では、必ずしもネットワークに関して豊富なドキュメントがあるわけではなく、既存のゲームサーバ仕組みを理解しながらプロジェクトに関わっていくケースはありえます。そういったときにも、今回の授業で学ぶような基礎的な知識はきっと役に立ちます。

最近はクラウドサービスを絡めたゲームの仕組みも多く、今回の授業で「データの流れ」がわかってくる力がついていると、より関わりやすくなっていくと思います。

今回の授業は

8f20e327f80b6184c2b631edf617ad79

ということで、ネットワークでデータでつなげることの良さや Unity や 3D にも活用できることを、初めにざっくり伝えました。

今回の授業全体では、ネットワークでデータをつなげる基礎ということで、以下のようなことを学んでいく予定です。

  • 最初は外部の API ではなく、自分でサーバーをつくり「内部の API」でやり取りまなびます
  • Unity でのネットワークのデータのつなぎ方を学ぶ
  • Unity でのネットワークのデータのやりとりを学ぶ
  • データのやり取りをするためのデバッグの方法やテクニックを学ぶ
  • ネットワークのデータ側も自分で簡単な API サンプルで用意し、自分で Unity からつないで双方のやりとりを理解しやすくして学ぶ
  • API でよく使われる HTTP プロトコルの基礎を学び Unity 側のプログラムに反映できる流れを学ぶ
  • 外部にある様々な API にもつないでみて Unity に読み込んで活用を学ぶ
  • 外部にあるデータ保存(Airtable)の仕組みにもつないでゲームのデータ保存を学ぶ

よろしくお願いします!

results matching ""

    No results matching ""