451 Unavailable For Legal Reasons

とあるゲームエンジニアのブログです

スーパーマリオランで使われている技術を権利表記から確認してみる

Super Mario Run

Super Mario Run

  • Nintendo Co., Ltd.
  • ゲーム
  • 無料

スーパーマリオラン出ましたね。 「メニュー」→「せってい」→「このアプリについて」の中にある「権利表記」の内容から使われている技術を確認していきたいと思います。

UniRx

f:id:master-0717:20161216103503p:plain

github.com

UniRxはReactive ExtensionsをUnityで使えるように再実装されたライブラリです。仕事でUnityを使う時にはいつもお世話になっています。 UniRx作者本人のブログ記事が一番詳しいと思うので、時系列で紹介します。

2014/08/23

neue cc - A Beginners Guide to Reactive Extensions with UniRx

2014/09/08

neue cc - Immutable CollectionsとSubject(Rx)の高速化について

2014/12/18

neue cc - Unityのコルーチンの分解、或いはUniRxのMainThreadDispatcherについて

2015/04/13

neue cc - UniRx 4.8 - 軽量イベントフックとuGUI連携によるデータバインディング

2015/05/11

neue cc - UniRxでの空呼び出し検出、或いはRoslynによるCode Aware Libraries時代の到来について

2015/06/20

neue cc - 第一回UniRx勉強会を開催しました+スライドまとめ

2015/10/23

neue cc - 同期(風)コードと対比させたUnity+UniRxで非同期を扱う場合のパターン集

2015/12/21

neue cc - UniRx 5.0 - 完全書き直しによるパフォーマンス向上とヒューマンリーダブルなスタックトレース生成

2016/01/06

neue cc - Unityでのボクシングの殺し方、或いはラムダ式における見えないnewの見極め方

2016/05/14

neue cc - Unityにおけるコルーチンの省メモリと高速化について、或いはUniRx 5.3.0でのその反映

2016/08/03

neue cc - UniRx 5.4.0 - Unity 5.4対応とまだまだ最適化

2016/10/05

neue cc - UnityのMonoアップグレードによるasync/awaitを更にUniRxで対応させる

FlatBuffers

f:id:master-0717:20161216103512p:plain

github.com

FlatBuffersについてはDocumentationのOverviewをGoogle翻訳すると下記の通りです。

FlatBuffersは、C ++、C#、C、Go、Java、JavaScript、PHP、およびPython用の効率的なクロスプラットフォームシリアライズライブラリです。 もともとは、ゲーム開発やその他のパフォーマンス重視のアプリケーション向けにGoogleで作成されたものです。

FlatBuffersはデシリアライズのパフォーマンスに特化したシリアライザで、なぜ高速にデシリアライズできるのかというと、定義されたスキーマに則ってシリアライズしたバイト配列をオブジェクトへのアクセス時にそのまま利用する実装になっているからです。

UniRx作者がFlatBuffersにインスパイアされてZeroFormatterというシリアライザを作成公開しています。

github.com

ZeroFormatterもデシリアライズのパフォーマンスに特化したシリアライザで、シリアライズしたバイト配列をオブジェクトへのアクセス時にそのまま利用するところはFlatBuffersと同様ですが、C#のクラス定義をそのままスキーマ定義として利用できるようになっています。 なので例えばC#(UnityやUWP等)で作成したゲーム内でクライアントが頻繁に通信をする場合などにFlatBuffersよりも楽に使えます。

ちなみにC#で使えるシリアライザのパフォーマンス比較結果がZeroFormatterリポジトリのREADMEにあります。

https://github.com/neuecc/ZeroFormatter#performance

OpenSSL

f:id:master-0717:20161216103519p:plain

https://www.openssl.org/

OpenSSLはTLSおよびSSLプロトコル用のライブラリです。Facebook SDK for Unityが依存しているので入っているのではないでしょうか。

iOS Native Code Samples

f:id:master-0717:20161216103526p:plain

bitbucket.org

iOS Native Code SamplesはUnity開発元のUnity Technologies社が公開しているサンプルコードです。

MiniJson

f:id:master-0717:20161216103547p:plain

Unity3D: MiniJSON Decodes and encodes simple JSON strings. Not intended for use with massive JSON strings, probably < 32k preferred. Handy for parsing JSON from inside Unity3d. · GitHub

MiniJsonはJSONシリアライザです。勝手な予想ですが、FlatBuffersは対戦などリアルタイム通信系のシリアライズ・デシリアライズが頻繁に行われる箇所に、JSONはAPIとのHTTPS通信等たまにシリアライズ・デシリアライズが行われる箇所に使用されていたりするのではないでしょうか?

