2019-01-01から1年間の記事一覧

C#に潜むstructの罠

こんにちは。技術部平山です。 この記事ではC#のstructを使った際にはまった罠について書きます。 Unityでの体験を軸にお話しますが、Unityに限ったことではないかと思います。 お急ぎの方のために結論を申しあげますと、structを使うなとなります。 どうし…

アセットバンドルの不満をなんぼか軽減するライブラリを作ってみた

こんにちは。技術部平山です。 もうすぐAddressable Asset Systemなるものが出て、 AssetBundle関連の問題が何もかもが解決するように言われている昨今ですが、 いろいろありまして待っていられないので、自分で作ってみました。 コードはテストプロジェクト…

AssetBundleとアプリ本体のアセット重複を防ぎたい

こんにちは。技術部平山です。 今日は、「アセットバンドルに入れる素材をアプリ本体のプレハブから参照しっぱなしじゃないかー」 という事故を削減するためのツールをご紹介します。 コードはGithubに置いてあります(AssetReferenceFinder.cs)。 そのままで…

連結リスト(LinkedList)の使い所

こんにちは。技術部平山です。 今回は地味ネタです。図すらありません。 私は一年に何回か、連結リスト(線形リスト、とも) を使いたくなる時があります。 基本的なデータ構造として教科書には必ず載っていますが、 その割に使っている方が少ない印象を受けま…

どのDownloadHandlerでAssetBundleをダウンロードして保存するのが速い?

この記事では、 アセットバンドルのダウンロードと保存をどのDownloadHandlerでやるのが速いか、 ということについて 技術部平山が書いてみます。 最初にお断りしておきますが、まだ独自研究の域を出ません。 今回も プログラムはgithubに置いておりますが …

Unityでスレッドから乱数を使いたくなった時に気になったこと

ここでは、UnityEngine.Randomを使えば99.9%解決するような話題について、 技術部平山が趣味で書いてみようと思います。 サンプルコードはgithubに置いてあります。 なお、マルチスレッドはあくまできっかけであり、本記事にスレッドの話はありません。 ただ…

Unityのデバグ作業をSlackで効率化する

この記事では弊社東京プリズンでの Slackを使ったデバグ支援について、技術部平山が紹介いたします。 上の画像は今回のために作った 仮のワークスペースのスクリーンショットです。 以下のようなものがUnity側から投稿されていることがわかります。 「スニペ…

輝度+色差でテクスチャ圧縮(YUVあるいはYCbCr)

こんにちは。技術部平山です。 今回は以前書いたインデクスカラー画像に関する記事、及び、 16bitカラー画像に関する記事の続編です。 今回はRGBを「輝度」と「色差」に変換してから圧縮する技法を紹介します。特徴は、 GLES2で出せる そこそこ良好な画質 不…

16ビットカラー再考

こんにちは。技術部平山です。 以前インデクスカラー(パレット)について記事を書きましたが、 さらに原始的な圧縮である16bitカラー化についても記事にしようと思います。 ETC2やASTCによって使用頻度が激減しているというのになんで今更?と自分でも思います…

Unityでコンパイル時間を可視化する

Unityでゲームを動かしてみるのに、ビルドを待つ必要はありません。 ソースコードのコンパイルさえ済めば、すぐに動かしてみることができます。 しかし、この時間でさえも、コード量が増えていけば耐え難いものになるのです。 この記事では、技術部平山が、 …

端末性能を測るWebGLアプリ作ってみた

こんにちは。技術部平山です。 この記事では、雑にベンチマークプログラムを作ってみたことと、それに付随して、 ベンチマークプログラムを作りたくなるような事情 テストの設計と、その背後にあるハードウェア といった点について書きます。 なお、実行はこ…

Unityの複数解像度SafeArea対応で楽をするためには

モバイル向け開発は機械が様々です。 解像度は様々、アスペクト比も様々です。 最近は一部画面が欠けていて、ある範囲(SafeArea)に収めないと映ること保証しないよ、 という機械まで出てきました。 さて、これにどう対応するのが楽か? 技術部平山が、 弊社東…

補間関数で作るアニメーション

プログラムで動きを作ることは結構あります。 操作せずに観賞するアニメーションであれば、 アーティストが作る方がいい出来になると思うのですが、 操作によって介入があるアニメーション 場所や大きさ、速度、数などがゲームの状況に応じて変化するアニメ…

Unityで2D世界と3D世界を行き来するエフェクトをつくる

この記事では、上記動画のように、3D世界にいるキャラクターと、画面の上端と下端に貼りつけてある2Dの UIの間でエフェクトの行き来をする方法について、技術部平山が書いてみます。 実行可能なサンプルをwebに置いてありますので、 実行して動かしてみると…

AfterEffectsで作ったものをUnity用に(半)自動変換する

ここでは、AfterEffectsにて作成したアニメーションをどうUnityで再生するか? について技術部平山が書いてみます。 コードは実際の製品で使っているものを、ほぼそのままgithubに公開しておりますが、 あくまでサンプルとお考えください。作った人間にしかわ…

インデクスカラーテクスチャの思い出 〜懐かしのパレット〜

こんにちは。技術部平山です。 この記事では、今更インデクスカラーを実装してみたことについて書きます。 テクスチャ圧縮について調べた時に SEGA TECH BLOGの記事 を見つけまして、自分でも試したくなったのです。 なお、結論を先に申しますと、「ETC2で良…

YAPC::Tokyo 2019 にカヤックのエンジニアが3名登壇します! #yapcjapan

技術部の小池です。 いよいよ今週末に迫りました YAPC::Tokyo 2019、弊社からも3名登壇予定なのでご紹介させていただきます! yapcjapan.org トーク内容をプロポーザルの抜粋にてご紹介します。いずれもカヤックの仕事から生まれたノウハウが詰まった内容と…

UnityEngine.UI.Imageが透けてる所を塗るのが許せない

こんにちは。技術部平山です。 この記事では、UnityEngine.UI.Image、つまり「普通のImage」 だと余計な所まで塗ってしまってGPU負荷が大きいので、 塗る面積を削ってみた、というお話をいたします。 一枚目の画面写真で、右端が普通のImageで、左と中央が今…

「リッチテキストって頂点ムッチャ増えない?」から始まるUnityEngine.UIの性能調査

UnityでUIを作ると言えば、まずはUnityEngine.UIです。 中身のことを考える必要もなく、ドカドカとImageやTextを置けば 動くので大変有り難いわけですが、不意に猛烈に処理が遅くなることがあります。 本記事では、たまたま見つけた現象と、そこから疑問を持…