原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【Unity】Unity Localizationを使って簡単にローカライズをする

ワールドカップ

平日の朝8時からキックオフと聞いてどうやって会社をサボるか思案中の勤労精神の低い皆さんこんにちは。日本戦に限らず殆どの試合が深夜から早朝の時間帯に行われるので寝不足が激しいのですが、振り返ってみると観戦時間の70%ぐらいは居眠りしているので、無理して見る必要もない気がしてきました。スペイン対サウジとかちょっと目を閉じていたら3-0になっていたし。

 

多言語化対応

Steamでゲームを発売することを考えるとゲームの多言語対応は必須と考えた方が良いと思います。
なぜならSteamで日本語設定のユーザー比率はSteam全体の2〜3%前後でしかないので、より多くの方に自作ゲームを届けようとするなら英語圏やその他地域に対する対応は行うべきでしょう。

制作中のゲーム「Under A Groove」はリズムゲームという仕様もあって他ジャンルのゲームほどテキストは必要としないのですが、それでもタイトル画面やメニュー画面ではUIラベル、操作説明等を表示しないといけないので、少なからずも多言語化を行う必要があります。

上の図は展示会等で使用している「Under A Groove」のタイトル画面ですが、展示会バージョンでは日本語と英語の操作説明を併記しています。しかし製品版では選択された言語での表示のみとなる予定です。
こうした静的なテキストを選択した言語によって表示を切替える仕様とするには、Unity Localizationを使うのが便利だと思います。

 

Unity Localization

Unity LocalizationはUnity公式が提供しているパッケージでUnity2019.4以上であればPackage Managerからインストール可能です。

このUnity Localizationを使った多言語化対応の基本手順は以下のようになります。

  1. Localization Settingsを作成する
  2. 言語(Locale)アセットを登録する
  3. 文字列の翻訳テーブル(String Table)を作成する
  4. コンポーネントへ適用する

 

Localization Settings の作成

Unity LocalizationはKey-Value形式でKeyと各言語のValueを設定していきます。その形式データをテーブルと呼んでいるため、まずはテーブルを作ります。
Unityの上部メニューから Window > Asset Management > Localization Tables を選択すると、

Localizatoin Tables画面が表示されるので、中央の「Create」ボタンを押下

使用するテーブル(Key-Value形式)を選択する画面に切り替わります。以後、UIや会話文など用途に応じて翻訳用のテーブルを作成し、この画面でテーブルを切替えて設定していきます。

今回は新規作成なので左側の New Table Collection を選択して新しくテーブルを作成します。

今回は翻訳用のテーブルを作るのでNew Table Collection画面ではTypeを String Table Collection を選択。Nameにテーブル名を入力した後、Locale Generatorボタン押下します。

 

言語(Locale)アセット登録

多言語化対応する言語が一覧に表示されます。

翻訳したい言語(日本語、英語など)にチェックを入れてAdd Localesボタンを押下します。

Localization Tables画面に戻るので、先ほど選択した言語が表示されていることを確認したらCreateボタンを押下します。保存先を選ぶと言語別にテーブルが生成されます。

 

文字列の翻訳テーブル(String Table)作成

ここからいよいよ多言語化の設定を行います。 Localization Tables画面を開いてCurrent Tableから先程作成したテーブルを指定

New Entryボタンを押すと、Keyと各言語毎に対応した文言を入力する行が追加されるので、Keyに後述するコンポーネントへの設定時に指定するキー名を入力、その右側から各言語に応じたテキストを書いていきます。

 

コンポーネントへ適用する

多言語化した文言を表示するTextMeshProに対してInspectorの右上にある三点リーダーを クリックして Localize を選択します。

LocalizeStringEventコンポーネントが自動で追加されるので、Entry NameにLocalization Tables画面で作成したテーブルのKeyを指定します。

Keyを指定すると自動的にTextMeshProにKeyで指定した文言が入力されます。

 

言語切替の確認方法

Editor上で言語を切り替えて確認するにはLocalization Scene Controlsを使います。
Unityの上部メニューから Window > Asset Management > Localization Scene Controls を選択します。

Localization Scene Controls画面のActive Localeに表示したい言語を指定します。

例えば言語に英語を選択すると

英語化したゲーム画面となります。

ゲーム実行中の場合は言語選択のプルダウンがGame画面右上に表示されるので、そこから動的に変更する事もできます。

 

今回は静的な文字列をローカライズする手順を説明しました。条件によって文言が変わるような動的な文字列の場合のローカライズは次回説明したいと思います。

 

【レポート】札幌ゲームオデッセイ出展レポート

旅先での食事

普段は質素な食事なのに旅先ではなぜか後先考えず豪華な料理を頼んでしまう金銭感覚が乏しい皆さんこんにちは。北海道と言えば海鮮だろうとウニやらヒラメやらアワビやら食っていたら食費が凄いことになってた。まぁ、いずれも美味しかったから良いけど。北海道でもウニ丼って高いんだな。

 

SAPPORO GAME ODYSSEY

というわけで6/7(日)に札幌で開催されたSAPPORO GAME ODYSSEYに開発中のリズムゲーム「Under A Groove」を出展してきました。

www.sapporo-game-odyssey.jp

最初に断っておきますが、いつも展示会に出展すると開場前の様子など展示会の風景をこのブログに載せてましたが、今回はそういった素材が全くありません。
なぜなら非常に設営から展示会終了まで写真を撮る時間もないぐらい忙しかったから。辛うじて開場直後に自分のブースは撮影出来ましたが、ひっきりなしに試遊の方が訪れる状況もあってカメラを構える余裕はありませんでした。

設営ブース

今回出展したSAPPORO GAME ODYSSEYは初め開催の展示会で、場所も地下街のイベントスペースを使うという情報だったので個人的に「そんなにお客さんは来ないんじゃないか」と思っていたのですが、運営の方の盛り上げ方が上手かったのか予想以上の反響で開始直後から終了時間ギリギリまで人が途切れず、試遊のお礼に渡すため用意していた缶バッチは早々に捌けて、結局60名以上の方に遊んでいただくことが出来ました。
5時間のイベントで試遊時間は操作説明の時間も含めると4~5分程度なので、計算すると本当に休む間もなく試遊される方が来てくれた計算になります。本当にありがとうございました。
私のところだけでなく他のブースも同じように試遊台が埋まっている状況だったのではないでしょうか。

 

この展示会(SAPPORO GAME ODYSSEY)に向けてGWを返上して新ステージを作成したのですが、予想以上に多くの方に遊んでいただき、並んで待ってもらう状況もあったり、かつ感想も上々だったので頑張ってきた甲斐があったと思います。

youtu.beSAPPORO GAME ODYSSEY版のプレイ動画

運営の方の発表によると当日の来場者は1000人を超えたそうで、初回にして大盛況となりました。これは運営の方々の熱意と努力が一番の要因だと思いますが、出展者の一人としても非常に有難い限りです。
イベント終了後は懇親会も開いていただき、出展者の方や運営の方々とインディゲームについて語り合うことができ、本当に幸せな一日でした。
運営の方々にはこういった良い機会を与えていただき、感謝しても仕切れない思いです。

本当にありがとうございました!


お話によると継続して開催したい、かつ規模も徐々に大きくしていきたいとのこと、次の機会もまたぜひ出展できればと思いますので、よろしくお願いします。

 

札幌

実は札幌を訪れるのは十数年ぶりでイベント当日も含め、北海道にいる間は残念な天気だったのですが、期待していたグルメは堪能することが出来ました。
ラーメンも食べたし、三色丼も握りのお寿司も美味しく、ホテルの朝食も豪華で展示会に限らずプライベートでもまた訪れたいと思える旅でした。

ホテルの朝食

 

空港でも寿司

東京やら大阪の展示会には参加していましたが、こうした地方の展示会にも今後はできるだけ参加したいなぁと思います。

 

 

【告知】SAPPORO GAME ODYSSEYに出展します。

ビルド

エディタ上の動作とビルド版の動作の違いに頭を悩ませている永遠のUity初心者な皆さんこんにちは。他のゲームエンジンはどうだか知りませんが、Unityでは結構頻繁にこの現象に見舞われます。エディタ動作では再現しないのにビルド版では例外が発生して進行不能となるのとか本当に止めてほしい。ログを確認してなんとか対処出来ましたが製品版でこれ(ビルド版だけの不具合)が起こると原因の特定が難しいのでかなり厄介です。開発中でもこまめにビルドして動作を確認することは大事ですね。

 

SAPPORO GAME ODYSSEY