Facebook SDK for Unity

f:id:master-0717:20161216103602p:plain

developers.facebook.com

Facebook SDK for UnityはFacebookログイン、Facebookへのシェア、Facebookの友人とデータ共有(ランキングとか)などをUnityで開発するアプリで利用するためのライブラリです。

adjust SDK for Unity

f:id:master-0717:20161216103618p:plain

docs.adjust.com

adjust SDK for Unityは、売上、セッション数、インストール数などのKPIを収集して可視化したり、広告の効果測定を行うためのadjustというサービスを利用するためのライブラリです。

Firebase-Unity

f:id:master-0717:20161216103631p:plain

firebase.google.com

Firebase-Unityは、Push通知、クライアント・サーバー間やクライアント同士のデータ同期、分析、テスト、クラッシュレポート等のモバイルアプリの開発・運用で必要になる技術をサービスとして提供するFirebaseというmBaaSを利用するためのライブラリです。

総括

FlatBuffersを使っていてパフォーマンスを強く意識している感じがします。Firebaseを使っていてサーバー側はマネージドなサービスで運用できている感じもしますね。ゲームあるところにObserverパターンありといった感じで、一度独自Observerパターンの代わりにUniRxを使ったらもう戻れないぐらい便利なので、UniRxは多くのUnity開発者にとって手放せないライブラリになってきているのではないでしょうか。現場からは以上です。

Microsoft HoloLens のプレオーダーが 12 月 2 日(金)より開始

news.microsoft.com

とうとう日本でもHoloLensのプレオーダーが開始されるようです。価格などについてはリンク先を御覧ください。

以下、HoloLensアプリ開発でスタートダッシュを決めたい開発者のために、読んでおいたほうが良いページをまとめておきます。

環境構築

Install the tools

HoloLensアプリを開発するために必要なツールです。

  • Windows 10 SDK(version 1511以降)
  • Visual Studio 2015 Update 3
  • Unity 5.5 *1
  • Vuforia *2

チュートリアル

Academy

チュートリアルは全部やった方が良いです。HoloLens実機が手元にない場合はEmulatorでできるとこだけ。入力、レンダリング、3Dサウンド、空間認識などを体感するにはDevelopment Editionを買うべし。

HoloToolkit

github.com

HoloToolkitは、Windows Holographicを対象としたホログラフィックアプリケーションの開発するためのコンポーネントを含むリポジトリです。

HoloToolkit-Unity

github.com

HoloToolkitをUnityから利用するためのコンポーネントを含むリポジトリです。 Examplesも含まれています。

UnityのWindows Holographicドキュメント

docs.unity3d.com

色々とHoloLensアプリを開発するための設定やエディタの操作方法が書いてあります。Performance recommendations for Unity へのリンクなどもあります。

UnityのScriptReference

docs.unity3d.com

実際に開発するようになったらScriptReferenceを一番見るようになるかもしれません。

*1:HoloLensをサポートしている正式版の5.5が出たので、HTPよりも5.5をインストールするのがおすすめです。

*2:実世界のオブジェクトをマーカーにして、GameObjectを配置したり追随させたりしたい場合は必要です。

ISUCON6予選問題の実装やベンチマーカーが公開されたので.NET Core実装追加してみた

ISUCON6予選問題の実装やベンチマーカーが公開されましたね。

isucon.net

ということでフォークして.NET Coreの参照実装を追加しました。

GitHub - kiyoaki/isucon6-qualify: Add .NET Core support

追加しただけで動作確認はこれから。 Microsoftは運営・協賛に入ってるのになぜ.NET Coreの参照実装を用意してくれなかったのか。

C#縛りでLT大会 & Meetup@bitFlyerで話してきた

イベントページ

forkwell.connpass.com

資料

www.slideshare.net

振り返り

懇親会にテキーラ差し入れで持って行ったらベロンベロンになりました。懇親会と2次会で何を話したか忘れましたが、楽しかったのはなんとなく覚えています。今後、懇親会にテキーラ差し入れ流行らせようと思っております。

Japan Azure User Group (JAZUG) 6周年で話してきた

イベントページ

jazug.connpass.com

資料

www.slideshare.net

Twitter

togetter.com

振り返り

朝まで飲んでちょっとだけ寝てから登壇したところ、めちゃくちゃテンションが低くなる現象が発生しましたが、PaaS組み合わせて使って楽になろうという話をしてきました。

おばかIoTのイケメンだけ撃てる銃とか、The DAOの事件の話とか面白かったです。

obakapp.doorkeeper.jp

btcnews.jp