うどん戦争

体は麺で出来ている。血潮は出汁で、心は醤油。

モバイルGPUでのゲーム開発について

モバイルGPUでのゲーム開発について参考になりそうな記事のリンクを集めて、要旨をまとめた。


2019年に iOSAndroid のテクスチャを扱うこと (2019-7)

iOSでATSCテクスチャを、AndroidでETC2テクスチャを使うことについての考察。

元記事リンク (英語):

gametorrahod.com

記事の要旨:

  • UnityのiOS用テクスチャは古いiOSで使えるPCRTCがデフォルトだがブロックノイズが目立つ。ATSCが品質面で大きく優れている。Android用テクスチャはETC1がデフォルトだが、ETC1はアルファが使えないためUnityのSplit Alpha機能を使ってアルファチャンネル用画像を別に作成する必要がある(もしくは無圧縮RGBAにするか)。品質とサイズの両面でETC2が大きく優れている。
  • iOSではiPhone 6 (2014)以降でATSCが使える。ATSCを使おう。だがいずれにしても、解像度の違うiPad ProとiPhone SEで同じサイズのテクスチャを使うという問題はある。それを解決するためにオンデマンドやアプリ分割で端末ごとに違うテクスチャを配信したい場合は、Unity自体では対応できないだろうから、ポストビルドの段階での手作業になるだろう。
  • Androidでは、GLES 3.0対応端末がETC2に対応している。Googleの統計ページによれば2019年5月の段階で78.9%がGLES 3.0に対応している。残りの21.1%はETC2をメモリ上に無圧縮展開して使うだろう。21.1%のうちどの程度がゲーマーだろう?それは分からないが、誰かがアプリのレビューで文句を言わない限り、私はETC2を使っていくと思う。(※端末ごとの配信やAABの話題は長くなるので割愛)

記事のコメント:

  • それから1年後 (2020年5月)、GLES 3.0非対応端末は21.1%→14.5%に減った。(訳注: 2021-02のGoogleの統計では12.28%に減っています)

さまざまな端末での4096x4096テクスチャ対応 (2017-9)

4k(4096x4096)テクスチャを使うべきか、2k(2048x2048)テクスチャを使うべきかについての考察。

元記事リンク (英語):

forum.defold.com

記事の要旨:

  • (私見だが)ほとんどの現代の端末は4096x4096テクスチャに対応している。よほど古い端末をサポートするのでなければ4kテクスチャを使って良い。

記事のコメント:

  • 4kテクスチャは4倍のメモリを使うので、今でもハイエンド端末で2kテクスチャを選ぶケースはある。
  • 2014年に、SteamのPCゲームで4kテクスチャが動かないユーザーがいて2kテクスチャに差し替えたケースがあった。

モバイルの最大テクスチャサイズ (2013-10)

Unityフォーラムの2013年当時のやり取り。モバイル向けゲームで4096x4096のテクスチャを使えるかどうか。

元記事リンク (英語):

answers.unity.com

回答:

  • 2013-10 ベストアンサー: 対象のプラットフォームによるが、最大2048x2048の端末のサポートをもう少し続けていくことを勧める。メモリ容量の問題もある。
  • 2017-8: 現在では状況は変わったのだろうか?様々な矛盾した回答を見てきた。Androidの99%が4096に対応しているという話も見たが、1年前の回答だったしどうも真実ではないと思う。GLES 3.0以上であれば 4096が使えると思って良さそうだが、2017-8現在のGoogleの統計ではまだAndroidの28%がGLES 2.0を使っている。(訳注: 2021-02のGoogleの統計では12.28%に減っています)

スマホ機種ごとのスペック詳細リスト

ものすごく詳しい。かなりの数の機種の SoC, RAM, CPU, GPU, 解像度, OpenGLESバージョンなどが一覧できる。

元記事リンク (日本語):

dench.flatlib.jp


フォートナイトとスマホGPU (2019-8)

