Войти
ПрограммированиеФорумОбщее

C чего начать писать свой движок ? И как его проектировать

Страницы: 1 2 3 4 Следующая »
#0
19:33, 19 сен 2022

Для того что бы повысить скиллы, понять технологии. В основном интересует графика.Плюсы тоже надо подтянуть.
Думаю начать с directx11, потому что вроде он самый лёгкий и доступный из относительно современных.
Вероятно OGL тоже, хоть он вроде уже труп, но с него многие начинали.
Платформа PC.
Вчера посмотрел текстовый туториал и пролистал Фрэнка Луну.Но чёт не вижу смысла делать что то своё основываясь на чужом.
Нужна структура движка и какая то система сущностей.
Как получить суперспособность проектирования ?

#1
(Правка: 19:58) 19:58, 19 сен 2022

IGamedevStudio
> Как получить суперспособность проектирования ?
Пишешь, находишь что получилось неудобно, переписываешь. Снова находишь что неудобно, снова переписываешь. И так лет 5.

#2
20:22, 19 сен 2022

IGamedevStudio
> Как получить суперспособность проектирования ?
Можно на досуге прочитать книжку Game Engine Architecture.

#3
21:15, 19 сен 2022

Мне кажется, движок, это слишком сложно, чтобы просто так взять и "спроектировать". Возьми что-то системно более простое, какую -то подсистему. И вот когда ты её отточишь до блеска, переноси опыт на что-то смежное. И так итеративно, пока не надоест.

#4
21:45, 19 сен 2022

MrShoor
> Пишешь, находишь что получилось неудобно, переписываешь. Снова находишь что
> неудобно, снова переписываешь. И так лет 5.
+1

#5
21:54, 19 сен 2022

IGamedevStudio
Начни с ресурсного менеджера.

#6
22:47, 19 сен 2022

IGamedevStudio
Ну надо для начала разобраться что понимается под движком.

Есть низкоуровневые инструменты openGL DirectX и.т.д которые позволяет визуализировать примитивы (работать с полигонами, вершинами напрямую).
Создавать на них движок в одиночку не получится, так как технологии постоянно меняются и требуется адаптировать тонну кода под разные задачи. Но въехать как примерно устроены низкоуровневые технологии получится.
Могу порекомендовать книгу:
Физика для разработчиков компьютерных игр (+ CD-ROM)
как раз поковыряться с кодом для начала.

Есть готовые универсальные движки-инструменты например unity. Там уже имеются необходимые инструменты, 3D объекты, UI инструменты, встроена физика, имеются готовые функции по работе с аудио, светом, камерой, шейдерами. И все это работает под самыми разными операционные системами. То есть под капотом уже реализовано самое "неинтересное" и можно сосредоточиться на разработке чего то высокоуровнегого(а не ковыряться почему линия моргает если проходит через куб и почему коллайдер не срабатывает корректно при столкновении).  Соответственно можно на unity написать свой движок для разработки конкретной игры и получить как раз необходимый опыт что такое текстуры материалы, коллайдеры, как работает свет, как выстроить архитектуру игры и.т.д.

Ну и цель надо определить: для чего хочется тратить много времени на это? Игру сделать или просто поковыряться или набраться опыта чтобы потом работать в этой сфере или заработать очень много денег.

#7
23:18, 19 сен 2022

IGamedevStudio
> чёт не вижу смысла делать что то своё основываясь на чужом
это как бы этап обучения, если ты хочешь его пропустить, то просто не будешь знать что вообще нужно делать
чему подтверждением эта тема

#8
6:14, 20 сен 2022

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

#9
7:23, 20 сен 2022

Скачать с гитхаба любой, что нравится и любой, что можешь собрать

#10
9:25, 20 сен 2022

Начни с ковыряния существующих с открытыми исходниками.

#11
(Правка: 9:34) 9:34, 20 сен 2022

Dimich
> Можно на досуге прочитать книжку Game Engine Architecture.
Читал. Пустая трата времени.

MrShoor
+1

#12
(Правка: 12:02) 11:57, 20 сен 2022

Важно сразу правильно выделить сущности. И придумать метафоры для сущностей, например рендер "подглядывает" на геймстейт через "окно", контроллеры "манипулируют" интенциями, экторы "выступают" под инфлюенциями менеджеров огибания препятствий. Следующим шагом надо абстрагировать сущности так, чтобы неважно было какая сущность, но с ней можно было бы вызвать любую функцию. Если функция ничего не сможет сделать с сущностью, то должна быть подготовлена точная система обработки исключений и записывания логов в облачные сервера, иначе вы рискуете упустить баг, если вдруг файл логов вы записали не в ту директорию.

Не стоит пугаться современного и ещё непроверенного стандарта С++, а наоборот - активно использовать не только виртуальные, но и астральные методы классов. Важно не изобретать велосипед, а пользоваться проверенными структурами из стандартной библиотеки. Много людей думают, что в состоянии написать массив, но это очень нетривиальная задача, там нужно хранить его конец, а если вдруг его придется увеличить, то такое невозможно достичь без применения стратегий деаллокации и аллокации памяти. Ещё вашу игру может понадобиться запустить на машинах, где память физически расположена по спирали, это стоит сразу учесть и вовремя абстрагироваться.

Стоит использовать хорошие проверенные паттерны, такие как Синглтон и Ютачмайдиндиндон. Полезно при проектировании прибегать к стратегии Cash&Carry и придерживаться принципа DILDO (Do It Like they Did in the Old days). Ну и помнить, что для каждой задачи есть свой инструмент, поэтому не стоит использовать систему рендеринга текста для скиннинга на GPU.

#13
(Правка: 12:24) 12:21, 20 сен 2022

nes
> Начни с ковыряния существующих с открытыми исходниками.
И не только с открытыми. Даю самый действенный рецепт:
берешь жесткие ноотропы, разучиваешь комплекс упражнений, чтобы не убить здоровье и закрываешься на год (или 5) дома,
изучаешь исходники слитых и реверснутых игр (именно игр), а потом открытые исходники движков - получаешь полное понимание как работают движки.

#14
16:43, 20 сен 2022

vladimirmir2012
> Что касаемо разработки движка, то скорее это не для "начинающих"
А что для начинающих ?
Хелло ворлд я уже прошел.
Свои кривые проги писал, правда не очень много.
DXUT раскапывал, в движках копался, только это было очень давно.
Нужно что то мотивирующее.
Рендер с шейдерами и прикрутить физику, попинать кубик по сцене.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее