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

C言語で作っているターミナルタイピングRPG「クムドールの試練」を、v0.4.0 に更新しました。
GitHubでは kumdor-trial という名前で公開しています。
- Repository: https://github.com/k1117n-cmyk/kumdor-trial
- Version:
v0.4.0 - License: MIT License
前回の v0.3.0 では、ステージ別BGMを追加しました。
今回は音ではなく、戦闘シーンでの楽しさを見直しています。
最初のバージョンでは、表示された課題を正確に入力して敵HPを減らす、という仕組みが中心でした。これはタイピング練習としては分かりやすいのですが、ゲームとして見ると、敵が変わってもやることが同じなので、少し単調になりやすい傾向がありました。
そこで v0.4.0 では、敵の本気状態、敵ごとの反撃特性、短い口上、予告行動、連続正解ボーナスを追加しました。
敵が本気を出す
各ステージの敵HPを、基本的に 10/10 にそろえました。
これまでは1ステージが5問前後で終わることがあり、そのままの状態で敵の変化を入れても、変化した直後に戦闘が終わってしまうことがわかりました。
そこで、各ステージの敵HPを10にそろえ、短すぎず長すぎない10問前後の戦闘になるよう調整しました。
敵のHPが半分以下になると、次のようなメッセージが表示されます。
【敵の殺気】湖底の影が水面を波立たせ、r t y uを続けて打たせる流れを作った。
空気が張りつめる。敵は反撃の機会を狙い、構えも鋭く変わった。内部的には、ここから出題する課題配列を切り替えています。
通常時の課題の後半をそのまま使うのではなく、本気状態用の専用課題を用意しました。たとえば第1ステージでは、通常の fj や jj だけでなく、後半では次のような課題が出ます。
jj ff
f jjj
fff j
fj jf fj「クムドールの影が二つに割れる」という文に合わせて、左右の指を切り替える課題を増やしています。
敵ごとの反撃特性
それぞれの敵に、固有の反撃特性を持たせました。
現在の特性は次の5種類です。
| 特性 | 内容 |
|---|---|
| 標準 | 特別な追加効果なし(基本ルールどおり、ミスすると通常の反撃を受ける) |
| 強打 | 敵が本気を出すと反撃ダメージが増える(後半でミスするとHPを大きく削られる) |
| 毒刃 | 反撃時や本気状態中に毒を付与する(毒になると次の正解は攻撃ではなく毒解除に使われる) |
| 暗闇 | 反撃時や本気状態中に暗闇を付与する(暗闇中は入力文字が表示されない) |
| 再生 | 反撃時に敵HPが1回復する(ミスすると敵を倒すまでの手数が増える) |
戦闘開始時には、敵特性も表示します。
*************** BATTLE START ***************
溶岩の番人が立ちはだかった!
敵特性: 強打 - 敵が本気を出すと反撃ダメージが1増える
********************************************
「熱に急かされるな。境目を越える指だけが通れる」同じ「ミスをしたら反撃を受ける」でも、敵によって受ける圧力が少し変わります。
毒と暗闇を一時的な妨害にする
最初はゲーム開始時に、毒または暗闇がランダムで発生する形にしていました。
でも、初級ステージでいきなり暗闇になると、初めて遊ぶ人には難しすぎます。また、1ステージまるごと暗闇のままだと、タイピング練習の楽しさがなくなってしまいます。
そこで、毒と暗闇は敵の攻撃や本気状態と連動する一時的な状態異常に変えました。
毒状態では、正解しても攻撃できず、毒の解除に使われます。
➔ 毒のせいで攻撃が届かない!
(毒は消えた。もう一度課題を的中させろ!)暗闇状態では、入力中の文字が画面に表示されません。
課題を入力してEnter(暗闇: 入力は表示されません / :helpでヘルプ):ただし、この状態異常は、どちらも正解すれば解除されるようになっています。
また、ステージ3以降では、タイプミス時の共通ペナルティとして一時的に暗闇状態になります。
ミスした次の問題は、打ち込んだ文字を見れない状態になるので、緊張感を保つことができます。
3連続正解で追加ダメージ
正確に打ち続けることにも、小さな報酬を入れました。
3連続で正解すると、追加の一撃が入ります。
➔ 見事なタイピング! 剣が炸裂した! (敵の残りHP: 7)
(3連続正解! 剣筋が冴え、追加の一撃が入った!) (敵の残りHP: 6)大きな連続正解ボーナスではありませんが、正確に打ち続けると少し早く敵を倒せる、という分かりやすいボーナスにしています。
タイピング練習としては、速さよりもまず正確さを優先したいので、連続正解にだけ報酬を置きました。
予告行動を入れる
敵が本気を出した後は、反撃の予兆が表示されるターンがあります。
【予感】溶岩の番人が大きく踏み込んだ。ミスすれば重い反撃が来る。
敵の構え: [ gnb hmv ]このターンでミスすると、敵特性に沿った反撃が発動します。
強打タイプなら重い反撃、毒刃タイプなら毒、暗闇タイプなら暗闇、再生タイプなら敵HP回復です。
単にランダムに敵が現れるより、「予告」を表示したうえで入力してもらう方が、ゲームとして緊張感が出ると思ったからです。
ターミナル上の短いログだけでも、こういう予告があると、画面を見るきっかけが維持できるかと思います。
コードも少し分けた
今回の更新では、ゲーム性の追加だけでなく、ファイル分割も進めました。
現在は大まかに次のように分けています。
| ファイル | 役割 |
|---|---|
kumdor_01.c | run_game() を呼び出すエントリポイント |
src/game.c | ゲーム進行、ステージ進行、スコア表示 |
src/stages.c | ステージ、敵、出題課題、物語文の定義 |
src/battle.c | 戦闘表示、入力判定、反撃、状態異常 |
src/save.c | セーブ、ロード、セーブデータ検証 |
src/audio.c | BGM制御 |
src/bgm_player.m | macOS用BGMループ再生 |
最初は1つのCファイルにまとまっていましたが、BGM、セーブ、戦闘を分けたことで、今後の調整が少しやりやすくなりました。
v0.4.0にした理由について
今回の変更は、見た目の修正ではなく、遊んだときの感覚がかなり変わる更新です。
- 敵HPを10基準に調整
- 敵の本気状態を追加
- 本気状態用の専用課題を追加
- 敵ごとの反撃特性を追加
- 毒と暗闇を一時効果に変更
- ステージ3以降のミス時暗闇を追加
- 敵ごとの短い口上を追加
- 3連続正解ボーナスを追加
- 敵の予告行動を追加
- BGM、セーブ、戦闘処理を分割
そのため、バージョンは v0.3.1 ではなく v0.4.0 にしました。
今回の更新内容
主な変更点は次の通りです。
- バージョンを
v0.4.0に更新 - 各ステージの敵HPを基本10に調整
- 敵HP半分以下で 【敵の殺気】 を表示
- 本気状態用の専用課題を追加
- 敵ごとの反撃特性を追加
- 戦闘開始時に敵の短い口上を表示
- 本気状態中に敵の予告行動を表示
- 3連続正解ごとの追加ダメージを追加
- 毒と暗闇を一時的な状態異常に変更
- ステージ3以降はミス時に暗闇状態になるよう調整
:help、:bgm、:muteなどのゲーム中コマンドを追加KUMDOR_BGM_VOLUMEでBGM音量調整に対応KUMDOR_SAVE_V2でステージ別成績を保存- BGM、セーブ、戦闘処理を別ファイルに分割
少し遊んでみたいゲームになってきた
今回の更新で、「ただ表示された文字を打つ」だけのゲームではなく、楽しみながら遊べるゲームになってきました。
- 敵の口上を読み、敵が本気を出したら構えが変わり、予告が出たら次の1問に集中する。
- ミスをすると反撃を受け、ステージ3以降では暗闇で次の入力が見えなくなる。
- その一方で、正確に打ち続けると3連続正解ボーナスが入り、少し早く敵を倒せる。
ターミナル上のシンプルなゲームですが、こうした小さなイベントを重ねると、思ったよりRPGらしい手応えになりまました。
次は、増えた戦闘ログを読みやすく整理しながら、敵HPや攻撃力、予告行動の出方を、遊びながら調整していく予定です。
v0.5.0では休憩イベントと成績表示を追加しました
v0.4.0で戦闘シーンでの楽しさを見直したあと、v0.5.0ではステージ間の休憩イベント、突破評価、ミス時フィードバック、セーブ互換チェックを追加しています










