![]() |
Модераторы: Rickert |
![]() ![]() ![]() |
|
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: нет Всего: 3 |
Однажды прочитал статью, где была объяснена причина использования скриптовых движков в играх: игра готова, но заказчику (или кому другому из главных - не важно) не понравилось, например, поведение NPC, т.е. AI. Программисту приходится переписывать код и перекомпилировать всю игрушку. Но если реализовать AI скриптами, то перекомпилировать ничего не надо. Программист может прямо при заказчике переписать неудачное поведение - и все готово.
Спросил у знакомого программиста. Он сказал, что для того, чтобы получить подобную гибкость и уменьшение трудозатрат на переделку, поведение объекта (например, воина) отделяется от описания его внешнего вида (и др.), т.е. от данных. Для этого в игры встраивают скриптовые движки. Это ситуация для игр. Но меня интересует не сколько ситуация в играх, сколько в пакетах 3-d моделирования. Майя, 3дmax, Блендер и др. имеют свои скриптовые движки со своими языками. 1.Для чего применяются скрипты в пакетах моделирования? Программировать поведение(методы) объектов: сфера, куб, тор и т.д.? 2. Есть набор примитивов. Какая их часть (что именно) остается реализованным на компилируемом языке (как бы "жесткий каркас"), а что реализовано на скриптах? Или каждый примитив - это всего лишь структура данных в памяти (динамические переменные), доступ к которым можно получить скриптами? В Майе, например, создал сферу, а затем, в командной строке, увеличил радиус и т.п. Или в Блендере - скриптом можно создать примитив и назначить ему значения: высоту, ширину и т.п. 3. Есть ли инфа, как скриптовый движок прикручивается к компилированному коду и как происходит взаимодействие скриптов со структурами данных? |
|||
|
||||
Rickert |
|
||||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Не только поведение - всё программировать. Изначально реализовывалась скриптовая система + API, а потом на их основе уже создавалось всё. Там нет никаких шаблонов.
Это тебе надо просто начать изучать скриптовые движки. Например lua -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
||||
|
|||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: нет Всего: 3 |
Rickert, как это, все программировать? Начиная от меню и заканчивая примитивами? А что же остается для компиляции? (блендер в виду не имею, потомучто слышал, что он весь на питоне написан).
"Изначально реализовывалась скриптовая система + API". Но ведь апи к чему-то прикручена. К темже примитивам, наконец. Без апи к ним доступ не получишь. И еще, для себя уточнить. АПИ - это набор функций, с помощью которых можно управлять объектом: высота, ширина, толщина, положение в пространстве, скорость движения и т.д. (т.е. записывать в переменные структуры данных свои значения)? Раздельная компиляция в с++: данные в отдельном файле, методы (API) - в другом. В разрезе скриптовых движков: данные в отдельном файле (на компилируемом языке), методы (API) - в другом (написаны на скриптах и скармливаются интерпритатору). А питон дляизучения подойдет? |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Я ж тебе говорю: часть там на криптах, часть на api. То, что на api - то компилится.
mel скрипты рассматривай. Maya api - это универсальный набор функций для работы с не только объектами и примитивами. С его помощью можно создавать окна, программировать поведение объектов, писать плагины короче. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: нет Всего: 3 |
Сегодня опять беседовал с тем программистом. Говорили относительно игр, но кады и 3d-пакеты отличаются только отсутствием "движков". Все, что работает с железом (вывод изображения, покадровая отрисовка, работа с музыкой, работа с памятью и прочее), а также стандартные алгоритмы (обнаружение коллизий, антиаласинг и прочее) - компилируются и являются "жестким каркасом". Различные абстрактные классы (примитив, персонаж, оружее и прочее) - также описываются на компилируемом языке, однако содержат они в себе одни виртуальные функции. А уж работать с этими виртуальными функциями (т.е. заполнение, последующее улучшение) - через скрипты.
Привел пример: Есть клас воина. В нем различные виртуальные функции: рост, вес поведение, еще что-то. Программист программирует эти функции скриптами, а уже затем эти функции передаются "жесткому каркасу": отрисовать полигон, масштабировать персонаж в соответствие с заданным ростом, перерисовать персонаж на экране, если он двигается, определить коллизии персонажа с другим объектом и т.д. Было бы неплохо посмотреть реальный код (хотя это нереально). В общих чертах представляю, однако может оказаться не правильно. Вроде я начинаю понимать, но для полного усвоения потребуется еще пара дней. Поэтому вопросов пока нет, хотя тему не закрываю. |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
ftp.idsoftware.com там ищи исходники q3, q2 - вот тебе реальные примеры. Удачи! -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: нет Всего: 3 |
Rickert, спасибо за пожелание....
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |