Створюю свій ігровий рушій на C++

Всім привіт! Створюю ігровий рушій на open gl, imgui, bullet engine, open al.

Багато хто почне розказувати, що вже все готове, навіщо створювати велосипед або я в чомусь не правий, щось засталіре і т. д . Прошу не осуджувати, так як я цим горю ,є велике бажання копатись в такому, це особисто для себе і для власного розвитку. Але ті люди, які зрозуміють мене, зможуть дати підказку.

У мене вже створений редактор рівнів, редактор матеріалів, система часток, завантаження об’єктів на сцену та виделення їх, класс актора з базовим функціоналом, пулл управління пам’яттю, базове освітлення, точечне освітлення, відкладене затінювання, динамічні тіні , базова фізика та програвання звуків і багато іншитх дрібниць.

Моживо хтось знає, як створити управління ресурсами, паралельне завантаження текстур, моделей, станів об’єкта, при роботі основного вікна, і взагалі збереження рівня, і його завантаження, завантаження в кеш і вивантаження з кеша куди потрібно.

Буду вдячний, якщо підкажете подібні книги або статті, можливо десь є куски кода для прикладу.

Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини про геймдев

👍ПодобаєтьсяСподобалось4
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Писати свій двіжок якщо є потреба, скажімо унікальні якісь властивості яких не надає існуючи — це нормально (особисто бачів в комерційній розробці що робилась на замовлення одного дуже відомого видавця, де мені тоді джуніору довелось писати сервер для мультіплеєра до рендерера старші не допустили). Щодо завантаження ресурсів і купи усього, краще не велосипедити, навіть Карлмарк усе сам не осилив з ним працювала купа народу, а ще вони ліцензували якісь бібліотеки. Пропоную подивитись на BGFX — трохи напевно прийдеться переробити існуючий рендерер, та це доволі низкорівневий для побудови рендерера і дуже наближений до «модернового» OpenGL 3+. Якщо у вас рендерер залочений лише на OpenGL backend, то доведеться доволі багато переробляти щоб почати підтримувати OpenGL ES, Vulkan, Metal чи WebGL, не кажучи вже про Ditect X. А для движка це є доволі принциповим. А так пропоную подивитись на готові графічні движки — Ogre та Google Filament. Завантаження моделей здебільшого робиться через Asimp Lib. Також можете подивитись на повні движки з відкритим кодом як то : ioQuake3, RBDoom3 BFG чи Godot. Також є академісно відомий движок Cube 2, та добре дороблений і осучаснений форк Red Eclipse разом з однойменною грою.Власний рендерер, як і завантаження ресурсів станом на 2023 не дуже є сенс писати, краще пристосувати для свої потреб існуючі бібліотеки та додати свій функціонал.

В мене прям ностальгія. Колись я теж таким горів.
Зараз я вже нічого не підкажу. Але в свій час я майже завершив свою гру по типу Quake3/Unreal Tournament. Все писав сам з нуля принципово, С++ та DX9. Свого редактора не було, але був свій плагін для 3ds max, який зберігав об’єкти в моєму кастумному форматі. В плані рендеру за основу було взято deferred shading — на той час це було шось нове та модне.
Ось є трохи відосів:


Ще й мережевий мультіплеєр був. Тут теж робив все сам на udp сокетах, принцип був як у Quake3.

Єдине шо я малював і текстурував сам те все. Але малювати я не вмію, а текстури «взяв» з інших ігор. Тому квадратним ботам не дивуйтесь ))

Ухтиии, в мене тепер ше більше мотивації появилось, бо розумію, що це більш реально) можливо підкажеш які книги використовував для якихось моментів?

Дуже круто, краще за деякі теперішні висєри)

Звуки — в саме серденько.

Щось воно дуже-дуже схоже на Xonix. Хоча усі Qake подібні ігри схожі. Тим не меньше графіка схожа на Cube 2/Red Eclipse і подібне. Так само як і рівень. На щось з GtkRadian-ту не схоже.

