What's This?

このブログは不定期に更新されるゲーム製作アラカルトのメモ帳です。
記事は以下のカテゴリーに分類されてます。(クリックで記事一覧表示)

全てのソースコードのライセンスについてはこちら

書いてる人→@eiki_okuma

 

Unity のネットワーク事情について(2020/07)

 ネットワークゲーム作りたいけど何使えばいいの?という話。

歴史と現状

 古代:Legacy network system
 中世:UNet
 現代:暗黒期
 未来:Connected games

 つまり今は歴史の中間点であり、コレといったモノが存在しない。暗黒。

 

UNet

 死亡確認!*1

f:id:eiki_okuma:20200709121951p:plain

 

Photon

 現状選択一番手になるミドルウェア。Photon Cloud と呼ばれるクラウドにみんなで接続しにいく。幻走スカイドリフトでも採用。

メリット
  • スクリプトの書き方が UNet と近く導入コストが安め。
  • 基本的なマッチングのやり方など、サンプルが充実している。ドキュメントも日本語。
  • まあまあ枯れてるしまあまあ安定している。
デメリット
  • ちょっと高い。
  • プラン次第で解消しない秒間通信量制限がある。対戦ゲームなら8人くらいが限界。
  • 中国とサーバが分かれているし、中国サーバの値段が何故か日本の五倍する。
  • 割と Photon サーバが死ぬことがある。
Photon bolt
  • 似た名前が付いているがアーキテクチャが全く異なるサービス。
  • P2Pやサーバasホストに対応しているので、多人数対戦も可能。
  • 導入コストがめっちゃ高いし仕様がややこしいので正直オススメできない。普通の Photon で十分。あるいは Mirror を使う。

 

Mirror

 比較的プリミティブなP2Pができる無料のフレームワーク。有料だが uMMORPG など完成プロジェクトのサンプルが存在する。

メリット
  • 無料
  • シンプルなネットワーク機能が実装できる。
  • サンプルが結構充実している。無料のものでも Network Transform が付いてる。
  • LiteNetLib4Mirror や NobleConnect のような拡張ライブラリで UDP や NAT 越えも取り扱える。
デメリット
  • マッチングはついてないので自分で作るか NobleConnect の有料サービスを使う必要がある。(サーバリスト機能はあるっぽいが)
  • Send / Recv に慣れてない人は勉強が必要。

 

 Epic online service

 UE4の Epic が公式で出している無料のネットワークミドルウェア+サービス。UE4でなくても使える。マッチングやランキング、アナリティクスなど。

メリット
  • 無料
  • Epic 製のゲームで実際に使われているフレームワークなので技術的に保証されている。多分。
デメリット
  • 資料が少ない。.unitypackage のサンプルも今の所見当たらない。
  • Dedicated server は含まれない。

 

Unity Connected Games

 Unityの新しいネットワークフレームワーク。まだプレビュー版未満で、お問い合わせれば環境もらえるっぽい……?

 

その他

 

まとめ

 とりあえずネットワークやりたい、って人は Photon。

 かっちり通信させたいのでフレームワーク欲しいって人は Mirror。

 

 

 

*1:厳密に言えばレガシーでまだ使えるのだが確定で死ぬので使ってはいけない。

秒でセーフエリア対応する

要は Screen.safeArea に親 RectTransform を合わせればいいんだけど、ググると回りくどい方法しか出てこないので。

対応

 1. Canvas と UI の間に Container 的なオブジェクトを一段噛ませる

f:id:eiki_okuma:20200624190855p:plain

 2. そのContainerに以下のスクリプトを貼っ付ける

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SafeAreaAdjuster : MonoBehaviour
{
    private void Awake()
    {
        var panel = GetComponent<RectTransform>();
        var area = Screen.safeArea;

        var anchorMin = area.position;
        var anchorMax = area.position + area.size;
        anchorMin.x /= Screen.width;
        anchorMin.y /= Screen.height;
        anchorMax.x /= Screen.width;
        anchorMax.y /= Screen.height;
        panel.anchorMin = anchorMin;
        panel.anchorMax = anchorMax;
    }
}

 3. Container 以下の UI は画面のアスペクト比がどんなものでもちゃんと対応できるようにしておく

 4. 終わり

解説

 Screen.safeArea は実解像度サイズで指定されるが、多くの場合 Canvas Scaler はScale with Screen Size を使っているので、anchorMin / anchorMax を使う必要がある。もう少しスマートに書けないか粘ったが、結局この部分はみんなが使っているものと同じ。

注釈

※1:もう作ってしまったゲームに後から対応する場合でも、意外と各 UI をバインドする箇所で Root を差し替えればいいだけなので工数は大きくない。むしろ、これで工数が異常にでかい場合は UI の作り方が悪い。
※2:回りくどい方法、と言ったがこのコードはビルドしないと確認できないので、PC上で色んな環境のテストをしたい場合は先人の知恵を借りるのが一番。

The character used for Ellipsis is not available in font asset

The character used for Ellipsis is not available in font asset [font name]
という Text Mesh Pro のワーニングの意味と対処について。

結論

https://forum.unity.com/threads/the-character-ellipsis-is-not-available-in-font-asset.656425/

フォントにアンダーバーとカッコ()が含まれていないと出るワーニング。Text Mesh Pro の Font Asset Creator で設定を Extended ASCII にしてフォントを作ると自動でそれらが含まれるが、含まれていませんよ、という警告らしい。過去のバージョンでは出ないものだった。

上の URL にある TMP Settings の "Disable warnings" チェックボックスを ON にすると警告はでなくなる。

ミルクボーイ「メテオフォール型開発」

 http://illucalab.com/temp/manzai_N.png

「いきなりですけどね。うちのオカンがね、オトンの仕事の話しとったんやけど」

「ほう」

「なんか横文字の開発手法がしんどい言うて、でもその名前をちょっと忘れたらしくてね。色々聞くんやけどな、全然分からへんねんな」

「はー、アジャイルとかウォーターフォールとかな、覚えにくいもんな。ほな俺がね、オトンの仕事で使ってる開発手法、ちょっと一緒に考えてあげるから」

「おー」

「どんな特徴ゆうてたかってのを教えてみてよ」

「あんな、なんかめっちゃ偉い人直轄のプロジェクトでな。誰もそのおっちゃんに逆らえんねんけど、言ってることがめちゃくちゃらしいって言うねんな」

「おー。
 メテオフォール型開発やないかい。
f:id:eiki_okuma:20180510175057j:plain
 その特徴はもう完全にメテオフォールやがな。
 すぐ分かったやんこんなんもー」

「でもちょっと分からへんのやな」

「何が分からへんのよ」

「いや俺もメテオフォール型開発と思うてんけどな。
 スクラムっての組んで小さいイテレーションでプロダクトを回してるらしいねん」

「あー。ほなメテオフォールと違うかあ。
 メテオフォール開発にそんな秩序立ったイテレーションないからね。
 メテオフォールはね、同じスクラムでもラグビーのくんずほぐれつの大乱闘の方やねんあれ。メテオフォールってそういうもんやから」

「でも、結局偉い人が全部ぶち壊しにすんねん」

メテオフォールやないかい
 メテオフォールの前ではね、人の叡智無力なのよ。
 神の一声で粉々に粉砕された我々のバベルを、何度でも再建するその涙ぐましい人間の努力の物語がメテオフォール開発の本体やねん。
 メテオフォールやそんなもんは」

「分からへんねんでも。
 俺もメテオフォールと思うてんけどな。オカンが言うには、スケジュールはある程度現場の裁量があるらしいんよ」

「ほなメテオフォールと違うかあ。
 メテオフォール開発ではね、全てのスケジュールは天界の都合によって決まんねん。
 設計もデザインも何も決まってないのに何故かデッドラインはそこにあるから、
黙示録って呼ばれてんねん。
 段々終業のチャイムが天使のラッパに聞こえてくんねんから」

「でも、結局その偉い人が現場に来てあれこれ口出しするから、効率下がるらしいねん」

メテオフォールやないかい
 あいつらは大体現場に来ては好き放題かき回して帰っていくんやから。
 ソフトウェア開発においてシルバーバレットなんてものは夢物語やけど、その逆は存在すんねん。
 ラピュタの雷ボタンビーマニしとんねんあいつら。
 メテオフォールや絶対」

「分からへんねんでも、俺もメテオフォールやと思うてんけどな、意見はちゃんと聞いてくれるらしいんよ」

「ほなメテオフォールちゃうやないかい。
 メテオフォール開発においてね、神とは基本対話なんかでけへんのよ」

「でも大事なことは殆ど届かんらしいねんけどな」

「やっぱりメテオフォールやないかい
 神にフィードバックは届かないんよ。
 ただし所定の手順を踏んで正当に捧げる祈りだけは稀に届くらしいねん。
 その祈りが上手い人から順番に会社ってのは出世していくんやから。
 大体宗教と同じやねん。

 えーほなもうちょっとなんか言うてなかったか?」

「なんかな、その偉いおっちゃんも厄介なんだけど、最近販売の偉い人もよう来て、正反対のこと言って帰っていくらしいねん」

ラグナロクやないかい
 あのな、神が一人の間はそれでもまだマシやねん。
 問題は神が二人以上居るケースやから。あいつらは現場に来て全く異なる啓示を下して帰っていくんよ。
 我々民は神々の戦争に巻き込まれるしかないねん」

「でな、あんまり進捗が進まないから、本社の方からもっと偉い人が来て、プロジェクトまるごと引き取るとか言うてるらしいねん」

