赤宿 = Red Inn

素人の試行錯誤と2Dローグライク制作 (GUI)

Key Bindings for Axis Input : yuhjklbn | QWE AD ZXC

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

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

ToME4

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

 追記: リタイア。小説の方が楽しいとか思い始めて……。

Key Bindings for Axis Input

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

 追記: 以下の設定はQWERTYキーボード用。キーボードの種類は様々なので、結局ユーザに設定してもらうのが良いかも。

yuhjklbn

 Viなどと同様の、伝統的なローグライクのキーバインディングホームポジションを使わない身からすると、斜めキーの入力が至難だと思う。

 hjklは上下左右、yubnが斜め方向に対応する。両端のh, lが左右、jは下(↓に似て見える)、残ったkは上を指す。 というのは、DarkGod(ToME4の開発者)の受け売り。

QWE AD ZXC

 アルファベットキーで、テンキー風に移動を行う。変則的かもしれないが、自作品ではこちらを推奨したい。

 追記: できれば、他の全操作も左手だけで行えると良い。Ctrlをコマンドのランチャにするかも。

Other than axis input
  • Controls: Run, Directional
  • Menus: Inventory, Equipment, Help
  • Commands / Shortcuts: RestForXTurns, RestForATurn

 適当に配列するか、ランチャを用意する。

Data > Code ?

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

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

Data-Driven Type Objects

 データ駆動にしたい部分は、TypeObjectに対応する。ここでもBobの手法に習う。(Amaranth(C#)やHauberk(Dart)では、Type Objectをデータ駆動にしてコンテンツを流し込んでいる)。

Data Formats

 csv, yaml, json, tomlなどのフォーマットがある。

 yamlは、書きやすいがデータ処理に弱い。逆にjsonは強い。CSVは表なので、データを見比べながら調整するのに向いている。

 "基底"となる定義を”継承”させる書式もアリ(Bobのように!)。Amaranth(Bobのゲーム)では、独自のパーサとファイル形式が用意されている。

Parsing (in Amaranth)

 具体的な方法は次回。パッと見では、インデントでパース -> regexを用いてパース -> データに応じてパーサを割り当て の順。データはハッシュマップで持っておき、後にTypeObjectに変換する。

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

Multi Langs

 多言語に対応するには?

 会話文などはファイルを丸ごと差し替えればいいと思う。

 アイテム使用時のログなど、XxxTypeの定義ファイルに埋め込んで書きたい場合は困る。翻訳担当者がテキストだけを読めるのが理想だが、どうするのが良いだろう……?

Dynamic Texts

 ログなどでは。動的な文章の生成が必要になる。言語によって、必要な文脈的情報が異なる。例えば、英語なら時制や名詞の人称が必要になる。他の言語の場合は知らない。

 英語くらいは対応したい。Bobをパクれば……真似れば抜かり無し……