というわけで、今週末の6/7(日)に札幌の札幌駅前通地下歩行空間(チ・カ・ホ)で行われるSAPPORO GAME ODYSSEYに開発中のリズムゲーム「Under A Groove」を出展します。

www.sapporo-game-odyssey.jp

札幌で出展するのは初めてで、イベントホールや展示施設ではなく地下通路のイベント広場で自作ゲームを披露するのも初めてなので今から非常にワクワクしています。
インディゲームに関心のある方ばかりでなく一般の歩行者の方がふらりと立ち寄る事もあるわけで、いつもの展示会とは違った雰囲気になるでしょうし、逆にそういったライト層(ゲーム好きではない層)の方の反応を知る良い機会になるではないでしょうか。
今回私の展示ブースは比較的早めに応募したという事もあってか、A-1という先頭の番号を貰えたので非常に分かりやすい場所に位置どっています。

SAPPORO GAME ODYSSEY用に作成した新ステージをお披露目していますので、札幌周辺にお住まいの方は6/7は会場にぜひお越しください。

 

展示内容

今回出展するリズムゲーム「Under A Groove」は参加する各展示会をマイルストーンにおいて、展示会毎に新しいステージを披露するスケジュールで開発を進めています。
SAPPORO GAME ODYSSEYでも同様にこの展示会に向けて新しいステージの作成を進めていました。最近は本業の方が忙しくなったりして開催日までに開発が間に合うかギリギリのところでしたが、なんとか間に合わせることができました。

「Under A Groove」は遊べるアニメーションMV』をコンセプトに、カラフルなビジュアルと音楽とリンクするアニメーションが特徴的な新感覚のリズムゲームとなっています。


今回はKyattoさんの「Secret Adventure」を使用させて頂き、楽曲のイメージに沿ったポップで可愛いショートアニメに仕上がったと思っています。

www.youtube.com

BPMが高い楽曲なので難易度的には少し難しいかもしれませんが、アニメーションは架空のお菓子工場を舞台にした緩めで微笑ましい内容になっています。

他のブースの試遊待ちで手が空いた時間にでも立ち寄ってくれると嬉しいです。
どうぞよろしくお願いいたします。

【レポート】BitSummit Punch参戦レポート

途中乗車・途中下車

新幹線を使って途中乗車・途中下車しようとすると自動改札で止められることを知らなかった交通弱者の皆さんこんにちは。予約の時に自宅の最寄り駅から京都までの切符を購入して、当日は最寄り駅から新幹線の駅がある博多駅までは定期を使い、博多駅の新幹線乗り場から新幹線に乗ろうとしたら見事に止められました。駅弁を買いたくて博多駅でいったん降りただけなのですが、最近はそういった融通が利かない見たいですね。帰りの際も博多駅で食事をしようと途中下車したら同じように止められました。途中下車は別にいいだろ、面倒臭いなぁ。

 

BitSummit Punch

というわけで5/22~5/24に京都みやこめっせで開催されていたBitSummit Punchへ行ってきました。今回は電ファミニコゲーマー様の展示企画に運よく推薦させて頂くことが出来た為、事前の準備や期間中の展示、運営諸々は電ファミニコゲーマー様が行い、私は3日間の内、23日だけの参戦となりました。今回はそのレポートとなります。

news.denfaminicogamer.jp

会場となったみやこめっせは初めて訪れたのですが、京都の観光地東山にあり平安神宮が近いこともあってか、とにかく外国の方が多かった印象です。観光バスも多く停まっていて海外の観光客の方々で歩道が埋まっていました。

この大きな鳥居をくぐって会場へ

会場入り口付近、この横にはキッチンカーが並んでいた

23日は一般デーということもあって会場に入ると人の多さにびっくり、入場口前のロビーも人で溢れていてBitSummitという展示会の規模の大きさを思い知らされました。

ロビーも人でいっぱい

 

電ファミニコゲーマーブースへ

人混みをかき分け電ファミの担当者の方と合流して電ファミブースへ

横の壁には今回の企画に選出されたタイトルのキービジュアルが並んでました。

裏側にも

看板をくぐって中に入ると自分のゲームが専用のブースに設置されていて感動。
タイトルボードの下の付箋紙は試遊された方の感想が書かれていました。

