万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    Unity 5.3 & Web GL/HTML5 セミナー by Unity & Mozilla

    https://kenjin.unity3d.jp/events/show/307

    開演、Unity Technologies Japan 大前広樹登壇

    サバイバルシューター https://unity3d.com/jp/learn/tutorials/projects/survival-shooter-project ライトとかも入っている。

    ・ビルド(Development Build) アセンブリ → C++ → JS → 更に圧縮

    Development Buildだと速い。 チェック無しのリリースビルドだとオプティマイズするので時間かかる。(それでも早くなった)

    Firefoxゲームパッドを指すと落ちる確率が高い?

    WebGLをビルドするときは、必ずBuild And Runにして!

    Unityが中でレンポラリのWebサーバが立ち上がる。localhost → ブラウザによっては(Chromeなど)HTML5をセキュリティの問題でロードできないことがあるから。

    流れ

    マニュアルのこと

    公式はディテールが詳しい。

    Blogにも散らばっていること

    将来のこと

    PC / Mac / WebPlayer向けの作っている、WebGLに移植→無理 モバイル向けのコンテツを作っているのでWebGLに移植したい→かなりいける

    WebGLエマージングテクノロジですが・・ コンテンツ開発をしてもいいレベルまで来た iPhone5/5Sくらいを対象としているつもりで作りましょう。

    5.3の進化ポイント http://blogs.unity3d.com/jp/2015/12/07/unity-5-3-webgl-updates/

    メモリ Unity Heap

    ・吐き出したファイルの中 Release/フォルダ index.html TemplateData/フォルダ

    ・Release/フォルダ内gzip圧縮したものがある。

    asm.jsの仕組み Unituy上で仮想マシンを動かす仕組み。 ・アセット、データのファイルシステム ・メモリ(ヒープ領域) jsgzにUnityのエンジンからはいっているがかなり圧縮してる。 →解凍するとギガバイト単位で持っていくような大きさ

    VMが必要とするメモリ量。 → mem.jsgz 確定サイズ「例)VM Wareを使った時のプロセッサとメモリ的なこと」

    Web GL memory Size 実際にアロケートするメモリサイズ

    小さければちいさいほうがいいけど足りなくなるかも? 大きすぎるとブラウザがと

    ヒープ アセットデータ コンパイル

    ○メモリ使用量を減らすには? Strip Engine Code AssetBundleを使う

    最適化

    Optimization

    → Strip Engine Code 使ってないものをCレベルで削る

    JS側 GCについて でかいstringを作り続けるみたいな処理。 ヒープのwarking memoryがなくなってしまうような処理ではコケる

    AssetBundleを使う Indexed DBというHTML5の新しい機能を使っている。 ブラウザによっていはユーザの認証を要求する。(Indexed DBにアクセスするけどよいか?) Publishing settingのをON LZ4を使おう!(LZMA圧縮を使わない、圧縮率はいいがdecompress時にブロッキングが発生される)

    LINK.XMLというファイル Strip Engine Codeでストリッピングされるが、AssetBundleで使うようなもの。

    Could not produce class with ID XXX

    JSのconsoleに出る。 XXXについて YAML class ID Reference http://docs.unity3d.com/ja/current/Manual/ClassIDReference.html

    大体はColliderとかが多い。 LINK.XMLに記載してストリッピングさせないようにしたり出来る。 → その代わりサイズが大きくなるが。

    動的なコード生成、リフレクション使っているとJSではできない。

    Strip engine code Crunch Texture 5.1 or 5.2くらいから使えるようになった。

    アセットバンドルはLZ4 & gzipが可能 → Webサーバも対応させて設定しておく おすすめ。

    コンテンツは仮想ファイルシステム オンメモリに乗るなら速いので基本的に圧縮設定している。 オンデマンドでヒープに載せて動く。メモリに載ってる際はすでに圧縮済み。 gzip 転送ができるのはあくまで .htaccess によって設定できる環境 http://tips.hecomi.com/entry/2014/12/08/002719

    .htaccessに置けない場合 勝手に展開してくれる。 http://docs.unity3d.com/ja/current/Manual/webgl-building.html

    ネットワーク

    System.NET.SocketやUnityEngine.Network*は動作しない WWWやHttpWebRequestを使おう。 内部的にはXMLHttpRequestを使っている。ブラウザの処理 UNETはWebSocketで動作

    Development Build  → ログがコンソールに出る Profilerの選択が可能(Development Buildで接続) ProfilerにてWebSocket経由で接続する。 「Auto Connect Profiler」をONにする。 Debug.LogやConsole.WriteLine Enable ExceptionsにてAllとかで。 Minifyとかで人間が読めなくなる。 DevelopmentBuildにてビルドしたら人間が読めるようなコードになる。 スタックトレースも見やすくなる。

    OpenGL ES 2.0レベル(WebGL 1.0) WebGL 2.0をサポート自体はしている。 Auto Graphics APIを外せば2.0選べる。 セキュリティ制限のせいで特定の方法でしかアクセスできないなどがある。E Graphics API Levelを設定 げんようFirfoxのabout:configにて動作舗装はしないがWebGL2選べる

    プラグイン モジュールというものをJSの中で書いて。 [DLLImport(“__Internal”)] で呼べる。

    IL2CPPのおかげで Assets/Plugins/WebGL/MyPlugin.cでそのままC呼べる。 エンスクリプティング DLLみたいなようにライブラリを埋め込める。 Unityとエンスクリプティングのバージョンを一緒にする

    ・オーディオ AudioClip AudioListener フィルターを掛けたりはできない AudioClip.Createだとストリーミングしない前提なら出来る。 ChromeFirefoxのみゲームパッドを使える。まだSafariはだめ

    ChromiumThread Webアセンブリで更に半分? → デリバリーサイズが小さくなるし、一時的にガツンと取るのも解消される。

    Firefoxはフルスクリーンを受け付けないことがある。 iFrameの中にコンテンツを入れるとキャッシュを使えなくなることがある。

    http://blogs.unity3d.com/jp/2015/12/15/updated-webgl-benchmark-results/

    コンパイル結果をキャッシュするので。

    IE→Windows10つかってね、Edgeつかってね。

    Mozilla Japan 清水智公様

    Proudly non-profit 非営利 アフィリエイトで食ってる

    Web is the platform. Webこそがプラットフォームだ ※the(aではない)。

    HTML5 JSが触れるセットが増えている。オープンスタンダードな。

    Can I use

    http://caniuse.com/ こんなのがあるのねがわかる。

    製品機能をシェアしてみんなで使っていこう。実装は実装力や優先度にかかっている。

    ・カメラで共有 https://is.gd/html#5139

    最大150人。 Androidでも動くと思う。 iPhoneはこの機能は使えない。

    拡散がしやすい。

    アプリケーションをインストールしなくても切り替えができる。 試してもらう敷居がすごく下がる。

    https://www.humblebundle.com/

    PluginやFlashを根絶

    ゲームパッド キーは基本的にハンドリングだが、

    ポーリングすることになっている。 フレームを途中で通るようになっている。

    Random JSでプロキシ データのビューみたいなのも出来る。

    演算子オーバーロードはできない 浮動小数点、整数(Unsigned、signed) 32ビットはあるが

    asm.js

    制限の強いJS n|0 → 型を決める。

    1 | 0 → 1 or 0

    LuaをJSの上で動くものとか。

    emsripten

    emccはコマンド

    emcc -o index.html -03 helloworld.c C言語をJSに変換できる

    WebAssembly

    binary format

    S式のバイナリにしたものを持ってくる。

    ダイナミックリンクのサポート

    来年の前半くらい? オーディオの処理 オーディオプロセッシングはできるがワーカーではできないが、出来るようになる。 ゲーム用のデバッガーを作るというバグ

    MozVR

    Unity道場

    1月は1回? 4月は少なめ