ジハードやないかい
 混沌としたラグナロクの果てには全てを吹き飛ばす新たな神が待ってんねん。
 しかも不思議と新たな敵が現れるとこっちは神を筆頭にどこか団結すんねん。突然聖戦みたいになるんやから。その団結力もっと最初に発揮しとけって話やでほんま。
 もう完全に末期やがなそのプロジェクト。大丈夫かお前のオトン?」

「あ、でもな。この間そのプロジェクトの発表が、勝手にPRイベントで出てたらしいわ」

メテオフォールやないかい
 メテオフォール開発のプロダクトは、大体勝手に情報が出るのよ。
 しかもそこで社長さんとかがつい口を滑らして、新しい仕様が生まれるのよ。
 我々はポカンと液晶越しにそれを眺めてるしかないんよ。受けても全く心の休まることのない預言やけどな」

「でも分からへんねん」

「分からへんことない。お前のオカンが聞いた開発手法はメテオフォール開発もぉ」

「でも偉い人が言うにはメテオフォールではないって言うねん」

「ほなメテオフォールではない……わけあるかい
 メテオフォールという言葉を知ってるのになんでメテオフォール作ってんねや。
 メテオフォールは、みんな心の中一つずつあるんや
 笑っとる場合ちゃうで。お前の話やお前の。ほんま。
 どうなってんねんもう」

「んでオトンが言うにはな」

「オトン?」

いつもこれやって言うねん」

「オトン苦労してんねんな。もうええわー」

「ありがとうございましたー」

元記事とか

 

あつまれ どうぶつの森 -Switch

あつまれ どうぶつの森 -Switch

  • 作者: 
  • 出版社/メーカー: 任天堂
  • 発売日: 2020/03/20
  • メディア: Video Game
 

 

Amazon の再購入リストを開いたら面白かったのでついでにマイ日用品を紹介する話。

f:id:eiki_okuma:20190504204815p:plain

 https://www.amazon.co.jp/gp/buyagain

 まず、上のURLを開いてみてほしい。大丈夫、怪しいリンクではない。このリンクは、Amazon の再購入リストのリンクである。Amazon のアカウントメニューの「もう一度買う」という所でも同じものが見れる。

 Amazon の再購入リストはなかなか性能が高く、普段繰り返し購入しているもののうち、しばらく購入していない(そろそろ購入サイクルが来る)製品を優先的に表示してくれる。いわば、日用品リストだ。このリストを眺めるだけで、その人が普段どんな暮らしをしているのか、少し理解することができる。人の日用品リストを眺める機会はそう無いし、リスト化するのも本来面倒なものなのだが、こうしていざ一覧になっていると何とも面白いものだ。一つ一つにそれを選んだ理由もあるし、これを紹介するだけでも立派なヒトネタになりそうだと思い立ったわけである。

 社会人生活も七年ほど過ぎると皆日用品も最適化されていく。最近社会人になったばかりの人は是非参考にしてほしいし、長く社会人生活を営んでいる人も「ああ、これ使ってる」とか「こんなものがあったのか」なんて共感や気付きを得てほしい。そして、願わくば他人のリストも見てみたいので、Twitter に貼ったり同じテーマでブログを書いてみてほしい。

続きを読む

Apple Arcade は我々ゲーム開発者に何をもたらすのか?

f:id:eiki_okuma:20190421115111j:plain

(c) Apple, Inc.

 Apple Arcade が話題だ。ユーザにとっては念願の遊び放題サービス、しかも従来の「散々遊びつくされた過去作が放流されるサブスクリプション」ではなく、完全新規・独占タイトルが多数用意されているのだから、コアなゲームユーザにとっては垂涎モノの新サービスと言うほかない。

 一方でぼくなどは天邪鬼なのでこうも歓迎ムードで迎えられると逆張りしたがる愚かな生き物であり、実際 Apple Arcade には Twitter で散発的に書いているように幾つかの重大な懸念点が存在する。大体の個人開発者は Apple の審査や規約周りにに苦汁を舐めさせられているので、皆いまいち信用できないんだろうなあという空気も節々から感じている。

 実際にどう運ぶかはリリースされ、一年ないし二年程度経たないと分からない部分も多いのだが、ゲーム開発者という視点からこの Apple Arcade が何をもたらすのか、メリットデメリットを並べてみたいとおもう。*1

 

  • Apple Arcade のメリット
    • 新たなマーケットが生む第三の販売形態
      • 旧来の販売形態とその欠点
      • 第三のマーケット、第三の販売形態
    • Apple の意志。良質な有料ゲームが再び復権するか?
  • Apple Arcade のデメリット
    • プラットフォームが力を持ちすぎる。
    • 選ばれなかったゲームはどうなるのか?
    • ゲームの価値は本当に維持されるのか?
    • 業界の外にゲームが広がっていくか?
  • まとめ

*1:ユーザー視点?最高に決まってるだろ、そんなの!

続きを読む