极妙幻境 · 造物笔记

🌟 极妙幻境 · 造物笔记

一个Java后端的两周AI游戏开发之旅

当修仙幻境遇上大语言模型,当道德选择碰撞卡牌对战——
我用两周时间,从零到一完成了一款AI原生的文字游戏。
这不仅是代码的堆砌,更是一场关于“设计”与“驾驭AI”的实验。


🧠 项目简介 | What is 极妙幻境?

极妙幻境 是一款基于 LLM 动态叙事 的文字冒险游戏。
玩家扮演散修 李飞宇,误入上古修士留下的试炼幻境。
10层幻境、200轮选择 中,每一次决定都将影响 善/中立/恶 三值道心,累积卡牌,最终挑战个性化心魔,触发 7种不同结局

核心创新

  • 🎭 道德三值 + 比例斩杀:任一倾向超过90%即触发极端结局(圣母必死/恶人自收/一事无成)
  • 🔥 迫选测验机制:连续选择同一选项权重递增,防无脑连点
  • 🃏 唬牌BOSS战:心理博弈 + 万能牌干扰,规则AI + LLM预生成台词
  • 👻 境灵设定:同伴即心魔,全程陪伴与反转

🗓️ 两周开发时间线 | Timeline

timeline title 极妙幻境 · 两周开发冲刺 Week1-1 : 核心算法设计(道德三值 / 牌数控制) : BOSS战规则推演 Week1-2 : 编写提示词模板(场景 / 层间事件 / 心魔台词) : 配置管理模块 Week2-1 : LLM队友提示 / 卡牌命名生成 : BOSS战主逻辑实现 Week2-2 : 层间事件 / 选项后续生成 : 系统指令 + 主循环整合 : 测试与文档撰写

(注:如果博客不支持mermaid,可替换为文本列表)


⚙️ 核心技术栈 | Tech Stack

领域 工具/技术 用途
后端语言 Python 3.12 主逻辑实现
AI框架 LangChain 提示词模板、LLM调用
大模型 Deepseek API 场景生成、台词生成、卡牌命名
辅助开发 CodeBuddy 根据提示语生成代码
代码审查 DeepSeek Chat 审查CodeBuddy代码
配置管理 python-dotenv API密钥管理
测试框架 unittest 单元测试

🧩 模块化架构 | Modular Design

src/game_logic/
├── config.py                # 200+可调参数(层数/轮数/阈值/连选加成...)
├── morality.py              # 道德算法(三值比例/连续权重/结局检查)
├── card_acquisition.py      # 牌数控制(纯函数概率算法)
├── boss_ai.py               # 规则AI(BOSS出牌策略)
├── boss_dialogues.py        # 台词预生成(4种倾向 × 5类台词)
├── boss_fight.py            # BOSS战状态机(质疑/跟牌/不跟)
├── boss_fight_loop.py       # 人机交互循环(含中英文命令解析)
├── scene_generator.py       # 整层场景生成(LLM驱动)
├── layer_event_generator.py # 层间事件生成(含陷阱选项)
├── option_outcome_generator.py # 选项后续 + 卡牌命名
├── commands.py              # 系统指令(HELP/PACK/STATUS/HINT/QUIT)
└── llm_hint.py              # AI队友提示(BOSS战中限次调用)

🎨 设计亮点 | Highlights

🧪 1. 道德算法:迫选测验 + 比例斩杀

def update_morality(current_round, last_choice, current_choice, good, neutral, evil, consecutive):
    # 基础加分 + 连续权重([0,3,5,7,8])
    if current_choice == 'A': good += 10 + bonus
    elif current_choice == 'B': 
        neutral += 8 + bonus
        random.choice([good, evil]) += 4   # 随机偏移
    elif current_choice == 'C': evil += 10 + bonus
    else:  # D
        target = random.choice(['good','evil'])
        target += 8 + bonus
    
    # 连续计数更新
    new_consecutive = consecutive+1 if current_choice==last_choice else 0
    
    # 极端结局检查
    if current_round>=10 and total>=80 and any(ratio>=0.9):
        return (..., ending=dominant)

