SonolusHaniwa
  • 1. 概述
  • 2. ハニプレ
  • 3. ユメステ
  • 4. Stellarity
  • 5. Phigros
  • 首页

    • 1. 概述
  • 玩家

    • 2. 安装服务
    • 3. 配置文件标准
    • 4. 服务使用方法
  • 开发者

    • 5. 自定义搜索函数
    • 6. 自定义资源创建接口
    • 7. 插件开发标准
  • 其他

    • 8. 更新日志
    • 9. 关于 srp 资源包
  • 1. 搭建开发环境
  • 2. Sonolus 基础
  • 3. 配置项目信息
  • 4. 基本数据类型
  • 5. 函数与语句块
  • 6. 注意事项
  • 1. 游玩模式基础
  • 1. 概述
  • 2. ハニプレ
  • 3. ユメステ
  • 4. Stellarity
  • 5. Phigros
  • 首页

    • 1. 概述
  • 玩家

    • 2. 安装服务
    • 3. 配置文件标准
    • 4. 服务使用方法
  • 开发者

    • 5. 自定义搜索函数
    • 6. 自定义资源创建接口
    • 7. 插件开发标准
  • 其他

    • 8. 更新日志
    • 9. 关于 srp 资源包
  • 1. 搭建开发环境
  • 2. Sonolus 基础
  • 3. 配置项目信息
  • 4. 基本数据类型
  • 5. 函数与语句块
  • 6. 注意事项
  • 1. 游玩模式基础
  • 首页

    • 1. 总览
  • 玩家

    • 2. 安装服务
    • 3. 配置文件标准
    • 4. 服务使用方法
  • 开发者

    • 5. 自定义搜索函数
    • 6. 自定义资源创建接口
    • 7. 插件开发标准
  • 其他

    • 8. 更新日志
    • 9. 关于 srp 资源包

配置文件标准

配置文件是 Sonolus 服务器运行时的相关信息,您可以通过修改配置文件来修改 Sonolus 服务器的运行时行为。

请注意,由于本服务器不具备热重载功能,因此每次修改配置文件后,您都需要重新启动服务来使配置文件生效。

基础配置文件

在 /config/database.json 中:

class DatabaseUnit {
    public:

    string database       = "sqlite" | "mysql"; // 数据库类型
    string sqlite.dbfile  = "sonolus.db";       // SQLite 数据库文件地址
    string mysql.hostname = "127.0.0.1";        // MySQL 服务器监听地址。
    int    mysql.port     = 3309;               // MySQL 服务器监听端口。
    string mysql.username = "root";             // MySQL 用户名。
    string mysql.password = "root";             // MySQL 用户密码。
    string mysql.database = "sonolus";          // MySQL 目标数据库名。
};

typedef vector<DatabaseUnit> DatabaseConfig; 

在 /config/config.json 中:

enum LOG_TARGET {
    LOG_TARGER_NONE = 0,
    LOG_TARGET_CONSOLE = 1,
    LOG_TARGET_FILE = 2
};

class BaseConfig {
    public:

    map<string, bool> tables = {                      // 指定各表的数据库源
        { "Level", 0 },
        { "Skin", 0 },
        ...
    };
    string server.listenHost    = "0.0.0.0";          // 服务器监听 IP,0.0.0.0 为监听所有可用 IP
    string server.listenPost    = "8080";             // 服务器监听端口
    string server.enableSSL     = false;              // 是否启用 SSL(https)
    string server.httpsCacert   = "cert.pem";         // 如果启用了 SSL,在此填入证书路径
    string server.httpsPrivkey  = "privkey.pem";      // 如果启用了 SSL,在此填入私钥路径
    int    server.threadNumber  = 8;                  // 工作进程数
    bool   logSystem.debug      = false;              // 是否启用 Debug 模式
    int    logSystem.target     = LOG_TARGET_CONSOLE; // 日志输出位置
    string logSystem.targetFile = "./log.txt";        // 日志文件路径
    string sonolus.version      = "0.8.3";            // 支持的 Sonolus 版本,为空表示全部支持
    int    sonolus.itemsPerPage = 20;                 // 每页结果数(目前该配置为无效配置)
    int    session.expireTime   = 30;                 // 会话过期时间(单位: 天)
    int    export.retryTime     = 5;                  // 远程导出时连接重试次数
    int    export.hashCheckTime = 5;                  // 远程导出时哈希检查重试次数
};

