Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Скрипты | страница 1
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 1 из 1
 
Поиск в этой теме:
Канал Игры Мечты: «Скрипты»
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Значит в моем собственном проекте пришло время писать ИИ. Здесь особо выбирать не пришось - скрипты.. но зная КАК ОНИ ТОРМОЗЯТ решил не сильно их использовать.

Функция скрипта - управление игровым объектом (корабль,станция,ракета и т.д.)

пока применялось только для кораблей, т.к. именно им нужна сложная система поведения. Ну вот, например, атака на другой корабль. Алгоритм таков:

1-приближатся к объекту
2-при приближении на выстрел ракетой, собственно, выстрелить ракетой Улыбка
3-при приближении на выстрел пушками использовать их.
4-при приближении на расстояние Х - улетать от объекта, а по достижению расстояния Y перейти к пункту 1.

В моём предложении я наткнулся на ограничения (обойти можно, но лучше посоветоватся и переделать). Даже на такой простом алгоритме поведения.

Вот. Цель данной темы обсудить скриптовую систему. Вообще как её организовать и что она из себя должна представлять. Улыбка
_________________
MOV topka, C++
    Добавлено: 21:55 12-07-2006   
Executor
 1860 EGP


Рейтинг канала: 1(2)
Репутация: 522
Сообщения: 9024
Откуда: Менск. Беларусь.
Зарегистрирован: 09.05.2001
Темка тут повисит недельку (надеюсь хватит), потом я ее в КИМ отфутболю. Так что будьте в курсе, что потом ее надо будет искать там, так как она не соответствует тематике данного канала.

Jurec :
Здесь особо выбирать не пришось - скрипты.. но зная КАК ОНИ ТОРМОЗЯТ решил не сильно их использовать.

Я не программер, но, по моему, все зависит от того как и на чем их писать. Если делать как Эгософт, то конечно будут тормозить Подмигиваю
_________________
Император Всея Галактики, Прилегающих Туманностей, Комет И Астероидов, А Также Планеты Ракксла, Буде Она Все-Таки Обнаружится :)
    Добавлено: 23:26 12-07-2006   
SD
 251 EGP


Репутация: 30
Сообщения: 2450

Зарегистрирован: 05.03.2006
Угу. Все упирается в скорость взаимодействия скриптового движка с игровым. Игософт пропускает его через два (или три) фреймворка в однопоточном режиме. Если же на скрипты выделить отдельный поток с прямым доступом в физику мира, проблем быть не должно.
    Добавлено: 09:15 13-07-2006   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Да не стоит вопрос что быстрее, а что нет. Скрипты всегда будут медленне чем прямой код. И тут даже не вопрос взаимодействия.

Основной вопрос остается открытым - как организовать скриптовую систему. Или так - как она организована в х3.
_________________
MOV topka, C++
    Добавлено: 12:06 13-07-2006   
AlexYar
 1851 EGP


Рейтинг канала: 3(46)
Репутация: 324
Сообщения: 31640

Зарегистрирован: 26.10.2003
Jurec :
Значит в моем собственном проекте пришло время писать ИИ.


ИИ для иксов, или просто ИИ как цель работы?
    Добавлено: 21:03 13-07-2006   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
AlexYar :
ИИ для иксов, или просто ИИ как цель работы?

Нет,нет. ИИ для моей собственной игры. А чтоб это ИИ написать неплохо было бы ознакомится с ним в других играх - вот, в часности в иксах.
_________________
MOV topka, C++
    Добавлено: 21:28 13-07-2006   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Ну вот, например, как бы вы написали скрипт нападения корабля "А" на корабль "В" используя какой-то псевдоскриптовый язык, синтаксис которого я оставляю на ваше усмотрение...

Поведение при атаке написано выше.
_________________
MOV topka, C++
    Добавлено: 09:50 14-07-2006   
aftermath
 685 EGP


Репутация: 234
Сообщения: 1316
Откуда: Нижний Новгород
Зарегистрирован: 07.04.2006
Jurec :
как бы вы написали скрипт нападения корабля "А" на корабль "В"

А зачем придумывать скрипт? Можно за основу легко взять теже стандартные Егософтовские скрипты.

Что-то для меня так и остался непонятным сабж этой темы Совсем запутался... .
Нужны конкретные скриптовые реализации тех или иных действий или сама реализация скриптовой системы, ее взаимодействие с движком и т.п.?
_________________
В темном мире нет любви.
И в груди пусты сердца... (c)
    Добавлено: 10:19 14-07-2006   
Krom
 455 EGP


Рейтинг канала: 1(3)
Репутация: 159
Сообщения: 1988
Откуда: Горы Урала
Зарегистрирован: 19.07.2005
Jurec:
Стучись в аську, поговорим. Есть наработки. И ещё в канале Х2 как-то проводили турнир боевых скриптов для ястребков класса М3, можешь поискать вот тут на предмет исходников.
_________________
Не спешите меня.
    Добавлено: 10:26 14-07-2006   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
