Как вы пишете 3D-игру?
Я всегда задавался вопросом, как игровые программисты объединяют игровые персонажи, сделанные во внешнем программном обеспечении для 3D моделирования, например майя или 3d max, и фактическая логика игры, сделанная там, где есть любимый язык программирования, например, c или С++.
Как вы можете объединить эти две вещи вместе, и каков фактический процесс построения игры от моделирования символов до программирования?
Некоторые из вещей, которые заставляют меня задаться вопросом, как, вы программируете движения персонажей из кода или из 3d модели?
Примеры были бы действительно приятными для просмотра.
Ответы
Ответ 1
Большая часть информации, например движения символов, фактически хранится вне кода. Это довольно простой процесс:
- Художник создает 3D-модель в Maya или что-то еще, а затем сохраняет ее в файле. Скажем, они назвали его "Голлум .3D".
- Теперь "Gollum.3D" содержит множество чисел, представляющих точки модели, текстуры и все остальное.
- Программный код затем считывает файл "Gollum.3D" - все его точки модели, текстуры и все остальное, а затем выполняет множество математических вычислений, чтобы рассчитать, как будет выглядеть 3D-сцена, учитывая все числа, представляющие модель.
Оказывается, все в игре заканчивается тем, что хранится отдельно от кода, а код просто читает его и объединяет все вместе во время игры. Когда я говорю все - я имею в виду ВСЕ! Весь текст, статистика для очков хита и количества урона от оружия, изображения на экране меню и даже искусственный интеллект хранятся отдельно от кода программы в сценариях. Программный код заканчивается очень мало.
Возможно, вы слышали о том, как люди делают моды в играх. Моддеры - это люди, которые редактируют данные, находящиеся за пределами кода программы, что, в свою очередь, изменяет игру так, как им это подходит. Они просто воспользовались тем, что в программном коде не записаны все, что касается игры (за исключением нескольких основных вещей).
Ответ 2
В отличие от любимого ответа, я бы рискнул и сказал, что это на самом деле довольно большая задача, если вы ссылаетесь на наличие персонажа, у которого есть аниматон.
Конечный результат будет состоять в том, чтобы задействовать большую часть функциональных возможностей, связанных с script и конфигурационными файлами (другими словами - управляемыми данными), но процесс создания такой системы не прост.
Обычно вы начинаете с внешнего модельера, где вы делаете следующее:
1. построить модель кожи.
2. Скомпонуйте скелет и прикрепите к коже в соответствии с весами и т.д.
3. Примените все текстуры и материалы по желанию.
4. экспортируйте в ваш двигатель.
Теперь вы можете приступить к созданию своего банка анимации для этого скелета персонажа или любого подобного, если вы связываете его с более чем одним (обычно это случай, если скелет достаточно близко или модульный).
Некоторые из анимаций будут содержать только частичную иерархию (чтобы иметь возможность смешать только часть анимации - например, нижняя часть тела работает, а верхняя часть тела может использовать другую анимацию или обратную кинематику - стрельба в противника во время прогона - это хорошим примером для этого).
Теперь, наконец, вы попадаете в часть кода.
Вам необходимо создать систему, которая будет ассоциировать анимацию с каркасом и правильно отобразить ее.
Эта система также должна быть способна сочетать анимацию с IK (например, - перемещение между стоячим режимом работы) и возможность комбинирования нескольких анимационных и частичных анимаций - например, ходьба (анимация всего тела), просмотр кого-то (IK для верхней части тела), размахивая рукой (IK с частичной анимацией) и дыханием (частичная анимация) в то же время объединит 4 разных частичных или полных сочетания.
Я не упоминал о том, что вам нужно построить импортера, и есть также разница между действием и анимацией для действия. Действие может иметь несколько анимаций, объединенных или выбранных случайным образом - они будут связаны через файл сопоставления данных.
Я бы предложил взглянуть на XNA - у него много примеров, импортеров и многое другое, и он содержит много базовых материалов в библиотеках, поэтому вам не нужно начинать с нуля.
Как отмечали люди, Blender3D - хороший выбор для редактора +, и поэтому может быть Torque только для опыта игрового движка.
Последнее слово - если вы собираетесь попробовать, это не будет прогулкой в парке, но эй - так весело, и результаты заставят вас гордиться собой.
Ответ 3
Взгляните на Учебники Blender Game Engine, а также их Project Apricot, который был открытым проектом по созданию 3D-игры с игровым движком Blender.
Ответ 4
Создание трехмерных символов и программирование вашей 3D-игры - это два разных процесса.
Обычно вы рисуете свой 3D-персонаж в 3D-моделире (Blender, Maya, 3D Studio Max и т.д.), вы экспортируете этот символ в файл (.obj,.md2 и т.д.), и вы написали код в 3D чтобы обработать импорт персонажа в ваш движок.
Хотя это звучит довольно сложно, 3D-движки игр поддерживают все эти вещи, не записывая миллионы строк кода и повторно изобретая колесо.
Возьмем, к примеру, Ogre3D, 3D-движок с открытым исходным кодом. Вам не обязательно быть гуру программирования, чтобы иметь простой пример и работать в считанные минуты. Я предлагаю вам взглянуть на их wiki и их tutorials.
Например это простой учебник по созданию и экспорту ваших простых моделей из 3D Studio Max и их импорт в Ogre 3D
Ответ 5
У меня мало опыта в программировании игр, но я нашел структуру XNA и ресурсы довольно просвещенными. Вы можете найти массу примеров и способов и довольно полезный форум здесь http://creators.xna.com/en-US/
Ответ 6
Анимация может быть выполнена из программного обеспечения 3D-моделирования, а затем до кода для запуска различных анимаций на основе логики игры. Модели получают от программного обеспечения для моделирования в игре через общие форматы. Например, инфраструктура XNA может считывать некоторые из наиболее распространенных форматов модели.
Ответ 7
Вы должны использовать 3D-рендеринг. Многие из них бесплатны (Ogre3D является хорошим), и обычно у них есть возможности для импорта почти любого типа сетки, созданной из общих программного обеспечения для моделирования.
Ответ 8
Посетите Unity3d.com, и вы мгновенно сделаете свою игру. Анимации выполняются в программном обеспечении моделирования Maya и т.д., Но некоторые из них выполняются в движке. Unity делает физику легкой, и вы более или менее создаете свой мир и связываете, как взаимодействуют объекты.
Пример. У вас есть камера → Вы можете установить камеру из пользовательского интерфейса, чтобы следовать за основным символом и преобразованием XYZ, где находится камера. Это также можно сделать визуально.
Посмотрите, это очень весело и меньше кода, чем вы могли себе представить. Оттуда вы можете, конечно, написать свой собственный код, чтобы сделать свой собственный уникальный игровой процесс. Он легко объясняется как запись script и перетаскивание его на объект, который вы хотите запустить script.
Это как непрофессионал, который я могу получить. Приветствия.
Ответ 9
Поскольку эта тема видит новую жизнь, я решил, что буду способствовать. Я использую Autodesk 3Ds Max более 12 лет, производя 3D-продукты и больше ориентируясь на анимацию, но знаю, что Autodesk предоставляет обширную библиотеку классов с расширенными встроенными скриптовыми модулями и встроенными возможностями, в которых есть все инструменты для записи 3D игра в рамках этой программы. Разумеется, вам нужно было бы узнать "Max Script" и как взаимодействовать с такими встроенными пакетами с именами типа "Biped", "Particle Flow", движок моделирования реальности "Havoc" и т.д., Не говоря уже о механизм рендеринга (обычно это строка сканирования по умолчанию, Mental Ray, VRay), для которой потребуется множество параметров.
Если у вас нет бюджета или вы используете его с открытым исходным кодом, посмотрите Blender! Удивительно, что может предложить это программное обеспечение с открытым исходным кодом 3D и сообщество. У них даже есть "игровой движок", который может подключиться к нему: http://www.blender.org/features/ У них есть ресурсы, которые помогут вам начать работу.
Я хочу добавить также, что Unreal выглядит довольно многообещающим, так как они выпустили его для "бесплатного", просто прочитайте мелкий шрифт на 5% роялти, если ваша игра действительно взлетит! https://www.unrealengine.com/what-is-unreal-engine-4
Ответ 10
Подумайте немного о том, как вы все это делаете в 2D, это в значительной степени то же самое с 3D, алгоритмы просто разные, и есть разные аспекты, о которых нужно заботиться.
Остальная часть того, что вы просите, является вопросом дизайна и зависит от игры и программиста. Можно написать сложное моделирование для перемещения своих персонажей, в то время как кто-то другой может полагаться только на скелетные анимации. Кто-то может хранить логику игры вдоль 3d-моделей, а другие просто нет.
Примеры? Возможно, исходный код землетрясения - хороший источник для изучения.
Ответ 11
Написание игрового движка - сложная задача. Мое предложение - использовать один из существующих движков (выберите из списка: http://www.devmaster.net/engines/).
При выборе двигателя вам необходимо принять во внимание следующее:
- Лицензия (вы хотите опубликовать, у вас есть бюджет, это открытый исходный код).
- Язык программирования/Сценарии (на каком языке вам наиболее удобно)
- Целевая платформа (Windows/Linux/Mac/Консоль/Телефон)
- Pipeline (экспортеры от вашего инструмента 3D-моделирования и импортеров в двигатель)
Ваш вопрос больше связан с последним пунктом, вы должны выбрать движок, который может импортировать активы, которые вы производите, например, в 3DS, Maya в движок, так что вам не нужно беспокоиться о форматах файлов, потому что это сделает вы более продуктивны, так как вы только фокусируетесь на игре.
Ответ 12
Я не заметил слишком много ответов о том, что именно искать. В последние годы появилось намного больше информации о том, как сделать это несколько проще, но все же довольно сложно.
Бесплатно
Paid
Ответ 13
Мне кажется странным, что существует так много ссылок для изучения конкретных инструментов. Если бы я собирался освоить разработку игр, мне бы хотелось, чтобы для этого был общий форум/сайт. Сосать как GameDev.net.
PS: Это подразумевается как дополнительный ответ, а не полный.