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

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

【Unity】Localization Tableで多言語化したテキストをスクリプト内で参照する

弱冷房車

乗り込もうとした電車の車両に「弱冷房車」のステッカーが貼られているのを見ると絶望する地球温暖化懐疑派の皆さんこんにちは。通勤ラッシュの時間帯に弱冷房とか誰が希望したんでしょう?え人が密集して暑苦しいのに冷房が何の役にも立たないばかりか、駅に停車するたびに開いたドアから熱風が吹き込んでくるので車内にいながら熱中症になりそうなんですが。弱冷房車提案した奴に小一時間説教してやりたい

 

教育素材的ゲーム

実は本格的に遊ぶのは初めてなんですリズムゲームを作成している上では勉強の為にも購入すべきと判断して11年ぶり?の新作で盛り上がっているゲームを購入しました。

昔はゲームセンターに筐体が設置されていてそこで遊んだ記憶では判定がかなりシビアだったと思うのですが、今作は入力の判定もステージクリアの基準も少し緩めになっている気がします。(特にオモテ側ステージ)
ゲーム開始前に遅延調整が有ったり、各ステージのチュートリアルがしっかりしていたりとクリアが容易になった理由は幾つかあるのでしょうが、基本的に判定基準が少し緩めに設定されているのが大きな理由になっていると思います。おそらく多くの人がオモテ側の殆どのステージを初見でクリアできているのではないでしょうか?

もちろん判定緩くなったからと言って面白さが損なわれているわけではなく、リズムに乗ってボタンを押す(コントローラーを操作する)事の楽しさが十分に表現されており、一つのステージは短いながらもバリエーションが豊富なので時間を忘れてゲームに没頭できるようになっているのはさすがといった感じ。
従来のリズムゲームだけでなくビートスペルといった新しいミニゲームも楽しくて、11年待った人も新しく始める人も誰もが楽しめるゲームだと思います。

ただ一つ難を上げるとすると、「リズムに従順であること」という主題が強すぎるため、一人でゲームを続けていると次第に「娯楽としてゲームを楽しむ」というより「音楽教育としてリズムを学んでいる」感が強くなり、プレイする度に緊張感と疲労がどっと押し寄せてく感じになります。
ここら辺は人によって感想が違うかもしれませんが、一人で腰を据えてじっくり楽しむ、というよりは大人数でワイワイ言いながら気軽に遊ぶ、といったスタンスが最も似合うゲームなのかもしれません。

 

テキストをスクリプトで制御する

Unity Localizationを使うと基本ノーコードで多言語対応可能ですが、スクリプト内で文章を編集してテキスト表示するような場合には、どうしてもスクリプト側で多言語化したテキストを参照する必要があります。

例えば、下のような画面で「テスト開始」のボタンを押すとボタンのテキストが「テスト停止」に変わり、「テスト停止」の表示中のボタンを押すと「テスト開始」と文言を変えるような制御をしたい場合、


日本語では「テスト開始」⇔「テスト停止」と表示し、英語では「Begin test play」⇔「Stop test play」と表示させたい。

勿論これをスクリプト内で直に文言を設定しても良いのですが、その場合は「ボタンの状態×選択された言語」の判定が必要となるので少し面倒です。なので今回はUnity Localizationを利用して「ボタンの状態」だけを判定して、選択言語に応じた文言をLocalization Tableから取得したいと思います。

 

Localization Tableの参照

最初にLocalization Tableには以下のように設定しておきます。

スクリプトでLocalization Tableの内容を参照するにはLocalizedStringを使います。

  LocalizedString localizedString  = new LocalizedString("テーブル名","キー名")

「テーブル名」に先ほどの図のLocalization Tableのテーブル名を指定し、「キー名」には「テスト開始」を表示したい場合は「play-start」を、「テスト停止」を表示したい場合は「play-end」を指定します。
すると現在の言語でローカライズをさせたLocalizedStringが取得されるので、その文字列を非同期取得で取得します。

   string message  = await localizedString.GetLocalizedStringAsync().ToUniTask(cancellationToken: cancellationToken);

   // メッセージテキストを更新
   textMeshPro.text = message;

 

実行結果

実行結果は以下のようになります

日本語

 

英語

【Unity】 Unity Localization で言語に応じてフォントも切り替える

七夕

織姫を待ちすぎてそろそろ天の川も干上がりそうな独身貴族の皆さんこんにちは。貴族と言いつつ先週もらったボーナスが既に手元にないのですが一体どうした事でしょう。

 

2Dゼルダ風ゲーム

一時期話題になったものの、最近あまり見なくなったHD-2Dのアクションゲームを最近購入しました。

スーファミ時代の2Dゼルダを継承したような内容で数種類の武器を切替え、同伴キャラクターの魔法を駆使して戦闘や探索を行います。視点は見下ろし型の固定なので敵と遭遇した場面では前後左右の移動と武器による攻撃がメインとなり、盾によるパリィアクションもあります。


