{"id":22080885,"url":"https://github.com/dron12261/dronsengine2d","last_synced_at":"2025-03-23T20:46:28.152Z","repository":{"id":41393143,"uuid":"342860327","full_name":"DRON12261/DronsEngine2D","owner":"DRON12261","description":"DronsEngine2D - мой игровой движок для 2D игр, который я пишу при помощи C++\u0026SFML. (В РАЗРАБОТКЕ НА НАЧАЛЬНОЙ СТАДИИ)","archived":false,"fork":false,"pushed_at":"2024-10-20T21:05:38.000Z","size":44177,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-29T04:27:43.448Z","etag":null,"topics":["2d","cpp","game-engine","gamedev","in-development","sfml"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DRON12261.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-27T13:14:27.000Z","updated_at":"2024-10-20T21:05:42.000Z","dependencies_parsed_at":"2024-10-21T00:44:35.167Z","dependency_job_id":null,"html_url":"https://github.com/DRON12261/DronsEngine2D","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DRON12261%2FDronsEngine2D","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DRON12261%2FDronsEngine2D/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DRON12261%2FDronsEngine2D/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DRON12261%2FDronsEngine2D/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DRON12261","download_url":"https://codeload.github.com/DRON12261/DronsEngine2D/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245168809,"owners_count":20571800,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2d","cpp","game-engine","gamedev","in-development","sfml"],"created_at":"2024-11-30T23:18:14.281Z","updated_at":"2025-03-23T20:46:28.104Z","avatar_url":"https://github.com/DRON12261.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DronsEngine2D\n\n## В РАЗРАБОТКЕ НА НАЧАЛЬНОЙ СТАДИИ!\n\n### DronsEngine2D - мой игровой движок для 2D игр, который я пишу при помощи C++\u0026SFML.\nПо своей задумке это не должен быть убийца Godot, Unreal и т.д. по своей универсальности, удобству и функциональности. Я вижу этот проект как какой-то базовый фундамент движка (который я буду понимать \"под капотом\"), уже на основе которого я буду делать прототипы и сами игры. Т.е. в нем для этого уже будет базовая и оптимальная реализация игрового цикла, заготовки в архитектуре для мультиплеера, многопоточности и поддержки модов, уже какой-то набор функционала для работы с физикой, графикой, какой-то математикой и т.д.\n\n## **TODO:**\n- [x] *Игровой цикл с разделенной частотой обновления физики и всего остального:* `physicsUpdate, update, render, deltaTime`\n- [x] *Фиксированный `viewport` под разные разрешения экрана*\n- [x] *Класс для работы с ini файлами:* `INIFile`\n- [x] *Класс логгер, а также главный логгер движка:* `Logger, GameLogger`\n- - [ ] *Пересмотреть реализацию от `Singleton` в сторону `Service Locator`*\n- [x] *Класс для состояний игры:* `GameState`\n- [ ] *Двойной буффер рендеринга*\n- [ ] *Класс для сериализации (желательно в бинарном виде):* `Serializable`\n- [ ] *Класс (и структура данных) для локализации (например для строки в зависимости от языка будет выводить нужную из списка, определенном в файле):* `Localizable`\n- [ ] *Класс для слоев отрисовки:* `RenderLayer`\n- [ ] *Подумать над специальным механизмом управлением памяти в движке*\n- [ ] *Подумать над реализацией компонентной системы в архитектуре движка: классы компоненты, сущности являются контейнерами для компонентов*\n- [ ] *Обработка событий* `Observer` или `Event Queue`\n- [ ] *Работа с медиа файлами: загрузка изображений, видео и аудио*\n- [ ] *Простой UI для начала: `Button, Image, Label, TextBox` и т.д.*\n- [ ] *Реализация класса `Object, Entity` и т.д. + подвязать под паттерн `Prototype`*\n- [ ] *`State Machine` для определения логики состояний игровых обьектов или, например, анимаций этих объектов*\n- [ ] *Подумать о реализации простого физического движка, возможно через `Observer` и `Singleton`*\n- [ ] *Слои и маски для физического движка: `PhysicsLayer` и `PhysicsMask`*\n- [ ] *Подумать о реализации и организации сцены/уровня и хранении в нем игровых объектов, вероятно через `Scene Graph` и пространственное разбиение*\n- [ ] *Система активных в экране и неактивных за экраном игровых объектов*\n- [ ] *Подумать над реализацией быстрой обработки и рендеринга карты из огромного кол-ва тайлов*\n- [ ] *Подумать о реализации частичной многопоточности в движке: можно попытаться разделить некоторые компоненты движка по потокам, например физика, аудио и т.д*\n- [ ] *Реализация поддержки пользовательских модификаций через `Lua`*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdron12261%2Fdronsengine2d","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdron12261%2Fdronsengine2d","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdron12261%2Fdronsengine2d/lists"}