フォートナイトにおけるGPU対応と端末シェアについての考察。

元記事リンク (英語):

www.scientiamobile.com

記事の要旨:

  • 2015年の段階ではGPUを持たないスマホが8.25%あったが、2019年までには99%以上のスマホGPUが搭載された。
  • フォートナイト iOS版は、iOS 12.0/iPhone 6以上で、iOS端末全体の84.28%が要求を満たしている。一方 Android版は、Android 8.0/メモリ3GB/Adreno 530かMali-G71以上で、Android端末の19.34%しか要求を満たさない。
  • フォートナイトの要求を満たすスマホの85%は、$800以上の価格帯にある。

モバイルの SoC / GPU メモ

モバイル向けARMアーキテクチャについて調べると知らない単語がすごく多かったので、SoCとGPUのシリーズ名などを整理してみた。

ARMアーキテクチャのターゲットOS

ARM上で動作するOSは下記のように多岐に渡るが、たいていの場合ターゲットはAndroidiOSである。それ以外のOSが動くかどうかはSoCによる。

SoC

SoC シリーズ メーカー
Snapdragon (スナップドラゴン) Qualcomm (クアルコム)
Helio (ヘリオ) MediaTek (メディアテック)
Dimensity (ディメンシティ) MediaTek (メディアテック)
Apple A11 ~ A14 Apple
Apple M1 Apple
Exynos (イクシノス) Samsung (サムスン)
Kirin (キリン) HUAWEI (ファーウェイ)
UNISOC SC UNISOC (ユニ・エスオーシー)
Rockchip RKシリーズ Rockchip Electronics (ロックチップ・エレクトロニクス)
Tegra (テグラ) NVIDIA (エヌビディア)
Amlogic Sシリーズ Amlogic (アムロジック)
Allwinner Aシリーズ / Hシリーズ Allwinner Technology (オールウィナー・テクノロジー)
BROADCOM BCMシリーズ BROADCOM (ブロードコム)
i.MX (アイドットエムエックス) NXP Semiconductors (エヌエクスピー・セミコンダクターズ)
OMAP (オーマップ) Texas Instruments (テキサス・インスツルメンツ)

Snapdragon (スナップドラゴン)

クアルコムのSoC。採用例が非常に多い。

SoCメーカー Qualcomm (クアルコム)
GPU Adreno

採用機種 (スマホ/タブレット):

メーカー 機種 SoC OS 発売
Xiaomi Mi 10 Snapdragon 865 MIUI11 (Android 10カスタム) 2020
Google Pixel 4a Snapdragon 730G Android 10 2020
Samsung Galaxy S10 (USA/China) Snapdragon 855 Android 9 2019
Sony Xperia 10 II Snapdragon 665 Android 10 2020
Sharp AQUOS sense4 Snapdragon 720G Android 10 2020
Asus ZenFone 7 Snapdragon 865 Android 10 2020
Motorola moto g8 power Snapdragon 665 Android 10 2020
富士通 arrows 5G F-51A Snapdragon 865 Android 10 2020
京セラ TORQUE G04 Snapdragon 660 Android 9 2019

採用機種 (ヘッドセット):

メーカー 機種 SoC OS 発売
Oculus Oculus Quest 2 Snapdragon XR2 Android 10カスタム 2020
Microsoft HoloLens 2 Snapdragon 850 Windows Holographic 2020

採用機種 (PC):

メーカー 機種 SoC OS 発売
Microsoft Surface Pro X Microsoft SQ1 (Snapdragon 8cxカスタム) Windows 10 2020
Lenovo Yoga C630 Snapdragon 850 Windows 10 2019

Helio (ヘリオ) / Dimensity (ディメンシティ)

台湾MediaTekのSoC。Helioは4G世代、Dimensityは5G世代のSoCに付けられるブランド名。メインストリーム以外にはブランド名が付かずMTで始まる型番名で呼ばれるようだ。