敵の種類はそこそこ多く、それぞれ特徴的な攻撃をしてくるものの、押し並べて攻撃タイミングが遅いので対処は容易く比較的難易度は低いと思います。
ボスキャラに関してはそこそこ手ごたえのあるボスもいますが、攻撃の予備動作が分かりやすくパターンもあまり多くないのでボスが倒せずストーリーが詰む、といった事もないのではないでしょうか。

前述のように2Dゼルダライクのゲーム仕様なので成長要素と言えば魔法の種類とHPの最大値が増える程度で、それも各地を探索してアイテムを発見する事による増加となっているため、道中に出会う雑魚敵を無理して倒す必要はありません。
フィールマップ上にHPや魔法を増やすための神殿(ゼルダ的な祠)が配置されており、そこからアイテムを得るにはちょっとしたパズルを解く必要があります。もうここら辺もゼルダライクですね。

英雄的な活躍をする主人公(=エリオット)が困難な状況下の姫(=ヒューリア姫)を救うために世界中を冒険する、というストーリーも王道ゼルダライクなんですが、タイトルに「千年物語」とあるように、主人公が4つの時代を行き来してその時代で遭遇するサブクエによって他の時代のストーリーが(微妙に)変化する、というのは本作の大きな特徴となっています。

とはいえ、4つの時代とも基本的にマップが同じでダンジョンのギミックや各地を巡る経路が変わる程度の違いしかない為、例えば「Aの時代のサブクエを達成するためにBの時代の〇〇の宮殿を探索する」といった展開になっても、Aの時代とBの時代で同じダンジョンを繰り返し攻略することになって面倒臭く感じてしまうこともあります。
敵の種類も4つの時代で大きく変化することもないため、時代を4つに分けるより1つの時代にギュッと濃縮した方が良かったのでは?と思いますが、ゲームのコアとなるアクション面は快適でメインのストーリー展開は熱くなる場面もあるので、こういったゼルダライクが好きな方にはお勧めできる仕上がりになっていると思います。

 

文章のローカライズ

前回、前々回の記事でUnity Localizationによる文章のローカライズを紹介しました。

www.karvan1230.com

www.karvan1230.com

Localization Tablesによる定義で言語毎に文章の切替は可能となりますが、その文章を表示するTextMeshProにはどちらの言語でも表示できるフォントを指定する必要があります。
ローカライズを英語と日本語のみとする場合には日本語対応のフォントを指定すれば十分でしょうが、中国やアラビア語も同時に対応しようとするとそれらすべてを含んだフォントアセットを見つける or 作成するのは非常に困難です。

より多くの言語に対してローカライズを行うには言語毎にその言語に応じたフォントを切り替える必要があります。

 

フォントアセットテーブルの作成

まず最初に文章の切りり替えと同様に言語毎に使用するフォントを定義するLocalization Tablesを作成します。
Localization TablesのNewCreateボタンを押し、Typeに「Asset Table Collection」を指定、名前を決めてCreateボタンを押します。

この作成したAssetTableに任意のキー名(今回はUIText)と、各言語で使用するフォントアセットを指定

次に同じAssetTableに任意のキー名(今回はUIMaterial)と、先ほどの指定したフォントアセットで使用するMaterialを指定します。

MaterialはTextMeshProでフォントアセットを指定した際にInspectorで「Material Preset」として表示されているMaterialを指します。

 

Inspectorの設定

Unity Localizationにより多言語対応しているTextMeshProのInspectorを開きます。
TextMeshProのFont Asset欄を右クリックして「LocalizeProperty」をクリックします。

同じようにTextMeshProのMaterial Preset欄を右クリックして「LocalizeProperty」をクリック

TextMeshProのオブジェクトにGameObjectLocalizerコンポーネントが追加されているので、そこに前段で作成したAssetTableのフォントアセット(UIText)とマテリアル(UIMaterial)を指定します。

正しく設定すると文章のローカライズの同様にTextMeshProの該当項目が緑色で表示されるようになります。

このFont AssetとMaterial Presetは同時に切り替わらないとTextMeshProは正しく表示されないので注意してください。

 

検証結果

作成中ゲームの音量調整画面について言語毎に文章とフォントを切り替えるようにしました。

日本語指定の場合

 

英語指定の場合

言語毎にフォントが切り替わっているのが分かると思います。

【Unity】Unity LocalizationとGlobal Variable を使って動的テキストをローカライズする

キャラクター名

シナモロールをずっとシナモンロールだと思っていた典型的なオジサンの皆さんこんにちは。ポチャッコもポッチャコだと思ってました。キャラクター名って興味がないと覚えられませんよね。ポケモンとかピカチュウ以外知らないし。

 

ローカライズ

Unity Localizationを使った多言語対応について前回の記事で紹介しました。

www.karvan1230.com

前回はLocalization Tablesを使って静的なテキストのローカライズを行いましたが、ゲーム内で使用するテキストには当然ながら条件によって文言が異なるケースも多々存在するので、そういったテキスト(動的テキスト)についても自動的にローカライズが出来ればスクリプト等で編集する手間が省けて便利になります。

