Понедельник, 24 ноября 2014, 20:28

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Страница 1 из 11
Модератор форума: Akyltist 
Форум игроделов » Движки для разработки игр и сложные системы разработки » 3D Rad » 3D Rad (Онлайн Руководство Разработчика GCUP) (пособие для пользователей 3D Rad)
3D Rad (Онлайн Руководство Разработчика GCUP)
AkyltistДата: Пятница, 14 августа 2009, 00:45 | Сообщение # 1
заслуженный участник
Сейчас нет на сайте
Внимание в теме запрещается обсуждение и задавание вопросов по движку, тут только статьи и документация на русском языке.

Тема для задавания вопросов по 3D Rad.

3D Rad

Author 3D Rad
Operating Systems Windows
Graphics API DirectX
Programming Language C/C++
Status Productive/Stable/Free
Documentation Yes

Общее описание:


  • Особенности:
    Весьма и весьма интересный конструктор трехмерных игр. Этот конструктор является одним из самых легких в плане программирования трехмерных игр: здесь набор кода почти отсутствует, а если что вам и придётся набирать, так это координаты объектов или путь к текстуре. Отныне вы можете запускать свои игры, сделанные в 3D Rad, на своих веб-страницах! Это стало возможным благодаря плагину OSAKit! В компилятор внесены функции относительно создания файлов для просмотра в браузере (.osa формат). Насчет OSAKit читайте подробности на официальной странице.

  • Внутренний язык- AngelScript
    Замеченый + AngelScript, биндинг внешних функий и переменных из C++ прост как 2 пальца, приэтом сохраняются в таблице непосредственно адреса объектов. При просмотре работы VM изменение внешней переменной происходит мгновенно, одной коммандой виртуальной машины! без всяких вызовов функции типа tolua/luabind работающих со стеком. Замеченый - AngelScript, нет поддержки аргументов типа "..." Но однозначно он лучше Lua

  • Среда Разработки: Визуальный 3D редактор
    Очень непривычный ГУИ, бесят не оншов активити окна, приходится закрывать. Имеется компилятор в отдельном приложении.

  • Физика:
    Basic Physics, Collision Detection, Rigid Body, Vehicle Physics: Fluid Dynamics

  • Освещение:
    Per-vertex, Per-pixel, Lightmapping, Gloss maps: Imposters

  • Тени:
    Shadow Mapping, Shadow Volume.

  • Текстуры:
    Basic, Multi-texturing, Bumpmapping, Mipmapping.

  • Шейдеры:
    Vertex, Pixel.

  • Управление Сценой:
    General, LOD. Не очень удобное поначалу. Но камера ставится хорошо. Ловит ракурс автоматически.

  • Анимация:
    Forward Kinematics, Keyframe Animation, Skeletal Animation, Animation Blending: Interactive Bone Control Ability to 'attach' visuals, rigid-bodies and particle emitters to individual bones.

  • Meshes: (соединения)
    Mesh Loading, Skinning.

  • Спец Эффекты:
    Environment Mapping, Particle System, Sky, Water, Fire, Explosion, Decals, Fog: Bloom, Blur

  • Сеть:
    Клиент Сервер, Обновление через Интернет, Пинг, Поиск Сервера.

  • Звук:
    3D Звук, Стерео Звук, Локализированный звук.

  • АИ (Интелект Машины):
    Реализован хорошо, имеет настройку и возможность дополнения через скрипты. Неплохо тачки катаются, только в авариях тупят малек.

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

