|
34 / 30 / 8
Регистрация: 22.02.2017
Сообщений: 404
|
|
Как написать свой игровой движок с нуля17.06.2018, 11:36. Показов 57030. Ответов 16
Метки нет (Все метки)
Возможно, тема надоевшая, но я поискал в интернете на эту тему и понял что в интернете(youtube, yandex, habr) нет ничего полезного, вернее оно есть, но без объяснений.
Сразу скажу что, C# я знаю больше чем C++, просьба отталкивать от этого. Что я подразумеваю под словом 'с нуля'. 1. Нужно определиться с языком программирования. C++ или C#? Если я напишу: "Мне нужен обоснованный ответ!", будет немного грубо. По этому, желательно обосновать ответ и написать названия книг по выбранному языку. Не нужно писать: вот C++ быстрее чем C#, пиши на C++ и т.д. 2. Какой фреймворк? (Если неправильно назвал поправьте) OpenTK, GLFW и т.д. Источники, где можно поподробнее разобраться. 3. Что нужно знать в языке программирования что бы написать свой игровой движок? Пример ответа: Нужно уметь пользоваться массивами, отладчиком, искать ошибки и т.д. 4. Ну и с чего стоит начать, после изучения языка. Вроде всё изложил.
0
|
|
| 17.06.2018, 11:36 | |
|
Ответы с готовыми решениями:
16
Написать свой движок с нуля Можно ли в Visual Basic написать свой игровой движок
|
|
61 / 58 / 11
Регистрация: 25.04.2017
Сообщений: 509
|
|
| 21.06.2018, 02:25 | |
|
Ответ на твой вопрос зависит от того что ты хочешь получить на выхлопе?
По тому что если тебе нужен CryBiteUnrealUnity 10K5000 то запросы одни, а если тебе двиг для майнкрафта то запросы другие. Добавлено через 1 час 0 минут Я предположу, что ты делаешь CryBiteUnrealUnity 10K5000. С языком все просто, c# это по сути скриптовый язык. В C# есть встроенный менеджер памяти, что для риалтайма - зло. В с++ есть возможность прямого управления памятью. У с++ есть шаблоны, что часто очень полезно. В остальном по сути братья близнецы. Хочется тебе с# бери его, если же не хочешь потом жалеть, то с++. Те же фростбайты, анриалы, юнити и край энжины написаны на c/c++, сам сделай выводы. Не по теме: У шарпа вообще плюсов нет :), помогите их найти? Единственный аргумент в таких спорах что я слышал, это дот нет и куча библиотек, так ведь у с++ тоже их море, один qt если вспомнить, а в контексте разработки с нуля с# не о чем Опять же, если ты будешь писать свой серьезный движ то использовать сторонние библиотеки не будешь, по тому что все будешь писать под свои запросы. По тому openTK тебе не нужен, тебе нужно что-то типа glfw+gluw, которые только лишь создают окно и импортируют функции api opengl (ты же на opengl смотришь?), но можешь и по хардкору #include <GL/gl.h> и самому импортировать функции и создавать окна. Все что нужно знать об openGL есть тут. Конкретно тебе нужно знать: 1.1) как создать окно Первый самый простой этап. 2.1) ты должен узнать что такое шейдер, как его скомпилить на гпу, как его применить. 2.2) как создать vao (обязательно нужно разобраться как использовать несколько атрибутов), и как его выводить (рисовать), тут ты узнаешь что заходит на вход вершинному шейдеру и что выходит из фрагментного. Тут ты уже поймешь как работает opengl, тебе станет очень радостно если ты добрался до сюда. 2.3) Ты должен загрузить изображение, создать текстуру, установить ее в семплер, внести изменения в код шейдера и любоваться своей текстурой. Второй этап закончен. Ты уже можешь что-то рисовать посредством шейдеров. ![]() Вот от сюда будет начинаться что-то серьезное. 3.1) Нужно будет разобраться с тем что такое fbo, как его создавать, как его применять/чистить и как в него рендерить. 3.2) Зная что такое fbo, нужно будет в первый раз что то отрендерить в текстуру (тобишь в fbo), сделаешь тени. Вот на этом моменте кончается 90% работы. Можешь начать с этого после изучения языка. Потом ты еще должен будешь выбрать аудио апи аля OpenAl. Что нужно знать о языке? Само собой нужно уметь работать с массивами, циклами (for, while), блоками ветвлений (if/else, switch/case), структуры. Потом ты должен знать как алоцировать память динамически, аля new и delete, указатели ( не умные, а обычные, умные таковыми только называются). Не плохо бы знать ооп (классы, наследование), опять же, перегрузка и таблицы виртуальных функций для риалтайма зло. Самые важные вопросы ты не спросил. Это что нужно знать о том что нужно знать о программировании. Так вот, знать нужно алгоритмы и патерны проектирования. Если с первым все ясно, то второе нужно по тому что иначе твой вдиж станет лапшой с такой скоростью что ты не заметишь.
2
|
|
|
|
|||||
| 23.06.2018, 16:38 | |||||
Сообщение было отмечено _lunar_ как решение
Решениеназвание вашей темы - как написать свой игровой движок с нуля. какие тут могут быть ещё вопросы о выборе языка? шарп не даст вам ничего, кроме врапперов (обёрток над низкоуровневыми API), а это сразу же потеря в производительности. Речь то всё таки об игровом движке, так что здесь как раз впору говорить о том, что C++ быстрее C#, точнее реализация графических api на плюсах быстрее, т.к. на этом языке вы общаетесь с железом почти на прямую. перспективный низкоуровневый API, с постоянными обновлениями. поддерживает большое количество видеокарт и операционных систем (DirectX 12 тоже неплох, но привязан к ограниченному числу видеокарт и только Windows 10). касаемо DirectX 10 и 11 - не вижу смысла писать на них, если есть 12. Рано или поздно, у всех будет стоять Windows 10 и у всех будут новые железки под капотом с необходимой поддержкой. доисторический DirectX 9 я вообще не рассматриваю. С таким же успехом можно рекомендовать 7 или 8, а чё такого... OpenGL тоже прошлый век, Vulkan со временем его вытеснит. остальное я даже не считаю за графические API. я тут набрасываю понемногу SDK на Vulkan, как только приведу всё в божеский вид, создам на форуме тему или блог с небольшими туториалами. PS: так для затравочки, моя реализация вулкана, но не окончательная, я уже много чего переделал по другому, но как пример пойдет https://github.com/tesla707/In... Vulkan-API
3
|
|||||
| 27.06.2018, 11:49 | ||
|
Действительно, сейчас начинать изучать OpenGL нет особого смысла, потому что OpenGL в Mac и iOS недавно был объявлен deprecated. Это начала конца OpenGL. Я всё равно изучаю OpenGL, потому что есть актуальный WebGL, а WebGL это почти тоже самое что и OpenGL ES. WebGL можно использовать из языка TypeScript, который придумал тот же человек, который придумал C#. Поэтому C# и TypeScript очень похожи. Есть хорошая книга, как научиться делать свой движок на WebGL Build your own 2D Game Engine and Create Great Web Games. Игра на WebGL запускается в один клик на любой платформе. Опять же для веб тоже можно использовать: 2D фреймворк Phaser (он поддерживает TS) или 3D движок Babylon.js, который поддерживает TypeScript и даже написан на нём.
3
|
||
|
5 / 6 / 0
Регистрация: 23.09.2018
Сообщений: 39
|
||
| 07.10.2018, 09:41 | ||
|
мультиплатформа (на пк, смартфоны, смарт TV, куча других устройств) это все еще - opengl в том или ином виде
0
|
||
| 06.11.2018, 15:35 | ||
|
NotGoodEnough, Есть очень хорошая книга по введению в шейдеры: WebGL. Программирование трехмерной графики WebGL - это тоже самое что и OpenGL. Я её всегда всем советую. Я в восторге от этой книги. Примеры книги легко переводятся на C# и C++. Веб-приложения на WebGL доступны сразу на всех платформах: Mac, Window, Linux, Android и iOS. Из этой книги тоже примеры можно легко переводить на C# и C++: Build your own 2D Game Engine and Create Great Web Games
1
|
||
|
34 / 30 / 8
Регистрация: 22.02.2017
Сообщений: 404
|
|
| 06.11.2018, 15:53 [ТС] | |
|
8Observer8, Спасибо
1
|
|
| 06.11.2018, 16:08 | |
|
Пример, как рисовать треугольник с помощью OpenTK на OpenGL 3.1 в трёх проектах: WPF, WinForms и Console:
1
|
|
|
Фриланс Pascal/Delphi etc
67 / 73 / 16
Регистрация: 25.11.2016
Сообщений: 263
|
|
| 14.03.2019, 14:55 | |
|
NotGoodEnough,
Те кто хочется писать движок не задаёт подобные вопросы без обид. ) На создание движка уходят годы жизни, можете ли вы себе такое позволить? Лучше берите готовый движок: Unity, HGE и т.д. и делайте сразу игру.
0
|
|
| 14.03.2019, 16:17 | |||
|
1
|
|||
|
Фриланс Pascal/Delphi etc
67 / 73 / 16
Регистрация: 25.11.2016
Сообщений: 263
|
|
| 16.03.2019, 12:51 | |
|
NotGoodEnough,
Если делать, то выбирай между D3D и OpenGL: Вот простой вводный урок (Delphi + D3D): https://mirgames.ru/topics/42
0
|
|
|
531 / 180 / 39
Регистрация: 18.08.2012
Сообщений: 907
|
||
| 26.09.2019, 11:02 | ||
|
0
|
||
| 26.09.2019, 11:48 | |
|
Чтобы начать делать свой движок на OpenGL, нужно сразу начать делать очень простые игры на нём: змейка, арканойд, пакман и т.д. По мере получения знаний и навыков будут развиваться ваши простые игры и движок, становясь всё более сложными. Не даётся всё быстро, легко и само собой. Нужно трудиться, трудиться и трудиться и не сдаваться. Полюбите математику и дело пойдёт веселее.
Когда дойдёте до реализации скелетной анимации загруженной из Blender в Collada (.dae) формат, то рекомендую делать по этим видео урокам, лучшего примера я в сети не нашёл: OpenGL Animation Tutorials OpenGL Skeletal Animation Tutorial #1
0
|
|
|
1 / 1 / 0
Регистрация: 26.10.2016
Сообщений: 75
|
|
| 24.01.2020, 14:29 | |
|
Глянь тут
0
|
|
| 24.01.2020, 15:58 | |
|
Судя по большому множеству крайних созданных тем и постов в профиле автора темы - для программирования игр он выбрал движок Unity и язык C#.
0
|
|
|
|
|
| 25.01.2020, 12:01 | |
|
0
|
|
| 25.01.2020, 12:01 | |
|
Помогаю со студенческими работами здесь
17
Стоит ли разрабатывать свой игровой движок как написать свой движок для сайта? Написать свой движок Написать свой движок или воспользоваться существующим? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|