opengl мертве, пиши на vulkan DX12

Не зовсім, особливо коли є якісь умови типу підтримка відносно старих консолей типу Sony PS 4 і т.п. Більшість сучасних рендеререрів мають варіативний бекенд, тобто хочеш Vulkan а хочеш Mate чи WebGL.

можливо хто не в курсі але на PS4 натівне API не OpenGL і воно більше схоже на vulkan

Просто допиши другою строкою, «Це мій пет-проект яким я займаюсь для самовдосконалення і заради кайфу.» і можеш більше не перед ким не виправдовуватися. Успіху.

Розумію автора, тому що сам мав подібний проект. В коментах було постійно одне і теж: візьми gl чи якісь інши готові рішення, де кольори і тому подібне. Але хочеться щось своє, унікальне. youtube.com/watch?v=...​4F36Y?si=FWo5mBpQHtvf8HAD

Раджу почитати про ECS — він вирішить як мінімум проблему збереження рівнів. Є чудовий канал на ютубі youtube.com/...​HPFwT&si=fLkqLurXWIdmPZH4 (там і про ECS) і ще є виступ на GDC розробників Overwatch на цю тему youtube.com/watch?v=...​jyNvw?si=PIU9QkjAldNJY4B1

Але я б почав з серії відео від Cherno)
Взагалі свій ігровий рушій для саморозвитку-навчання — шикарша річ, сам таким займаюся, тож успіхів)

Велике дякую, успіхів тобі в твоїй праці!)

Дякую)
Я повертаюся до свого рушія у ті моменти, коли основна робота допікає.. Писати якісний код та вчити новітні практики доволі часто неможливо при роботі в ентерпразі. А от як пет проект, для себе це нереально крутий спосіб актуалізовувати знання та навики.

До речі, ще дуже крутий «ресурс» для натхнення — ось цей ігровий рушій github.com/urho3d/urho3d. Його перестали підтримувати автори, код заграбастав (як не очікувано) якийсь російськомовний, але там є тег на останню оригінальну версію. Там навіть є редактор для рушія написаний на цьому ж рушії )

Ох і дарма ти це спитав))
Захейтять

Сам допомогти не можу, не розбираюсь, але колись дуже давно, 20 років назад, писав свій рушій, це був найчудовіший пет проект з усіх :-) тому продовжуй якщо подобається

Нехай хейтять, я не звертаю на це уваги) подобається дуже, тому і хочу розвиватись в такому

Зайшов глянути чи вже хтось написав про коровани...
Вибачте.

Тут дело даже не в том, что уже есть всё готовое и ты изобретаешь велосипед, с этим всё понятно. Дело в том, что даже при самом хорошем кейсе у тебя нет шансов это потом кому-то впарить ни за деньги, ни бесплатно. Вот я знаю одного чувака, он тоже запилил свой собственный движок на C++ под openGL, вернее пилит его с 2004 года. До сих пор пилит. При этом у него можно считать самый успешный кейс из всех инди-проектов, называется Alersteam, можешь запросто загуглить. Там он пилит одну и ту же игру с того времени с этим движком, распространяет через steam. Если ты в итоге добьёшься тех же результатов, что у него уже есть, можешь считать что ты достиг всего в инди-разработке. Но лучше не занимайся всякой хернёй.

Якось ти дуже прогнозований

Багато хто почне розказувати, що вже все готове, навіщо створювати велосипед або я в чомусь не правий, щось засталіре і т. д

я навіть не так як для монетизації, а для свого досвіду і скіллів, хочеться знати як все працює під капотом, якщо ти рахуєш, що це херня це твоя думка я її не осуджую) але я рахую, що це великий досвід, я достатньо багато часу займався анріалом, але вивчити його повністю теж задача не із простих та і не цікаво

Можливо варто глянути на cocos2dx, godot

Підписатись на коментарі