Кроссплатформенный 2D-движок на C++ для Android, iOS и Desktop платформ.
- 🚀 Высокая производительность - написан на C++17
- 📱 Кроссплатформенность - Android, iOS, Windows, Linux, macOS
- 🎮 ECS архитектура - Entity Component System для гибкой разработки
- 🎨 2D рендеринг - OpenGL ES для мобильных, OpenGL для десктопа
- 🔊 Аудио система - поддержка звуков и музыки
- 🎯 Простой API - легко изучать и использовать
- CMake 3.16+
- C++17 компилятор
- Android NDK r21+
- Android SDK
- Xcode 12+
- iOS 12.0+
- OpenGL 3.3+
- SDL2 (автоматически подключается)
git clone <repository-url>
cd FastEngine# Используйте новый объединённый скрипт
chmod +x run_all.sh
./run_all.sh build
# Или используйте старые скрипты
chmod +x scripts/build_desktop.sh
./scripts/build_desktop.sh# Установите Android NDK и установите переменную ANDROID_NDK
export ANDROID_NDK=/path/to/android-ndk
chmod +x scripts/build_android.sh
./scripts/build_android.sh- Соберите библиотеку движка для iOS:
chmod +x scripts/build_ios.sh ./scripts/build_ios.sh
- Откройте Xcode-проект приложения и запустите на симуляторе или устройстве:
В Xcode выберите целевое устройство (iPhone Simulator или подключённый iPhone), при необходимости укажите Team в Signing & Capabilities и нажмите Run (Cmd+R). Подробнее см. ios_app/README.md.
open ios_app/FastEngineApp.xcodeproj
#include "FastEngine/Engine.h"
#include "FastEngine/Components/Transform.h"
#include "FastEngine/Components/Sprite.h"
int main() {
// Создаем движок
FastEngine::Engine engine;
// Инициализируем
if (!engine.Initialize("My Game", 800, 600)) {
return -1;
}
// Получаем мир
auto* world = engine.GetWorld();
// Создаем игрока
auto* player = world->CreateEntity();
player->AddComponent<FastEngine::Transform>(100.0f, 100.0f);
player->AddComponent<FastEngine::Sprite>("player.png");
// Запускаем игру
engine.Run();
return 0;
}FastEngine/
├── src/ # Исходный код движка
│ ├── core/ # Ядро движка (ECS)
│ ├── platform/ # Платформенная абстракция
│ ├── render/ # Система рендеринга
│ ├── audio/ # Аудио система
│ └── input/ # Система ввода
├── include/ # Заголовочные файлы
├── editors/ # Редакторы
│ ├── qt/ # Qt редактор
│ ├── sdl/ # SDL редактор
│ └── advanced/ # Advanced редактор
├── simulator/ # Симулятор проектов
├── tests/ # Тесты
│ ├── unit/ # Unit тесты
│ ├── integration/ # Интеграционные тесты
│ ├── editors/ # Тесты редакторов
│ └── simulator/ # Тесты симулятора
├── examples/ # Примеры использования
├── scripts/ # Скрипты сборки
├── assets/ # Ресурсы (текстуры, шейдеры, звуки)
└── thirdparty/ # Внешние библиотеки
- Entity - игровой объект
- Component - данные (Transform, Sprite, etc.)
- System - логика (Rendering, Physics, etc.)
- Platform - единый интерфейс для всех платформ
- Window - управление окном/поверхностью
- FileSystem - работа с файлами
- Timer - управление временем
- Renderer - основной рендерер
- Texture - загрузка и управление текстурами
- Sprite - отрисовка 2D спрайтов
- Camera - управление камерой
class MyComponent : public FastEngine::Component {
public:
MyComponent(int value) : m_value(value) {}
int GetValue() const { return m_value; }
void SetValue(int value) { m_value = value; }
private:
int m_value;
};
// Использование
auto* entity = world->CreateEntity();
entity->AddComponent<MyComponent>(42);
auto* comp = entity->GetComponent<MyComponent>();class MySystem : public FastEngine::System {
public:
MySystem(FastEngine::World* world) : System(world) {}
void Update(float deltaTime) override {
// Логика системы
}
};
// Регистрация
world->AddSystem<MySystem>();MIT License - см. файл LICENSE для подробностей.
- Форкните репозиторий
- Создайте ветку для новой функции
- Внесите изменения
- Создайте Pull Request
Используйте run_all.sh для управления всеми аспектами проекта:
# Запуск редакторов
./run_all.sh editors --qt # Qt редактор
./run_all.sh editors --sdl # SDL редактор
./run_all.sh editors --advanced # Advanced редактор
./run_all.sh editors --all # Все редакторы
# Запуск тестов
./run_all.sh tests --unit # Unit тесты
./run_all.sh tests --integration # Интеграционные тесты
./run_all.sh tests --performance # Тесты производительности
./run_all.sh tests --all # Все тесты
# Сборка и очистка
./run_all.sh build # Собрать проект
./run_all.sh clean # Очистить build файлы
./run_all.sh help # Показать справкуЕсли у вас есть вопросы или проблемы, создайте Issue в репозитории.