
2026/11/02 23:56
C64 バイアスダンジョンクロラー:階段、レベル、レベルアップ(第 11 回)
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
このプロジェクトは、キャラクターの成長がない単一マップのダンジョンから、持続的なキャラクター成長を備えた構造化された 5 レベルシステムへと進化しました。元のバージョンではフロアごとにステータスがリセットされましたが、更新されたコードはヒットポイント、ゴールド、鍵、マジックを保持しており、プレイヤーが深層に進むにつれて強化することができます。現在、レベルアップにはそのレベルでの全ての聖杯(チャalice)の収集が必要であり、これは古典的な RPG のメカニクスに反映されています。聖杯の数は
(Level+1)/2 で増加し、1〜2 レベルで 1 つから始まり、5 レベルで 3 つに達します。コードの構成は改善され、ルーチンを INITPLAYER(ゲーム全体で一度のみ実行)と BUILDLEVEL(各レベルで一度のみ実行)に分けることにより、マップ生成間でのプレイヤーの持続性を確保しました。レベルアップでは、知能(コンステイション)の半分をヒットポイントとして報酬とし(切り捨て)、偶数レベルでは +1 の筋力、奇数レベルでは +1 の敏捷性を交互に付与します。ポーション(* potion)は現在 50 のマジックを回復し、最大 100 に制限されており、C バージョンの拾い上げメカニクスと整合しています。また、ステータス行も拡張され、31 文字の制約内で現在のレベルとマジックを表示するようになっています。将来の計画には、敵の数増加による難易度の上昇、遠距離魔法攻撃の実装、より多くの拾い上げアイテムの追加、そして二方向階段、レベル間の鍵の移動、手動でのステータス選択、総レベル数に関する未解決問題の解決が含まれます。現時点ではオンラインブラウザベースの IDE で編集されていますが、これらの改善は、有意義なキャラクター成長と複雑なダンジョンにおけるプレイヤーの旅路に対する明確なフィードバックを通じて、より深い没入感を提供します。本文
C64 BASIC ダンジョン RPG: 進捗システムと多段クリアの追加
ゲームにおける**「進実感(やりがい)」**は楽しさにとって極めて重要です。単なるミニゲームとは異なり、没入感を得るためには以下の機能追加が不可欠です。
現在の状況と基本設計
現在の実装では以下の機能を備えています:
- レベルアップ機能
- キャラクター成長(ステータス強化)
- 単一マップへの制限(現在は脱出のみ)
注意点: 画面数が少ないゲームも面白いですが、通常はセッションが進むにつれて難易度が上昇します。そのため、以下の要素の実装が必須です:
- 進捗システム
- 段階的な難易度上昇(Difficulty Ramping)
- ステータス値の強化
🏆 レベル定義と勝敗条件
現在は 5 つのステージ(レベル) に移行しました。各ステージはパート 10 のマップ生成器を使用しますが、以下の変更点が追加されています。
聖杯収集ルールの変更
| 以前 | 今 |
|---|---|
| 1 つの聖杯を回収すればクリア可能 | 階段へ上がるには、ダンジョン内の全聖杯を入手する必要あり |
- レベルごとの必要聖杯数:
- レベル 1, 2:
個1 - レベル 3, 4:
個2 - レベル 5:
個3 - (計算式:
)INT((LV+1)/2)
- レベル 1, 2:
キャラクター永続性
- デaths はあり得ない(死なない限り)
- 保持されるデータ: ヒットポイント (HP)、ステータス値、ゴールド、鍵、マジックポイント (MP)
勝利・敗北表示
- 勝利条件: レベル 5 の階段を登ることで脱出・勝利。
- 表示内容: レベル到達数、獲得ゴールド、
、YOU WIN
が表示されるエンドパネルへ移動。LEVEL: 5
🛠️ コード構造の再編成
「INITPLAYER」と「BUILDLEVEL」に処理を分割しました。これにより、**「ゲーム全体のリセット」と「現在のステージのリセット」**の違いを明確にできます。
処理の流れ
- 新規ゲーム:
→GOSUB INITPLAYERGOSUB BUILDLEVEL - 次のレベルへ:
(単独呼び出し)GOSUB BUILDLEVEL- ※この仕組みにより、マップ生成後もキャラクターは無傷で生存できます。
BUILDLEVEL の実装例
BUILDLEVEL: PX=10 : PY=11 : OX=PX : OY=PY WN=0 : LA=0 CL=INT((LV+1)/2) POKE 53280,0 : POKE 53281,0 GOSUB MAPBLANK GOSUB MAPROLL GOSUB DISPLAY GOSUB POPULATE GOSUB DRAWPLAYER RETURN
🪜 階段(ステージ移動)の仕組み
階段はランダムな隅部屋に配置されます。中央出発点のため、スタート部屋の配置はありません。
ランダム位置決定式
EX=4*INT(RND(1)*2) : EY=4*INT(RND(1)*2)
はINT(RND(1)*2)
または0
を返す。1
で掛けることで、横・縦いずれも「最初(0)」か「最後(4)」の座標になる。4
配置ロジック
IF RX=EX AND RY=EY THEN MT=1
- 理由: 聖杯回収中移動をブロックするため、不利な位置に設置しない。
- 位置: 部屋の中央セルに固定。
💎 聖杯収集とレベルクリアフロー
処理ロジック
- ゴールド報酬: 10 ポイント/個(変更なし)
- カウント更新:
を減算し、配置された数を記録。CL - 完了判定:
の場合、「STAIRS を見つけてください」のメッセージが表示。CL=0
スクリプト実装
Q=CL : CL=0 IT$="{PURPLE}(" : FOR N=1 TO Q : GOSUB PLACEONE : CL=CL+PF : NEXT N
- 配置失敗時の挙動: 混雑したマップでは
が失敗(放置)することがあり、実際に表示されない聖杯が存在する可能性があります。しかし、成功分のみがカウントされるためクリアは可能です。PLACEONE - 残り聖杯の警告: 未収集のまま階段へ近づくと、元の位置へ戻され「STAIRS 残り」の数値が表示されます。
レベルクリア判定
- 全聖杯集結後、階段は
を設定して返します(以前は「ゲーム勝利」でしたが、現在はステージクリアの意)。WN=1 - メインループが検知し、
にジャンプ。NEXTLEVEL
技術的注意: 階段は
内部にあるため、新しいレベル構築時にスタックに未完了なコールが残る可能性があります。GOSUB
⚡ レベルアップシステムの詳細
各新規ステージでのキャラクター強化ルール:
- HP回復: コンステーション値 (
) の半分(切り捨て)分回復。Constitution - ステータス強化:
- 偶数レベル:
+1Strength - 奇数レベル:
+1Dexterity
- 偶数レベル:
コード実装
HL=INT(STATS(2)/2) : HP=HP+HL S=LV AND 1 : STATS(S)=STATS(S)+1 AC=10+INT((STATS(1)-10)/2)
- ステータス配列:
: Strength (力量)STATS(0)
: Dexterity (素早さ)STATS(1)
: Constitution (体力)STATS(2)
- 強化ロジック:
で奇偶を判定(最低位ビットが 1 の場合のみ)。LV AND 1 - ARMOR CLASS:
に依存するため再計算。Dexterity
調整方針: 現在は実装確認用であり、バランス調整は後日の微調整フェーズで実施します。
🧪 マジックポイント(MP)の導入
ポーションを消費すると MP が追加され、上限が設けられました。
仕様変更
- 入手効果:
MG += 50 - 上限規制:
MG > 100 THEN MG = 100 - 表示例: 「50 magic, level 1」
IF CH=42 THEN MG=MG+50:MSG$="MAGIC UP 50":GOSUB TAKEITEM IF MG>100 THEN MG=100
- 現状の消費状況: 現在はまだ自動消費されませんが、カウント・表示は行っています。
- 将来の活用: パート 12 で遠隔攻撃や呪文発動コスト(基本 5 ポイント + 移動セル数×1)に使用される予定です。C ラング版仕様と整合性を持たせています。
📊 ステータスラインの画面更新
以下のカウンターを追加しました:
- マジックポイント (MP)
- 現在のレベル (Level)
UI 変更点
- 表示領域を占有するため、カウンター間の余白スペースは2 セル → 1 セルへ削減。
- ステータスライン全体で利用可能な 40 文字中、31 文字を使用(2 つの
で構成)。PRINT
⚠️ 残された課題と改善点
以下の機能追加が推奨されます:
- 難易度調整: ゴブリン出現数をレベルに応じて変更(現状 3〜6 体固定)。
- MP の消費実装: 現在収集のみで、実際に使用できない状態。
- メモリ最適化: 未使用の RAM を活用し、アイテム種目やバリエーションを追加。
❓ 次のステップへの質問
今後の開発方針について検討すべき点です:
- 双方向移動: 階段を降りて過去のレベルに戻り、敵が復活させるべきか?
- 鍵の引き継ぎ: 次回のレベルでドアを開けるため、余分な鍵を保持する必要があるか?
- 成長のカスタマイズ: レベルアップ時に、どのステータスを上げるかプレイヤーに選択させるか?
- 難易度上限: ゲームオーバーまでに到達すべき最大レベルはいつまでのべきか?