×

Хочу создать свой 2d игровой движок на C++

Здравствуйте, дорогие программисты!!!!!! Нужна ваша помощь. Я хочу создать свой собственный 2d игровой движок на с++. Можете подсказать какие-нибудь статьи или книги для ознакомление. Заранее спасибо

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

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
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

Можно как вариант сделать движок на основе SFML www.sfml-dev.org или Allegro liballeg.org например (на сайтах обоих библиотек есть ссылки на книги и туториалы). Ну и присобачить к этому делу всякие библиотеки для рендеринга, для физики и т.д., а также какой-нибудь скриптовой язык (Lua, AngelScript www.angelcode.com/angelscript , Python, Squirrel ru.wikipedia.org/wiki/Squirrel , etc.).

P.S. Вот, например, есть Urho3D urho3d.github.io (в 2D тоже умеет, кодить можно на C++, Lua, AngelScript или С#) и Torque2D torque2d.org , www.garagegames.com/products/torque-2d (кодить можно на C++, можно на TorqueScript). Оба движка написаны на плюсах, в обоих можно кодить на плюсах. Если таки хочется создать свой движок, можно посмотреть исходники этих — как они сделаны (можно вообще просто сделать редактор уровней для одного из них движков). Можно еще посмотреть как сделан движок Irrlight irrlicht.sourceforge.net (хотя он 3D, но слышал, что он довольно простой для изучения).

Библиотека SDL 2 + книга Game Programming Patterns

-

еще есть 3д визуалайзер

Да ладно уж, ничего. А GNUplot?
А вот тут чувак портит (не знаю правда, насколько успешно) питоновский matplotlib github.com/lava/matplotlib-cpp

А теперь сравните с тем, что есть в матлабе и насколько оно удобно.

Так питоновский матплотлиб — это ж и есть порт матлабовской графики, не?
У меня с ним немного опыта (мне вполне R’овской графики хватает), так что сложно привести конкретные примеры. Но может, ты просто не любишь кошек, потому что не умеешь их готовить? :)

как мне, например вывести один фрейм видео и нарисовать на нем разное

Ну, когда у меня (давно-давно) такая задача возникала, я экспортировал из adobe premier в adobe photoshop и рисовал :)

Кстати, а если ниша не занята — так ты сам и создай. Монетизация — по аналогии с Qt. И топикстартера в падаваны возьми.

но речь про С++ же

Ну так сам питон на чем написан?
Ссылка github.com/lava/matplotlib-cpp что я уже приводил выше — это как раз чтоб, так сказать, этого графического слона вытащить из удава, и использовать в плюсах.

Я ему и посоветовал полезное

Вредное ты ему посоветовал :)
Уже потому, что (его силами) нерешаемое. Ибо чтоб сделать удобно — надо быть самому юзером с domain knowledge

Ссылка github.com/lava/matplotlib-cpp что я уже приводил выше

это враппер из с++ в питон. то еще извращение

долбанутости Qt

шо!?!?

А теперь вопрос, как мне, например вывести один фрейм видео и нарисовать на нем разное без пристегиваниями ремнями к потолку и чтобы не тормозило безумно.

проще всего Qt. там можло ловить каждый декодированый фрейм и накладывать сверху что угодно
с выебонами гстример ессно
ну или жди манну с неба, что ктото для тебя напишет реалтаймовкий рисователь графиков
удачи

ну хочется ТС гробануть корован, а твои графики ему «досраки» © (тм)

Игра «назови что-то, где есть 2d»?) Box2D — физический движок, который можно интегрировать в свой игровой движок. Как и Chipmunk2D. Но физика — не самое главное вначале.

Игра

скажи хоть что нибудь. каждый голос важен

Не советую слушать «специалистов». Движки создавать надо как для себя, так и для других. И не только, чтобы грабить корованы. В прошлом году на Game Gathering был отличный доклад на эту тему habr.com/...​ocialquantum/blog/423175.
Создание игрового движка (хоть и для себя) — это значительно лучше прочтения книг по програмированию, прохожденю курсов онлайн и тд.
Лично мне нравится серия видео www.youtube.com/...​heChernoProject/playlists. Там можно найти как о создании игрового движка (в процессе), так и о создании других компонент.
Лично я использую SDL (и сопутствующие библиотеки по загрузке звуков и изображений) как основу всего, а уже поверх написаны все остальные компоненты.
Для себя также разбирал cocos2d-x, чтобы понять некоторые моменты.
В общем: путь этот долгий и очень трудный, но профит в любом случае будет. Так что удачи!

Также, советую смотреть в сторону ECS архитектуры (www.gamedev.net/...​ign-pattern-part-1-r4803 )

Вот спасибо, так как другие не дали толком ответа, красавчик

Game Engine Architecture [Jason Gregory, Jeff Lander, Matt Whiting]

Слушай, а зачем? Игровых движков нынче больше, чем плагинов под Жыквери. Если цель выйти на рынок, то вряд ли получится что-то в одиночку. Если для себя, то сначала посмотри на готовые решения, наверняка найдешь что-то нужное для себя. А если цель просто покодить и повысить скиллы, то готовся... Тебе нужно прочитать гору книг по проектированию, гору книг по работе с физикой, еще больше книг по работе с графикой, пару книг про аудио и еще кучу исторической литепатуры по истории геймдева и, собственно, игровых движков. И это, я еще не говорил о том, что нужно понимать как устроен папйплайн рендера, уметь работать с низкоуровневым апи видеокарты, понимать что обрабатывается процессором, что графическим ускорителем, что хранится в ОЗУ, что в ПЗУ. И это только для PC. А еще есть Мак, Линух и мобильные платформы со своими осоьенностями и приколами. С одной стороны, зачем оно тебе надо? С другой стороны настоятельно рекомендую. Даже, если движок не напишешь, скиллы свои повысишь обязательно.

Конечно я понимаю что это займёт очень много времени, но лично для себя я готов, чтоб узнать свои возможности

Нет исходных данных. Нечего и советовать.
Какой GAPI интересует? Под какую платформу? Какой уровень знаний предметной области? Какой уровень знаний С++?

Берешь UE , переопределяшь все классы на работу в 2х мерном пр-ве и готово!

Надо было до пятницы подождать. В пятницу новые движки лучше идут.

А зачем новые языки программирования создавать?

Потому, что они решают определённые проблемы. Какую проблему решает фреймворк?

Фреймворк решает определенные проблемы. Какую проблему решают языки?

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