Оглавление: (# число. - это номер сообщения в этой теме.)

1. Описание возможностей.
2. Объекты 3D Rad

  • (#002) Airfoil
  • (#003) Ball
  • (#004) Cam1StPerson
  • (#005) CamChase
  • (#006) Car
  • (#007) CarAI
  • Character
  • ConfigureControls
  • EventOnContact
  • EventOnInput
  • EventOnLocation
  • EventOnProximity
  • EventOnValue
  • EventTimer
  • ExitFade
  • (#009) Fog
  • Force
  • ForceFeedback
  • G-Force
  • Group
  • HighwayConstructionKit
  • Joint
  • Particles
  • Path
  • PointLight
  • RaceTracker
  • RigidBody
  • Rock
  • Script
  • SkinMesh
  • SkyBox
  • SoundEffect
  • SoundSource
  • Spring
  • (#008) Sprite
  • SunLight
  • (#010) Terrain
  • TextPrint
  • Trail
  • Tree
  • ValueLabel
  • ValueLabelBar
  • ValuePrint
  • Velocity
  • Waypoint
  • Wheel
  • Wind

3. Скрипты в 3D Rad

4. Физика, Звук, Импорт 3D моделей.
5. Готовые уроки по Вашим вопросам.

Просьба тему не офтопить и ничего тут не писать, все благодарности в репу Авторам Статей и переводов, все вопросы в тему что указана вначале этого поста.

Продолжение следует..............


БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.
AkyltistДата: Пятница, 14 августа 2009, 02:37 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Airfoil (крыло) Автор: 3D Rad (перевод Akyltist)

Объект Airfoil может использоваться, чтобы применять аэродинамические силы к различным детялям объекта, как RigidBody на основе фюзеляжа самолета. Аэродинамика высчитывается законам физики. Это позволяет Вам реалистично моделировать самолеты, парусные лодки, субмарины или любой другой объект, даже перемещающийся по жидкостям. Используемые на автомобильных объектах (Car object), крылья(Airfoil)
могут также использоваться, чтобы настроить гоночные автомобили, которые ведут себя более реалистично (моделирование аэродинамических свойств машин, спойлеры). Это возможно благодоря тому, что физика просчитывается под вдиянием ветра, если объект Airfoil связан с объектом Wind. Вы можете визуально обращаться к объекту Airfoil, любым объектом на сцене. После начала моделирования Вы сразу будете видеть, что с ним происходит.

После добавления Airfoilв Ваш проект, Вы можете настроить его произведя двойной клик по Списку Объектов. После чего перед Вами должно появиться окно настроек этого объекта.

Отображение Геометрии крыла.

Это поможет Вам правильно и вовремя произвести настройку объекта. Это полезно например, при проверке объектов, которые могут управляться вращаясь по заданной траектории или оси.

Площадь поверхности крыла (m^2)

Чем больше поверхность крыла, тем больше подъемная сила или сила притяжения(в зависимости от угла наклона) и сила сопротивления,.

Лицом к ветру (drag-only mode)

Когда Вы выбираете Face relative wind (drag-only mode) ставя соответствующую галочку, никакие подъемные силы не производятся. Airfoil работает только на силы тяжести, на основе конструкции лобовой области проектирования, равной площади поверхности крыла (см. выше). Эта особенность может использоваться, чтобы моделировать воздушное трение, которое более реалистично чем простое использование параметров демпфирования объекта RigidBody.

Заметьте: когда эта галочка не выбрана, объект Airfoil все еще моделирует силы тяжести (помимо подъемных сил), но только производятся над объектом как плоское крыло или парус.

Lift-to-drag ratio

Параметр Lift-to-drag ratio, работает по формуле отношений. Чем больше отношение, тем меньший эффект тяготения будет вызван на крыле.
Вообще, сокращение этого фактора делает самолет менее реалистичным, но более легким в управлении.

Auto-balance force

Любое отличное значение от нуля в данном параметре автоматически включает балансировку крыла на объекте, но смотрите не перестарайтесь с параметрами. Чем больше значение, тем большая сила балансировки была применена. Но учтите что балансировка помогает только в тех случаях, когда Ваш объект в основном движется горизонтально, тогда включение этого объекта позволит легче управлять вашей машиной или самолетом.
Предоставление возможности автобаланса для больше чем одного единственного крыла, приложенного к тому же самому самолету, не рекомендуется. Вы должны позволять автобаланс для одного единственного крыла на один самолет (обычно главное крыло). Иначе он начнет у Вас вытворять такое, что мертвая петля это взрыв питарды по сравнению с термоядерным.

Вкладка Управления (Controls)

Вы можете сделать крыло интерактивным, ставя флажок рядом с входящими средствами для управления (угловой контроль за Decrease, угловой контроль за Increase). Прим. Автора : { Decrease(Уменьшение угловой величены); Increase(Увеличение угловой величины); }

Эти параметры ставятся обычно для крыльев, которые будут работать как подъемные, рули, элероны, закрылки и т.д. То есть чисто для самолетов.

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

Если данные параметры не установленны, то Airfoil(крыло) только ответит на входные данные для управления управления, как например данные из объекта EventOnInput. См. соответствующую ссылку в теме на форуме.
Угол Наклона определяет угловой диапазон для крыла, относительно его оси (тот что отмечен красным на справочной геометрии). Параметры Задержки позволяют Вам устанавливать время ответа для контроля крыла, в секундах (приблизительно). То есть это параметр устанавливающий то, как быстро Автомобиль или самолет, снабженный этим Airfoil(крылом) будет реагировать на нажатие клавиш или джостиков Игроком. Да и отметьте для себя, или запишите в блокнот, ну незнаю, в общем запомните, что задержки должны быть установлены в 0.0, если используются пропорциональные средства управления (см. ConfigureControls для деталей).

Примечания

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


БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.

Сообщение отредактировал Akyltist - Пятница, 14 августа 2009, 02:58
AkyltistДата: Пятница, 14 августа 2009, 02:58 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
Ball (шар) Автор: 3D Rad (перевод Akyltist)

Ball - ряд готовых к использованию сферических объектов, которые поддерживают обнаружение столкновения и конфигурируемые параметры динамики. Существующая библиотека сферических объектов включает все планеты в Солнечную системы, плюс некоторые луны. Библиотека может быть расширена, добавлением Ваших собственных "*.x" файлов и структуры к папкам данных для этого объекта. После добавления Ball Вы получаете возможность редактировать его свойства на панели объектов после двойного клика мыши:

Change

Нажав на эту кнопку Вы перейдете в меню этих самых Сферических Объектов, и можете сами выбирать какой туда засунуть.

Fast rendering

Если поставить там галочку, то будет включен мод быстрой отрисовки объекта. Это улучшит скорость работы системы, но уменьшит качество предоставления. Замечу, что на старых системах, на которых не поддерживаются аппаратные средстваобработки Pixel shaders, этот мод используется автоматически.

Cast shadows

Если выбрать этот параметр, то у объекта будет тень, при том объемная)). Однако на слабеньких системах это может сказаться производительностью.

Envmap (0-1)

Установите парамерт от 0 до 1. Другие значения не используйте, это параметр коэффициента лоска сферы, а то щас за интеджер понаставите блин))).

Envmap rate

Это параметр зеркалирования (ну это я так прочитал), в диапозоне от 0 до 450 вы можете поставить значения, и в соответствии со значением, шар будет отражать окружающую среду. Но самое главное стобы объект при этом был активирован, что впринципе логично.

Dynamics

Эти параметры очевидны. (Там прям так и написано)


БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.

Сообщение отредактировал Akyltist - Пятница, 14 августа 2009, 04:18
AkyltistДата: Пятница, 14 августа 2009, 03:48 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Cam1StPerson (камера от первого лица) Автор: 3D Rad (перевод Akyltist)

Добавьте этот объект к своему проекту, поместите его в пейзаж и пройдитесь. Геометрия камеры и зеленый земной шар видимы только в Редакторе и представляют стартовое местоположение актера и объем, и столкновения соответственно. Имейте в виду, что этот объект - камера. Вообще Вы должны удостовериться, что никакая другая камера не является активной в проекте, чтобы избежать конфликтов. Также запомните, что этот объект требует, чтобы присутствовала сила тяготения. Удостоверьтесь, что Вы связываете объект с силами притяжения. (например G-Force).

Viewport

Rendering At Start Если не включен, камера не будет показывать сцену, когда проект будет запущен. Время выполнения, Вы можете позволить передатьна другой объект, например как EventOnInput.

Horizontal position (0-1). Горизонтальное положение от 0 до 1. Положение главного экрана, между 0.0 (левый край) и 1.0 (правый край). Если например у вас с какойто стороны есть панель, то Вы можете сместить камеру, чтобы Ваш персонаж был по центру экрана. (Опять таки прим. автора.)

Vertical position (0-1). Теперь выравнивание по вертикали. Ноль - левый край экрана, 1 правый край. Опять таки настройка смещения камеры если у Вас внизу есть какая-то панелька.

Width/Height (0-1). Тоже от нуля до 1. Если в обоих вариантах единицы то фуллскрин! Если нули, то квадрат Малевича.

Visibility distance (meters). Это область видимости в метрах, все что в нее не входит отсекается движком дабы ненапрягать железо, сама сцена конечно же не отсекается но вот объекты да. Сильно большой радиус обзора делать не стоит, так как если игра динамичная, то может подтормаживать, хотя на 256 тянет без лагов 200 динамических сфер по всему ланду из демки.

Field of view, in degrees - область представления, чем больше значение тем дальше камера или больше масштаб(требует проверки)

Parameters

Eye height & body radius. это как я понял высота объекта первого лица и его радиус сферы столкновения. То есть не видимые параметры вашего центрального персонажа. Значения ниже 0.2 ЗАПРЕЩЕНЫ!

Head rotation speed, Head pitching speed, Head pitching limits - скорость вращения камеры(головы), передаваемая скорость и передающая скорость. Параметры позволяют настраивать скорость отклика камеры на изменения и скорости ее движения.

Walk forward speed, Walk backward speed, Walk sideways speed. - скорость движения камеры, вперед, назад и по диагонали.

Max. climbable slope (in degrees) - Важный параметр, максимальный угол наклона который персонаж уже не сможет преодолеть! (Прим. автора. Если ветер в 500м/с поставить улетает запросто, и плевать он хотел)

Controls. Эта группа параметров настройки позволяет Вам определять то, что приходит в устройствадля управления персонажем. Замечу также, что, чтобы изменить доступные устройства по умолчанию, Вы можете использовать любое входное устройство, при условии добовления его в ConfingureControls.


БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.

Сообщение отредактировал Akyltist - Пятница, 14 августа 2009, 10:06
AkyltistДата: Пятница, 14 августа 2009, 09:57 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
CamChase (камера преследования) Автор: 3D Rad (перевод Akyltist)

Эта камера просто берет и преследует любой объект (прямо таки Джек Потрошитель), который Вы определяете как цель. Помещая камеру и ее цель в Редакторе, Вы определяете ее относительное местоположение и камера попытается держаться за целью в то время как она перемещается. Все активные объекты, которые связаны с камерой в Редакторе Объектов, рассматривают как цели, но только один из них фактически используется время выполнения, тот к которому привязана в данный момент. Если никакая цель не определена, камера занимает позицию, которую Вы устанавливаете в Редакторе в процессе разработки.

Пожалуйста см. этот обучающий мануал для примеров с использованием.
(Прим. Автора. Мануал туфта, в демках в каждой карте есть почти такое.)

Filter

Фильтры камеры применяют специальные эффекты постобработки к предоставленной сцене. Каждый эффект идет с параметрами по умолчанию. Вы можете изменить эти параметры или использовать по умолчанию. Ниже привожу список параметров и для чего они предназначены.

Parameters

Rotation Speed (from 0 to 1) Скорость Вращения (от 0 до 1). Быстрота вращения камеры, в зависимости от движения объекта. Ноль заставит камеру не вращаться вообще, и 1.0 заставит камеру немедленно выровниваться по нормали к цели.

Translation Speed (from 0 to 1). Быстрота перевода камеры, преследующей объект. Ноль остановит камеру вообще, а единица заставит мгновенно мчаться за объектом, до точки гашения.

Field of view, in degrees. Чем ниже значение, тем больше изменен масштаб изображения сцены. Отрицательная величина переключает камеру к ортогональному способу проектирования. В этом случае, (изменяя масштаб изображения) ширина представления определена абсолютной величиной FOV. Например,-5.0 даст представление 5.0 метров шириной. Заметьте, что ортогональное проектирование не может передавать объекты SkyBox. Удостоверьтесь, что ортогональная камера должным образом расположена, поскольку объекты слишком далеко или слишком близко или позади камеры не будут предоставлены и отсекутся!

Ignore actor orientation. Если не включенно, то камера рассмотрит свое относительное действительное положение в редакторе от целевого объекта как абсолютно фиксированная. Это означает, что камера попытается держать свое относительное положение, в то время как объект перемещается. Эта особенность может использоваться, чтобы осуществить бортовые камеры. Зеркала заднего вида.

No tilting. Если включенно, то камера никогда не будет наклоняться. Удостоверьтесь, что это эта галочка не стоит если вы используете камеру как бортовую. См. предыдущий параметр.

Viewport

Rendering At Start. Если не включена, камера не будет показывать сцену, когда проект будет запущен. Используя EventOnInput Вы можете включать и выключать камеру, перемещать ее используя скрипты.

Mirror. Если включено, то камера выдает зеркальное отображение сцены, то есть без всяких можно использовать как зеркало заднего вида.

Horizontal position (0-1). Горизонтальное положение от 0 до 1. Положение главного экрана, между 0.0 (левый край) и 1.0 (правый край). Если например у вас с какойто стороны есть панель, то Вы можете сместить камеру, чтобы Ваш персонаж был по центру экрана. (Опять таки прим. автора.)

Vertical position (0-1). Теперь выравнивание по вертикали. Ноль - левый край экрана, 1 правый край. Опять таки настройка смещения камеры если у Вас внизу есть какая-то панелька.

Width/Height (0-1). Тоже от нуля до 1. Если в обоих вариантах единицы то фуллскрин! Внимание, Вот этот параметр можно использовать для отображения в компактном режиме.

Visibility distance (meters). Это область видимости в метрах, все что в нее не входит отсекается движком дабы ненапрягать железо, сама сцена конечно же не отсекается но вот объекты да. Сильно большой радиус обзора делать не стоит, так как если игра динамичная, то может подтормаживать, хотя на 256 тянет без лагов 200 динамических сфер по всему ланду из демки.

Support rendering statistics. Если включено, камера позволит отслеживать числа предоставленных пикселов для объектов SkinMesh. Там и прочитает что к чему и для чего это.

Look-at offset

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

Shaking / intensity

Если камера связана с другим объектом в Списке Объектов, то это включает поддрежку нескольких эффектов тряски(землетрясение), которые Вы можете использовать, чтобы повысить реализм для Ваших проектов, моделируя обработку ходьбы человека, землетрясения, шаги динозавра, колебания, вызванные высокой скоростью и так далее. Фактор интенсивности устанавливает дрожащую амплитуду, частоту, или оба, в зависимости от выбранного эффекта. Запомните, что фактор интенсивности может также управляться во время выполнения при использовании объектов event objects или script.

Relationships

Этот список определяет, как объект CamChase взаимодействует с объектами, связанными с ним. Поддерживаются следующие типы отношений:

ПРОИГНОРИРОВАТЬ. Ничего не делать.
ПРЕСЛЕДОВАТЬ. Этот объект - цель камеры.

ЗАМЕТЬТЕ: определение больше чем одного единственного объекта как цель не рекомендуется.
ИЗБЕГАЙТЕ. Если этот объект будет тверд (обнаружение столкновения поддержек), то камера попытается избежать этого и будет проходить сквозь.
ЗАМЕТЬТЕ: алгоритм предотвращения, работает только с Translation Speed.


БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.

Сообщение отредактировал Akyltist - Пятница, 14 августа 2009, 21:43
AkyltistДата: Пятница, 14 августа 2009, 20:22 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Car (машины) Автор: 3D Rad (перевод Akyltist)

Автомобиль - ряд готовых к использованию автомобильных объектов, с возможностью задания физических параметров. Использование RigidBody поможет более полно и быстро настроить физику и параметры автомобильных объектов. Дополнительные параметры прописываются в ".ini файлах, которые и определяют основные параметры, как объем автомобиля и массу колес, и которые дифференцируют каждый автомобильный тип и параметр в библиотеке. Вы можете менять модели и используя специальные возможности включать поддержку специальных фич и эфектов.

Wheel offsets and scale

У всех автомобилей в библиотеке есть местоположения колеса по умолчанию и размер. Вы можете изменить эти параметра, определяя X, Y, Z в метрах и изменять оригинальный масштаб (1.0 оригинальный размер).

Change

Если выберите этот пункт то перейдете в библиотеку доступных моделей.

Fast rendering

Включает режим быстрой отрисовки модели, но при этом качество отображения может быть ухудшено.

Cast shadows

Отбрасывание тени, включает выключает отбрасывание тени от модели машины. Повышает реалистичность, хорошая фича.

Refl. update rate

Зеркалирование. Параметр от 0 до 450, позволяет управлять степенью отражения окружающей среды от модели автомобиля)) типо воском ее намазали. Ну или полироллем.

Hide car-body geometry

Если стоит галочка то placeholder геометрия автомобиля будет выключенна.

Hide wheels geometry

Если стоит галочка то placeholder геометрия колес будет выключенна.

Параметры:


  • Speed - скорость автомобиля, позволяет выставлять максимальную скорость, в расчетах параметров учитываются масса, объем, аэродинамика и все остальное.
  • Acceleration - ускорение, также зависит от всех параметров, и выставляется в максимальное значение.
  • Reverse speed - реверс (обратная скорость)
  • FWD/RWD- указывает привод автомобиля, передне-, задне- и полноприводные.
  • Brakes power - Сила торможения, коэфициент снижения ускорения, то есть сила тормозов.
  • Front grip- определяют крутящий момент и силы сцепления передних колес.
  • Rear grip- определяют крутящий момент и силы сцепления задних колес.
  • Suspensions - сила и жесткость столкновений и торможения.

Simulation dampers


  • Banking stabilizer - стабилизатор автомобиля на сильных кривых, то есть позволяет машине не уходить в занос на поворотах и разворотах.
  • Trajectory stabilizer - простой стабилизатор, включает возможность автоматической баалансировки автомобиля на указанный коэффициен при обычной езде.
  • Crash damping - позволяет выставлять коэфициент снижения скорости и падения ускорения в результате столкновения, и вроде как коэффициент для расчета снижения скорости в зависимости от столкновения с динамическим объектом, как разности скоростей по разним векторам относительно их ускорений на траектории следования.


БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.

Сообщение отредактировал Akyltist - Пятница, 14 августа 2009, 21:43
AkyltistДата: Воскресенье, 16 августа 2009, 13:30 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
CarAI (машины) Автор: 3D Rad (перевод Akyltist)

Объект CarAI будет управлять вашими машинами вдоль предопределенного пути, при этом он будет взаимодействовать со всеми АИ других машин пытаясь уберечь их от столкновений и провести по оптимальному пути, и позволяет производить настройку всего этого.

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

Ввиду того, что АИ не может управлять полноценно Амтомобилем как человек, так как не обладает способностью распозновать дорогу в 3D пространстве, что означает, что ему требуется знание оптимального пути, для чего в качестве дополнения необходимо использовать Path объект, которым и будет пользоваться АИ.

Советую перейти непосредственно к настройкам, и после этого обязательно, после просмотра этой спецификации, посмотреть исходники демки, и напомнить мне написать статью, по созданию своего АИ с прописыванием путей. И так, смотрим сначала настройки и параметры:

Working At Start

Если изначально параметр будет выключен, то АИ не будет управлять машиной, пока его не включить Тригерно Ангел Скриптом, или же через готовый объект EventOnInput. Второй способ более рационален, так как если Вы не разбираетесь довольно таки хорошо в скриптах, то можете, создать конфликты в управлении и утечки в памяти, так что не шалим, пользуемся готовым.

Obstacle dodging

Minimum scanner depth. Параметр устанавливает минимальное значение в метрах, при котором АИ распознает препятствие и может его обойти.

Max. scanner amplitude. В этом параметре ставьте параметр, ширина машины/2. Это амплитуда сканера, которая ищет препятствия по бокам от машины и объезжает их, можете ставить значения и меньше, но тогда тачки могут слишком поздно реагировать и будут влетать во все что угодно, а сильно большая амплитуда может заставить шарахаться от любых предметов за трассой.

Driving carefulness. Чем больше этот показатель, тем быстрее машина будет раегировать на приближающиеся или угрожающие ей препятствия. Параметр должен лежать в диапозоне от 0 до 10 - не более.

Max. front deviation angle. Эта величина, в градусах, между 0 и 180, определяет как далеко от идеального пути прохождения, управляемая машина может пойти на риск и попробовать избежать фронтального столкновения с препятствиями. Сильно большое значение может приводить машины в замешательство, однако выставлять его советую, так как это приводит к тому, что машины очень хорошо объезжают и обгоняют друг друга, но не ставьте большие величины, я прошу Вас господа, не рискуете своей игрой против интелекта машин, а то терминаторы появятся.

Max. side deviation angle. Эта величина, в градусах, между 0 и 180, определяет как далеко от идеального пути управляемая машина может попробовать избежать столкновений с другими машинами со своей стороны. То есть параметр ее наглости, но только в градусах. Также советую ставить небольшие значения.

Deviation return time. Приблизительное время которое интелекту дается на то, чтобы вернуть машину в строй и на идеальный путь. Хочу заметить то, что чем лучше вы прорисуете идеальный путь в зависимости от вашей трассы, тем лучше и будут вести себя боты, еслы Вы конечно же делаете гонки, не забывайте что можно использовать движек много для чего.

Enable unblock maneuver. Когда включен этот параметр, то машина может расталкивать динамические объекты стоящие у нее на пути очищая себе путь.

Path following

Minimum throttle. Если этот параметр ниже 1, то машина будет сбрасывать скорость на поворотах. Только в 0 не выставляйте))), ставить можно но не советую.

