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

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

【告知】8/8 東京ゲームダンジョン13に出展します

スマホ

突如としてスマホの電源が入らなくなり半ば強制的にスマホの買い替えで夏のボーナスが無くなった金欠の皆さんこんにちは。修理に出そうとしても一週間後しか予約が取れず、そうすると東京の展示会には間に合わない為、泣く泣く急遽の買い替えとなりました。キャッシュレスの支払やらスケジュール管理やら航空券の予約番号やら何から何までスマホがないと分からない、出来ない状態なので新しいスマホを持つ以外に選択肢がありませんでした、ええ。とはいえ、実は新しいスマホもまだ手元に届いてないんですがね。東京へ行くまでには何とか間に合ってくれる(はず)ので大丈夫ですが、経済面で非常に痛いダメージとなりました。最近のスマホ高すぎ。まぁ。これ(スマホの故障)が旅行期間中に起こらなかったことを幸いと考える事にします。

 

東京ゲームダンジョン13

というわけで今週末の8/8(土)に東京・浜松町 産業貿易センター浜松町館2・3Fで行われる東京ゲームダンジョン13に開発中のリズムゲーム「Under A Groove」を出展します。

gamedungeon.jp

東京ゲームダンジョンへの出展はこれで5回目、6月の札幌ゲームオデッセイに続いて制作中のリズムアクションゲーム「Under A Groove」を抱えて上京しますが、札幌ゲームオデッセイから約二ヶ月しか空いてないこともあり、新ステージではなく昨年の大阪インディーゲームサミットで出展したステージのブラッシュアップ版を展示する予定です。
BGMにはUniquGear氏の「Gear Shift」を使用しています。疾走感のある非常にカッコいいEDMです

www.youtube.com

展示内容

今回展示するステージは使用した楽曲が戦闘場面向きという事もあり、3D-STGをモチーフにカメラワークによるダイナミックな映像が特徴的なステージとなっています。

 

Under A Groove」では一般の音楽ゲームでいうノーツに当たるオブジェクトが画面下部と映像内の両方に表示する形式を取っていますが、大阪インディーゲームサミット版では映像内で表示されるノーツの一部に入力タイミングが計りずらいものがあり、試遊された方からも「画面下部(のノーツ)を見ずに遊ぶのは無理」という感想をもらっていたので、その辺を重点的にブラッシュアップを進めました。

大阪インディーゲームサミット版

 

東京ゲームダンジョン版

またこれに合わせて演出の一部も強化して、より派手でカッコ良くなるように頑張りました。

 

出展ブース

私の出展ブースは会場3Fの「3P-2」、フロアー中央奥側となっています。東京ゲームダンジョンには5回参加していますが、これまで全て出入口側の島にブースがあり奥側の島にブースを構えるのは初めてなのでどうなるのか今から楽しみです。

 

去年に続いて今年も猛暑で当日も暑くなりそうですが、会場に来られる予定の方は熱中症に十分注意してイベントを楽しんでください、そして他のブースの試遊待ちで手が空いた時間にでも立ち寄ってください。どうぞよろしくお願いいたします。

 

【Unity】Unityエディタ上で動作する音声編集ツール「AudioTailor」

地震

会議中に携帯のアラームが鳴って地震が来ることは分かっていたのですが、想像以上に振動が長く続いて驚いた共に、報道で流れてくる被害の大きさに恐怖を感じざるを得ません。日本ならどこで同じような災害は起こってもおかしくはないんですが、実際に直面するとやっぱりたじろいでしまいますね。とりあえずこれ以上被害が大きくならないことを祈っています。

 

音声編集

ゲーム中に使用するBGMやSEなどはフリー素材やアセットを購入して使用していますが、音量の大きさや無音部分の長さ等で調整が必要な場合は、一度外部ツールで編集する以外に手立てがありませんでした。
しかし最近、Unityエディタ上で音声波形を直接編集できるツール「AudioTailor」が、Unity Technologiesの高橋 啓治郎氏により公開されている事を知り、さっそく導入してみました。

github.com

 

導入方法

例によってPackage Managerから導入しますが、最初にスコープの設定を行います。
Project SettingsのPackage Managerを開くとScoped Registriesを設定する項目があるので、「+」ボタンを押して以下の内容を入力

Name: Keijiro
URL: https://registry.npmjs.com
Scope: jp.keijiro

Saveボタンで保存すると、Package ManagerのMy Registries欄に「Keijiro」の項目が追加されるので、それを選んで「Audio Tailor」をInstallします。

 

出来る事

Installが完了すると上部メニューのWindow > Audio > Audio Tailorを選びます

Audio Tailorウィンドウが開きます。

Audio Tailorでは以下の編集処理を行う事が出来ます。

  • Trim Silence:クリップの前後の無音部分を削除します。無音の検出には閾値(dB)を設定し、音声ファイルの導入部(Silence)と排出分(Release)それぞれで閾値は設定可能です。
  • Normalize: 指定したピークレベル(dB)に合わせて音量を調整します。
  • Make Loop: オーディオの先頭と末尾をクロスフェードでつなぎ合わせ、ループ音源を作成します。ループは音声の両端を少し切り落としてフェードイン・アウトでつなぎます
  • Covert to Mon: ステレオ音源をモノラルに変換します。主にメモリ使用量の削減に使用します。

 

使ってみた感想

試しにSEで使用している音声ファイルに対して無音部分のカットを行ってみました。

「Process」ボタンで適用、「Save」ボタンで保存となりますがUndoは出来ないので編集を間違えた場合は、音声ファイルを再度設定しなおす必要があります。
また、「Make Loop」も使ってみましたが前述の説明のように楽曲の前後をフェードイン・アウトでつなぐので、楽曲によっては上手くつなぐのが難しいかと思います。

 

 

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

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


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

 

札幌

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

ホテルの朝食

 

空港でも寿司

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

 

 

◇プライバシーポリシー

●個人情報の利用目的

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

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

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

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

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

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

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

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

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

●免責事項

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

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

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

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

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

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