(:3[kanのメモ帳]

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

(:3[kanのメモ帳]



Color、Gradient、AnimationCurveの値を保存、再利用、共有出来るSwatch libraries(旧Preset Libraries)の使い方【Unity】

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


はじめに

UnityのImageなどには色を扱うためのColorという設定項目(クラス)がありますが、


f:id:kan_kikuchi:20201007080339j:plain


実はこの色の設定値はSwatch libraries(スワッチライブラリ)という物で保存する事が出来ます。

ちなみに以前はPreset Libraries(プリセットライブラリ)という名前でした。



設定値を保存すると違うオブジェクトに同じ色を簡単に設定出来たり、

他のプロジェクトや他の人に共有する事も可能です。


と言う事で今回は、

このSwatch librariesを実際にどう使うのかという感じの記事です!


なお、Colorだけでなく色のグラデーションを扱うGradientの設定値

f:id:kan_kikuchi:20201008135923j:plain




値の変化のカーブを扱うAnimationCurveの設定値も保存する事が可能です。

f:id:kan_kikuchi:20160628135604p:plain




Swatch libraries(スワッチライブラリ)

続きを読む

Gradientクラスを使って色のグラデーションをプログラムで扱う【Unity】

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


はじめに

Untyには色を扱うためのColorというクラスがありますが、

[SerializeField]
private Color _privateColor = default;
f:id:kan_kikuchi:20201008135948j:plain


色のグラデーションを扱うためのGradientというクラスもあります。

[SerializeField]
private Gradient _gradient = default;
f:id:kan_kikuchi:20201008135923j:plain



今回はこのGradientを実際にどう使うのかという感じの記事です!


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

Clean & Minimalist GUI Pack | 2D GUI | Unity Asset Store



Gradient

続きを読む

Steamの開発者・パブリッシャーホームページの作り方や設定の仕方【Steam】

はじめに

Steamには開発者やパブリッシャー専用のページである

開発者・パブリッシャーホームページという物があります。

(※ゲームのシリーズ用のページも作って良いらしい)



このページにはリリースした全ゲームの一覧(載せないゲームを選ぶ事も可)、最新作のゲーム、

現在セール中のゲーム、自分のゲームの中だけでの売上ランキング等を載せる事が出来ます。

また、TwitterやYoutubeへのリンクページ自体のフォロー機能もあります。

(ページをフォローしてくれたユーザに新作が出た時等に通知を飛ばす事も可能)

f:id:kan_kikuchi:20201004081828j:plain


さらにSteamの各ゲームのページにある開発元やパブリッシャーのリンクから

専用のページに飛べるようにもなります。

f:id:kan_kikuchi:20201004081756j:plain


ちなみに、このページを設定していない場合は検索に飛びます。

f:id:kan_kikuchi:20201004081345j:plain



結構大手でも設定してない所もあるので、必須ではないと思いますが、

簡単かつ無料で作成出来るので、作っておいて損はないと思います。


という事で今回はSteamの開発者・パブリッシャーホームページの作り方や設定の仕方の解説です。

なお、現在はオープンベータの機能ですが、誰でも使う事が可能です。


Steamの開発者・パブリッシャーホームページの作り方や設定の仕方

続きを読む

Steam向けゲームに自動クラウドセーブを設定(実装)する方法【Steam】

はじめに

SteamにはSteamクラウドというセーブデータをクラウドで管理し、

端末やOS問わずセーブデータを同期出来る機能があります。

Steamクラウドは、ゲームからファイルをSteamのサーバーに自動で保存し、プレイヤーはSteamにログインすればどのコンピューターからでもセーブゲームにアクセスできます。


Steamクラウドはリリースにあたっての必須機能ではないのですが、

Steamが実装を推奨していますし、意外と簡単に設定出来ます。


という事で今回はSteamクラウドの設定(実装)方法の解説記事です!

なお、APIを使って実装する方法ではなくプログラムは一切使わない自動設定の方なのであしからず。


クラウドセーブの初期設定

続きを読む

EditorWindowのOnGUIでマウスの位置を取得したい時はwantsMouseMoveを有効にする【Unity】【エディタ拡張】



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


はじめに

Unityのエディタ拡張には簡単にウィンドウを作る事が出来るEditorWindowがあります。

using UnityEditor;

/// <summary>
/// EditorWindowのサンプル
/// </summary>
public class EditorWindowSample : EditorWindow {
  
  //=================================================================================
  //初期化
  //=================================================================================
  
  //ウィンドウを開く
  [MenuItem("Tools/Editor Window Sample")]
  private static void OpenWindow() {
    GetWindow<EditorWindowSample>().Show();
  }
  
}
f:id:kan_kikuchi:20200909074333j:plain


今回はそのEditorWindow上でのマウスの位置を取得する方法です。

f:id:kan_kikuchi:20200909081259g:plain



wantsMouseMove

続きを読む

プロジェクトの更新(アセットのインポート)にかかる時間を最大90%短縮し高速化できるUnity Acceleratorの導入と使い方 【Unity】

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


はじめに

Unityにはキャッシュサーバーという同じアセットのインポート時間を短縮するための仕組みがあります。


このキャッシュサーバー、個人で使う分には特に何もしなくても良かったのですが、

Unity 2019.3からはUnity Acceleratorをインストールしないといけなくなったようです。

以前のAsset Pipeline v1ではUnity本体にローカルキャッシュサーバーが搭載されていて、特に意識しなくても2回目以降のインポートがキャッシュされていたのですが、Asset Pipeline v2ではそれがなくなっているんですね。どうも個人開発でもUnity Acceleratorをローカルにインストールして設定しておかないとインポート地獄に陥ってしまうようです。


という事で今回はUnity Acceleratorの導入と使い方の記事です!

なお、具体的にどれぐらい早くなるかは先程の記事にありますし、

キャッシュの効果ですが、新規プロジェクトを作成してOculus Integrationをまるごとインポートしたときに、Unity Acceleratorを使用しないと1分34秒かかっていたのが、Unity Acceleratorを使用すると2回目以降は35秒で済むようになりました。また、そこからプラットフォームをAndroidに変更すると4分34秒のインポートが走っていたのが10秒で済むようになりました。


Unity公式の記事によると最大90%もプロジェクトの更新時間が減るようです……!

Unity Accelerator を使うと、プロジェクトの更新にかかる時間を最大 90% 短縮できることにより、チームはより速くイテレーションすることができます!




Unity Acceleratorの導入と使い方

続きを読む

Steamworksの初期化がSteamAPI_Init() failed. Refer to Valve's documentation or the comment above this line for more information.というエラーで失敗する時の対処法【Unity】【Steam】【トラブルシューティング】

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


はじめに

UnityでSteam向けのゲームを作る際はSteamworks.NETを使うと楽にSteam対応が出来ます。



そのSteamworks.NETを使う際、最初に初期化が必要なのですが、

//SteamManager等を使うのに必要
using Steamworks;
//初期化
if (!SteamManager.Initialized) {
 Debug.LogWarning("SteamManagerの初期化に失敗しました");
  return;
}


この初期化時に以下のようなエラーが出る事があります。

f:id:kan_kikuchi:20200913121243j:plain

[Steamworks.NET] SteamAPI_Init() failed. Refer to Valve's documentation or the comment above this line for more information.

DeepL翻訳
SteamAPI_Init() に失敗しました。詳細については、Valve のドキュメントまたはこの行の上のコメントを参照してください。


エラー内容の通り、コメントに原因が色々書いてあるので、

// Initializes the Steamworks API.
// If this returns false then this indicates one of the following conditions:
// [*] The Steam client isn't running. A running Steam client is required to provide implementations of the various Steamworks interfaces.
// [*] The Steam client couldn't determine the App ID of game. If you're running your application from the executable or debugger directly then you must have a [code-inline]steam_appid.txt[/code-inline] in your game directory next to the executable, with your app ID in it and nothing else. Steam will look for this file in the current working directory. If you are running your executable from a different directory you may need to relocate the [code-inline]steam_appid.txt[/code-inline] file.
// [*] Your application is not running under the same OS user context as the Steam client, such as a different user or administration access level.
// [*] Ensure that you own a license for the App ID on the currently active Steam account. Your game must show up in your Steam library.
// [*] Your App ID is not completely set up, i.e. in Release State: Unavailable, or it's missing default packages.
// Valve's documentation for this is located here:
// https://partner.steamgames.com/doc/sdk/api#initialization_and_shutdown


今回はこれを一つずつ解説していこうという感じの記事です!


目次

  • はじめに
  • 目次
  • Steamが起動してない
  • steam_appid.txtが作成されていない
  • Steamのクライアントとゲームを実行しているユーザが違う
  • アカウントに権限がない
  • App IDの設定が間違っている



Steamが起動してない

続きを読む

VRモードと非VRモード両対応のSteam向けゲームをUnityで作る方法とモードの切り替え方【Unity】【Steam】【VR】

この記事でのバージョン
Unity 2019.4.9f1
SteamVR Unity Plugin - v2.3.2 (sdk 1.4.18)


はじめに

今回はVRと非VRの両方に対応したSteam用のゲームをUnityで開発する方法です。


なお、両対応や切り替えをどうやるかという話で、

簡単に両方に対応したゲームが作れるという話ではないのであしからず。


VRモードと非VRモード両対応

続きを読む

「Unityエディタを再生しているか」と「ビルド設定されているか」を気にせずにシーンをロード出来る拡張機能【Unity】【エディタ拡張】


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


はじめに

UnityはSceneManager.LoadSceneEditorSceneManager.OpenScene等、

シーンを開く処理がいくつもありますが

エディタを再生しているかや、ビルドに設定しているかによって使える物が変わります。


という事で今回は、

「Unityエディタを再生しているかとビルド設定されているか問わずにシーンをロードする拡張機能」

を作ってみました!


イメージとしては以下のような感じで、

いつでも好きなシーンに切り替えられるので、テストプレイが捗ります。

f:id:kan_kikuchi:20200908073915g:plain


ちなみに以前似たような物を作りましたが、

この時は「エディタを再生している時のビルドに設定されていないシーン」に対応していませんでした。



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

Clean & Minimalist GUI Pack | 2D GUI | Unity Asset Store



EditorSceneLoader

続きを読む

「縦笛なめなめVRをなぜ作ろうと思ったのか」「性的にどうなの?という意見にどう感じているのか」「表現の自由の問題についてどう考えているのか」という質問に開発者が答えました!【雑記】

はじめに

一ヶ月程前にSteamにVR用専用ゲーム「縦笛なめなめVR」をリリースしたのですが、



リリースしてすぐにVRカテゴリ売上(本数)ランキングで1位になったり、



好評価率90%とかなり良い評価を頂けていたりと、おかげさまで幸先の良いスタートを切れました。

f:id:kan_kikuchi:20200913150725j:plain


その「縦笛なめなめVR」がなんと「ABEMA的ニュースショー」という番組に取り上げて頂きました!

1週間のニュースを総ざらい!日曜のお昼にABEMA初のニュースショーが誕生。 世間を騒がせ、話題となっているニュースをあえて「的外れ」な独自の取材と目線でお伝えすることで、世の中で言われている「的(マト)=正義」に疑問を投げかけます。そこから浮かび上がるのは時代の潮流かはたまた?「それ、ニュースと全然関係ないじゃん!」最初の印象は見終わって大きく変わるかもしれません!?鋭いツッコミに定評のある千原ジュニアが、一癖も二癖もあるコメンテーター陣と切り込みます。



実は番組で取り上げてもらえるという連絡は事前にあり、その時に以下のような質問も頂いていました。

  1. なぜこのゲームを作ろうと思ったのですか?どういうシチュエーションで閃いたのか、など具体的エピソードを含めお願いします。
  2. ネット上で「このゲームは性的にどうなのか?」と賛否の声がありますがどう感じていますか?
  3. こう言った作品をクリエーターが制作すると必ず出るのが「表現の自由」の問題ですがどうお考えでしょうか?


上記の通り結構センシティブな質問だったので、気合を入れて書いた所、

4000文字を超える暑苦しい返答になってしまい、さらに蛇足も多分に含んでいたので

一部しか使われないだろうなと思ったのですが、なんと放送では1文字も使われませんでした。


取り上げてはもらえたので、返答が使われなかった事自体は全然良いのですが、

さすがに3,4時間かけて書いた文章が全く使われないのはもったいないので、

今回はその返答をそのまま記事にして再利用しよう!という感じの記事です。

(地味に縦笛なめなめVRのネタバレも含みます)


ちなみに番組でプチ炎上と表現しているのは

以下ツイートにされているの引用RT辺りの事だと思われます。





目次

  • はじめに
  • 目次
  • 1.なぜこのゲームを作ろうと思ったのですか?どういうシチュエーションで閃いたのか、など具体的エピソードを含めお願いします。
  • 2.ネット上で「このゲームは性的にどうなのか?」と賛否の声がありますがどう感じていますか?
  • 3.こう言った作品をクリエーターが制作すると必ず出るのが「表現の自由」の問題ですがどうお考えでしょうか?
  • おわりに


1.なぜこのゲームを作ろうと思ったのですか?どういうシチュエーションで閃いたのか、など具体的エピソードを含めお願いします。

続きを読む