(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!

    

Unityライセンス(プラン)の料金変更の件で、一番の問題は信用問題なのではないかという話【Unity】【雑記】

はじめに

Unityのライセンス料金の変更が発表されましたが、

これがなんとインストール数に応じて料金を払うという前代未聞の方式で、



主にUnityを使ってるゲーム開発界隈では大きな波紋を呼んでいます。(公式フォーラムも結構荒れてる)


と言っても、ライセンス料を払う閾値がかなり高いので、小規模な開発では関係なさそうですし、

(場合によっては料金が安くなる場合もある)

Unity Personal または Unity Plus を使用している場合:過去 12 か月の収益が 20 万米ドル以上で、かつ、サービス継続期間中のインストール数が 20 万回以上。
Unity Pro または Unity Enterprise を使用している場合:過去 12 か月の収益が 100 万米ドル以上で、かつ、サービス継続期間中のインストール数が 100 万回以上。

Unity のプランの価格設定とパッケージの更新 | Unity Blog


仮に閾値を大きく越えるものでもUnity Proであれば1本辺りの料金もそこまで上がらないので、

有料ゲームや単価が高い(課金主体?)無料アプリでは値上げではあるが致命的という程ではなさそうです。

ただし、DL数が多いが単価が高くない(広告主体?)無料アプリは大打撃ではあると思います。

Unity のプランの価格設定とパッケージの更新 | Unity Blog


なお、色々気になる事はありますが、情報が錯綜してて細かい部分の正しい情報が分からないので

とりあえず公式フォーラムのQ&AをDeepLで翻訳したものだけ置いておきます。

(記事執筆時点のQ&Aで、今後変わったり追加されたりすると思います。)

Q: インストール数はどうやって集めるのですか?
A: 当社独自のデータモデルを活用しています。それによって、あるプロジェクトでランタイムが配布された回数を正確に判断できると考えています。

Q: unityで作られたソフトウェアは、enterpriceライセンスであっても、実行されるたびにunityにホームコールされるのですか?
A: ランタイムのインストール回数のカウントには、多数のソースからデータを収集する複合モデルを使用しています。Unity Runtime FeeはGDPRとCCPAに準拠したデータを使用します。要求されているデータは集計されたもので、課金目的で使用されています。

Q: ユーザーがゲームを再インストール/再ダウンロード/ハードウェアを変更した場合、複数インストールとしてカウントされますか?
A: はい。クリエイターは今後のすべてのインストールに対して支払う必要があります。Unityはエンドプレイヤーの情報を受け取らず、集計データを受け取るだけだからです。

Q: 閾値を超えるほどの収益を上げたゲームに同じゲームのデモがある場合、デモのインストールも課金対象となりますか?
A: アーリーアクセス、ベータ、あるいはゲーム本編のデモであれば、そうです。デモからゲーム本編に移行できるのであれば可能です。そうでない場合、例えばアップグレードできない単一レベルであれば、そうではない。

Q: ゲームの海賊版に課金されないようにする方法は?
A: 同様の問題を解決している当社のAdsテクノロジーには、すでに不正検出のノウハウがあります。私たちは、ユーザーがこの件について懸念を抱いていることを認識しており、不正コンプライアンスチームに懸念を提出するためのプロセスを利用できるようにします。

Q: 生涯インストール数のトラッキングはゲームのライフサイクルのいつから始まるのですか?ベータ版は閾値にカウントされますか?
A: インストールの各初期化は、ライフタイムインストールにカウントされます。

Q: これはWebGLやストリームゲームに影響しますか?
A: すべてのプラットフォームのゲームが料金の対象となりますが、インストールと収益の両方のしきい値を超えた場合にのみコストが発生します。インストール(クライアント・デバイス上でのランタイムの初期化を含む)は、すべてのプラットフォームで同じようにカウントされます(WebGLとストリーミングを含む)。

Q: この料金は、発売からすでに何年も経っているゲームにも適用されるのでしょうか?もし2年前に基準を満たしたのであれば、1月から毎月インストールされた分の料金を支払うことになりますよね?(理論上は)。
A: はい、ゲームが適格であり、Unityランタイムを配布している場合、ランタイム料金が適用されます。ゲームのライフタイムインストール数を見て、ランタイム料金の適格性を判断します。その後、2024年1月1日以降に発生するすべての新規インストールに基づいてランタイム料金を請求します。


そしてここからがこの記事の本題なのですが、この件に関しての個人的に

一番の問題は料金よりも信用問題なんじゃないかな〜と思ったのですが、

Twitter(X)に書くには長くなりそうなので記事にまとめてみました!


信用問題

続きを読む

Development Buildを有効にしてビルドしても、右下にテキストを表示しない UnityRemoveDevWatermark 【Unity】

この記事でのバージョン
Unity 2022.3.8f1


はじめに

UnityではDevelopment Buildを有効にしてビルドすると、


右下にDevelopment Buildというテキストが表示されます。


開発用のビルドか判断するために基本的にはこれでいいのですが、

「宣伝用のPVやスクショを開発用ビルドで撮りたい」みたいな時には邪魔でした。


という事で今回は、これを消すためのパッケージ UnityRemoveDevWatermarkの紹介です!





UnityRemoveDevWatermark

続きを読む

DOTweenのDOVirtualでFloatやInt、Vector3やColorの値だけを変化 【Unity】【DOTween】

この記事でのバージョン
Unity 2022.2.8f1
DOTween Pro 1.0.335

はじめに

今回はUnityで位置や大きさなどのアニメーション、

いわゆるTweenを実装するアセットとしてお馴染みのDOTweenで、

DOTween Pro | Visual Scripting | Unity Asset Store


FloatやInt、Vector3やColorといった値だけのTweenを作成する事も可能というお話です。



DOVirtual.Float(Int)

続きを読む

Unity2022からHierarchy上のオブジェクトを任意のPrefabと簡単に差し替えられるように【Unity】

この記事でのバージョン
Unity 2022.3.8f1


はじめに

以前、Hierarchy上のオブジェクトを任意のPrefabと差し替えるエディタ拡張というのを作ったのですが、


なんとUnity2022から同じ事か簡単に出来るようになっていたので、今回はその紹介です!


なお、記事中では以下のアセットを使っています。

Low Poly Ultimate Pack | 3D Props | Unity Asset Store



Hierarchy上のオブジェクトを任意のPrefabと差し替える

続きを読む

LocalizationのStringTableに設定したKeyが選択肢に表示されず、Noneしかない場合の対処法【Unity】【Localization】

この記事でのバージョン
Unity 2022.3.3f1
Localization 1.3.2


はじめに

今回は、以前紹介したUnity公式のローカライズ機能であるLocalizationを使ってる時に、



StringTableに設定したKeyが表示されずNoneしか選択肢がない場合の対処法です!



Localizationで後から言語を追加や削除する方法

続きを読む

Localizationで後から言語を追加や削除する方法【Unity】【Localization】

この記事でのバージョン
Unity 2022.3.3f1
Localization 1.3.2


はじめに

今回は、以前紹介したUnity公式のローカライズ機能であるLocalizationで、



後から言語を追加、削除する方法の紹介です!


Localizationで後から言語を追加や削除する方法

続きを読む

基本的には同じだけどちょっと違うマテリアルが欲しい時に便利なMaterial Variant【Unity】

この記事でのバージョン
Unity 2022.3.3f1


はじめに

今回はUnity2022.1からの新機能「Material Variant」の紹介記事です!



名前の通りMaterialのバリエーションが欲しい時のための機能で、

「基本的には同じだけどちょっと違うマテリアルが欲しい」みたいな時に便利です!


Material Variant

続きを読む

SteamDeckで起動しているかを判定する方法【Unity】【Steam】

この記事でのバージョン
Unity 2022.3.3f1
Steamworks.NET Release 20.2.0


はじめに

今回はUnityでSteam向けのゲームを作る際に

SteamDeckで起動しているかを判定する方法の紹介です!


なお、SteamDeckとはSteam(Valve)が販売しているポータブルゲーミングPCの事です。






SteamDeckで起動しているかを判定する方法

続きを読む

async/awaitでDoTweenの終了を待つ事が出来る AsyncWaitForCompletion【Unity】【DOTween】

この記事でのバージョン
Unity 2022.2.8f1
DOTween Pro 1.0.335


はじめに

Unityで位置や大きさなどのアニメーション、

いわゆるTweenを実装するアセットとしてお馴染みのDOTweenでは、

https://assetstore.unity.com/packages/slug/32416?aid=1101lGoY


OnCompleteを使うことでTweenの終了後に処理をする事が可能です。

Debug.Log($"移動開始");

//Tweenで移動、移動後にログ表示
transform.DOMove(new Vector3(1, 0, 0), 1).OnComplete(() => {
  Debug.Log($"移動終了");
});


ただ場合によってはasync/awaitで終了を待ちたいという場合もあります。

そんな時に使えるのがAsyncWaitForCompletionで、

名前の通りasync/awaitでTweenが終わるまで待つ事が出来ます。(KillやCompleteした時でも待機終了)

private async void Start() {
  Debug.Log($"移動開始");
    
  //Tweenで移動して、終わるまで待つ
  await transform.DOMove(new Vector3(1, 0, 0), 1).AsyncWaitForCompletion();

  Debug.Log($"移動終了");
}


ちなみにKillされるまで待つAsyncWaitForKillや、

指定回数ループするまで待つAsyncWaitForElapsedLoopsなどもあります。