Unity Localizationを使ったローカライズでそのようなケースではSmart Stringsが使えます。

 

Smart Strings

Smart Stringsとは「規則に基づいた変換を定義する」機能で、例えば「変数:countの値が1,2,3だったら日本語ではそれぞれ一、二、三という文字列に変換する」という定義をLocalization Tablesに行うことができます。

先ほどのケースの場合だと、Localization TablesのValueに相当するセルに

  • 英語の場合:{count:choose(1|2|3):1|2|3}
  • 日本語の場合:{count:choose(1|2|3):一|二|三}

の定義を記載しておくと、英語ではcountの値に応じて「1」,「2」,「3」と表示され、日本語だと「一」,「二」,「三」と表示されることになります。

上記の記載は「Choose Formatter」というフォーマット形式で{}内の各項目はそれぞれ以下のような意味を持ちます。(Unity公式マニュアルより)

 

事前準備と基本的な使い方

Smart Stringsを使う場合は事前にLocalization Tablesの対象のセルにSmartのチェックをする必要があります。
各セルの右下の三点リーダの箇所をクリック >Smart String からSmartにチェックを設定します。

 

Smartにチェックをしたら先ほどのChoose Formatterに準じた形式の文章をセル内に記載していきます。
今回は例としてBoolean形式の「gamepad」という変数を参照したChoose Formatterを定義します。

上の定義が正しく動けば日本語では以下のように表示されるはずです。

  • gamepadがTrueの場合:…タイミングでボタンを押します…
  • gamepadがFalseの場合:…タイミングでキーを押します…

次にBoolean形式の「gamepad」という変数の定義をLocalize String Eventコンポーネントに追加します。
上記のテキストを表示するTextMeshProオブジェクトのInspectorのLocal Variables欄から「+」をクリックしてBoolean形式の「gamepad」を追加します。

この状態でゲームを実行すると

gamepadがTrueの場合

 

gamepadがFalseの場合

gamepadの値応じて表示する文言が変わるようになります。

定義した変数の値によって文言を変えられるようにはなりましたが、上記のままでは所詮Inpector上の設定による変更のみでゲーム実行中の状態変化に対応して文言を切り替えられるわけでありません。
ゲーム実行中にスクリプト内で変数を更新して文言を切り替えたい場合はChoose Formatterに設定する変数にGlobal Variable(グローバル変数)を指定します。

 

Persistent Variables Source

Global Variable(グローバル変数)は文字通りゲーム内で有効なグローバル変数でSmart Stringsと連携することが出来ます。
今回の場合、「gamepad」をGlobal Variable(グローバル変数)に定義しておくことで、スクリプト側で「gamepad」の値を変更するとChoose Formatterの定義通りに文言が変更されます。

このGlobal VariableはPersistent Variables sourceを使って定義します。
まずメニューのAssetsから[Create -> Localization -> Variables Group]を選んで変数グループアセットを作成します。

プロジェクト内の任意のフォルダにVariable Groupのアセットファイルが作成されるので、そのアセットをダブルクリックで Inspector ビューを開き、[+]ボタンからBoolean形式の「gamepad」を設定します。

次にこのVariable Groupのアセットを Persistent Variables source のグローバル変数に登録します。

メニューから[Edit > Project Settings]を開き、[Localization]タブから[String Database > Smart Format > Sources > Global Variables]のリストを[+]ボタンで追加します。

追加データにグループ名とVariable Groupアセットを登録します。
今回は以下のグループ名としました。
グループ名:global

これで「global」というグループ内に「gamepad」という変数がスクリプトでも、LocaizationのSmart Stringでも参照可能となったので、Localization Tablesの定義を「gamepad」から「global.gamepad」に変更します。

また、Localize String EventコンポーネントのLocal Variables欄は削除しておきます

 

スクリプトで変更する

スクリプト側からGlobal Variableの変更は以下のように行います。

using UnityEngine.Localization.Settings;
using UnityEngine.Localization.SmartFormat.Extensions;
using UnityEngine.Localization.SmartFormat.PersistentVariables;

public static class LocalizationUtil {
  public static void SetLocalizedStringFromGlobal(string param1, string param2, bool argValue)
  {
    // PersistentVariablesSourceの取得
    var source = LocalizationSettings.StringDatabase.SmartFormatter.GetSourceExtension<PersistentVariablesSource>();

    // 今回の場合、param1に"global" param2に"gamepad"を指定する
    var targetValue = source[param1][param2] as BoolVariable;

    // 更新する値を設定
    targetValue.Value = argValue;
  }
}

 

動作確認

今回はゲーム実行中にゲームパッドへの接続有無を監視して、それに応じてGlobal Variableの値をスクリプト側から変更するようにしました。

表示される文言が変更されていることが分かると思います。

 

【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」というゲームをさらに磨きを掛けていきたいと思います。

 

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

 

◇プライバシーポリシー

●個人情報の利用目的

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

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

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

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

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

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

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

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

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

●免責事項

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

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

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

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

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

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