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, рекомендуем:

Изучить редактор

Познакомьтесь с редактором Wudgine и его основными функциями.

Изучить архитектуру

Погрузитесь в архитектуру движка для лучшего понимания его возможностей.

Wudgine • © 2025