Project Structure
В этом разделе описывается стандартная структура проекта Wudgine и назначение основных файлов и директорий.
Обзор структуры
Проект Wudgine имеет следующую базовую структуру:
my-game/
├── assets/ # Ресурсы игры
├── build/ # Скомпилированные файлы (создается автоматически)
├── config/ # Конфигурационные файлы
├── src/ # Исходный код
├── tools/ # Вспомогательные инструменты
├── CMakeLists.txt # Файл сборки CMake
└── wudgine.config.json # Конфигурация проекта
Директория assets
Директория assets
содержит все ресурсы, используемые в вашей игре:
Импорт ресурсов
Wudgine автоматически импортирует и оптимизирует ресурсы при сборке проекта. Вы можете настроить процесс импорта в файле config/asset-pipeline.json
:
config/asset-pipeline.json
{
"textures": {
"default_format": "BC7",
"generate_mipmaps": true,
"srgb": true
},
"models": {
"import_materials": true,
"generate_normals": "if_missing",
"generate_tangents": true,
"optimize_meshes": true
},
"shaders": {
"include_paths": ["assets/shaders/include"],
"defines": {
"MAX_LIGHTS": 16
}
}
}
Директория src
Директория src
содержит исходный код вашего проекта:
src/game.h
// Основной класс игры
class Game {
public:
void initialize();
void update(float deltaTime);
void render();
void shutdown();
};
Организация кода
Рекомендуется организовывать код по функциональным модулям:
Директория config
Директория config
содержит конфигурационные файлы проекта:
config/engine.json
{
"application": {
"name": "My Game",
"version": "0.1.0"
},
"rendering": {
"api": "vulkan",
"msaa": 4
}
}
Пример конфигурации движка
config/engine.json
{
"application": {
"name": "My Game",
"version": "0.1.0",
"window": {
"width": 1280,
"height": 720,
"fullscreen": false,
"vsync": true,
"resizable": true
}
},
"rendering": {
"api": "vulkan",
"msaa": 4,
"shadow_resolution": 2048,
"max_lights": 16
},
"physics": {
"fixed_timestep": 0.016667,
"gravity": [0, -9.81, 0],
"max_substeps": 6
},
"debug": {
"enable_logging": true,
"log_level": "info",
"show_fps": true,
"show_statistics": false
}
}
Файл wudgine.config.json
Корневой файл wudgine.config.json
содержит основные настройки проекта:
wudgine.config.json
{
"project": {
"name": "My Game",
"id": "com.example.mygame",
"version": "0.1.0",
"engine_version": "1.2.3"
},
"build": {
"output_dir": "build",
"assets_dir": "assets",
"source_dir": "src",
"platforms": ["windows", "macos", "linux"]
},
"dependencies": {
"plugins": [
"wudgine-physics",
"wudgine-audio",
"wudgine-ui"
],
"external": {
"glm": "0.9.9",
"spdlog": "1.9.2"
}
}
}
Директория tools
Директория tools
содержит вспомогательные скрипты и инструменты для разработки:
Следующие шаги
Теперь, когда вы ознакомились со структурой проекта Wudgine, рекомендуем: