Diary?

2009-07-17
Fri

(11:16)

Python ではモジュールを動的に作るどころか、モジュールクラスを継承して独自のモジュールクラスを作ることができる。例えばこうすると、そのモジュールに存在しないアイテムへのアクセスに対して単に 0 を返すだけのλ式を返すというわけのわからんモジュールができる。

import types
class NewMod(types.ModuleType):
    def __getattr__(self, name):
        if not (name.startswith('__') and name.endswith('__')) and name not in self.__dict__:
            return lambda : 0
        else:
            return types.ModuleType.__getattribute__(self, name)

また、こうして作られたモジュールは sys.modules に追加することで、普通のモジュール同様に import できるようになる。

# newmod.py NewMod は上にある通りの定義
import sys
m = NewMod('foobar')
funcs = {
    'foo': lambda: 'foo',
    'bar': lambda: 'bar',
}
m.__dict__.update(funcs)
sys.modules[m.__name__] = m
del m
 
# 以下は別のファイル
import newmod
import foobar
print foobar.foo() # 'foo' が出力される
print foobar.bar() # 'bar' が出力される
print foobar.buz() # 0 が出力される

「一体何が嬉しいんだ」「十中八九混乱を招くだけだろ」というのは、ぶっちゃけ割とその通りだ。ただまあ、フレームワークとか作ってると柔軟性を出すためだとかで独自のモジュールクラスとかモジュールの動的生成をしたくなることがたまにある。流石に俺もこういったメタプログラミングの類をアプリケーションレベルで濫用するのは気違い沙汰だと思うので、ライブラリやフレームワークの中で本当に必要な部分で使うにとどめた方がいいとは思う。

(12:12)

今日の昼ご飯は焼きそば。もう完全に手抜きに思えるが、これは余った野菜を手軽に消費するための手段なので断じて手抜きではないといっても説得力ゼロで、というか実際に手抜きだ。

(20:27)

ダン←ダム」をクリアしたので感想とか攻略法とかをいろいろ書く。例によってネタバレ全開。割と面白いと思える部分が多かった反面、「これはどうよ」な部分もてんこ盛りだった。

まずこのゲームは RPG と銘打ってるけどぶっちゃけシミュレーションゲームというのは前に書いた通りで、さらにプレイヤーがやることはパーティ編成と防衛部隊・探索部隊・侵攻部隊の編成、装備品の調達、そして街の施設への投資で、敵との攻防はほぼフルオート。つまりプレイヤー(主人公)は現場の人間ではなく管理職というわけだ。戦闘においては危なくなった部隊を待機させて回復を図ったり、それでもダメなら撤退させたりというのはできるが、このゲームは HP が 0 になっても一定時間放置すると復活するのでひたすら馬車馬のように働かせていればいい(防衛部隊はそうも行かないが、侵攻と探索はそれでいい)。どこのブラック企業だ

HP が低下した状態で一日を終えると「負傷」や「重体」のステータスになってしまい、そうなると日中に HP が回復しきらない、不満度が大きく溜まってしまうというペナルティがあるにはある。が、日中に回復しきらなくても薬品を持たせて配備すれば敵と戦う前に完治したりするし、不満度が溜まったところで序盤は再雇用のコストは大したこと無く、終盤は滅多に重体になって戦闘終了にならない。とどのつまりは馬車馬のように働かせてればオーケーという非人道的なプレイスタイルになる。

というわけでプレイヤーが戦闘においてやることはパーティのメンバーを雇って必要な装備品をあたえ、そして後は死ぬまで働かせるだけなのだが、このゲームにはもう一点、敵の襲撃で半壊した街の復興という目的がある。復興の資金は街の人からの寄付とダンジョンで手に入れたアイテムや資源の売却なのだが、ダンジョン探索ができるようになるまでは時間があるので、序盤は寄付のみで街を発展させることになる。街を発展させるといろいろ良い事があるので、一定資金がたまったら施設を発展させていくのがいい。

とはいってもすべての施設を平等に発展させる必要は無い。雇用可能人数と日中の回復量、不満度の上昇値を決定する「酒場」が最重要施設で、とアイテムのストック数を決定する「倉庫」あたりが次点。「鍛冶屋」は発展させると装備品を修理する費用が安くなるのでなかなか良さげだが、「研究所」はそこまで魅力を感じない。鍛冶屋も研究所も発展レベルと生成可能アイテムに関連がないようで、アイテムを精錬したり装備品を合成したりした結果の良し悪しに関わる乱数と、作業にかかる費用にしか影響が無い。「養生所」は発展させても回復アイテムのバリエーションが増えるだけで、ゲームクリアまで一番安い回復薬で十分なのが存在感の薄さに拍車をかけている。え、タイトルにもある「ダム」はどうしたって? あんなもん、飾りだ。

このゲームのダムは放水ルート上の敵パーティを(水量にもよるが)洗い流し、敵の出現拠点であるゲートを弱体化させるという能力があり、ここだけ聞くと強そうだが実は全然そんなことは無い。先にも書いた通りプレイヤーが戦闘に介入できる余地が皆無に近いので、戦闘の結果はすべて事前のセッティングにかかっている。そのため、交戦中にキツいことがわかっても後の祭りで、放水しようと思ったらダンジョン内で交戦中の味方も巻き添えにすることになる。このゲーム、 HP が 0 になっても死なない代わりにダムの放水に巻き込まれるとロストの可能性があるので、ますます持って使いにくい。重装備をさせれば放水に耐えられる度合いが上がるが、もっともバランス的に厳しいダンジョンである「炎の迷宮」が、よりによって重装備してると HP が減りつづけるというギミック持ちだ。

というわけで事前のセッティング重要という話になり、ここで自分ならではのパーティを組みたい所なのだが、雇用可能な職業の強さには明確なバラツキがあるので実際のところそれほど戦略の幅は広くない。前述の通り HP が 0 でも死なないゲームなので、回復担当はそこまで必要ではない。むしろ全員火力担当にしたほうが、戦闘での被害が少なくて済む。全体回復ができるシェフはまだ有用だが、ヒーラーに関してはちと微妙だ。攻撃担当にしても、ストライカーは火力が低いので槍術士に転職せざるをえないが、だったら安く雇えて攻撃力のあるウォリアーでいい。アーチャーはそこそこ強く、同じ後衛職のウィザードとどっちを運用するかで迷うが、最終的に弱点属性(ぶっちゃけ水属性だけでいいんだが)で大ダメージを、それもより安い武器で与えられるウィザードの方が有用な場面が多い気がする。

火力担当以外に目を向けると、罠解除のできるシーフは侵攻・探索に必須の存在で、武器さえきちんとしてれば一応の火力にもなる。ポーターは持ち帰ることのできるアイテムが増えるので、ぶっちゃけこいつを転職させる必要性はあまり無い。職人は施設の修理もできれば戦闘にも運用でき、ダンジョン探索では採掘も行える。転職可能な上位職が3つあるが、修理と採掘の両方で運用できるのは職人だけなので、これまた転職させなくても問題ない。

装備品は序盤は別に気にしなくてよく、炎の迷宮あたりで侵攻部隊の武器を整え、あとはラストダンジョンで一気に整えるぐらいでもいい。というか最大で40人にもなるパーティメンバーに対して、

  1. 研究所で原材料からアイテムを精錬
  2. 場合によっては同じく研究所でアイテムを合成して装備品の素材にする
  3. 鍛冶屋で装備品を作る

というステップを武器と最大4ヶ所に装備可能な防具に対して繰り返すのはいくらなんでも面倒過ぎる。こういうリソース稼ぎとキャラクター育成が好きな人にはいいのだろうが、俺はそこまで育成マニアじゃないからな。

そういやいくつかの職業は特定イベントを見ないと雇えなかったり転職できなかったりするので、俺は以下の職業を一切使っていない。

  • サムライ
  • ブースター
  • ガンナー
  • ガードナイト
  • エンチャンター
  • ボムマジシャン
  • 大砲使い

あと学者は最初からいる奴以外雇えなかったから、これもイベント絡みだろう。正直な話、このゲームで一番ダメな部分だと思う。

まあそんなこんなで頭数と装備を揃えた後は「テクノロジー×頭数=軍事力」の図式に従って戦闘開始なのだが、どうも戦闘アルゴリズムが若干タコのようで、攻撃を一体に集中して敵の頭数をまず減らす、敵の回復役を真っ先に倒して補給を断つといった事を一切してくれず、ちょっとのダメージにも神経質に回復薬を使い、そしてそこにプレイヤーが介入することもできないので、戦闘を見ているとむしろストレスになる。しつこいようだが死ぬまで戦わせても問題ないゲームシステムなので、戦闘開始したら放置しておけばいい。そんな事やってたら洗い物してるうちにラスボスを倒してしまい、ラストバトルをやり直したのは秘密だ。

あとこのゲームは

  1. イベント選択
  2. 日中に施設への投資や装備品の調達、パーティ編成
  3. 日が落ちたら戦闘

というサイクルで進み、毎日のように小芝居を見せつけられるんだが、これは非常にテンポが悪い。「ロックス・クエスト」のようにある程度のボリュームの戦闘をさせたあとにストーリーを進めるという手法の方が良かった気がする。ストーリーは結構シリアスというか途中がやや鬱展開なので、半端な尺でイベントを細切れにするのが一層悪く思える。

というわけで決してクソゲーではないものの、粗が目立つ上にかなり人を選びそうな気がする。例えば RPG とかでアイテムコンプリートの類を楽しくやれる人なら、ルーチンワークになりがちなアイテム稼ぎのための戦闘を完全放置できるので、割と快適に遊べそうな気がする。逆に俺のように細かく戦闘に介入してバトルを楽しみたいという手合いには、そこそこ程度の凡作に思えるな。資金繰りに頭を悩ませたり、パーティ編成を試行錯誤してるうちは楽しかったが、それがルーチンワークになるとなあ。

あとあれだ、エルアに「ツイてる」のは罠か何かか?


追記:書き忘れてたことがいくつかあった。

職業についてはクノイチへの転職も結局できるようになってなかった。どうも職人とポーターそれぞれの上位職とヘヴィナイトと槍術士以外は全滅で、これらのうち槍術士はイベントで残りは無条件に使えるようになるっぽい。

ストーリーについては例え敵の拠点やボスを倒しても、規定のイベントを見ていないと先に進めないのはかなりどうかと思った。多分、その間に探索で装備品を整えろということなのだろうが、装備を整えないといけないのは終盤になってからで、その頃には消化しないといけないイベントが少なくなってる。

Creative Commons
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。