メーカー MediaTek (メディアテック)
GPU Mali
PowerVR

採用機種 (スマホ/タブレット):

メーカー 機種 SoC OS 発売
Xiaomi Redmi Note 9 Helio G85 MIUI 11 (Android 10カスタム) 2020
Oppo Reno3 Dimensity 1000L Android 10 2020
Samsung Galaxy A41 Helio P65 Android 10 2020
Sony Xperia L4 Helio P22 Android 9 2020
Motorola moto g8 power lite Helio P35 Android 9 2020
Amazon Fire HD 8 MT8168 Fire OS 7 (Android 9カスタム) 2020

採用機種 (セットトップボックス):

メーカー 機種 SoC OS 発売
Amazon Fire TV Stick MT8695D Fire OS 7 (Android 9カスタム) 2020

採用機種 (PC):

メーカー 機種 SoC OS 発売
Lenovo Chromebook S330 MT8173C Chrome OS 2019

Apple A11 ~ A14

Appleのモバイル用途向けSoC。iPhoneiPadで使われる。

メーカー Apple
GPU Apple A11~A14 GPU

Apple M1

AppleのPC用途向けSoC。Macで使われる。

メーカー Apple
GPU Apple M1 GPU

Exynos (イクシノス)

韓国サムスンのSoC。サムスンは製品によってSoCを使い分けていて、他社のSoCであるSnapdragonやHelioを採用することも多い。

メーカー Samsung (サムスン)
GPU Mali

Kirin (キリン)

中国ファーウェイ傘下ハイシリコンのSoC。ファーウェイ製品に使われていたが、米中対立のため政治的に厳しい状況となり、2020年9月に生産中止となった。

メーカー HiSilicon (ハイシリコン)
GPU Mali
VeriSilicon GC

UNISOC (ユニ・エスオーシー) SCシリーズ

中国UNISOCのSoC。比較的安価なスマホタブレットに使われるようだ。

メーカー UNISOC (ユニ・エスオーシー)
GPU PowerVR
Mali

Rockchip (ロックチップ) RKシリーズ

中国RockchipのSoC。Chromebookタブレットなどに使われるようだ。

メーカー Rockchip Electronics (ロックチップ・エレクトロニクス)
GPU Mali
PowerVR

Tegra (テグラ)

NVIDIAのSoC。2015年にスマホ市場から撤退した。
その後もNintendo SwitchNvidia Shield TV などで採用されている。

メーカー NVIDIA (エヌビディア)
GPU Tegra

Amlogic (アムロジック) Sシリーズ

アムロジックのSoC。主にセットトップボックスに使われるようだ。

メーカー Amlogic (アムロジック)
GPU Mali
  • 採用例:

Allwinner (オールウィナー) Aシリーズ / Hシリーズなど

中国AllwinnerのSoC。主にセットトップボックスや開発ボードに使われるようだ。

メーカー Allwinner Technology (オールウィナー・テクノロジー)
GPU Mali
PowerVR

BROADCOM (ブロードコム) BCMシリーズ

ブロードコムのSoC。ラズベリーパイの他、ネットワーク製品などに使われるようだ。

メーカー BROADCOM (ブロードコム)
GPU VideoCore

i.MX (アイドットエムエックス)

オランダのNXPのSoC。主に自動車や産業機器に使われるようだ。
もともとは米Freescale(フリースケール)が開発していたが、2015年にNXPに合併された。そのため、Freescale i.MXと呼ばれることがある。

メーカー NXP Semiconductors (エヌエクスピー・セミコンダクターズ)
GPU VeriSilicon GC

OMAP (オーマップ)

テキサス・インスツルメンツのSoC。2012年にスマホ市場から撤退し、2013年のOMAP5を最後にシリーズが終了した。

メーカー Texas Instruments (テキサス・インスツルメンツ)
GPU PowerVR

GPU