Maximum throttle. Параметры можно устанавливать в диапозоне от -1 до 1. Это параметры на отступление от прямого направления. отрицательные значения позволяют АИ использовать сдавания назад, и ехать задом.

Brakes При 0, интелект обнаружив припятсвие которое тяжело объехать при текущих параметров будет сдури жать по тормозам. так вот в диапозоне от -1 до 1, можете ставить степень дурости.

Path fuzziness. При 0, интелект может отклоняться от идеального пути, по которому как он считает в данный момент ему выгоднее проехать. Максимально значение 1.

Randomizer Если установленно значение 0, то предыдущие параметры дросселя и тормозов, будут расчитываться рендомно и взаимозависимо. Если допустим Вы поставили Maximum throttle = 0.7 , а Randomizer = 0.3 , то Maximum throttle будет лежать в диапозоне от [0.4:1.1]

A.I. Mode

Avoid Интелект поведет машину по пути, который оптимальнее.

Chase. Интелект игнорирует оптимальность пути, встречая динамические препятсвия и начинает использовать повороты и тормоза для избежания столкновений.

Target. Будет пытаться атаковать и пробивать выбранные цели игнорируя оптимальность пути.

Flee. Распознает все объекты вокруг себя как "Прочь с моего пути", но при этом старается ехать более мение следуя оптимальности пути.

Relationships

IGNORE. Ни чего не делать.

DRIVABLE VEHICLE. Объектом управления является машина. ВНИМАНИЕ: АИ может управлять только одним объектом. Для каждого объекта должен быть свой АИ.

OBSTACLE/TARGET. Этот объект - препятствие. Обычно это динамический объект RigidBody в проекте или другая машина.

PATH. Этот объект - путь.


БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.

Сообщение отредактировал Akyltist - Воскресенье, 16 августа 2009, 13:38
AkyltistДата: Воскресенье, 16 августа 2009, 13:37 | Сообщение # 8
заслуженный участник
Сейчас нет на сайте
Sprite (машины) Автор: 3D Rad (перевод Akyltist)

Настраиваемый 2d- графический объект для ваших проектов.

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

Work as full-screen mouse pointer

Если этот параметр включен то Спрайт будет следовать за курсором мыши. Хорошо подходит для создания прицела для FPS или для анимации курсора. ВНИМАНИЕ: Баг, галочку включать непосредственно перед компилированием, или как написанно в документации, если включить это дело в редакторе или не в полноэкранном режиме, то это либо вызывает критикал эррор или съедает спрайт.

Detect mouse-over event

Производит проверку 60 раз в секунду, находится ли курсор над спрайтом или нет. Если да, то 1. Смотрите параметры ниже, чтобы понять основы того, как все это дело можно обработать и использовать в своих кровавых целях.

Priority

Вы можете устанавливать приоритет для Спрайтов. В данный момент есть три вида приоритетов: За текстом, над текстом и как фон. Единственное что не учитывается, так это ландшафт, остольные объекты идут в расчет, так что если делаете кнопки, то флаг Вам в руки и параметр над текстом.

Rendering mode

Предоставление возможностей предостовления, такие как например - размытие. Моет использоваться для спрайтового отображения взрывов.(Прим Автора. Чушь полная, в движке есть система частиц, для взрывов лучше использовать ее.)

Base color & opacity

0.0 (невидимый) и 1.0 (полностью видимый). Выбор цвета, дает альфа канал для транспарента (прозрачности) (прим. Автора. Требует проверки на счет альфа канала.)

Screen location

Положение относительно центра. 0,0 - координаты центра монитора. От -16 до 16 по ширине, от -12 до 12 по высоте. (Прим. Автора. Удобно расчитывать координаты в расчете от разрешения монитора 1600х1200)

Width/height

Разрешины значения параметров >= 0. Для того, чтобы заполнbnm весь экран, то установите ширину/высоту в 32/24 и позицию на 0,0. Также Вы можете редактировать параметры непосредственно в редакторе и перетаскивать куда Вам угодно зажав [Ctrl].

Rotation angle

Вы можете указывать угол разворота спрайта.

USING YOUR OWN IMAGES AS SPRITES

Сохраняйте спрайты по адресу: ...\3D Rad\3DRad_res\objects\Sprite\Data\

Теперь используйте кнопку Чейндж (Change Source Image) и выберите Ваш спрайт.
Учтите что Вы увидите только те картинки которые поддерживаются Системой. Например для отображения формата файлов .dds в системе должна быть установлена NVidia DDS Thumbnail Viewer (free).

Для того чтобы спрайт держал прозрачность, то используйте нормальные человечиские форматы, такие как (.dds, .png или .tga).

Вот форматы с которыми проблем почти не бывает: .dds, .png, .tga, .jpg, .bmp.

пожалуйста добавьте комментарий вида:
********************************************************


БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.

Сообщение отредактировал Akyltist - Воскресенье, 16 августа 2009, 13:38
AkyltistДата: Воскресенье, 16 августа 2009, 18:03 | Сообщение # 9
заслуженный участник
Сейчас нет на сайте
Fog (туман) Автор: 3D Rad (перевод Akyltist)

Этот объект позволяет Вам, настраивать общие свойства тумана, такие как начальное/конечное расстояние и цвет.
ВАЖНО: туман только влияет на отображение объектов SkinMesh на сцене.

Enabled at start

Если ставите галочку, то сразу же после старта сцены, он будет отображен и показан. Если же выключен то можете не переживать, его можно будет включать с помощью объекта EventTimer.