付箋紙の内容を拝見させて頂いたのですが、小さな付箋紙にびっしりと感想が書かれているものあったり、勿体ないぐらいの褒め言葉が書かれているものがあったり、全ての感想が有難い限りでした。今後の開発のモチベーションになります。
担当の方のお話だと海外の方も多く試遊して頂けたようで、英語で書かれたメッセージも張られていました。あとボードのイメージが評判だったらしい。

 

会場を巡って

この場所には既に係りの方が立っておられたのでブースの様子を確認した後は自由にBitSummitの会場を廻っていました。

3日間で6万人ぐらいの人が訪れるのでどこの場所でも人の多さが半端なく、試遊場所はずっと混雑してました。特にBitSummitでは任天堂、PlayStation、SEGA等々といった大手企業もブースを出展しており、それらのブースがあった3Fは入場の待機列も凄いことになっていました。

任天堂ブース

PlayStationブース

SEGAブース

1Fは東映や松竹、集英社、PARCOなど他業界からインディゲームへ進出した企業のブースが並んでいて、海外メーカーのブースが多めだった印象です。なので

こんな過激な展示もあったり。あとVR系のゲームも多く展示されていました。ほんと、東京ゲームダンジョンやインディゲームサミットとは雰囲気が全然異なり、インディーゲーム展示会というよりプチTGSといった感じでした(TGS行ったことないけど)

 

気になったゲーム

いつもはこうしたイベントは出展側で参加するので殆ど他のゲームを遊ぶことができないのですが、今回はほぼ客側の立場で来場したので色んなゲームを遊ぶことが出来ました。試遊待ち行列が長くて諦めたゲームいくつかありましたが、気になっていたゲームを遊ぶことが出来て満足です。

 

■STEP THEATER

store.steampowered.comリズムゲームを作っているので、やっぱり同じジャンルのゲームは気になります。試遊待ちの行列を並んでプレイ。
思っていた以上にリズム天国に近いゲーム仕様でしたが、登場するキャラクターが可愛くて操作を成功した際の画面の変化が楽しい。少しリズムを取るのが難しいパターンもあったりして、やりごたえ重視なのかもしれない。

 

■Finding Polka

store.steampowered.comPARCO GAMESブースとDeveloperブースの二つで展示されていたがどちらもずっと試遊台が埋まっていて、終了間際の空いた時間にDeveloperブース側でプレイ
手書きのグラフィックが圧倒的。BitSummitでの「ビジュアルデザイン最優秀賞」「キッズセレクション賞」の二冠を制覇。暖かみのあるグラフィックは幅広い層に受けそう。

 

■Heartreasure: Stellar Journey

store.steampowered.comこちらも手書きグラフィックが素晴らしいハート探しゲーム。単にクリックしてハートを探すだけだと思っていたが、意外と色んな隠れたギミックが用意されていてビックリ。Developerブースでは前述のFinding Polkaと並んで展示されていて同じ作者なのかと思った(失礼しました)

 

■Beautiful Life Show

store.steampowered.com不穏な空気漂う世界を舞台にしたパズルプラットフォームゲーム。途中でゲームオーバーになるとその直前の動きが記憶され、そのゴースト?を使ってパズルを解いていく。デモステージを遊んだが丁寧な導入と程よい難易度が素晴らしかった。こうした自分の操作履歴を使う系のゲームって最近増えているけど流行ってるのかな?

 

■Miniature LAND -Four Seasons- 

store.steampowered.comジオラマを自作し撮影した映像を使った脱出ゲーム。実際に使用されたジオラマが展示されていて作りこみの細かさに感動した。イラストや3Dモデルを使ってゲーム作るのも大変だけど、それ以上に時間がかかるだろうし、こういう作者のこだわりを感じるゲームはもっと評価されて良いと思う。

 

最後に

BitSummitは事前審査があり開催期間も3日間にわたるなど敷居の高さから参加を諦めていたのですが、電ファミニコゲーマー様に機会を頂き、こんな大きな展示会に自作ゲームを出展することが出来て大変幸せでした。
自分のゲームに大きなボードが掲げられて専用のブースが設置されるのを見るとここまでの頑張りが報われた気がしました。
また、試遊された方の感想を拝見することも出来て、その温かい言葉に励まされましたし、こうした配慮をして頂いた電ファミニコゲーマー様には感謝しても仕切れない思いです。

今後はこの経験を糧にしてこの「Under A Groove」というゲームをさらに磨きを掛けていきたいと思います。

 

電ファミニコゲーマー様、試遊された方、本当にありがとうございました。

 

