Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Написание игр _ Выполнение скрипта ИИ

Автор: Gothic_Snake 25.12.2005 23:28

Сижу и думаю, как сделать выолнение скрипта ИИ, для нескольких персонажей игры, параллельно, причем так, чтобы при написании бесконечного цикла, игра продолжала свою нормальную работу...
Какие идеи?

Автор: Shura 26.12.2005 0:30

У персонажа есть ряд действий которые он способен выполнять. Например, рассмотрим бота, вид сверху smile.gif У него есть простой набор действий:
1) Поворачиваться на N градусов
2) Пройти N метров
3) Вести огонь

Скрипт - это заранее заданный набор из таких действий. На самом деле, если мы не видим, что он выполняет эти действия, это совсем не значит, что он их не выполняет... smile.gif
Если даже этот бот просто стоит на месте, то он на самом деле совершает постоянно поворот на 0 градусов, проходит 0 метров, и пытается выстрелить - просто флажок стрелять-прекратить у него выключен smile.gif Иными словами, в основном цикле он постоянно выполняет эти действия, и постоянно должны существовать переменные, которые являются параметрами выполняемых действий, и если он просто стоит, то они все равны нулю. А если например тебе надо чтобы он развернулся на 180 градусов, прошел 10 метров и начал стрелять, ты вызываешь процедуру(скрипт), в которой на самом деле не действия описаны, а присваиваются новые параметры этим действиям - 180 углу, 10 расстоянию, и флажок стрельбы включается.

Все конечно сложнее реализовать. Может криво объяснил, конечно... smile.gif

Автор: Gothic_Snake 26.12.2005 1:30

Нет, это есесно и ежу понятно... Я же говорю именно про скрипт... Алгоритмичный, подобный с++/pascal/java
с циклами и т.п.
к примеру JavaScript

Автор: GoodWind 26.12.2005 10:48

исходники p-robots ковырял ?

Автор: Gothic_Snake 26.12.2005 23:45

Цитата(GoodWind @ 26.12.2005 9:48) *

исходники p-robots ковырял ?

А они есть?

Автор: volvo 26.12.2005 23:52

А почему нет? Есть, конечно...
http://www.yandex.ru/yandsearch?text=p-robots&serverurl=pascal.sources.ru&server_name=Pascal.Sources.Ru&referrer1=http%3A%2F%2Fpascal.sources.ru%2F&referrer2=Pascal.Sources.Ru

Автор: Gothic_Snake 27.12.2005 23:27

Цитата(volvo @ 26.12.2005 22:52) *

А почему нет? Есть, конечно...
http://www.yandex.ru/yandsearch?text=p-robots&serverurl=pascal.sources.ru&server_name=Pascal.Sources.Ru&referrer1=http%3A%2F%2Fpascal.sources.ru%2F&referrer2=Pascal.Sources.Ru

Извиняйте, не обратил внимание на архив.
Вообщем там немного не то, что требуется. Представьте: в игре от 0 до n ботов, у каждого из которых будет свой исполняемый скрипт. Так как можно сделать, чтобы скрипт исполнялся параллельно для каждого из ботов. Как вариант, пришедший мне в голову: Выполнять для каждого бота, скажем по 8 строк кода за 1 такт (1 кадр)... Мож у кого есть предложение по лучше?

Автор: Altair 28.12.2005 0:20

Насколько я помню Вольво как то предлагал для рещения какой то задачи метод квантования по времени -небольшие куски псевдопаралельных процессов выполняются последовательно, и при размере этого кусочка ->0, процесс получается все более приближенном к паралельному.

Gothic_Snake, а ты привязан к 16 битам ?
Почему бы не использовать тот же FPC и не юзать потоки для паралельности ?

Автор: Gothic_Snake 28.12.2005 22:40

Цитата(Altair @ 27.12.2005 23:20) *

Насколько я помню Вольво как то предлагал для рещения какой то задачи метод квантования по времени -небольшие куски псевдопаралельных процессов выполняются последовательно, и при размере этого кусочка ->0, процесс получается все более приближенном к паралельному.

Gothic_Snake, а ты привязан к 16 битам ?
Почему бы не использовать тот же FPC и не юзать потоки для паралельности ?

На счет параллельности, значит моя идея верна??
Ребят, вы серьезно думаете, что писать игры в наше время под 16 бит актуально??? =)
Будет писаться на с++, частями некоторые модули dll можно будет и на другом языке писать. Но точно 32 бита. Графика будет псевдо 3D под DirectX, 16 бит 5-5-5

потоки использоваться наверное не будем... хотя... Посмотрим. Надо для начала интерпритатор для языка написать..