项目文档:纯文字自由探索游戏

明白了!你的意思是表结构已经预先定义好,但表中的数据需要由大模型随机生成。因此,我会调整之前的文档,专注于如何通过大模型生成数据并填充到预定义的表中,同时保留项目的整体结构和清晰的操作指南。以下是重新构建的项目文档。


项目文档:纯文字自由探索游戏(基于大模型生成数据)

1. 项目介绍

1.1 项目概述

这是一个纯文字的自由探索游戏,灵感来源于《牧场物语:矿石镇的伙伴们》。游戏完全依赖大模型生成内容和SQL Server数据库存储数据,无需传统编程。玩家可以在一个动态生成的世界中探索,与NPC互动,进行农业、采集、建筑等活动,体验真实且沉浸的人生。

1.2 核心目标

  • 真实与沉浸:大模型生成自然的内容,模拟动态世界。
  • 长期游玩:丰富的活动和事件支持玩家长期体验。
  • 控制随机性:地图地点固定为10个,料理种类固定为100种,其他数据由大模型随机生成。

1.3 技术特点

  • 大模型驱动:生成所有游戏数据、解析输入、模拟行为。
  • 数据库支持:SQL Server存储预定义表结构和大模型生成的数据。
  • 无代码开发:通过大模型交互实现逻辑。

2. 整体架构

2.1 系统架构图

前端(文本界面) <-> 后端(调度中心)
                          |
         ---------------------------------
         |              |               |
大模型A(生成)  大模型B(NLP)   大模型C(决策)
         |              |               |
         ---------------------------------
                          |
                     数据库(SQL Server)

2.2 模块划分

  1. 世界模块:生成和管理地图、地点数据。
  2. NPC模块:生成NPC并模拟其行为。
  3. 玩家模块:生成玩家初始状态并处理输入。
  4. 事件模块:生成事件和任务。
  5. 物品模块:生成物品和料理。

2.3 大模型角色

  • 大模型A(生成模型):生成地图、NPC、物品等数据。
  • 大模型B(NLP模型):解析玩家输入,识别意图。
  • 大模型C(决策模型):模拟NPC行为、触发事件。

3. 数据库设计(SQL Server)

假设你已经定义了表结构,我将提供表结构示例,并通过大模型生成数据的提示词填充这些表。以下是表结构(供参考)和生成数据的流程。

3.1 静态数据表

3.1.1 地点表(Locations)

CREATE TABLE Locations (
    location_id INT PRIMARY KEY,
    name NVARCHAR(50) NOT NULL,
    description NVARCHAR(500),
    terrain_type NVARCHAR(20)
);

3.1.2 地形表(Terrains)

CREATE TABLE Terrains (
    terrain_type NVARCHAR(20) PRIMARY KEY,
    movement_speed FLOAT,
    resource_type NVARCHAR(50)
);

3.1.3 NPC表(NPCs)

CREATE TABLE NPCs (
    npc_id INT PRIMARY KEY,
    name NVARCHAR(50) NOT NULL,
    personality NVARCHAR(20),
    initial_location INT,
    FOREIGN KEY (initial_location) REFERENCES Locations(location_id)
);

3.1.4 物品表(Items)

CREATE TABLE Items (
    item_id INT PRIMARY KEY,
    name NVARCHAR(50) NOT NULL,
    type NVARCHAR(20),
    effect NVARCHAR(100)
);

3.1.5 料理表(Recipes)

CREATE TABLE Recipes (
    recipe_id INT PRIMARY KEY,
    name NVARCHAR(50) NOT NULL,
    ingredients NVARCHAR(200),
    effect NVARCHAR(100)
);

3.1.6 事件表(Events)

CREATE TABLE Events (
    event_id INT PRIMARY KEY,
    trigger_condition NVARCHAR(200),
    effect NVARCHAR(100)
);

3.1.7 任务表(Quests)

CREATE TABLE Quests (
    quest_id INT PRIMARY KEY,
    description NVARCHAR(200),
    reward NVARCHAR(100)
);

3.2 动态数据表

3.2.1 玩家状态表(PlayerStatus)

CREATE TABLE PlayerStatus (
    player_id INT PRIMARY KEY,
    location_id INT,
    health INT,
    hunger INT,
    backpack NVARCHAR(500),
    FOREIGN KEY (location_id) REFERENCES Locations(location_id)
);

3.2.2 NPC状态表(NPCStatus)

CREATE TABLE NPCStatus (
    npc_id INT PRIMARY KEY,
    location_id INT,
    emotion NVARCHAR(20),
    task_status NVARCHAR(20),
    FOREIGN KEY (npc_id) REFERENCES NPCs(npc_id),
    FOREIGN KEY (location_id) REFERENCES Locations(location_id)
);

3.2.3 游戏进度表(GameProgress)

CREATE TABLE GameProgress (
    player_id INT PRIMARY KEY,
    quest_status NVARCHAR(500),
    event_status NVARCHAR(500),
    FOREIGN KEY (player_id) REFERENCES PlayerStatus(player_id)
);

4. 大模型生成数据流程

以下是大模型生成数据并填充表的详细流程。每个步骤包括提示词和输出示例。

4.1 生成静态数据

4.1.1 生成地点(Locations)

  • 大模型A(生成模型):
    • 输入提示词:
      生成10个地点的数据,包含名称、描述和地形类型。地形类型可选:森林、河流、山地、平原、沼泽。
      
    • 输出:
      [
        {"location_id": 1, "name": "幽暗森林", "description": "树影婆娑,鸟鸣阵阵", "terrain_type": "森林"},
        {"location_id": 2, "name": "清风河", "description": "水流潺潺,鱼儿跳跃", "terrain_type": "河流"},
        {"location_id": 3, "name": "铁石山", "description": "岩石嶙峋,风声凛冽", "terrain_type": "山地"}
      ]
      
    • 操作:
      INSERT INTO Locations (location_id, name, description, terrain_type)
      VALUES (1, '幽暗森林', '树影婆娑,鸟鸣阵阵', '森林'),
             (2, '清风河', '水流潺潺,鱼儿跳跃', '河流'),
             (3, '铁石山', '岩石嶙峋,风声凛冽', '山地');
      

4.1.2 生成地形(Terrains)

  • 大模型A(生成模型):
    • 输入提示词:
      为以下地形类型生成数据:森林、河流、山地、平原、沼泽。包括移动速度(0.5-1.5)和资源类型。
      
    • 输出:
      [
        {"terrain_type": "森林", "movement_speed": 1.0, "resource_type": "木材、草药"},
        {"terrain_type": "河流", "movement_speed": 1.2, "resource_type": "鱼、水"},
        {"terrain_type": "山地", "movement_speed": 0.8, "resource_type": "矿石"}
      ]
      
    • 操作:
      INSERT INTO Terrains (terrain_type, movement_speed, resource_type)
      VALUES ('森林', 1.0, '木材、草药'),
             ('河流', 1.2, '鱼、水'),
             ('山地', 0.8, '矿石');
      

4.1.3 生成NPC(NPCs)

  • 大模型A(生成模型):
    • 输入提示词:
      根据以下地点数据生成5个NPC,包括名称、性格和初始地点:
      {"locations": [{"location_id": 1, "name": "幽暗森林"}, {"location_id": 2, "name": "清风河"}, ...]}
      
    • 输出:
      [
        {"npc_id": 1, "name": "林中猎手", "personality": "勇敢", "initial_location": 1},
        {"npc_id": 2, "name": "河边渔夫", "personality": "温和", "initial_location": 2}
      ]
      
    • 操作:
      INSERT INTO NPCs (npc_id, name, personality, initial_location)
      VALUES (1, '林中猎手', '勇敢', 1),
             (2, '河边渔夫', '温和', 2);
      

4.1.4 生成物品和料理(Items & Recipes)

  • 大模型A(生成模型):
    • 输入提示词:
      生成5个物品和3个料理。物品包括名称、类型和效果;料理包括名称、配方(JSON格式)和效果。
      
    • 输出:
      {
        "items": [
          {"item_id": 1, "name": "木斧", "type": "工具", "effect": "砍树效率+20%"},
          {"item_id": 2, "name": "草药", "type": "材料", "effect": "可用于制作"}
        ],
        "recipes": [
          {"recipe_id": 1, "name": "草药汤", "ingredients": "{\"items\": [{\"item_id\": 2, \"quantity\": 2}]}", "effect": "恢复20点体力"}
        ]
      }
      
    • 操作:
      INSERT INTO Items (item_id, name, type, effect)
      VALUES (1, '木斧', '工具', '砍树效率+20%'),
             (2, '草药', '材料', '可用于制作');
      INSERT INTO Recipes (recipe_id, name, ingredients, effect)
      VALUES (1, '草药汤', '{"items": [{"item_id": 2, "quantity": 2}]}', '恢复20点体力');
      

