Skip to content

**RogueKit** 的核心目标是抽象Roguelike游戏开发中的通用复杂性,提供一个稳固、数据驱动且易于扩展的基础框架,从而使开发者能够将精力集中在创造独特的游戏玩法、内容和体验上。

License

Notifications You must be signed in to change notification settings

hamburger-os/RogueKit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RogueKit:用于Godot引擎的模块化Roguelike开发套件

RogueKit Showcase

本文档是 RogueKit 的高级概述。RogueKit 是一个基于Godot 4.4.1引擎和GDScript语言的模块化、可重用Roguelike游戏库。其核心目标是抽象Roguelike游戏开发中的通用复杂性,提供一个稳固、数据驱动且易于扩展的基础框架,从而使开发者能够将精力集中在创造独特的游戏玩法、内容和体验上。

✨ 核心特性

  • 🧩 高度组合化: 遵循“组合优于继承”原则。通过为实体(Entity)挂载不同的组件(Component)来动态构建复杂的行为,而非依赖僵硬的继承树。
  • 💾 数据驱动设计: 游戏的核心内容(如角色属性、技能效果、敌人配置、关卡波次)都通过Godot的Resource.tres文件)进行定义,使策划和设计师无需编写代码即可调整游戏平衡、添加新内容。
  • ⚔️ 游戏循环无关: 框架底层分离了行动(Action)和游戏循环(Game Loop)的具体实现,使其可以同时支持即时制(如《吸血鬼幸存者》)和回合制(如传统Roguelike)游戏。
  • 🗺️ 可扩展的世界生成: 提供了一套基于“生成通道”(Generation Pass)的地图构建系统。开发者可以通过组合内置的通道(如BSP树、元胞自动机)或编写自定义通道来创建风格各异的地图。
  • 🤖 灵活的AI框架: 基于行为树(Behavior Tree)和数据驱动的AI配置文件AIBehaviorProfile,可以为不同类型的敌人配置截然不同的行为逻辑,并可在运行时动态切换。
  • 🔌清晰的扩展边界: RogueKit 提供了一套稳固的基类。当需要实现独特的游戏机制时,您应该通过继承这些基类来扩展功能,而不是修改库的源代码,确保了项目的长期可维护性。

🚀 快速上手

1. 安装

RogueKit 推荐作为 Git Submodule 集成到您的Godot项目中。

# 在你的Godot项目根目录下执行
git submodule add [repository_url] lib/roguekit
git submodule update --init --recursive

2. 最小示例:生成一个随机地牢

  1. 创建场景:

    • 创建一个新的Godot场景。
    • 添加一个 Node2D 作为根节点,并将其重命名为 Dungeon
    • Dungeon 节点附加一个新的脚本 dungeon.gd
    • 添加一个 TileMap 节点用于渲染。
  2. 编写脚本 (dungeon.gd):

    extends Node2D
    
    # 引用RogueKit中的地图生成器和配置文件
    const MapGenerator = preload("res://lib/roguekit/world_gen/map_generator.gd")
    const MapGenerationProfile = preload("res://lib/roguekit/world_gen/map_generation_profile.gd")
    const BSPTreePass = preload("res://lib/roguekit/world_gen/bsp_tree_pass.gd")
    
    @onready var tile_map: TileMap = $TileMap
    
    func _ready() -> void:
        # 1. 创建一个地图生成配置 (Profile)
        var profile = MapGenerationProfile.new()
        profile.map_size = Vector2i(100, 60)
        
        # 2. 添加一个BSP树生成通道 (Pass)
        var bsp_pass = BSPTreePass.new()
        profile.generation_passes.append(bsp_pass)
    
        # 3. 生成地图数据
        var map_data = MapGenerator.generate(profile)
    
        # 4. 在TileMap上绘制地图
        # (你需要预先为TileMap设置好墙壁和地板的图块)
        for x in range(map_data.width):
            for y in range(map_data.height):
                if map_data.get_tile(x, y) == map_data.TileType.WALL:
                    # set_cell(layer, coords, source_id, atlas_coords)
                    tile_map.set_cell(0, Vector2i(x, y), 0, Vector2i(0, 0)) # 墙壁图块
                else:
                    tile_map.set_cell(0, Vector2i(x, y), 0, Vector2i(1, 0)) # 地板图块
  3. 运行场景,您将看到一个由RogueKit生成的基础地牢!

📚 文档章节

为了提高可读性和可维护性,更详细的设计文档已被拆分为以下几个部分:

About

**RogueKit** 的核心目标是抽象Roguelike游戏开发中的通用复杂性,提供一个稳固、数据驱动且易于扩展的基础框架,从而使开发者能够将精力集中在创造独特的游戏玩法、内容和体验上。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published