
『どうぶつの森』風オープンワールドサバイバルRPG『Dinkum』4月23日正式リリース!クリエイティブモード実装や新住民登場のアプデも予告
Source link
Views: 0
文法上の系譜で分類すると、C系統の言語があります。C、C++、C#、Java、JavaScript、PHPは、Cの文法的スタイルを受け継いだ言語であり、C系統の言語と呼ばれます。
多くの方が初めて、PHPに学ぶ際に、C系統の言語であるにもかかわらず、他のC系統の言語とは異なる文法的特徴が多いため、PHPに対して抵抗感を覚える場合があります。この抵抗感を引き起こす要因の一つとして、PHPには変数を宣言するためのキーワードが存在しないこと、およびブロックスコープがないことが挙げられます。
ブロックスコープがある言語とブロックスコープがない言語の違いをよく理解し、ブロックスコープがない言語に適したコーディングスタイルを理解することで、PHPに対する抵抗感を減らすことができます。
スコープとは、変数の有効範囲を意味します。通常、ブロックまたは関数ブロックが開かれた際に、そのブロック内で宣言された変数は、ブロックが閉じられるとブロックの外でアクセスできなくなり、コードの実行が終了になってからガベージコレクターによって消滅されます。ブロック内で宣言された変数は、ブロックの外部では使用できません。
JavaScriptでは、var
で宣言された変数は関数スコープを持ち、const
やlet
で宣言された変数はブロックスコープを持ちます。
(本記事はPHPを対象とした説明であるため、以下のJavaScriptの例では、より分かりやすくするために変数名に$
を付けております。)
if (true) {
let $a = 10;
}
console.log($a); // Uncaught ReferenceError: $a is not defined
ブロック内で宣言された$a
は、ブロックの外部からアクセスできません。
(function () {
let $a = 10;
})();
console.log($a); // Uncaught ReferenceError: $a is not defined
関数内で宣言された$a
は、関数の外部からアクセスできません。
if (true) {
var $a = 10;
} else {
var $b = 20;
}
console.log($a); // 10
console.log($b); // undefined
JavaScriptのグローバル変数は、グローバルスコープを関数スコープとして扱います。関数の内部にない場合でも、関数スコープの変数はグローバルスコープを関数スコープとして使用すると考えることができます。
JavaScriptには、PHPのisset
のように、変数が定義されているかどうかを確認する機能は存在いたしません。そのため、変数を宣言するコードが実行されていなくても、変数の使用時にエラーが発生しないようにする必要があります。JavaScriptでは、エラーを発生させるのではなく、代わりにundefined
という値にするホイスティングという方法を使用します。
関数スコープを使う変数$b
は、コードが実行されなかった場合でもブロックスコープのようにエラーではなく、undefined
の値となります。
(function () {
var $a = 10;
})();
console.log($a); // Uncaught ReferenceError: $a is not defined
関数スコープ内で宣言された変数は、関数の外部からアクセスすることはできません。
関数スコープを利用する変数がブロック内で宣言された場合は、同じ関数スコープ内で、undefined
の値としてアクセスできますが、関数スコープの外部ではundefined
の値としてアクセスできなく、エラーが発生します。
if (true) {
$a = 10;
}
var_dump($a); // 10
変数$a
はブロック内で宣言されましたが、ブロック外でもブロック内で宣言された変数を使用できます。
if (false) {
$a = 10;
}
var_dump($a); // Warning: Undefined variable $a
JavaScriptでは、関数スコープを使用するvar
宣言キーワードは変数をホイスティングし、ランタイムで実行されていない変数であってもエラーではなくundefined
を割り当てるようにします。関数スコープを使用するPHPには、JavaScriptのホイスティングのような機能を使わないため、エラーが発生します。
if (false) {
$a = 10;
}
var_dump($a ?? null); // null
PHPにはisset
, ??
, ??=
などの文法を使用して、定義されていない変数を確認するキーワードがあるため、定義されていない変数の使用がエラーを引き起こす場合でも、実行中にエラーを発生させることなくコードを展開することができます。
(function () {
$a = 10;
})();
var_dump($a); // Warning: Undefined variable $a
$a
変数の宣言は関数内で行われるため、関数外でこの変数を使用すると「定義されていない」というエラーが発生いたします。
ブロックを使用すれば、変数はブロック内で宣言され、宣言されたブロック外ではアクセスできません。このような特徴は、ブロック内で宣言し、ブロックの閉じとともにその役割を終えるブロック内でのみ使用される一時的な変数を気軽に作成できるという利点があります。多くの変数を作成しても、ロジックの流れを記述する部分での変数の数を抑え、流れを構成する部分で一時変数は気軽に生成できます。
ブロックスコープがなく、関数スコープのみが使用できる言語では、ブロックは変数の有効範囲を設定する目的ではなく、制御の流れを示すif
、for
、switch
などの文法とともに、これらの文法の作用範囲を決めるために使用されます。ブロックスコープがないため、関数内に宣言されるすべての変数は、ブロック内にあってもそれらのブロックを囲む関数スコープ内に変数が追加されます。
ブロックスコープがあれば、ブロック内で一時変数を使うことができますが、ブロックスコープがない場合、一時的に使用する変数を宣言しても、ブロックの終了とともに消えるのではなく、ブロックを囲む関数スコープにそのまま残ってしまうという問題があります。
特定の文脈で一時的に使用する変数が関数スコープ全体に残るため、関数内部のロジックが長くなればなるほど、一時的に使用される変数が関数スコープ領域に増える問題が発生します。このため、何が使用される変数で何が使用されない変数なのかを区別することが難しくなります。
ブロックスコープがない場合、ロジックが長くなるほど一時的に使われる変数が増えてしまいます。そのため、ブロックスコープを導入しようという意見に対して、そもそも一つの関数スコープに長いコードを書くことは適切なコーディングプラクティスではないという反論があります。
しかし、時には一つのスコープ内で冗長に書かざるを得ないロジックがあるし、ロジックを分けることが不自然に感じられる場合もあるため、ブロックスコープを導入することが望ましいという意見もあります。
基本的に、一つの関数スコープ内のロジックを冗長に書かないように努力すべきです。ロジックを関数で分割することが難しい場合は、関数スコープを使用してロジックを分けて書きます。
関数を使用することは、ロジックに名前を付けるので、そのスコープが持つ役割が何かわかりやすくして、概念的に分けることで、ブロック内のコードを読むことなくコードの流れや文脈を関数のシグネチャを通じて理解できるという利点があります。PHPの関数は外部変数をキャプチャするためにuse
キーワードを使用するので、指定した関数の動作のためにどの外部変数を使用するかが簡単に分かります。
ブロックは関数のシグネチャを使用しなくて済むので便利ですが、特別な名前がないため、ブロックの役割を使用された文法や文脈に基づいて考えなければなりません。ブロックスコープがなく関数スコープのみがある言語では、関数を使うことで名前が付けられるため、一時変数を使う場合には適切な関数の抽象化を行うことが推奨される圧力を受けます。
関数への抽象化は、関数のシグネチャを通じて関数の役割をおおまかに理解できるようにし、一時変数を使うべきブロックに名前を付けることで、単位ロジックの使用意図を明確にできるという利点があります。
時には、関数で分割することがコードを増やして冗長な印象を与えるため、関数の使用を避けたい場合があります。また、再利用する必要がないのに関数なのに、まるで再利用すべきもののような印象を与えてしまうため、関数の使用を避けたいこともあります。さらに、流れとして変数だけを隔離するパターンのコードを作成したい場合もあります。このような時には、即時実行関数を使用してコードを作成します。
$outerVariable = 10;
$result = (function () use ($outerVariable) {
$innerVariable = 20;
return $innerVariable + $outerVariable;
})();
var_dump($result); // 30
無名関数を定義すると同時に(function () {})()
のように関数を変数に格納せずに実行する方法です。PHPではブロックスコープがないため、ブロックスコープの代わりに関数スコープを使用して、スコープ内でのみ一時変数で使用する方法が可能です。
即時実行関数を使用する問題点は、関数スコープに外部の変数を渡すためにuse
キーワードを使って、関数外から関数内に変数を渡さなければならないため、ボイラープレートが増える点です。
しかし、スコープを作るたびに変数をキャプチャするために多くのボイラープレートを使用しなければならないため、多くの無名関数でスコープを作る場合、深い入れ子はその分だけ多くのボイラープレートを生み出すため、スコープの入れ子を抑制します。
一般的に、スコープの入れ子が多いロジックは読みづらく、メンテナンスが難しい場合が多いため、深い入れ子を推奨しない圧力があることは良い点です。
しかし、一部のケースでは、ロジックを分割するよりも深い入れ子の方が適している場合もあります。ただし、極少数のケースのために深い入れ子というアンチパターンを推奨する必要はないです。use
キーワードで外部スコープの変数をキャプチャすることはボイラープレートを増やしますが、ボイラープレートが原因で入れ子を推奨しないため、良い文法だと言えます。
ブロックスコープがないため、一時的に使用する変数の領域を作るために即時実行関数を乱用するコードが作成される可能性がありますが、これが他の言語のコードベースでは見かけにくいコードスメルが発生するコードになることがあります。これがブロックスコープがなく関数スコープのみがある言語に適したコーディングスタイルなのか、それともコードスメルなのかについては議論の余地があります。
最近のJavaScriptは、オブジェクト指向よりも手続き型プログラミングや関数型プログラミングを活用してコードを書くことが多いです。そのため、ロジックの流れを表現する部分のコードをブロックでスコープを区別し、一時変数を生成するコーディングが多いです。
イベントやAPI通信中心の多くの非同期ロジックを扱うJavaScriptは、関数中心のコーディングスタイルが適している一方で、PHPはほとんどが同期コードで、前後関係が明確なコードを書くことが推奨されているため、オブジェクト中心のコードスタイルを採用します。
PHPはオブジェクト指向の技法を推奨する言語であり、ロジックの大きな流れの中で一部分を担当するコードはメソッドに分けてコードを書くスタイルが推奨されているため、オブジェクト指向をうまく活用すれば関数スコープの乱用を抑制でき、無名関数の乱用を減らすことができます。
関数のネストで外部スコープの変数をキャプチャできますが、メソッドに分割すると、変数を共有するためにメンバ変数を使用してメソッド間で変数を共有することになります。
しかし、時にはメンバ変数が増えすぎてメンテナンスが難しいクラスになってしまうことがあります。そのような場合は、1つのクラスを冗長に記述するのではなく、複数のクラスに分割し、組み合わせるというオブジェクト指向の考え方で解決できます。
過度なオブジェクト指向は設計に時間がかかり、コードの量も増えてしまうため、適切にメソッドや関数、即時実行関数を活用し、状況に応じたコスパの良いコードを書くようにしましょう。
use
キーワードを使用して関数が外部の変数をキャプチャする際、変数に格納されている値の種類によって挙動が異なります。オブジェクトのような参照型の値は参照として渡され、参照でない値はコピーされます。
$outerVariable = 10;
(function () use ($outerVariable) {
$innerVariable = 20;
$outerVariable = $innerVariable + $outerVariable;
var_dump($outerVariable); // 30
})();
var_dump($outerVariable); // 10
$outerVariable
が宣言された際の値は、参照ではない値です。参照ではない値をuse
でキャプチャすると、基本的にコピーされて関数内に渡されます。そのため、関数内の$outerVariable
はコピーされた値であり、値が変更されたとしても関数の外側にある変数とは異なる値となるため、関数内での変更は関数外の変数には反映されません。
$outerVariable = 10;
(function () use (&$outerVariable) {
$innerVariable = 20;
$outerVariable = $innerVariable + $outerVariable;
var_dump($outerVariable); // 30
})();
var_dump($outerVariable); // 30
$outerVariable
が宣言される際の値は参照ではない値です。参照ではない値をuse
でキャプチャする際に&
を付けて参照として指定すると、関数内の$outerVariable
は宣言された値と同じ対象を指すことになります。そのため、関数内で値が変更されると、関数外の値も変更されます。
時には、コードの展開過程で短い単位のコード内でのみ使用され、もう使われない一時変数を作成することがあります。この場合、unset
を活用して関数スコープの変数が汚染されないようにコードを作成することが推奨されることがあります。
関数スコープのコードが短い場合は、unset
を使用しなくても問題ありませんが、1つのスコープでコードが長くなる場合は、unset
で使用が終わった変数を削除し、変数空間が汚染されないようにする戦略を取ることができます。
ただし、ブロックがないため、宣言された変数がいつunset
されるのかを確認する必要があります。そのため、一目でわかる程度の数行の短いコードにおいてのみ、宣言されたコードと一緒に値の割り当てを解除することを分かる方式で使うのが良いです。「非常に長いロジック + 数行程度の短い一時変数を使用したコード」の場合にのみ、unset
による変数の割り当て解除が適切なコーディングスタイルです。このケース以外の場合、一時変数の宣言後、一時変数を使用するコードが長くなる場合は、unset
より、関数スコープを使用しましょう。
unset
を乱用することは、CPUのリソース消費を増加させるため、良いコーディングスタイルとは言えません。しかし、unset
で変数がもう定義されなくなる場合、コードを追加する立場から、その変数を使用しようとしても、もう定義されていないため、使用できない一時変数であることが確実にわかります。
変数シャドウイングとは、スコープ外の変数をスコープ内で特別なキャプチャ構文なしで使用できるように、スコープ外の変数と同じ名前の変数をスコープ内で宣言し、その名前の変数にアクセスする際に下位スコープで宣言された変数のみにアクセスでき、上位スコープの変数にはアクセスできないようにすることです。
スコープの入れ子が深くなると、特定の変数が上位スコープのどこからきたのか、下位スコープのどこでシャドウイングされたのかを把握しにくい問題があります。変数名が同じであるため、どこで宣言された変数なのかを知っていないと、変数を使用する際に誤った使用を防ぐことができません。JavaScriptにおいて変数宣言キーワードconst
が存在するのは、変数シャドウイングを防ぐためです。
PHPでは、関数スコープはuse
キーワードを使って関数スコープ外の変数を関数内部に持ち込む必要があり、use
文でどの名前の変数をキャプチャするのかが分かるため、関数内部で宣言した変数をuse
キーワードで持ってきたものと同じように宣言する可能性は低いです。JavaScriptが意図しない変数シャドウイングを防ぐためにconst
を導入したのに対して、PHPのスコープは意図しないシャドウイングが発生しないため、const
のような宣言キーワードは必須ではありません。
PHPでは、アロー関数fn($param) => $param + $captured
はuse
キーワードなしで外部の変数をキャプチャできますが、アロー関数は=>
の後にすぐに返り値が位置する必要があるため、アロー内で新たに宣言される変数はアロー関数のパラメータとなります。変数の宣言と同時に使用されることがすぐに分かるため、上位スコープの変数を上書きしてもすぐに使用される一時変数であるため、変数シャドーイングが起こってもですロジックに大きな影響を与えることはありません。
PHPバックエンド開発をしている場合、JavaScriptを一緒に使うことが多いです。しかし、JavaScriptではうまくいくことが、PHPではうまくいかない、またはその逆のような、PHPとJavaScriptの間で異なる特徴に混乱することがあるかもしれません。
特に、JavaScriptには変数の宣言キーワードvar
, const
, let
がありますが、PHPにはなぜこれらがないのか疑問に思う人もいるでしょう。ブロックスコープや関数スコープの概念と、それに関連した良いコーディングスタイルの理解を深めることで、(ローカル変数に対して)変数宣言キーワードがないPHPコードを特別な不便を感じることなくうまく書ける理由が理解できるでしょう。
var
: PHPで変数に値を代入することは、var
キーワードを使用するのと同じです。let
: PHPにはブロックスコープがないため、let
の代わりにvar
を使用すれば問題ありません。const
: 意図しない変数のシャドーイングが発生することはなく、関数のコードを短く書けば自分でも気づかないうちに変数を再定義してしまうこともないため、無理にconst
キーワードを導入する必要はありません。また、PHPのアロー関数がJavaScriptのアロー関数と異なり、() => {}
のようなブロックを使用できない理由も、この内容を理解すれば納得できます。アロー関数にブロックを追加する場合、単なるfunction
関数の省略形ではなく、少し異なる機能にするためには、従来のアロー関数と同様にuse
キーワードなしでスコープ外の変数を自動的にキャプチャする仕様にするのが良いです。しかし、自動キャプチャを導入すると、変数のシャドウイングを防ぐためにJavaScriptのconst
の役割のキーワードをPHPに導入する必要があり、言語仕様が複雑になってしまいます。
Views: 0
BANDAI SPIRITSは、キャラクターくじ「一番くじ 鬮奈落録カイジ 引かなくてどうするっ・・・!引く為に生きなくてどうするっ・・・!」を7月24日より順次発売する。価格は1回777円。
本商品はギャンブルマンガ「カイジ」シリーズをモチーフとしたキャラクターくじ。アイテムには作品内のギャンブルや「ざわ……ざわ……」など印象的なフレーズをモチーフとしたグッズがラインナップ予定となっている。
7月13日21時に全ラインナップを公開予定。
◤ざわ・・
#一番くじカイジ発売決定!!
ざわ・・◢ギャンブル漫画の金字塔「カイジ」が遂に一番くじに登場!
価格:777円(税10%込)
発売日:2025/7/24(木) より順次発売予定
取扱店:一番くじONLINE、一番くじ公式ショップきたる7月13日21時00分…pic.twitter.com/cyFQIRDb9E
— 一番くじ(BANDAI SPIRITS) (@ichibanKUJI)April 4, 2025
・A賞 奈落っ!破滅っ!谷底っ!ボードゲーム
・B賞 ざわ・・・ざわ・・・バスタオル
・C賞 Congratulation! 黒服フィギュア
・D賞 ワン・ポーカー専用・・・!トランプ
・E賞 圧倒的っ・・・!アクリルチャーム
・F賞 僥倖っ・・・!チップ
・G賞 悪魔的っ・・・!ステーショナリー
・ラストワン賞 チェック!セット!オープン!限定ジャンケンコンプリートセット
・ダブルチャンスキャンペーン チェック!セット!オープン!限定ジャンケンコンプリートセット
(C)福本伸行/講談社
Views: 0
Views: 0
Views: 0
イギリスに拠点を置くKaizen Game Worksは、4月10日にPC(Steam,Epic Gamesストア)/PS5/Xbox Series X|S/ニンテンドースイッチ向けに『プロミス・マスコットエージェンシー』をリリース予定です。
物語の舞台となるのは日本の「過疎町」。大昔からマスコットと人間が共に暮らしているという奇妙な世界で、120億の取引に失敗し追い出された元ヤクザの「菅原道真(通称ミチ)」と、切断された小指のマスコット「ピンキー☆」が、マスコット事務所を成功へと導くために軽トラで町中を走り回ります。
本稿では発売が迫る『プロミス・マスコットエージェンシー』のレビューをお届け。なお本稿は、IOI GAMERからキーの提供を受け、Steam版をプレイして執筆しています。
本作のストーリーは、前述の通りミチとピンキー☆の二人組が地元の人々と交流しながらマスコット事務所を営むというもの。信義に厚いヤクザといういかにもな性格のミチと、ミチすら圧倒する破天荒さを見せるピンキー☆の凸凹コンビの掛け合いは癖になる味わいです。
また、過疎町に暮らす人々や、マスコット事務所に入社することになるマスコットたちも、尖った発言を繰り出す一癖も二癖もある人物ばかり。短いながらもマスコットごとに個別エピソードが用意されているため、ゲームをクリアする頃にはお気に入りマスコットができていることでしょう。
過疎町での暮らしはシュールな笑いに満ちたものである一方で、メインストーリーではヤクザたちのどす黒い勢力争いが展開。ミチが追放されるきっかけになった120億の取引には過疎町の過去が関係していて…?と謎を少しずつ解き明かしていくスリリングな仁侠物語を楽しめます。
また、本作のストーリーの魅力を高めているのが、豪華な声優陣(パートボイス)と完璧な日本語テキスト。例えば、ミチは『龍が如く』桐生一馬役などで知られる黒田崇矢氏が演じているほか、20体近く存在するマスコットたちもほとんどがイメージにあった声と演技で物語に没頭できました。
本作はとにかく「日本っぽい」描写にこだわりをもって開発された様子。その結果、とても海外産とは思えないほどに日本っぽい田舎町を描き切ることに成功しています。
また、海外産の日本舞台ゲームとしてあるあるなのがアニメや漫画、ゲームのパロディネタです。本作もその例にもれず複数のパロディネタが登場。使いどころを見極めながらゲーム内にうまく溶け込ませることに成功しているように見えました。
プレイ中に気づくことができた範囲でも、「海外プレイヤーには伝わらないだろ!」と感じる細かすぎるネタが多数。一通りプレイしただけでは見落としてしまっているネタも少なくなさそうです。是非とも実際にプレイして目にしてもらいたいのでここではいくつかのネタに絞って紹介。ゲーム全体の雰囲気を感じ取る手がかりになれば幸いです。
居抜き店舗感あふれる形状をしたリサイクルショップ。元は何の店だったのでしょうか。
実際に京都のマスコットの仕事が作法に厳しいのか…は何とも言えませんが、海外産のゲームでしっかりとした土地柄ネタが放り込まれているというだけでかなりのリサーチを感じられます。
マスコット派遣の仕事をくれる過疎町店舗の看板たち。少しレトロな雰囲気で田舎町のお土産屋などで実際にありそうなデザインをしています。中にはパロディ元に怒られないのか心配になるものもありましたが……。
さて、ここからはようやく実際のゲーム内容はどうなっているのかという話に入ります。本作は主に「マスコット派遣会社を成長させるマネージメント」と「過疎町を軽トラで走り回るオープンワールド探索」の2つの要素で構成されています。
まずはマネージメント要素について見ていきます。マスコット派遣会社を経営している以上、最大の仕事はマスコットをスカウトしてイベントなどの仕事に派遣すること。仕事は会社の有名度を上げたり町を探索して住民に営業をかけたりすると増えていきます。
仕事に派遣したマスコットはスタミナを消費し、一定時間他の仕事に派遣できなくなります。マスコットの性格によって向き不向きがある、アイテムを持たせられるなど単に派遣するだけではない工夫は存在しますが、それほど気にしなくても問題ない緩めのマネージメントゲームといった感触でした。
マスコットは仕事中に様々なトラブルに遭遇することも。その際はミチが直々にトラブルの解決に動きます。このパートはカードゲームのような形で表現されていて、町中で拾ったり住民から貰ったりしたヒーローカードを使用します。
内容は、コスト分だけカードを使用してトラブルの体力を削り切れば解決、手持ちコストが無くなってしまうと失敗というシンプルなもの。カードの特殊効果も手持ちコストが回復するといった程度なので様々なカードを組み合わせて複雑なコンボを繰り出す…という展開にはなりません。あくまでミニゲームといった立ち位置です。
トラブルを無事解決すると報酬や評判の低下を防ぐことが可能。仕事から帰ってきたマスコットはスタミナが残っていれば他の仕事に送り出すことができます。スカウト時の契約によっては休暇を取ったり、ボーナスを要求してきたりとマネージメントゲームらしい展開が待っています。
マネージメント要素は易しめでしたが、本作の肝はどちらかといえば探索部分。山あり川あり団地ありな過疎町を軽トラで駆け回ることができます。ゲーム開始時点でマップを開くと目に飛び込んでくるのは大量の白点。サブクエスト用の収集物やヒーローカード、スタンプラリーなど何かしらのアイテムが配置されています。
これだけでオープンワールドでアイコンをつぶしていくのが好きなタイプのゲーマー垂涎ですが、ゲームを進めているとさらに収集物が追加されることも。ただ収集要素として集めるだけではなく、住人たちとの交流を楽しめるサブクエストが進む、収入や人気度にバフがかかる、BGMが増えるなど実益も兼ねています。
また、作り込まれた日本の田舎っぽい風景を見物する観光ゲームとしての側面も。マップ自体は価格帯相応(予約受付中のスイッチ版の定価は2,800円)の広さではあるものの、田んぼに温泉、住宅街、危険な山道など多彩なエリアで構成されており、ジャンプやブーストを使える改造軽トラで軽快に走り回ることができます。
ゲーム途中からはファストトラベルや軽トラのカスタマイズも可能に。設計図を発見することで障害物破壊用のランチャーや滑空用グライダーなど、もはや軽トラの原型が無くなってしまうような改造も施せます。
なお、カスタマイズ自体は探索を快適にしてくれるものばかりで不満はないのですが、マップ上に設計図の位置が表示されないので一度訪れた場所で見逃すとしらみつぶしに捜索するしかなく苦労したのが気になりました。
探索に熱中しているとマネージメント要素が面倒に感じてしまう場面がありました。派遣自体は簡単な操作で行えるので問題はないのですが、トラブル発生時のカードゲームがやや単調なのがその原因です。探索して強力なカードを手に入れていると頭を使わずにクリアできる持ち物検査的な内容なので、スキップできない演出が冗長に感じてしまいました。
トラブルの内容自体はマスコットが実際に苦しんでいそうなものから現実離れしたものまであり楽しめるのですが、何度も繰り返していると見慣れた展開ばかりに。とはいえそれは終盤にかけての話で、少なくとも序盤から中盤は十分に楽しめる内容であったことを付け加えておきます。
気ままに探索を行いつつ通知が来たらマネージメント業務をこなす…という繰り返しに、緩衝材をつぶしているような何とも言えない中毒性があり、気が付いたら時間が過ぎていたということもしばしばありました。
前述のようにマネージメント部分のミニゲームには単調さを感じる場面があったものの、探索要素の箸休めとして捉えるとそれほど悪くはありません。探索やストーリーを楽しむのがメインであり、マネージメント部分は単純な操作で数字が増えていくのを楽しむクリッカーや放置ゲーム的なサブ要素だということを理解していれば、プレイ前の期待にも十二分に応えてくれるでしょう。
魅力的なキャラクターたちによる笑いあり、サスペンスあり、終盤の盛り上がりもばっちりなストーリーも好印象。開発チームのこだわりに簡単に気付くことができるというアドバンテージを持つ日本在住のゲーマーには特におすすめできる作品です。
Views: 0