Репутація українського ІТ. Пройти опитування Асоціації IT Ukraine
×Закрыть

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

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

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

Физический движок хоть сам не пиши. Есть например замечательный box2d

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

Я про удобно, а не про спать на потолке.

Ты мне предлагаешь ТЗ написать. Образец, как должно быть — матлаб, хотя и в нем есть дурацкие моменты.

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

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

А теперь сравните с тем, что есть в матлабе и насколько оно удобно.
Но да, можно спать и на потолке, если ремнями пристегнуться — это про GNUPlot.
Пока только один продукт удобен для работы с графиками и видео — это матлаб. Да там умные люди подумали о том, чтобы сделать удобно и грамотно. И да многое там могли бы и лучше сделать. Но от добра добра не ищут.
А еще один добрый чел из Mathworks сделал GUILayoutToolbox (опенсурсный) и теперь гуй с графиками там за 15 мин пишется и без всей долбанутости Qt и подобного.
Возможно у Питона есть приличное что (я питон не юзаю).

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

С вариантом спать на потолке я тебе еще с пару десятков либ приведу.

З.Ы. А так я могу извернуться и прямо в видео память писать и вообще солнце ручками закатывать.

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

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

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

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

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

Так питоновский матплотлиб — это ж и есть порт матлабовской графики, не?

Не знаю, но речь про С++ же.

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

Это ТС нечем заняться, а не мне. Я ему и посоветовал полезное, а не грабить корованы. Задачи там схожи.

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

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

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

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

По мне движок 2D задача не проще. Тут тоже нужно быть юзером игровых API, а не тем, что мышку возит и корованы грабит. Вот только приличных движков уже есть.

Ссылка 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х мерном пр-ве и готово!

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

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

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

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

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