Fog color

Это как сразу догадаются многие - цвет тумана.

Fog start distance

Расстояние в метрах, на котором можно увидеть что впереди туман (вроде правильно прочитал).

Fog end distance

Расстояние метрах, когда туман начинает рассеиваться и мы видим, что он скоро кончится.


БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.
AkyltistДата: Четверг, 20 августа 2009, 08:51 | Сообщение # 10
заслуженный участник
Сейчас нет на сайте
Terrain (ландшафт) Автор: 3D Rad (перевод Akyltist)

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

Change

Нажав эту кнопку Вы перейдете непосредственно к выбору готовых ландшафтов, в том числе и экспортированных.

Fast rendering

Как Вы сами могли догадаться, эта галочка включает режим быстрой прорисовки дландшафта, что немного снижает качество игры, но максимально убирает тормоза на слабеньких компах.

Cast shadows

Система теней для ландшафта, снижает быстродействие на компах динозаврах, но на нормальных машинах(компьютерах) рекомендую включать, так как ландшафт становится живописным и красивым.

Receive shadows

Эсли включить эту галочку, то все другие объекты смогут бросать свою тень на ландшафт. Советую также включать ее.

Ignore point lights

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

Collision detection

Если включить этот параметр, то ландшафт будет работать с другими объектами в режиме столкновения (в зависимости от того какой это объект и какого типа.)


БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.
AkyltistДата: Пятница, 04 сентября 2009, 18:56 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
Angel Script: Object functions ( Автор: Akyltist )



void iObjectStart(OBJ_X)

  • Запуск указанного объекта. Отметьте для себя, что целевой объект должен уметь выполнять 'startable' действие. Пожалуйста см. справочный файл объекта для деталей относительно выполняемых действий, которые он выполняет когда будет запущен.
  • OBJ_X = object handle.

...

void iObjectStop(OBJ_X)

  • Останавливает указанный объект. Отметьте, что целевой объект должен поддерживать некоторое 'stoppable' действие. Пожалуйста см. справочный файл объекта для деталей относительно действия, которое он выполняет.
  • OBJ_X = object handle.

...

void iObjectSwitch(OBJ_X)

  • Переключает указанный объект. Прим: [if iObjectStart(...)=true {iObjectStop(...);} else {iObjectStart(...);}]. Switch- выбор. Если целевой объект запущен, то он останавливается иначе он будет запущен. При этом он также должен обладать 'startable/stoppable' действиями.
  • OBJ_X = object handle.

...

void iObjectShow(OBJ_X)

  • Show - показывать. То есть функция разрешает к показу, выбранный объект.
  • OBJ_X = object handle.

...

void iObjectHide(OBJ_X)

  • Hide - скрывать. То есть функция запрещает к показу, выбранный объект.
  • OBJ_X = object handle.

...

void iObjectShowHideSwitch(OBJ_X)

  • Выбор действия над объектом по типу (показать/скрыть). Если объект показан, то он скроется, иначе он будет показан. Прим: [if iObjectShow(...)=true {iObjectHide(...);} else {iObjectShow(...);}].
  • OBJ_X = object handle.

...

void iObjectReset(OBJ_X)

  • Переинициализация объекта. Все его параметры сбрасываются на те которые соят по умолчанию.
  • OBJ_X = object handle.

...

void iObjectOrientation(OBJ_X,Quaternion)

  • Возвращает текущую ориентацию для указанного объекта.
  • OBJ_X = object handle.
  • Quaternion = когда функция срабатывает, то она возвращает текущую ориентацию объекта.
  • NOTE: если OBJ_X - физически состоит из многократных частей (как Автомобильный объект), эта функция возвращает ориентацию части, которая была отобрана, в случае если объект был привязан.

...

void iObjectOrientationSet(OBJ_X,Quaternion)

  • Устананливает ориентацию указанного объекта объекта (определенную как кватернион).
  • OBJ_X = object handle.
  • Quaternion = ориентация.
  • NOTE: эта функция будет работать только с объектами, которые поддерживают динамическое регулирование ориентации, как SkinMesh, Частицы, и т.д. Объекты, поддерживающие физику, обычно не работают с этой функцией. Например, Вы не должны использовать эту функцию для rogressively, изменять ориентацию RigidBody или Автомобиля, чтобы заставить его двигаться или вращаться. Вместо этой функции для данных объектов необходимо использовать объект Force.

...

void iObjectOrientationReset(OBJ_X,Quaternion)

  • Повторно подгружет заново указанный объект полностью, также устанавливая его ориентацию (определенную как кватернион).
  • OBJ_X = object handle.
  • Quaternion = обнуление ориентации.
  • NOTE: эта функция не должна использоваться, для изменения ориентации объектов, в то время как их происходит моделирование физики для того же объекта или совершаются пространственные изменения, потому что это может затронуть точность моделирования и приводить к сюрпризам.
  • NOTE: используйте iObjectOrientationReset (), если Вы хотите перезагрузить местоположение объекта.

...

void iObjectLocation(OBJ_X,Vector3)

  • Return the current location for the specified object.
  • OBJ_X = object handle.
  • Vector3 = функция возвращает положение объекта в пространстве в эту переменную Прим:(Vector3: по негласной спецификации представляет собой три пременных типа Single, которые являются соответственно координатами X,Y,Z)
  • NOTE: если OBJ_X - физически состоит из многократных частей (как Автомобильный объект), эта функция возвращает положение части, которая была отобрана, в случае если объект был привязан.

...

void iObjectLocationSet(OBJ_X,Vector3)

  • Set the specified object to the specified position.
  • OBJ_X = object handle.
  • Vector3 = положение.
  • NOTE: эта функция будет работать только с объектами, которые поддерживают динамическое регулирование ориентации, как SkinMesh, Частицы, и т.д. Объекты, поддерживающие физику, обычно не работают с этой функцией. Например, Вы не должны использовать эту функцию для rogressively, изменять ориентацию RigidBody или Автомобиля, чтобы заставить его двигаться или вращаться. Вместо этой функции для данных объектов необходимо использовать объект Force.

...

void iObjectLocationReset(OBJ_X,Vector3)

  • Сбрасывает данные объекта на стандартные в том числе и положение.
  • OBJ_X = object handle.
  • Vector3 = ресет положения.
  • NOTE: эта функция не должна использоваться, для изменения ориентации объектов, в то время как их происходит моделирование физики для того же объекта или совершаются пространственные изменения, потому что это может затронуть точность моделирования и приводить к сюрпризам.
  • NOTE: используйте iObjectLocationReset(), если Вы хотите перезагрузить местоположение объекта.

...

void iObjectPositionReset(OBJ_X,Quaternion,Vector3)

  • Сбрасывает данные о позиции объекта на указанные (ориентацию и положение).
  • OBJ_X = object handle.
  • Quaternion = сброс ориентации.
  • Vector3 = сброс положения.
  • NOTE: эта функция не должна использоваться, для изменения ориентации объектов, в то время как их происходит моделирование физики для того же объекта или совершаются пространственные изменения, потому что это может затронуть точность моделирования и приводить к сюрпризам.

...

void iObjectScaleSet(OBJ_X,Vector3)

  • Устанавливает масштаб для выбранного объекта
  • OBJ_X = object handle.
  • Vector3 = масштаб.
  • NOTE: эта функция будет работать только с объектами, которые поддерживают динамическое регулирование ориентации, как SkinMesh, Частицы, и т.д.

...


БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.

Сообщение отредактировал Akyltist - Пятница, 04 сентября 2009, 19:26
AkyltistДата: Четверг, 17 сентября 2009, 23:16 | Сообщение # 12
заслуженный участник
Сейчас нет на сайте
Angel Script: String functions ( Автор: Akyltist )



int iStringLen(string)

  • Возвращает длину определенной строки.

...

iStringUCase(string,string)

  • Преобразовывает строку в верхний регистр.
  • string = результирующая строка.
  • string = оригинальная строка.
  • NOTE: оба параметра могут быть одной и той же строкой.

...

iStringLCase(string,string)

  • Преобразовывает строку в нижний регистр.
  • string = результирующая строка.
  • string = оригинальная строка.
  • NOTE: оба параметра могут быть одной и той же строкой.

...

iStringLeft(string,string,int)

  • Копирует первые [n...] символов от первой строки слева, и присваевает это второй.
  • string = результирующая строка.
  • string = оригинальная строка.
  • int = количество символов.
  • NOTE: первых 2 параметра могут быть одной и той же строкой.

...

iStringRight(string,string,int)

  • Копирует последние [n...] символов от первой строки справа, и присваевает это второй.
  • string = результирующая строка.
  • string = оригинальная строка.
  • int = количество символов.
  • NOTE: первых 2 параметра могут быть одной и той же строкой.

...

iStringMid(string,string,int,int)

  • Копирует [n...] символов от первой строки с положения Int до положения Int, и присваевает это второй.
  • string = результирующая строка.
  • string = оригинальная строка.
  • int = номер символа с которого начинаем.
  • int = номер символа которым заканчиваем.
  • NOTE: первых 2 параметра могут быть одной и той же строкой.

...

iStringStr(string,float,string)

  • Конвертирует строку специфическим образом согласно указателю. Прим (FloatToStrF(xxFixed);)
  • string = результирующая строка.
  • float = конвертируемое значение
  • string = строка-указатель на формат рузультирующей строки.
    Примеры:
    - "%.0f" - отбрасывает дробную часть полностью(e.g. 1321)
    - "%3.0f" -берет первые три разряда из целой части и полностью отбрасывает дробную (e.g. 321)
    - "%2.3f" -берет первые два разряда из целой части и три разряда из дробной части (e.g. 32.731)
    - "%05.1f" - берет первые 5 разрядов из целой части, если их меньше то забивает нулями и один разряд с правой части (e.g. 00321.3)
    - "%f" - берет все разряды целой части и 6 разрядов дробной части (e.g. 1501.540)
    - "%g" - берет любое количество разрядов для каждой части (e.g. 1501.54)
    - "%.0f%%" - отбрасывает дробную часть полностью. Также добавляет символ (%) к значению (e.g. 77%)

...

float iStringVal(string)

  • Функция переводит строку в числовое значения, в том числе и сплавающей точкой.

...

iStringFind(string,string,int,bool)

  • Функция ищет вхождение одной подстроки во вторую и возврацает позицию первого вхождения. При неудачном поиске возвращает -1.
  • string = исходная строка.
  • string = строка поиска.
  • int = позиция с которой начинаем искать.
  • bool = включить параметр 'true' для чувствительность к регистру.

...

iStringReplace(string,string,string,string,bool)

  • Copy a string to another string also replacing all occurrence of a specified sub-string with a specified text.
  • string = результирующая строка
  • string = оригинальная строка
  • string = заменяющий текст
  • string = текст который будет заменен если встретится
  • bool = включить параметр 'true' для чувствительность к регистру.
  • NOTE: первых 2 параметра могут быть одной и той же строкой.

...

iPrint(string,float,float,OBJ_X)

  • Выводит текстовую надпись в определенных координатах.
  • string = текст (255 символов максимум)
  • float,float = позиция на экране.
  • OBJ_X = TextPrint объект.
  • NOTE: функция выведет текс только один раз, скорее всего пользователь этого не заметит, поэтому выводите его в цикле.




БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.
AkyltistДата: Понедельник, 16 ноября 2009, 23:35 | Сообщение # 13
заслуженный участник
Сейчас нет на сайте
Урок 1: Добавляем свой автомобиль ( Автор: Akyltist )

Доброй ночи, уважаемые деволоперы. Сегодня Вас ожидает байка про то как сделать из фиата джип с характеристиками в стиле лучшего спорт кара. Началось все с того, что вечером мне пришло ЛС от одного из местных обитателей и чемпиона нескольких ралли. Имя его я выдавать не буду. Вопрос встал прямо, что делать, как быть с колесами у модели которую он подгружает. Не вставали они на место, чтож сказал я, и начали мы с ним колдовать. Закончив свое колдовство я начал оформлять эту тему, как выяснилось, что и он тоже закончил с этим возится. Это означает, что человек действительно разбирается в основах. Поэтому рад был помочь, и будем ждать цикл статей от него.

Ну чтож, вернемся к нашему крутому джипу. И так поехали!!!

Качаем с сети модельку машины без колес в *.X формате. Ну кому лень тот может воспользоваться архивом, ссылка на который находится ниже.

1. Добавляем на карту SkyBox. скрин
2. Даем ему имя Небо, как ни как мы русские люди. (В качестве теста юзаю русскую версию Радуги)
3. Картинку на небо можете выбрать любую)) какая понравится.

4. Добавляем на карту Terrain скрин
5. Название как видите тоже на русском
6. Добавляем второй террайн, но теперь уже Guardrail. См скрин

7. Добавляем G-Force (Силу гравитации), а то как мы без нее. скрин



Лирическое отступление:
Давайте взглянем на иерархию объектов в конструкторе.


Продолжим:

9. Посмотрев на схему скидываем ресурсы по соответствующим папкам. В архиве они уже по ним расположены.
8. Добавим SkinMesh скрин

Немного поразмыслив.

Зачем я буду описывать добавление всех компонентов, в общем кладу демку вместе с ресурсами. Иерархия сохранена,просто копируйте ее в Радугу и будет Вам счастье. Всем спасибо. По всем вопросам прошу на канал в джаббер. Да Да, мы там есть). Адрес канала у меня в подписи.

Архив
Зеркало


БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.
AkyltistДата: Четверг, 17 декабря 2009, 23:26 | Сообщение # 14
заслуженный участник
Сейчас нет на сайте
Создаем A.I. Для Машин

                                                                "There are two ways of
                                                                constructing a software design.
                                                                One way is to make it so simple
                                                                that there are obviously no
                                                                deficiencies. And the other way
                                                                is to make it so complicated that
                                                                there are no obvious deficiencies"
                                                                - C.A.R. Hoare

(Статья написана в стиле Винни Пуха, много опилок, читать глубоко вникая в слова)

* [ Intro ]==========================================================

Доброй ночи Уважаемые читатели, хотя фиг знает когда Вы это читать будете,
поэтому доброго всем времени суток. Сегодня мы будем обучать машины, да да,
делать скайнет, чтобы он поработил нас. В общем задача написать тачкам АИ чтобы
им не было стыдно ездить. Сразу говорю эпитетов и метафор с стиле Есенина Вы не
дождетесь, поэтому поступим так, те кого интересует на данный момент идут в лес
читать книжки, а те кому интересно как поработить мир или хотябы заставить тачку
нормально ездить читают мой набор слов.

* [ History ]=========================================================

Впервые если верить людям верующим, то над АИ задумался некто Господь Бог, и соз
дал первый в мире прототип "Адам", но он был не совершеннен, слегка тупил, тогда
всевышний, далее он же "Владыка" создал для прототипа "Адам" дополнение "Ева (T800)"
Поведение созданного мира заинтересовало "Владыку", и он решил методом тыка что
будет если на дерево с яблоками посадить двуглазого змия, и добавить пару объек-
тов типа "яблоко". Эффектом внедрения данных объектов стало наблюдение эффекта
предательства. Прототип "Адам" как непосредственный объект АИ не стал нарываться
на проблемы с кариесом, поговаривают, что он как то хотел стать стамотологом вот
и не стал нарываться на проблемы с зубами, а дополнение "Ева" являясь на тот мо-
мент единственным дополнением со "встроенным поиском приключений на заднее место"
сорвала и захавола яблоко. Прототип "Адам" обиделся, что дополнение захаволо яб-
локо и решило его форматнуть, так появились дети, а патчи захлестнули мир.