【Unity】テンプレートプロジェクトを作ろう

逆有償ボランティア

お金を払って「運営のお手伝いができる」イベントって何だよ、と思う反お目覚め系の皆さんこんにちは。なぜ資金支援の募集とボランティアの募集をそれぞれで行わないのか疑問ですが、とりあえず「お金をだして働かされる人がいる」イベントには近づきたいくないので遠くから眺めることにしました。さて、何の話でしょう?

 

BitSummit Punch

前回の記事でもお知らせしましたが、今週末の5/22~24に京都のみやこメッセにて開催されるBitSummitに開発中のリズムゲーム「Under A Groove」が出展されます。

news.denfaminicogamer.jp今回は個人での出展ではなく電ファミニコゲーマー様にて紹介していただく形での出展となっているので、いつもの展示会よりも出展ブースが豪華仕様となっています(当社比)
ブースのレイアウトを確認させて頂いた限りではA1サイズのボードがブースの上に掲げられているようで広い会場でもブースの場所が分かるようになっています。
以下のイラストボードが掲げられているはずなので、当日会場に訪れる方は是非探してみてください

 

試遊版の内容ですが東京ゲームダンジョン9と11、およびCEDEC+KYUSHU 2025に出展したバージョンを纏めた計3ステージ遊べる特別バージョンとなります。
Under A Groove」は展示会毎に新しいステージを披露していく開発指針を取っていますが、今回はBitSummitの開催期間が3日間もあり、かつ作品数も来場者数もこれまで参加した展示会とは規模が異なるので少しでも多くの方に楽しんでもらえるようにお披露目済みの3つのステージを遊べるようにしました。

今回選抜したステージはそれぞれで内容、雰囲気が全く異なるステージとなっているので幅広い方に楽しんで頂けると思っていますので、是非お立ち寄り下さい。

 

youtu.be

youtu.be

youtu.be

プロジェクトを立ち上げる時

Unityでゲームのプロジェクトを新たに立ち上げる場合、UnityHubから2D,Universal 3D(URP),High Definition 3D(HDRP)などのテンプレートを選んでプロジェクトを作成することになりますが、ここで選ぶテンプレートはBuid-in,URP,HDRPといったレンダリング手法の違いを選ぶのみで、それ以外のアセットについては何も導入されない空のプロジェクトとなります。
これから作るゲームに必要なアセットや設定等は、プロジェクト立ち上げ後に手操作で一つずつ導入していく事になりますが、新しいプロジェクトを立ち上げる度に、毎回使用するアセットをインポートし、設定を整えるのは非常に面倒くさい作業です。


しかし、Unity Hubの3.18.0からはオリジナルのテンプレートプロジェクトが作成可能となりました。
これを利用すればゲーム開発で必要となるアセット群や各種設定を既に導入、設定した状態でプロジェクトを立ち上げることができます。

 

テンプレートプロジェクトの作成

Unity Hubの画面の左メニューに「Templates」という項目があるのでこれを選択します。

テンプレートプロジェクトをすでに作成済みの場合は、Templatesタブ内にプロジェクトが表示されます。新規に作成する場合は「New template」ボタンを押下します。

テンプレートプロジェクトを作成する元となるプロジェクトを選択します。テンプレートプロジェクトはUnityHubに登録されている既存のプロジェクトを元に作成されます。プロジェクトが全くない状態からは作成することはできません。

次に詳細を入力する画面に進むので名前、説明、サムネイルなどを設定

最後にプロジェクトの管理をUnityHubで行うか、Gitで行うかの設定をします。

ここまで設定するとテンプレートプロジェクトの作成が行われますが、少し時間がかかるので作業状況を確認しましょう。

全ての作業が完了するとTemplatesタブ内に作成したテンプレートプロジェクトが表示され、テンプレートして使用できます。

作成したテンプレートは作成元となった既存プロジェクトと同じバージョンになり、新規プロジェクト作成時に違うバージョンのUnityエディタを使うことはできないことに注意が必要です。

 

【アセット紹介】Spriteに厚みをつけて立体化する『厚み付けUnityスクリプト』

ショートメール

携帯のショートメールに送られてくる「〇〇からお得なお知らせ」はちっともお得じゃないと思うキャリア携帯被害者の皆さんこんにちは。あれって通知を停止することはできないんでしょうか?やっぱりスマホは白ロムに限りますね。

 

