Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > Для чего и где применяются скриптовые движки?


Автор: Gunslinger 6.6.2007, 17:41
Однажды прочитал статью, где была объяснена причина использования скриптовых движков в играх: игра готова, но заказчику (или кому другому из главных - не важно) не понравилось, например, поведение NPC, т.е. AI. Программисту приходится переписывать код и перекомпилировать всю игрушку. Но если реализовать AI скриптами, то перекомпилировать ничего не надо. Программист может прямо при заказчике переписать неудачное поведение - и все готово.
Спросил у знакомого программиста. Он сказал, что для того, чтобы получить подобную гибкость и уменьшение трудозатрат на переделку, поведение объекта (например, воина) отделяется от описания его внешнего вида (и др.), т.е. от данных. Для этого в игры встраивают скриптовые движки.
Это ситуация для игр.
Но меня интересует не сколько ситуация в играх, сколько в пакетах 3-d моделирования. Майя, 3дmax, Блендер и др. имеют свои скриптовые движки со своими языками.
1.Для чего применяются скрипты в пакетах моделирования? Программировать поведение(методы) объектов: сфера, куб, тор и т.д.? 
2. Есть набор примитивов. Какая их часть (что именно) остается реализованным на компилируемом языке (как бы "жесткий каркас"), а что реализовано на скриптах? Или каждый примитив - это всего лишь структура данных в памяти (динамические переменные), доступ к которым можно получить скриптами? В Майе, например, создал сферу, а затем, в командной строке, увеличил радиус и т.п. Или в Блендере - скриптом можно создать примитив и назначить ему значения: высоту, ширину и т.п.
3. Есть ли инфа, как скриптовый движок прикручивается к компилированному коду и как происходит взаимодействие скриптов со структурами данных? 

Автор: Rickert 7.6.2007, 07:02
Цитата(Gunslinger @  6.6.2007,  17:41 Найти цитируемый пост)
1.Для чего применяются скрипты в пакетах моделирования? Программировать поведение(методы) объектов: сфера, куб, тор и т.д.? 

Не только поведение - всё программировать.
Цитата(Gunslinger @  6.6.2007,  17:41 Найти цитируемый пост)
2. Есть набор примитивов. Какая их часть (что именно) остается реализованным на компилируемом языке (как бы "жесткий каркас"), а что реализовано на скриптах? Или каждый примитив - это всего лишь структура данных в памяти (динамические переменные), доступ к которым можно получить скриптами? В Майе, например, создал сферу, а затем, в командной строке, увеличил радиус и т.п. Или в Блендере - скриптом можно создать примитив и назначить ему значения: высоту, ширину и т.п.

Изначально реализовывалась скриптовая система + API, а потом на их основе уже создавалось всё. Там нет никаких шаблонов.
Цитата(Gunslinger @  6.6.2007,  17:41 Найти цитируемый пост)
3. Есть ли инфа, как скриптовый движок прикручивается к компилированному коду и как происходит взаимодействие скриптов со структурами данных?  

Это тебе надо просто начать изучать скриптовые движки. Например lua

Автор: Gunslinger 7.6.2007, 16:16
Rickert, как это, все программировать? Начиная от меню и заканчивая примитивами? А что же остается для компиляции? (блендер в виду не имею, потомучто слышал, что он весь на питоне написан).
"Изначально реализовывалась скриптовая система + API". Но ведь апи к чему-то прикручена. К темже примитивам, наконец. Без апи к ним доступ не получишь.
И еще, для себя уточнить. АПИ - это набор функций, с помощью которых можно управлять объектом: высота, ширина, толщина, положение в пространстве, скорость движения и т.д. (т.е. записывать в переменные структуры данных свои значения)? Раздельная компиляция в с++: данные в отдельном файле, методы (API) - в другом. В разрезе скриптовых движков: данные в отдельном файле (на компилируемом языке), методы (API) - в другом (написаны на скриптах и скармливаются интерпритатору).

А питон дляизучения подойдет? 

Автор: Rickert 8.6.2007, 04:58
Цитата(Gunslinger @  7.6.2007,  16:16 Найти цитируемый пост)
Rickert, как это, все программировать? Начиная от меню и заканчивая примитивами? А что же остается для компиляции? (блендер в виду не имею, потомучто слышал, что он весь на питоне написан).

Я ж тебе говорю: часть там на криптах, часть на api. То, что на api - то компилится.
Цитата(Gunslinger @  7.6.2007,  16:16 Найти цитируемый пост)
"Изначально реализовывалась скриптовая система + API". Но ведь апи к чему-то прикручена. К темже примитивам, наконец. Без апи к ним доступ не получишь.

mel скрипты рассматривай. Maya

Цитата(Gunslinger @  7.6.2007,  16:16 Найти цитируемый пост)
И еще, для себя уточнить. АПИ - это набор функций, с помощью которых можно управлять объектом: высота, ширина, толщина, положение в пространстве, скорость движения и т.д. (т.е. записывать в переменные структуры данных свои значения)? Раздельная компиляция в с++: данные в отдельном файле, методы (API) - в другом. В разрезе скриптовых движков: данные в отдельном файле (на компилируемом языке), методы (API) - в другом (написаны на скриптах и скармливаются интерпритатору).

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

Автор: Gunslinger 8.6.2007, 15:40
Сегодня опять беседовал с тем программистом. Говорили относительно игр, но кады и 3d-пакеты отличаются только отсутствием "движков".  Все, что работает с железом (вывод изображения, покадровая отрисовка, работа с музыкой, работа с памятью и прочее), а также стандартные алгоритмы (обнаружение коллизий, антиаласинг и прочее) - компилируются и являются "жестким каркасом". Различные абстрактные классы (примитив, персонаж, оружее и прочее) - также описываются на компилируемом языке, однако содержат они в себе одни виртуальные функции. А уж работать с этими виртуальными функциями (т.е. заполнение, последующее улучшение) - через скрипты.
Привел пример:
Есть клас воина. В нем различные виртуальные функции: рост, вес поведение, еще что-то. Программист программирует эти функции скриптами, а уже затем эти функции передаются "жесткому каркасу": отрисовать полигон, масштабировать персонаж в соответствие с заданным ростом, перерисовать персонаж на экране, если он двигается, определить коллизии персонажа с другим объектом и т.д.
Было бы неплохо посмотреть реальный код (хотя это нереально). В общих чертах представляю, однако может оказаться не правильно. 
Вроде я начинаю понимать, но для полного усвоения потребуется еще пара дней. Поэтому вопросов пока нет, хотя тему не закрываю.

Автор: Rickert 11.6.2007, 17:18
Цитата(Gunslinger @  8.6.2007,  15:40 Найти цитируемый пост)
Было бы неплохо посмотреть реальный код (хотя это нереально). В общих чертах представляю, однако может оказаться не правильно. 

ftp.idsoftware.com
там ищи исходники q3, q2 - вот тебе реальные примеры. Удачи!

Автор: Gunslinger 25.6.2007, 15:53
Rickert, спасибо за пожелание.... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)