* [ Step 1 ]=========================================================


    - Необходимо добавить как минимум один путь прохождения для интеллекта машин
  • Сам путь представляет собой графический трейл который проходит по определенным
    координатам, эти координаты можно вбить ручками или расчитать сторонним ПО, но
    мы пойдем рациональным путем и сделаем это непосредственно в конструкторе. Мы
    же не нубы какие то.

  • Наш объект Path, если с ним договориться, может записывать пройденный путь сам
    Да, да, он еще не такое выкручивать может. Притом пишет он в рун тайм, правда
    иногда он такие пути выкручивает, что если бы кое что также выкручивать мне, то
    я бы наверное не выдержал и пристрелился. Так вот, чтобы и Вам также он не по
    навыкручивал, Вы и читаете эту муть.

  • Чтобы Вы не подумали что Вас от меня тошнит то приступим к делу, свяжите свою
    тачку с патчем, переключите в связях с "IGNORE" на "PARENT" выставляем галочку
    recording-mode а частоту не трогаем, у нас есть галочка зачем нам частота. Ес-
    ли не поняли о чем речь, то посмотрите видео.

  • Да и самое главное, чтобы отмечать ключевые узлы, надо жмякатькнопочку [R] да,
    да, он может писать и без кнопочки, но не с 0 частотой. А мы ее не трогали, по
    этому жмякаем кнопочкой, пренеруем мышцы на пальцах.

  • Когда мы будем качать с вами мышцы на пальцах,то конструктор должен нам подпе-
    вать странными сигналами. Не обращайте внимание, это его первая попытка загово-
    рить, однако доучивать его говорить мы сегодня не будем, сегодня мы качаем мы-
    шцы пальцев под его странные напевания. Если дитя не поет, то значит Вы не за-
    пустили проект (Project -> Play). Ну кому лень жмем [Space]. И катаемся качая
    пальцы.

  • После одного круга, ну или Вашей трассы, если она не замкнутая бросаем прока-
    чку пальцев, чувствуете как потяжалели руки, а я ведь вам не сказал что тыр-
    кать надо было раз в пару секунд, но теперь Вы это знаете.

  • Ну и чтобы у нас не было непонятно чего, необходимо совместить началиные коо-
    рдинаты с уровнем первой записи. Чтобы у нас было логическое начало нашего не
    логичного творения.

    +-------------------------------------------------------+
    Видио можно скачать: Server[1] Server[2]
    +-------------------------------------------------------+

  • Видио запись весит 6 метром, так что скачать проблем не составит, качество
    записи нормальное, скорость воспроизведения видио тоже, так что жалоб быть
    не должно.

* [ Step 2 ]=========================================================

    - Мы подошли пожалуй к самому важному шагу в Вашей жизни, точнее в создании ска-
    нета. Если Вы сейчас ошибетесь, могут погибнуть миллионы тон железа, аллюминия и
    платмассы на бездорожьях Вашего мира.

  • Вам необходимо отключить "recording mode", так что заходим в Путч, и убираем
    нашу галочку. Все, самая ответственная часть пройдена.

  • Если Вам не нравится то что Вы там накатали, то можете подправить координаты
    ручками, для того собственно там и есть возможность их править, так что если
    есть проблемы с обкаткой то руки Вам в Руки и вперед. Однако щас "в Европе,
    а также в лучших домах Филадельфии" все поголовно юзают "прямые руки" и про-
    езжают трассы нормально.

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

  • Теперь снимем нашу галочку связывающую машину и наш путь. У нашей машины свой
    путь, ей этот ни к чему, у нее своя судьба, и предназначена это судьба ее со-
    здателем, так что давай создатель снимай галочки.

    +-------------------------------------------------------+
    Видио можно скачать: Server[1] Server[2]
    +-------------------------------------------------------+

  • Видио запись весит 0,5 метра, так что скачать проблем не составит, качество
    записи нормальное, скорость воспроизведения видио тоже, так что жалоб быть
    не должно.

* [ Step 3 ]=========================================================

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

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

  • Теперь перейдем к новосозданной или клонированной машине и вступим с ней,
    в ее первый контакт с почти разумным существом по средством диалога, кото-
    рый так любезно придоставил нам Фернандо и его команда разработчиков. В
    этом диалоге отрубаем управление человеком, так как этой машинкой будет
    рулить процессор.

    +-------------------------------------------------------+
    Видио можно скачать: Server[1] Server[2]
    +-------------------------------------------------------+

    #Видио запись весит 1,4 метра, так что скачать проблем не составит, качество
    записи нормальное, скорость воспроизведения видио тоже, так что жалоб быть
    не должно.

