本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。
ターミナルタイピングRPG「クムドールの試練」 v0.10.1|練習用プレステージと20ステージ本編を追加 | UNIX Cafe

C言語で作っているターミナルタイピングRPG「クムドールの試練」を、v0.10.1 に更新しました。
GitHubでは kumdor-trial という名前で公開しています。
- Repository: https://github.com/k1117n-cmyk/kumdor-trial
- Release: https://github.com/k1117n-cmyk/kumdor-trial/releases/tag/v0.10.1
- Version:
v0.10.1 - License: MIT License
前回記事にした v0.6.0 では、敵の反応、毒、暗闇、修正不可など、戦闘中のイベントを中心に調整しました。
今回は、第三者にモニターになってもらって、ヒアリングした結果を反映しましたので、そこから大きく進んでいます。
一言でいうと、v0.10.1 は「本編前の練習用にプレステージを整え、本編を20ステージへ拡張し、途中のステージから練習を再開できるようにした」更新です。
最初のメニューを整理する
起動後の新規開始メニューを、次の順番に整理しました。
【最初のメニュー】
0: ゲームの遊び方
1: プレステージで練習する
2: ゲームを始める
3: ステージを選ぶ
q: 終了メニューが増えてきたので、ゲームの進み方に合わせて目次を整えるようにしました。
最初に「ゲームの遊び方」でルールを確認、その次の「プレステージで練習する」で、本編前の練習をしてもらい、準備ができてから「ゲームを始める」で、本番ステージ開始、「ステージを選ぶ」で、毎回最初からプレイしなくても、好きなステージを選択して遊べるという流れです。
プレステージを追加する
v0.7.0 から、本編の前に「プレステージ」で練習できるようにしました。
プレステージは、HPや敵の反撃を気にせず、キーと指の対応だけを確認できるステージです。
練習メニューは、真ん中の列、上の列、下の列、数字を、左手、右手、両手に分けています。
【指とキーの対応】
指: L5 L4 L3 L2 L2 R2 R2 R3 R4 R5
数: [1] [2] [3] [4] [5] [6] [7] [8] [9] [0]
上: [q] [w] [e] [r] [t] [y] [u] [i] [o] [p]
中: [a] [s] [d] [f] [g] [h] [j] [k] [l] [;]
下: [z] [x] [c] [v] [b] [n] [m] [,] [.] [/]
親指: [space]
目印: f=左人差し指の出発点 / j=右人差し指の出発点
凡例: L5/R5小指 L4/R4薬指 L3/R3中指 L2/R2人差し指 / 親指
Enter: 全部練習 / b: 戻る / :help: ヘルプ / :bgm: BGM切替
1: 真ん中の列 左手
2: 真ん中の列 右手
3: 真ん中の列 両手
4: 上の列 左手
5: 上の列 右手
6: 上の列 両手
7: 下の列 左手
8: 下の列 右手
9: 下の列 両手
10: 数字 左手
11: 数字 右手
12: 数字 両手Enterを押すと全部練習、数字を入れると個別練習、b で最初のメニューへ戻れます。
本編ではミスすると敵の反撃を受けますが、プレステージではミスしてもHPは減りません。
同じ課題をもう一度打つだけです。
タイピングRPGとして遊ぶ前に、まず手の置き方を確認できる場所がほしいという要望があったので、このモードを入れました。
指とキーの対応図の見方
プレステージでは、キーボード全体のキーをどの指が担当するかを、ビジュアルで表示しています。