BitSummit

既に発表になっていますが、5月22~24日に京都の「みやこめっせ」で開催される【BitSummit PUNCH】に開発中のリズムゲーム「Under A Groove」が出展されます。

単独で参加するいつもの展示会とは異なり、今回は電ファミニコゲーマー様のブースで紹介していただく形となっているので、開催期間中に私が試遊される方をお出迎えするという事はありません。なので訪れた方の感想やリアクションを直接頂くという事はできませんが、期間中のどこか一日は会場を訪れてブースの様子を視察したいと思っています。
BitSummitは国内で開催されるインディーゲーム展示会の中では最大級の展示会と言ってよい大型イベントで、期間の長さや参加費用の高さ等でこれまでは参加を断念していたのですが、こうした形で参加することが出来て大変有難く思います。
出展内容はまた改めてお知らせしますが、より多くの方に楽しんでいただける物を展示したいと思っていますので当日会場に足を運ぶ予定の方は電ファミニコゲーマー様のブースを何卒宜しくお願い致します。

電ファミニコゲーマー様のブースでは私のタイトル以外にも15タイトル程インディーゲームが展示される予定らしいので、このブースだけでも結構バラエティーに富んだゲームが披露されるのではないでしょうか、上のマップを見るとかなり大きなブースなのでどんな展示になるのか今から楽しみです。

 

気になるアセット

自身がゲーム制作を行っている事もあり、Unity関連、ゲーム制作関連のSNSを頻繁にチェックしていると、思わず気になるアセットに行きついたりします。
今回は「2Dスプライトに厚みを持たせて3D化する」というアセットに行きついたのでそのご紹介です。

Thick Sprite Mesh

assetstore.unity.com

■厚み付けUnityスクリプト

shishou.booth.pm

同じ作者の方がUnityのアセットストアとBOOTH両方で販売していますが、アセットストアがドル建て、BOOTHが円建てとなっているので円安の現在ならBOOOTHの方が圧倒的に安いです。
機能としてはアセット名の通り2Dスプライトに厚みを付けて3D化させることができます。

 

使い方

アセットを導入したらシーン内に空のオブジェクトを作成し、そこに「Thick Sprite Mesh」コンポーネントをアタッチします。

Inspector内のFront>Spriteの項目に厚みを付けたいSprite画像を設定すると自動的に3Dメッシュが生成されます。

厚みの幅はSide>Thicknessで変更可能で、表面や側面の色はFront、SideそれぞれのMaterialを指定することで変更することができます。
(側面の場合はColorのModeで色指定することも可能)

 

Materialを設定すると・・・

正面、側面の色を変えられます

ただ、側面のMaterialについてはUV指定が特殊なので、付随している日本語のドキュメントを参考にすると良いと思います。

 

メッシュ化の精度

作者の方によるとこのアセットでは2Dスプライトから3Dメッシュを生成する際にPolygonCollider2Dを元に輪郭を抽出して厚みをつけているようです。
このためColliderの精度(形状)によっては思った通りの形でメッシュ化されないケースがあります。

下の図では左の車のSpriteと比較すると窓の形が歪んでいるのが分かると思います。

PolygonCollider2Dは基本的にSpriteのアルファ情報から生成されるため、Collderの精度を上げるにはSprite画像の解像度を上げる事になりますが、それでも満足する結果が得られない場合はSprite EditorによりColliderの頂点を修正します。

Projectフォルダから対象のSpriteを選択してInspector内に「SpriteEditor」のボタンを押下します。

その後、SpriteEditorでCustom Physics Shapeを選択すればコライダーの編集画面になります。

Outline ToolのOutline Detailをスライダー調整しGenerateボタンを押して頂点を増やします。

その後、「Thick Sprite Mesh」コンポーネントの右上「…」の欄をクリック⇒Refreshを選択

頂点を増やしたColliderを元にSpriteの輪郭が抽出され3Dメッシュ化します。

 

【アセット紹介】SRDebuggerのOptionを使ってデバッグメニューを作る

エゴサーチ

Steamストアページ開設の情報がネットメディアに掲載されていて驚いたエゴサ不足の皆さんこんにちは。Xで一度ポストしたのみでその後はプレスリリースもせず、エゴサもせず、のほほんとしていたのですが、意外なことに2つのメディアに情報が掲載されていました。どちらも当該のお知らせをポストしてから直ぐの掲載となっており、今頃になって気づくとか不徳の致すところです。エゴサって大事。

www.4gamer.net

gamewith.jp

どちらもゲーム内容を丁寧に取り上げてもらえて大変ありがたい限りです。
4Gamer様 、GameWith様、本当にありがとうございました。

 

美麗なグラフィックと斬新な演出、そして古臭い戦闘

いわゆる「須田ゲー」と呼ばれるゲームはこれまで体験してこなかったのですが、主人公キャラのデザインに惹かれて最新の「須田ゲー」を購入しました。

初見で普通のヒーローアクションPRGだと思ってプレイすると面食らいます。
アメコミ風で『ガンダム』や『バックトゥザフューチャー』をオマージュしたようなムービーに、変身ヒーローのようなキメポーズのカットシーンが挟まり、途中でゲームオーバーになると主人公が白骨化するグロイ映像が流れてステータスアップのルーレットが始まったり、

武器取得強化やアイテム獲得などが行える宇宙船は何故かスーファミのようなドット絵の2Dとなっていて、戦闘の手助けとなる召喚NPCは土に植えて収穫するゾンビだったりと、とにかく洪水のように斬新な演出が流れてきて、驚くと同時に非常に楽しい。「須田ゲー」に熱狂的なファンがいるのも納得です。

ただ、肝心の戦闘パートは敵の種類は少なく、ゾンビっぽい雑魚キャラとエリート的なクリーチャー型の敵が何種類か登場する程度。
そのどちらも主人公に直線的に向かってくるだけで、しかも微妙に硬い、駆け引きとか爽快感とかはあまりなく、ひたすら向かってくる敵を攻撃するのみ、各ステージの最後にはボスも登場しますが、ヒット&アウェイを繰り替えしてチマチマとHPを削っていくことが主となるのでPS3時代のアクションゲームをやっているような感覚になります。

ここら辺は昨今流行りの「ソウル」系戦闘に対するアンチテーゼなのかもしれませんが、私的には少し退屈なものに感じられました。
UEらしい美麗でリアルなグラフィックと素晴らしいアートワーク、斬新な演出は巷のゲームと比べても突出して目を引くものですが、戦闘を含むゲーム部分はそういったビジュアル、音楽と釣り合っていないと言うのが率直な感想でしょうか。

 

SRDebugger

ここからは前回の続きです。

www.karvan1230.com

SRDebuggerの画面を開くと「Option」の項目がありますが、初期段階では何も表示されていません。

ここにはユーザ側でデバッグに必要なプロパティを実装することで画面に表示され、ゲームプレイ中に操作することが可能となります。

このプロパティはSRDebuggerのSROptionsクラスのpartialクラスに定義します。
partialクラスじゃなくSROptionsクラス自体を変更しても良いのですが、後々の拡張性を考えるとpartialクラスとして作成した方が良いと思います。

partialクラスなのでクラス名はSROptionsですが、ファイル名はSRDebugger.General、SRDebugger.MyOptionなどSROptionsとは異なる名前にする必要があります。
今回はSRDebugger.MyOptionのファイルを作り、以下のプロパティを定義しました。

public partial class SROptions
{
  private float _myValue = 0.0f;
  private int _myIndex = 0;
  private bool _myFLG = true;

  [Category("My Option")]
  public float MyValue
  {
    get { return _myValue; }
    set { _myValue = value; }
  }
  
  [Category("My Option")]
  public int MyIndex
  {
    get { return _myIndex; }
    set { _myIndex = value; }
  }

  [Category("My Option")]
  public bool MyFLG
  {
    get { return _myFLG; }
    set { _myFLG = value; }
  }
}

プロパティ定義の上にCategoryの設定を行うと、そのプロパティがカテゴリ別に画面に表示されるようになります。

 

SROptionsプロパティの参照

SROptionsプロパティはアセンブリを分割してない場合はどのスクリプトからも参照できます。アセンブリを分割している場合は、SROptionsにAssembry DefinitionによりAPI化を行い、参照したいアセンブリ側に参照定義を追加します。

実装したプロパティはSROptions.Currentを使ってアクセスします。usingの設定は不要です。

int index = SROptions.Current.MyIndex;
float value = SROptions.Current.MyValue;

今回はMyIndexを参照して、その値により動作が変わることを確認します。

各Index毎の動きをソースを修正せずに確認することが出来ました。

 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。