aftermath :
сама реализация скриптовой системы, ее взаимодействие с движком и т.п.

вот.
_________________
MOV topka, C++
    Добавлено: 10:37 14-07-2006   
akm
 470 EGP


Рейтинг канала: 1(3)
Репутация: 173
Сообщения: 1638
Откуда: Паразит Прайм
Зарегистрирован: 23.10.2002
Космосиму нужны не столько скрипты как таковые, сколько ИИ и управление всеми объектами (преймущественно кораблями и ракетами). Как это управление будет осуществляться - выбирать разработчику, т.е. возможны:

1) процедурные вызовы тех или иных действий, например
Ship->Follow_Object(object_ptr, distance, timeout);
Ship->Fire_Missile_by(object_ptr, missile_type);
и т.д.
По сути требуется каждую из подобных процедур построить на более примитивных командах физическому движку либо других уже имеющихся процедурах, например, в теле процедуры Fire_Missile_by наверняка будет что-то вроде:
amount = Ship->get_Amount_of_Ware_in_Cargobay(missile_type);
if (amount <= 0) return 0;
Ship->set_Amount_of_Ware_in_Cargobay(missile_type) = amount - 1;
missile_ptr = Ship->get_Missile(missile_type);
timeout = get_Missile_Max_Distance(missile_type)/get_Missile_Speed(missile_type);
missile_ptr->Follow_Object(object_ptr, 10, timeout);
if (get_Distance(missile_ptr, object_ptr) <= 10) missile_ptr->BOOM();

2) интерпретация скрипт-команд. Фактически то же самое, только игра даже после компиляции останется открытой для доработки ИИ, т.к. вместо "зашитых" имен процедур будут употребляться скрипт-команды, а движек игры будет на лету распознавать по тексту команды, какую именно процедуру вызывать и какие ей передавать параметры, т.е.
+: гибкость
-: некоторая потеря производительности на интерпретацию команд/параметров.

Теперь самое сложное, не зависимо от выбранной концепции, - это обеспечить одновременное выполнение десятков тысяч процедур(скриптов), порождаемых тысячами объектов во вселенной. Проблема тут не столько заставить их выполняться одновременно, сколько избежать конфликтов этого множества скриптов из-за того, что, например один скрипт отправляет корабль на станцию, другой его разворачивает в целях избежания коллизии, третий попросту корабль уничтожает (уже высвобождает ресурсы), а четвертый в это время уверен, что корабль еще припаркован на верфи, т.к. в момент поиска кораблей по какому-то критерию, запущенного еще многие миллисекунды ранее, этот корабль действительно был еще на верфи и никуда не летел... Короче, разрешение подобных граблей нужно предусматривать заранее в самом сердце движка игры.

Если кратко, можно построить этот движек так:
1. Нужен один общий стек, куда будут скидываться на выполнение абсолютно все скрипт-команды (или вызовы процедур). Порождаться такие команды очевидно будут движком ИИ, действиями игрока, событиями во вселенной и собственно другими командами/скриптами. Выполняться же они будут в порядке живой очереди в соответствии с приоритетами и таймаутами. В идеале выполнение организовать в произвольное количество потоков (выбираемое в дальнейшем на основании конфы железа игрока и др.)
Т.е. в стек команд, например, может помещаться такой набор чисел для каждой из активных команд:
A) указатель на объект, на котором выполняется команда
B) указатель на скрипт (или стек объекта), где выполняется команда
C) внутриигровое время, ранее которого выполнять данную команду не следует
D) приоритет команды (в глобальной сетке)

2. Алгоритм арбитра, отбирающего команды на выполнение, примерно такой: регулярно пробегаемся по всем командам в стеке и выбираем (например в отдельный массив) те команды, время выполнения которых уже подошло. Если найдено более 1 команды, то пробегаем по данным отобранным командам и находим с макс приоритетом. Выбранную команду удаляем из стека и выполняем.

Примерно так реализовано в Х2/Х3, хотя это и не самый производительный вариант, но довольно простой.
    Добавлено: 00:13 19-07-2006   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Супер! akm, вот ты то мне и нужен.

Ув. модераторы! Можно пинать в КИМ. Хы...
_________________
MOV topka, C++
    Добавлено: 00:31 23-07-2006   
aftermath
 685 EGP


Репутация: 234
Сообщения: 1316
Откуда: Нижний Новгород
Зарегистрирован: 07.04.2006
Перенесено по просьбе автора Хы...
_________________
В темном мире нет любви.
И в груди пусты сердца... (c)
    Добавлено: 06:37 23-07-2006   
Канал Игры Мечты: «Скрипты»
 
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Меняю с доплатой два одноместных Xenon N на один двухместный Argon Elite.

  » Скрипты | страница 1
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18