GPU シリーズ メーカー
Mali (マリ) ARM(アーム)
Adreno (アドレノ) Qualcomm (クアルコム)
PowerVR (パワーブイアール) Imagination Technologies (イマジネーション・テクノロジーズ)
DMP RS1 / PICA200 / M3000 DMP (ディジタル・メディア・プロフェッショナル)
VideoCore (ビデオコア) BROADCOM (ブロードコム)
VeriSilicon GC シリーズ VeriSilicon (ベリシリコン)

Mali (マリ)

英ARMが各SoCメーカーに許諾してライセンス生産されるGPU。さまざまなメーカーのSoCで採用されている。

メーカー ARM(アーム)
採用SoC Helio / Dimensity
Exynos
Kirin
UNISOC SCシリーズ
Rockchip RKシリーズ
OMAP

Adreno (アドレノ)

クアルコムのSoC Snapdragonに内蔵されたGPU

メーカー Qualcomm (クアルコム)
採用SoC Snapdragon

PowerVR (パワーブイアール)

英イマジネーションのGPU
iPhone 8で不採用となり一時期落ち込んだが、また採用が増えつつある。

メーカー Imagination Technologies (イマジネーション・テクノロジーズ)
採用SoC Helio
UNISOC SCシリーズ
Rockchip RKシリーズ
OMAP

DMP RS1 / PICA200 / M3000 など

日本のDMPのGPU
任天堂のゲーム機、バンダイナムコの遊技機、ルネサスLSIなどに使われているようだ。

メーカー DMP (ディジタル・メディア・プロフェッショナル)
採用SoC 不明

VideoCore (ビデオコア)

ブロードコムGPUラズベリーパイで使われている。
もともとはAlphamosaic(アルファモザイク)が開発していたマルチメディアプロセッサだが、2004年にブロードコムに買収された。

メーカー BROADCOM (ブロードコム)
採用SoC BCMシリーズ

VeriSilicon (ベリシリコン) GC シリーズ

米ベリシリコンのGPU
もともとは米Vivante(ビバント)が開発していたが、2015年にベリシリコンに買収された。そのため、Vivant GCシリーズと呼ばれることがある。

メーカー VeriSilicon (ベリシリコン)
採用SoC i.MX

Avalonia ってどうなの

Avalonia とは

Avalonia (アバロニア) は、WPFに似たマルチプラットフォームGUIフレームワークエストニアの AvaloniaUI 社が開発している。
ライバルは Microsoft が開発している Uno Platform (ウノ・プラットフォーム)。

特徴

リンク

Uno Platformとの比較

Avalonia 0.9 Uno Platform 3.0
開発元 AvaloniaUI Microsoft
開発環境 Visua Studio 2019 Visua Studio 2019
メイン言語 C# C#
UI記述言語 XAML XAML
.NETバージョン .NET Core 3.1 .NET Core 2.2

各種ビルドターゲットへの対応は下記の通り。

Avalonia 0.9 Uno Platform 3.0
Windowsデスクトップアプリ (Windows 7~) ❌(※1)
Windowsストアアプリ (UWP)
MacOSX
Linux ❌(※2)
iOS ❌(※3)
Android ❌(※3)
ウェブブラウザ (WebAssembly)

(※1) 将来的に、Microsoftが開発中の WinUI 3 がリリースされれば対応予定。2021年後半か?
(※2) Uno Platform 3.1 で対応するみたい?
(※3) 将来的に対応するつもりみたい

Avalonia 雑感

ダメ

  • マニュアルが全部英語
  • TextBoxのテキスト入力が、IMEインライン入力に対応していない
    • IMEが画面端に出てくるので、日本語や中国語が入力しにくい
    • TextBoxに適切なフォントを設定しておかないと日本語が文字化けする
    • ロードマップを見た感じ、IME周りは 1.0 で実装していくつもりみたい?