L5 / R5 は小指、L4 / R4 は薬指、L3 / R3 は中指、L2 / R2 は人差し指です。
f と j は人差し指の出発点として表示しています。
また、同じ指で押す縦列が同じ色になるようにしました。
色が出る環境では、どの列をどの指が担当するかを色分けしていますので、確認しやすくなると思います。
色を出したくない場合は、これまで通り NO_COLOR=1 で無色表示にできます。
本編を20ステージへ拡張した
本編は、途中で10ステージから14ステージへ整理し、最終的に20ステージ構成へ拡張しました。
現在は、最初にホームポジションから入り、ホーム段、上段、下段、数字へ進み、後半では記号や全キー混合へ広げていきます。
特に v0.9.0 では、ステージ15以降にShift記号、括弧、引用符、区切り記号などを含む課題を追加しました。
! @ # $ % ^ & * ( ) _ + = \ | ] [ } { " ' : ; ? /15以降のステージは、英字だけの練習とは別物になています。
数字段やShiftの位置を意識する必要があり、難易度は上がりますが、行ごとに入力するという制限から開放されるため、より実用的な練習ができます。
ステージ選択を追加する
20ステージになると、最初から毎回通して遊ぶのは飽きてきます。
そこで、新規開始時のメニューから「ステージ選択」を使えるようにしました。
【ステージ選択】
1: 第1ステージから - 最初から
2: 第2ステージから - ホーム段 左手・右手・両手
3: 第5ステージから - 上段 左手・右手・両手
4: 第8ステージから - 下段 左手・右手・両手
5: 第11ステージから - 数字 左手・右手・両手
6: 第14ステージから - 総合練習の入口
7: 第15ステージから - 全キー練習 前半
8: 第18ステージから - 全キー練習 後半ステージ選択では、選んだ地点に合わせてレベルと最大HPを補正し、HP満タンで始めます。
これはクリア用のショートカットというより、練習したい範囲を選ぶための入口です。
上段だけ確認したい、数字から始めたい、後半の記号課題を見たい、といった使い方ができます。
セーブ形式をV6にした
ステージ数が増え、ステージ別成績も増えたため、セーブ形式を KUMDOR_SAVE_V6 に更新しました。
現在のセーブデータでは、保存対象のステージ数もヘッダーに入れています。
これにより、今後ステージ数を変えた場合でも、読み取り側で扱いやすくなります。
古いセーブデータについては、KUMDOR_SAVE_V1 から KUMDOR_SAVE_V5 までのロード互換を維持しています。
セーブ形式を変えるたびに壊れやすい部分なので、今回も make check-save で確認しています。
make check-save実行結果は save checks passed でした。
BGMまわりを改善する
macOSでは、AVFoundationを使ってステージ別BGMをループ再生します。
ステージ11以降は、まず実ステージ番号のファイルを探します。
たとえば第15ステージなら、最初に BGM/kumdor_15.wav を探します。
対応するファイルがない場合は、従来の kumdor_01.wav から kumdor_10.wav を循環利用します。
プレステージでは、BGM/kumdor_*.wav からランダムに選んで再生します。
ゲーム中は入力欄で :bgm または :mute と打つと、BGMのON/OFFを切り替えられます。
音量は KUMDOR_BGM_VOLUME で指定できます。
KUMDOR_BGM_VOLUME=0.3 ./kumdor_01
KUMDOR_NO_BGM=1 ./kumdor_01ターミナルゲームなので、BGMは必須ではありません。
ただ、全く無音だと少し寂しいので、ステージごとにBGMで雰囲気を変えられるようになったのは、ゲームとしては良い方向だと思います。
v0.10.1の主な変更点
v0.6.0 以降の主な変更点は次の通りです。
- 新規開始時の最初のメニューを整理
- 本編前のプレステージ練習を追加
- プレステージで左手、右手、両手ごとの練習を選べるように変更
- 指とキーの対応図を追加し、列ごとに色分け
- 本編を20ステージ構成へ拡張
- ステージ15以降に記号を含む全キー練習を追加
- 本編の途中区切りから始められるステージ選択を追加
- 戦闘中に
:keysで対応図を表示できるように変更 - セーブ形式を
KUMDOR_SAVE_V6に更新し、旧形式ロード互換を維持 - macOS向けのステージ別BGMとプレステージ用ランダムBGMを改善
- README、CHANGELOG、GitHub Releaseを
v0.10.1に更新
確認は次のコマンドで行いました。
make
make check-saveまた、起動時のタイトル表示、最初のメニュー、プレステージ入口、ステージ選択の表示も確認しています。
v0.10.1で一区切りにします。
今回の v0.10.1 で、本編前の練習、本編20ステージ、途中開始、セーブ、BGMまわりは一旦落ち着きました。
記号を使った課題についてはUS配列とJIS配列の違いが残りますが、手元で確認できる範囲を超えるため、ここでは無理に対応範囲を広げないことにします。
まずは、C言語製のターミナルタイピングRPGとして、現在の形を一区切りとして公開します。
v0.10.2 更新追記
クムドールの試練を v0.10.2 に更新しました。
今回の更新では、ステージ4以降のタイプミス時に発生する共通ペナルティへ「時間制限」を追加しました。これまでの共通ペナルティは「暗闇」または「修正不可」の2種類でしたが、今回から「暗闇」「修正不可」「時間制限」の3種類からランダムで発生します。
時間制限状態になると、次の課題に制限時間が表示されます。入力中に強制的に止まるのではなく、Enterで入力を終えたあとに経過時間を判定し、制限時間を超えていた場合は時間切れとして敵の反撃を受けます。
また、ステージ突破後の確認画面で b を入力すると、記録を残したまま最初のメニューへ戻れるようにしました。
Enter: 進む / b: 最初のメニューへ戻る / q: ここで剣を収める(記録済み):これにより、ステージ突破後にそのまま次へ進むだけでなく、いったんメニューへ戻ってプレステージ練習やステージ選択を使いやすくなりました。
もう一度最初から読んでみる
今回のクムドールの試練の開発を最初から読み直したい方は、こちらから最初の記事に戻れます。