4.2 生成动态数据

4.2.1 生成玩家状态(PlayerStatus)

  • 大模型A(生成模型):
    • 输入提示词:
      生成一个玩家的初始状态,包括位置(从地点表中随机选择)、健康(50-100)、饥饿(0-50)和背包(包含1-2个物品)。
      
    • 输出:
      {
        "player_id": 1,
        "location_id": 1,
        "health": 100,
        "hunger": 10,
        "backpack": "{\"items\": [{\"item_id\": 1, \"quantity\": 1}]}"
      }
      
    • 操作:
      INSERT INTO PlayerStatus (player_id, location_id, health, hunger, backpack)
      VALUES (1, 1, 100, 10, '{"items": [{"item_id": 1, "quantity": 1}]}');
      

4.2.2 生成NPC状态(NPCStatus)

  • 大模型A(生成模型):
    • 输入提示词:
      根据以下NPC数据生成状态,包括位置、情绪(开心、平静等)和任务状态(空闲、忙碌等):
      {"npcs": [{"npc_id": 1, "name": "林中猎手"}, ...]}
      
    • 输出:
      [
        {"npc_id": 1, "location_id": 1, "emotion": "开心", "task_status": "空闲"}
      ]
      
    • 操作:
      INSERT INTO NPCStatus (npc_id, location_id, emotion, task_status)
      VALUES (1, 1, '开心', '空闲');
      

5. 大模型交互流程

5.1 玩家行为处理

5.1.1 大模型B(NLP模型):解析输入

  • 输入提示词:
    请解析以下玩家输入,识别其意图和动作:
    输入:'去河流钓鱼'
    
  • 输出:
    意图:移动到河流并执行钓鱼行为
    - 动作1:移动到河流
    - 动作2:钓鱼
    
  • 传递提示词给大模型C:
    请根据以下意图和玩家状态执行行为:
    意图:移动到河流并执行钓鱼行为;
    玩家状态:{"player_id": 1, "location_id": 1, "health": 100, "hunger": 10, "backpack": [...]}
    

5.1.2 大模型C(决策模型):执行行为

  • 输入提示词: 来自大模型B
  • 输出:
    “玩家从森林移动到河流,消耗5点体力;钓鱼成功,获得1条鱼”
  • 传递提示词给大模型A:
    请根据以下行为结果更新状态并生成描述:
    行为结果:移动到河流,体力-5,获得1条鱼;
    玩家状态:{"player_id": 1, "location_id": 1, "health": 100, "hunger": 10, "backpack": [...]}
    

5.1.3 大模型A(生成模型):更新状态

  • 输入提示词: 来自大模型C
  • 输出:
    • 状态更新:
      UPDATE PlayerStatus 
      SET location_id = 2, health = 95, backpack = '{"items": [{"item_id": 1, "quantity": 1}, {"item_id": 3, "quantity": 1}]}'
      WHERE player_id = 1;
      
    • 描述:
      “你穿过森林,来到了清澈的河流边。河水潺潺,你感到一丝疲惫(体力-5)。你拿起鱼竿,耐心地等待,不久就钓到了一条鱼。”

6. 操作指南(小白向)

6.1 准备工作

  1. 创建数据库

    • 打开SQL Server Management Studio。
    • 创建数据库:
      CREATE DATABASE GameWorld;
      USE GameWorld;
      
    • 运行你预定义的表结构SQL。
  2. 假设你有大模型API

    • 你需要一个工具(如Postman)调用大模型,或者手动输入提示词。

6.2 初始化游戏

  1. 生成静态数据
    • 输入提示词到大模型A,生成LocationsTerrainsNPCs等数据。
    • 将输出转换为SQL语句,运行插入数据库。
  2. 生成动态数据
    • 生成玩家和NPC状态,插入PlayerStatusNPCStatus

6.3 运行游戏

  1. 输入玩家命令(例如“去河流钓鱼”)。
  2. 按大模型B->C->A的顺序处理提示词。
  3. 更新数据库并显示结果。

7. 总结

这份文档为你提供了一个基于大模型生成数据的完整方案。你只需运行表结构SQL,然后通过提示词让大模型生成数据并填充表。交互流程清晰,小白也能按步骤操作。如果需要更具体的工具推荐或API示例,请告诉我!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容