良い

  • WPFに触ったことがあれば、XAMLの書き方はなんとなく分かりそう
    • でもコントロールの具体的な仕様は違うので、マニュアルは読まないとダメ
  • .NET Core 3 のパブリッシュ機能が使えてすごく便利
    • 自己完結(ランタイム不要)の単一実行ファイルが簡単に作れる
      • GUIツールの配布時に「起動の仕方が分かりません」とか言われない
      • ただし初回起動はちょっと遅くなる
    • Windows 10 v1909 と MacOS 10.15.6 では普通に動いた
      • Ubuntu 20.04 ではうまく動かなかった
    • MacOS ではターミナル上で動くプログラムになる
      • .app パッケージへのバンドルがしたければ自分でやる必要がある

結論

Windowsデスクトップアプリだけを作りたいなら WPF の方が良い。将来性なら Uno Platform の方が良さそう。
Avalonia は今その隙間を埋めてくれるGUIフレームワークだけど、バージョン1.0に達していないのもあり、本格的に使ってみるにはまだ早い感じがした。もうちょっと様子見したい。

GeForce+Remote DesktopでBlenderが動かない問題

症状

GeForceグラフィックカードを搭載したWindows PCにMicrosoft Remote Desktopでリモート接続してBlenderを起動しようとすると、「OpenGL 3.3以降が必要」みたいなエラーが出て起動できなかった。

解決方法

nVidiaの開発者向けサイトの下記のページで「Accelerate Windows Remote Desktop」ツールをダウンロードして実行すると、GeForceドライバがRemote Desktopに対応するようになって問題が解決した。
ダウンロードの際はnVidiaの開発者登録が必要。また、PCにはGeForceドライバのバージョンR440以降がインストールされている必要がある。

developer.nvidia.com

備考

将来的には、このツールなしでもGeForceドライバが標準でRemote Desktopに対応予定みたい。

"npm run XXX" でOS依存処理 (Win/Mac/Linux)

Package.json の npm-scripts に、OSごとの処理を別々に書く手順。

(1) "run-script-os" パッケージをインストールする

$ npm install -D run-script-os

(2) package.json の scripts に処理を追加

Windowsでしか動作しない例

{
    "scripts": {
        "test": "cmd /c start index.html",
    }
}

下記のコマンドを打つと、Windows上ならindex.htmlがブラウザで開く。でも他のOSだとコマンドが存在しないのでエラーが出る。

$ npm run test

Win/Mac/Linuxで動作する例

ステージ名にコロン+OS名をつけたものを作り、そこにOSごとの処理を追加する。

{
    "scripts": {
        "test": "run-script-os",
        "test:win32": "cmd /c start index.html",
        "test:darwin": "open index.html",
        "test:linux": "xdg-open index.html"
    }
}

下記のコマンドを打つと、どのOSでもindex.htmlがブラウザで開く。

$ npm run test

やったー😊🎉✨

GMailで受信メールをHTML表示からプレーンテキスト表示に切り替える

GMailには受信メールの表示を切り替える機能がないみたいで困ったけど、返信画面でプレーンテキスト表示にすれば(引用符付きの)テキストが見れることに気づいたのでメモ。

  1. 返信ボタンを押す
  2. 返信のエディタ画面の右下にある「その他のオプション」メニューを開く
  3. メニューから「プレーンテキストモード」を選ぶ

以上。

トラブルシュート:Ubuntu 16.04で内部エラー「plymouthd crashed with sigsegv in script_obj_deref_direct()」

Ubuntu 16.04で起きる問題の対応方法メモです。

症状

起動後に、plymouthdがクラッシュした旨のエラーが表示されます。下記の内容のエラーです。

plymouthd crashed with sigsegv in script_obj_deref_direct()

 

解決方法

下記の手順でエラーが出ないようになります。

(1) 下記のコマンドを実行する

$ sudo dpkg-reconfigure Plymouth

参照URL

この記事は下記のバグレポートをもとにしています。

  https://bugs.launchpad.net/ubuntu/+source/ubuntu-gnome-default-settings/+bug/1536771