设计意图

  • 三值比例代替二元善恶,更符合修仙“道心”复杂性
  • B选项的随机偏移模拟“谨慎中立也会偶然行善作恶”
  • 连续选择权重让“道心坚定”加速,但超过阈值则堕入极端

👹 2. 心魔个性化:你的道心,我的镜像

BOSS战开始前,根据玩家道德比例动态生成心魔形态:

道德倾向 心魔形态 入场台词示例
善≥50% 被牺牲者的怨念 “你救了张三,可曾记得李四?”
恶≥50% 被背叛者的复仇 “你杀的人,来找你了。”
中立≥50% 错过的可能性 “你什么都没选,所以什么都错过了。”
均衡 自己的镜像 “你究竟是谁?”

技术实现

  • 预生成5类台词(入场/优势嘲讽/劣势思考/胜利/失败)各10条,存入dialogues字典
  • 战斗中根据局势随机触发,30%概率激活

🃏 3. BOSS战:唬牌变种 + 万能牌心理博弈

# 玩家输入解析(支持中英文三格式)
指令示例:
- 跟牌 2 善   | follow 2 good   | 跟 3 中立
- 质疑        | challenge       | 疑
- 不跟        | fold            | 弃

规则设计

  • 出牌方扣着出1-3张牌,宣称类型(可用万能牌冒充)
  • 回应方可选择 质疑/跟牌/不跟
  • 质疑成功则对方收回牌堆+额外弃牌,质疑失败则自己收回牌堆+额外弃牌
  • 先出完手牌者胜

万能牌作用

  • 可充当任何普通牌,扰乱对方推理
  • 数量有限(每层至多1张),玩家需在关键时刻使用

📜 4. 层间事件:陷阱选项设计

每层结束后(非BOSS层)触发一次特殊事件,四个选项中只有一个陷阱(选陷阱不得万能牌)。

{
  "description": "幻境深处传来悠扬的笛声...",
  "options": {
    "A": { "text": "寻声而去", "is_trap": false, "card_name": "笛声牌" },
    "B": { "text": "静心聆听", "is_trap": false, "card_name": "听音牌" },
    "C": { "text": "大声呼喊", "is_trap": true, "card_name": null },
    "D": { "text": "转身离开", "is_trap": false, "card_name": "追笛牌" }
  }
}

设计意图

  • 强化幻境的不可预测性
  • 让玩家在看似无差的选项中寻找“机缘”

🤖 AI辅助开发模式 | My AI-First Workflow

作为一个Java后端,我的Python语法全靠“现学现卖”,但这并不妨碍我完成项目。我的秘密武器是:

  1. 系统设计:先用中文写下每个模块的功能、接口、数据流
  2. 提示语编写:将设计转化为清晰的“任务提示语”(就像给实习生的需求文档)
  3. CodeBuddy生成代码:利用AI编程助手根据提示语生成初始代码
  4. DeepSeek审查:将生成的代码交给DeepSeek审查,指出逻辑漏洞、边界条件
  5. 手动整合调试:修复AI遗漏的问题,将所有模块组装成完整游戏

这个模式让我实现了

  • 2-3倍效率提升:原本手写需要2天的模块,半天就能完成初版
  • 质量双重保障:AI生成 + AI审查,大大减少低级bug
  • 跨界学习:通过审查AI代码,反向学习Python最佳实践

📊 项目数据一览 | Metrics

维度 数据
总代码行数 ~3000行(不含测试)
模块数量 12个核心模块 + 7个静态文本文件
可调参数 37项配置(层数/轮数/阈值/连选加成/概率分布...)
结局数量 7种(极端3+普通3+特殊1)
LLM调用次数 每层1次(场景生成)+ 每场BOSS战预生成1次(台词)+ 限次HINT
API成本估算 完成一次游戏约 $0.5-$1.0(取决于模型)

