配置项目信息
在本章中,您将会学习到:
package.json
的基本使用package.json
的高级配置
基础配置
无论您进行什么项目,都需要使用配置文件来指定项目的基本信息(例如 NodeJS 项目中的 package.json
),Sonolus.h 也是如此。您需要提供项目的基本信息,我们才能帮助您将项目添加到 Sonolus Server 中去。
在 Sonolus.h 中,我们使用 package.json
来配置引擎项目。
在您初始化结束的引擎根目录下会有一个预设的 package.json
文件,可根据下面的注释来修改您的项目信息(由于 json
文件不支持注释,下面代码中每行 //
及以后的所有内容都需要删除才能够使用)。
{
"skin": // 皮肤信息
{
"name": "none", // 皮肤 id
"i18n": // 对不同语言启用不同配置
[
{
"localization": "default", // 语言 id,default 为所有语言通用
"title": "None", // 皮肤标题
"subtitle": "Sonolus", // 皮肤副标题
"author": "-", // 皮肤作者
"description": "" // 皮肤描述,用 \n 表示换行
}
]
},
"background": // 背景信息
{
"name": "none", // 背景 id
"i18n": // 对不同语言启用不同配置
[
{
"localization": "default", // 语言 id,default 为所有语言通用
"title": "None", // 背景标题
"subtitle": "Sonolus", // 背景副标题
"author": "-", // 背景作者
"description": "" // 背景描述,用 \n 表示换行
}
]
},
"effect": // 音效信息
{
"name": "none", // 音效 id
"i18n": // 对不同语言启用不同配置
[
{
"localization": "default", // 语言 id,default 为所有语言通用
"title": "None", // 音效标题
"subtitle": "Sonolus", // 音效副标题
"author": "-", // 音效作者
"description": "" // 音效描述,用 \n 表示换行
}
]
},
"effect": // 粒子效果信息
{
"name": "none", // 粒子效果 id
"i18n": // 对不同语言启用不同配置
[
{
"localization": "default", // 语言 id,default 为所有语言通用
"title": "None", // 粒子效果标题
"subtitle": "Sonolus", // 粒子效果副标题
"author": "-", // 粒子效果作者
"description": "" // 粒子效果描述,用 \n 表示换行
}
]
},
"engine": // 引擎信息
{
"name": "test", // 引擎 id
"i18n": // 对不同语言启用不同配置
[
{
"localization": "default", // 语言 id,default 为所有语言通用
"title": "Test Engine", // 引擎标题
"subtitle": "Sonolus Test Engine", // 引擎副标题
"author": "-", // 引擎作者
"skin": "none", // 引擎默认皮肤 id,要求在 Sonolus Server 中存在
"background": "none", // 引擎默认背景 id,要求在 Sonolus Server 中存在
"effect": "none", // 引擎默认音效 id,要求在 Sonolus Server 中存在
"particle": "none", // 引擎默认粒子效果 id,要求在 Sonolus Server 中存在
"description": "" // 引擎描述,用 \n 表示换行
}
]
},
"effect": // 测试关卡信息
{
"name": "test", // 测试关卡 id
"generate": "", // 关卡数据生成指令
"i18n": // 对不同语言启用不同配置
[
{
"localization": "default", // 语言 id,default 为所有语言通用
"title": "Test Level", // 测试关卡标题
"rating": 1, // 测试关卡难度
"artists": "-", // 测试关卡艺术家
"author": "-", // 测试关卡作者
"engine": "test", // 引擎 id
"skin": "", // 皮肤 id,为空表示默认皮肤
"background": "", // 背景 id,为空表示默认背景
"effect": "", // 音效 id,为空表示默认音效
"particle": "", // 粒子效果 id,为空表示默认粒子效果
"description": "" // 测试关卡描述,用 \n 表示换行
}
]
},
}
高级配置
下列是 package.json
详细结构,供您参考:
class SkinItemI18n {
string title = ""; // 皮肤标题
string subtitle = ""; // 皮肤副标题
string author = ""; // 皮肤作者
string description = ""; // 皮肤描述
string localization = "default"; // 皮肤语言 id
};
class BackgroundItemI18n {
string title = ""; // 背景标题
string subtitle = ""; // 背景副标题
string author = ""; // 背景作者
string description = ""; // 背景描述
string localization = "default"; // 背景语言 id
};
class EffectItemI18n {
string title = ""; // 音效标题
string subtitle = ""; // 音效副标题
string author = ""; // 音效作者
string description = ""; // 音效描述
string localization = "default"; // 音效语言 id
};
class ParticleItemI18n {
string title = ""; // 粒子效果标题
string subtitle = ""; // 粒子效果副标题
string author = ""; // 粒子效果作者
string description = ""; // 粒子效果描述
string localization = "default"; // 粒子效果语言 id
};
class EngineItemI18n {
string title = ""; // 引擎标题
string subtitle = ""; // 引擎副标题
string author = ""; // 引擎作者
string description = ""; // 引擎描述
string skin = "none"; // 默认皮肤 id
string background = "none"; // 默认背景 id
string effect = "none"; // 默认音效 id
string particle = "none"; // 默认粒子效果 id
string localization = "default"; // 引擎语言 id
};
class LevelItemI18n {
string title = ""; // 测试关卡标题
int rating = 1; // 测试关卡难度
string subtitle = ""; // 测试关卡艺术家
string author = ""; // 测试关卡作者
string description = ""; // 测试关卡描述
string engine = "none"; // 引擎 id
string skin = "none"; // 皮肤 id
string background = "none"; // 背景 id
string effect = "none"; // 音效 id
string particle = "none"; // 粒子效果 id
string localization = "default"; // 测试关卡语言 id
}
class ProjectConfig {
class SkinItem {
string name = "none"; // 皮肤 id
vector<SkinItemI18n> i18n; // 皮肤配置组
}skin; // 皮肤配置
class BackgroundItem {
string name = "none"; // 背景 id
vector<BackgroundItemI18n> i18n; // 背景配置组
}background; // 背景配置
class EffectItem {
string name = "none"; // 音效 id
vector<EffectItemI18n> i18n; // 音效配置组
}effect; // 音效配置
class ParticleItem {
string name = "none"; // 粒子效果 id
vector<ParticleItemI18n> i18n; // 粒子效果配置组
}particle; // 粒子效果配置
class EngineItem {
string name = "none"; // 引擎 id
vector<EngineItemI18n> i18n; // 引擎配置组
}engine; // 引擎配置
class LevelItem {
string name = "none"; // 测试关卡 id
string generate = ""; // 关卡数据生成指令
vector<LevelItemI18n> i18n; // 测试关卡配置组
}level; // 测试关卡配置
}; // 项目配置文件
其中引擎配置组和关卡配置组中所有的 引擎/皮肤/背景/音效/粒子效果 的 id 都需要在 Sonolus Server 中存在或在 package.json
中定义过。