赤宿 = Red Inn

素人の試行錯誤と2Dゲームプログラミング

Key Bindings for Axis Input : yuhjklbn | QWE AD ZXC

 Macさんラップトップを買った勢いが残っている。Coolなことをするためにコンピュータがある、そう思うとHot!!

オモイ……ダシテ……
アノ、ヒノ……オモ……イ……ヲ……

ToME4

 Macさんでは安定して動いてくれる。このゲームは、少しずつプレイしてクリアしたい。

Key Bindings for Axis Input

 ラップトップ型のMacにはテンキー(numpad)が無いため、代理が必要。何種類か検討したが、斜め移動キーを用意するより、numpadの替わりを用意する方針に決めた。

yuhjklbn

 Viなどと同様の、伝統的ローグライクのキーバインディング
 hjklは上下左右、yubnが斜め方向に対応する。h, lが左右, jは下(↓に似て見える)、残ったkは上を指す。

QWE AD ZXC

 変則的かもしれないが、自作品ではこちらを推奨したい。

Else
  • Inventory, Equipment
  • Run, Dir, RestForXTurns, RestForATurn

 適当に配列しよう

Data > Code ?

 コードよりも、データの設計や、ゲームの完成形の想定の方が重要に思えてきた。

 ゲームは、結局データを流し込む形で作ることになる。コードさんの役目は、データで書いたことを実現するに過ぎないのだろう……。(特に、非リアルタイムのゲームでは)

Data-Driven Type Objects

 データ駆動にしたい部分は、TypeObjectに対応する。ここでもBobの手法に習う。

 Amaranth(C#)やHauberk(Dart)では、Type Objectをデータ駆動にしてコンテンツを流し込んでいる。

Data Formats

 .txt, csv, yaml, json, tomlなどのフォーマットがある。CSVは表なので、値を比べながらデータを調整するのに向いている。他の形式でコンテンツを定義するなら、"基底"となる定義を”継承”させるのもアリ(Bobのように!)。

 Amaranthでは、独自のファイル形式が用意されている。

Parsing (in Amaranth)

 方法は次回。パッと見では、インデントでパース -> regexでパース -> データに応じてパーサを割り当て。データは、ハッシュマップで持たれているのをTypeObjectに変換する。

 アイテムの効果は、C#のコードとして動的にコンパイルして用いられる。(そんなのアリ!?)

Multi Langs

 会話文などはファイルを丸ごと差し替えればいいと思う。
 アイテム使用時のログなど、Typeの定義に埋め込む場合は困る。翻訳担当者がテキストだけを読めるのが理想だが、どうするのが良いだろう……?

Dynamic Texts

 言語によって必要な文脈の情報が異なる。例えば、英語なら時制や名詞の人称が必要になる。
 英語くらいは対応したい。