🌈 花里胡哨的 ASCII 艺术 | Just for Fun

    ██████╗  ██╗   ██╗ ███╗   ██╗ ███████╗
    ██╔══██╗ ██║   ██║ ████╗  ██║ ██╔════╝
    ██████╔╝ ██║   ██║ ██╔██╗ ██║ █████╗  
    ██╔══██╗ ██║   ██║ ██║╚██╗██║ ██╔══╝  
    ██████╔╝ ╚██████╔╝ ██║ ╚████║ ███████╗
    ╚═════╝   ╚═════╝  ╚═╝  ╚═══╝ ╚══════╝

         🌀 幻境入口 | 道心试炼 | 心魔现身 🌀

🧠 核心算法伪代码(纯展示)

道德更新函数

def update_morality(round, last, cur, g, n, e, consec):
    bonus = [0,3,5,7,8][min(consec,4)]
    if cur == 'A': g += 10 + bonus
    elif cur == 'B': 
        n += 8 + bonus
        (g if random<0.5 else e) += 4
    elif cur == 'C': e += 10 + bonus
    else:  # D
        (g if random<0.5 else e) += 8 + bonus
    
    new_consec = consec+1 if cur==last else 0
    # 结局检查
    if round>=10 and (g+n+e)>=80:
        if max(g,n,e)/(g+n+e) >= 0.9:
            return (..., ending=dominant)
    return (g,n,e,new_consec,None)

BOSS战质疑判定核心

def _apply_challenge(self, challenger):
    # 验证桌面每张牌
    for entry in self.table_pile:
        actual = entry['card']['type']
        claimed = entry['claimed']
        if actual != CardType.WILD and actual != claimed:
            # 发现虚假
            # 被质疑方收回牌堆 + 额外弃牌
            # 下一轮由被质疑方先出
            return (..., new_turn=claimer)
    # 全部属实
    # 质疑方收回牌堆 + 额外弃牌
    # 下一轮由质疑方先出
    return (..., new_turn=challenger)

📚 静态文本结构 | Separate Content from Code

texts/
├── welcome.txt               # 游戏开场白
├── rules.txt                 # 详细规则
└── endings/                  # 7种结局文案
    ├── ending_extreme_good.txt
    ├── ending_extreme_evil.txt
    ├── ending_extreme_neutral.txt
    ├── ending_trick.txt
    ├── ending_good.txt
    ├── ending_evil.txt
    └── ending_neutral.txt

设计意图

  • 非技术人员(甚至自己)可随时修改文案,无需改代码
  • 支持后续添加更多结局变体

🚀 如何运行?| How to Run

  1. 克隆仓库(如有)
  2. 创建 .env 文件,填入 DEEPSEEK_API_KEY
  3. 安装依赖:pip install -r requirements.txt
  4. 运行:python src/main.py

💡 写在最后 | Reflection

这两周我最大的收获不是代码本身,而是一种新的开发范式

  • 设计 > 编码:把精力放在系统拆解和逻辑设计上,AI负责执行
  • 审查 > 编写:通过AI代码审查反向学习,快速弥补语言短板
  • 提示词 = 新编程语言:写提示语就像写需求文档,但更精确、更结构化

如果你也想从后端转型AI Agent,不妨从用AI做一个自己的小项目开始——不用等学完所有语法,直接开干,边做边学。
献给37岁的自己,"纵使蹉跎一生,也要争那一线天机","韩大哥,年龄偏大真的不能成为程序员吗?"
我一遍遍的问,心里一遍遍的回答,不是的!
AI时代来临,完全可以做到一人之军,我即是所有,下一章节我们来玩opencode直接做管理来走通一个开发流程


🔗 链接


感谢阅读,欢迎交流~
——一个仍在修仙路上的Java后端

posted @ 2026-03-19 00:14  神秘园欢迎您  阅读(92)  评论(0)    收藏  举报