* [ Step 4 ]=========================================================

    - И вот под звуки (url=file:///c:\windows\media\tada.wav) я начинаю летопись последнего
    шага по созданию совершенного интеллекта. Не интеллекто конечно простите за вы-
    ражение шлак, но для машины сойдет, сделает любого с места что ойкнуть не успе-
    ете, если скорость на 700 км в час поставить. И как АИ водитель без прокладок
    обходится просто загадка.

  • И так, пришла пора добавить мозгов нашей машине, добовляем в проет CarAI объ-
    ект. Это и есть то самое вещество которое заставляет нашу тачку двигаться.

  • Свяжем наш CarAI с Нашей первой машиной, нашей второй машиной, и с путем.
    После чего идем в диалог CarAI убираем галочку "Working At Star" и выставля
    ем связи для Path соответственно "Path", для машины управляемой компьютером
    "DRIVABLE VEHICLE" а для машины управляемой человеком "OBSTACLE/TARGET" и
    далее выставляем в объекта которые у нас ответственны за различные события
    настраиваем правильно время запуска, если скрипты то не забываем включать
    CarAI вовремя и не жаловаться, что Вы сделали правильно а у Вас не работает.

  • После разбора полетов типа "Настарт - Внимание - Марш" и правильного запуска
    всех событий, можете настраивать параметры Вашей машины по соответствующему
    описанию на форуме для объекта CarAI

    +-------------------------------------------------------+
    Видио можно скачать: Server[1] Server[2]
    +-------------------------------------------------------+

  • Видио запись весит 4,1 метра, так что скачать проблем не составит, качество
    записи нормальное, скорость воспроизведения видио тоже, так что жалоб быть
    не должно.

* [ EXIT ]=========================================================


БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.
AkyltistДата: Воскресенье, 07 февраля 2010, 16:19 | Сообщение # 15
заслуженный участник
Сейчас нет на сайте
Использование Force при работе с RigidBody Автор: Akyltist

Сила — векторная физическая величина, являющаяся мерой интенсивности взаимодействия тел. Приложенная к массивному телу сила является причиной изменения его скорости или возникновения в нем деформаций.

В связи с тем, что физические объекты, такие как RigidBody, согласно спецификации по AngelScript не могут быть перемещены посредством обычных функций, вида:


  • iObjectOrientationSet(OBJ_X,Quaternion)
  • iObjectLocationSet(OBJ_X,Vector3)
  • iObjectVelocitySet(OBJ_X,Vector3)

Благодаря знаменательному примечанию:
NOTE: this function will only work with objects that support dynamic location setting, like SkinMesh, Particles, etc. Objects supporting physics do not usually work with this function. For example, you should not use this function to progressively alter the location of a RigidBody or a Car, to make it move. You should use the Force object instead.

И так, давайте же в конце концов раз и навсегда разберемся как же нам перемещать объекты подобного типа во время игрового процесса, как нам угодно. (Ну или Вы попробуете разобраться)

Пункт 1: Создаем новый Проект

1. Добавляем SunLight +++++++++++++++++++++++++++++++
----- Ставим галочку в графе активен
----- Положение X = 50
----- Положение Y = 50
----- Положение Z = 50

2. Добавляем CamChase +++++++++++++++++++++++++++++
----- Галочку в Активен
----- Галочку в Рендеринг при Старте
----- Галочку в Подсчете статистики
----- Галочку в Игнорировать положение Актера
----- Галочку в Не наклонять
----- Скорость Вращения 0.3
----- Скорость перехода 0.05
----- Поле зрения 75 градусов
----- Видимая Дистанция 10000 метров
----- Ширина 1
----- Высота 1

3.
Добавляем RigidBody++++++++++++++++++++++++++++++
----- Позиция Х = 0
----- Позиция Y = 0
----- Позиция Z = 0
----- Ориентация X = 0
----- Ориентация Y = 0
----- Ориентация Z = 0

4. Добавляем EventTimer+++++++++++++++++++++++++++++
----- Галочку у Активен
----- Галочку у Запускать при старте
----- Галочку у Ресет таймера в случае паузы

5. Добавляем Script++++++++++++++++++++++++++++++++
----- Галочку у Активен
----- Галочку у Запускать при старте

6. Добавляем Force+++++++++++++++++++++++++++++++++
----- Галочку у Активен
----- Галочку у Запускать при старте

Пункт 2: Устанавливаем связи у объектов

Пункт 3: Разбираем Force

Для того чтобы управлять физическими объектами, допустим теми же RigidBody, к ним необходимо приложить некую силу. Давайте сначала свяжем наш Force с RigidBody в связях, чтобы они смогли взаимодействовать.

Как и в любом другом приложении работающим с геометрией или 3D Графикой, в 3DRAD есть оси:
X - Red
Y - Green
Z - Blue

Теперь посмотрите в доль какой оси у Вас направлена Force(представлена в виде стрелочки). У меня она направлена в доль оси Z что меня вполне устраивает. Так вот, любую силу которую мы будем передавать нашему Force, мы будем согласно Ньютоновской физике, передавать и нашему RigidBody.

Как передать, спросите Вы, да очень просто:

Вот и все, теперь согласно нами установленному закону, каждую секунду в соответствии с Таймером, наш объект будет перемещаться на 20 метров дальше по оси Z. Если вам необходимо перенаправить еще и по другой оси, то добавьте ее и направьте в ту сторону которую Вам необходимо, и свяжите также с RigicBody телом.

Ну и демки:
---------------------- Простейший Пример
---------------------- Более сложный пример


БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.
AkyltistДата: Вторник, 16 февраля 2010, 23:23 | Сообщение # 16
заслуженный участник
Сейчас нет на сайте
Конфигурирование элементов управления через ConfigureControls Автор: Akyltist

И так, судя по постам на форуме, очень мало пользователей этого конструктора научились им пользоваться, и это не смотря на то, что многие из Вас делают на нем свои проекты, на что я бы не рискнул, однако так уж получилось, что именно я могу дать ответы на те или иные вопросы. Один из которых рассмотрим сегодня.

Суть проблемы заключается в том что в компоненте EventOnInput доступны не все управляющие клавиши по умолчанию, однако это совершенно не означает что они не доступны совсем.

Создаем новый проект и кидаем на него:
---[ EventOnInput ]
---[ ConfigureControls ]

Это все что нам не обходимо, на скрине ниже приведены доступные элементы управления по умолчанию:


* 1 --- для EventOnInput
* 2 --- для ConfigureControls

Как мы видим не все клавиши которые нам нравятся есть в этих элементах, например буквально 2 дня назад кое кто из пользователей столкнулся с тем что им не доступна клавиша [SPACE] по умолчанию. А ведь мы так все привыкли видеть ее в играх, как же нам сделать ее доступной? Да все элементарно просто!!!

1. Заходим в свойства ConfigureControls
2. Выбираем жертву для замены: Для себя я выбрал [F6]

(тут прошу всех сначала прочитать пункты 3,4,5 а потом выполнять)
3. Запускаем наш проект и жмем заветную комбинацию Ctrl + Shift + F9 , после чего увидим сообщение:



4. Жмем [SPACE] ну или в простонародье "ПРОБЕЛ": и видим второе сообщение:



5. Жмем любую клавишу или кнопку мыши и сообщение исчезает, после чего останавливаем проект.


После этого заходим и любуемся на наш [SPACE] который заменил [F6]


Ну вот и вся математика! А что будет когда мы дойдем до теории квантовых петель?


БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.
AkyltistДата: Среда, 24 февраля 2010, 02:06 | Сообщение # 17
заслуженный участник
Сейчас нет на сайте
CAR Damage: Сжигаем тачку к чертям ( Автор: Akyltist )

-----[Intro]
Данный урок не пропагандирует насилие, это имитация сжигания машины в соответствии с ее повреждениями для воссоздания в играх. НЕЖЕЧЬ никому машины. Все негативные последствия прочитавшие данное руководство берут на себя. Если вы не согласны - не читайте!

-----[History]
Как когда-то колорадские жуки захватили сельхозугодья всего мира, так и вы дорогие собеседники завалили вопросами раздел форума: "А как же сжечь или помять машину в зависимости от ее повреждений". В общем я не выдержал и решил поделиться капелькой знаний. Понеслась!!!

-----[Step A]
Не буду Вас напрягать накидыванием компонентов, Вы можете скачать заготовленную демку. Опишу только саму суть:

За основу взята демка ScoreDemo из стандартных проектов, добавлено 2 SkinMesh и 2 Particle.

  • 1. Particle - воссоздает дым
  • 2. Particle - восоздает огонь
  • 1. SkinMesh - текстура целой машины
  • 2. SkinMesh - текстура побитой машины

Ну и разберем изменения в скрипте:

Задаем переменные:
float Score = 100;
bool Texture = false; // Пока машина не сильно побита не меняем ей текстуру
bool ParticleA = false; //Пока машина не сильно побита не включаем дым
bool ParticleW = false; //Пока машина не сильно побита не включаем огонь
Чем больше скорость тем сильнее бьем:
void Main()
{
if (IN_22 > 0) //если столкнулись с предметом то продолжаем
{
// Если скорость менее 10 км в час то ничего страшного
if(iObjectKmh(OBJ_44)>10)
{
// Если скорость менее 20 км в час то отнимаем мало
if(iObjectKmh(OBJ_44)<20)
{
Score = Score - iObjectKmh(OBJ_44)/40;
}
else
{
// Если 20<скорость<25 км в час то отнимаем средне
if(iObjectKmh(OBJ_44)<25)
{
Score = Score - iObjectKmh(OBJ_44)/20;
}
// Если 25<скорость км в час то отнимаем много
else
{
Score = Score - iObjectKmh(OBJ_44)/10;
}
}
}
Выводим эффекты в зависимости от полученых повреждений:
// Если текстуру еще не сменили
if(Texture != true)
{
if(Score<50)
{
iObjectHide(OBJ_66); // Скрываем целый скинмеш
iObjectShow(OBJ_88); // Показываем покоцаный
Texture = true; // Переключаем флаг
}
}

// Если дыма еще нет то обрабатываем
if(ParticleA != true)
{
if(Score<75)
{
iObjectShow(OBJ_110);// Показываем дым
ParticleA = true; // Переключаем флаг
}
}

// Если машина еше не горит то обрабатываем
if(ParticleW != true)
{
if(Score<40)
{
iObjectShow(OBJ_132);// Показываем огонь
ParticleW = true; // Переключаем флаг
}
}

}
OUT_0 = Score; // Выводим оставшиеся жизни)))
}




БЛОГ: Архитектура игрового движка, Математические алгоритмы, Фэнтази рассказы: Свитки о страннике и т.п.
Форум игроделов » Движки для разработки игр и сложные системы разработки » 3D Rad » 3D Rad (Онлайн Руководство Разработчика GCUP) (пособие для пользователей 3D Rad)
Страница 1 из 11
Поиск:

Все права сохранены. GcUp.ru © 2008-2014 Рейтинг