单人游戏服务器配置文件

在 config/singleplayer_config.json 中:

class SingleplayerServerButton {
    public:

    string type; // 显示在服务器主页的按钮类型
};

class SingleplayerServerBanner {
    public:

    string name; // 导航图名称
    string hash; // 导航图 SHA1 哈希
};

class SingleplayerServerDataPrefix {
    public:

    string name; // 路径前缀名
    string url; // 使用外部资源文件时的路径前缀,为空表示使用本服务器上的资源
};

class SingleplayerConfig {
    public:

    string server.name                = "Sonolus";                                  // 服务器名称
    string server.title               = "Test Server";                              // 服务器标题
    string server.description         = "A Test Server for Sonolus";                // 服务器描述
    string server.logo                = "c3e27937fb9578065038d7988c6d4f955b584d95"; // 服务器图标 SHA1 哈希
    string server.rootUrl             = "127.0.0.1:8080";                           // 服务器域名/地址
    string server.multiplayer.address = "ws://127.0.0.1:8080";                      // 多人游戏服务器地址
    string language.default           = "en" | "zhs" | "ja" | "ko";                 // 默认语言包
    vector<SingleplayerServerBanner> server.banner          = {                     // 服务器导航图
        { name: "Default Banner", hash: "b4b42df0b336e852d14b4d334c3d99f8992626d8" }
    };
    vector<SingleplayerServerDataPrefix> server.data.prefix = {                     // 使用外部资源文件时的路径前缀
        { name: "Default Source", url: "" }
    }
    vector<SingleplayerServerButton> server.button          = {                     // 显示在服务器主页的按钮,可重复
        { type: "authentication" },
        { type: "multiplayer" },
        ...
    };
};

多人游戏服务器配置文件

在 config/multiplayer_config.json 中:

class MultiplayerConfig {
    public:

    bool server.multiplayer.enable            = true; // 是否启用多人游戏服务器
	bool server.multiplayer.allowOtherServers = true; // 是否允许选择其它服务器的关卡
};

各类型组件配置文件

在 config/<itemType>_config.json 中,其中 <itemType> 为组件类型:

class SectionConfig {
    public:

    string title;  // 项目标题
    string icon;   // 项目图标
    string filter; // 筛选时 SQL 代码
    string order;  // 排序时 SQL 代码
};

class SearchConfig {
    public:

    string         title;   // 搜索标题
    string         icon;    // 搜索图标
    string         type;    // 搜索类型
    vector<Search> options; // 搜索选项
    string         filter;  // 筛选时 SQL 代码
    string         order;   // 排序时 SQL 代码
};

class CreateConfig {
    public:

    string              title;      // 资源创建标题
    string              icon;       // 资源创建图标
    string              type;       // 资源创建类型
    vector<Search>      options;    // 资源创建选项
    map<string, string> values;     // 数据表各项 SQL 值
    map<string, string> constructs; // 重构选项默认值时的 JavaScript 代码
};

class ItemTypeConfig {
    public:

    string      itemType.enableLike = true;               // 是否启用点赞功能
    string      itemType.enableComment = true;            // 是否启用评论功能
    string      itemType.enableRating = true;             // 是否启用评分功能
    string      itemType.enableGUICreate = false;         // 是否允许用户在网页上创建该类型资源
    string      itemType.enableSonolusCreate = false;     // 是否允许用户在 Sonolus 里创建该类型资源
    vector<int> itemType.exceptGUICreate = {};            // 在网页创建的例外用户 uid
    vector<int> itemType.exceptSonolusCreate = {};        // 在 Sonolus 里创建的例外用户 uid
    int         itemType.pageSize.info = 5;               // 在信息界面中每个条目的资源数
    int         itemType.pageSize.list = 20;              // 在搜索界面中每页显示的资源数
    int         itemType.pageSize.recommends = 5;         // 在每个资源下方的各条目的推荐资源数
    int         itemType.pageSize.community = 5;          // 在社区中每页显示的评论数
    vector<SectionConfig> itemType.info.sections = {};    // 信息界面中各项目配置
    vector<SectionConfig> itemType.details.sections = {}; // 资源下方各项目配置
    vector<SearchConfig>  itemType.searches = {};         // 搜索配置
    vector<CreateConfig>  itemType.creates = {};          // 资源创建配置
};
最近更新:: 2024/7/28 14:27
Contributors: LittleYang0531
Prev
2. 安装服务
Next
4. 服务使用方法