X-Ray

Материал из S.T.A.L.K.E.R. Wiki
Перейти к: навигация, поиск



X-Ray
Логотип
Логотип
НазваниеX-Ray Engine
Ключевые
разработчики
Олесь Шишковцов
Александр Максимчук
Дмитрий Ясенев
Андрей Коломиец
Среда разработкиMicrosoft Visual Studio
6.0[прим. 1]
.NET[прим. 2]
.NET 2003[прим. 3]
Используемые APIBoost, DirectPlay, DirectX, EAX, FreeImage, FreeMagic, Lua, Lua.JIT, NvAPI, ODE, OGG, OpenAL, SciLexer, Theora, Vorbis, XML

X-Ray — трёхмерный игровой движок, разработанный программистами Олесем Шишковцовым и Александром Максимчуком в компании White Lynx. Впоследствии был представлен компании GSC Game World, где началась разработка проекта Oblivion Lost на этом движке.

История разработки[править | править код]

Написание движка началось в в 1998-м году ведущим программистом компании White Lynx — Олесем Шишковцовым. Он занимался разработкой графического движка, искусственного интеллекта и сетевым режимом. Позже к разработке присоединился Александр Максимчук, который занимался всем остальным. Движок получил рабочее название wlynxengine, на нём началась разработка трёхмерного симулятора игры «Морской бой». Предположительно, игра в первоначальном виде была выпущена для игровых автоматов и ПК, но не получила никакой известности. После этого началась разработка проекта Alien Logic, движок получил название X-Ray. Олесь занимался написанием полноценной системы движка для игры. Разработка проекта происходила нестабильно: игра то замораживалась, то разработка возобновлялась.

GSC Game World[править | править код]

2000 год[править | править код]

В 1999-м году у руководителя компании White Lynx Юрия Сторчака начались финансовые проблемы, в связи с чем ведущие программисты Олесь и Александр начали искать новую работу, не увольняясь из White Lynx. За несколько месяцев они написали техническую демо-версию сетевого шутера на своём движке X-Ray. Весной 2000-го попытались устроится на работу в компанию GSC Game World, продемонстрировали наработки на собеседовании руководителю компании Сергею Григоровичу, ему понравился результат и он принял на работу программистов. Так началось развитие движка в компании GSC.

В июне 2000 началась переработка игрового редактора уровней игры Alien Logic, над которым в стенах компании White Lynx работал Александр "AlexRR" Рудковский. Редактор перерабатывался под новую концепцию движка. В августе 2000, Олесь Шишковцов переписал OGF Exporter - плагин для Discreet 3ds max 4, который был предназначен для конвертации смоделированной геометрии в формат .OGF, который на тот момент был основным трехмерным форматом для игрового редактора и движка в целом.

11 сентября последняя правка и сборка редактора уровней XRay Map Editor (Gold edition), написанный в среде Microsoft Visual Developer Studio 6.0. В конце сентября, Александр Максимчук начал переносить исходный код редактора в среду Borland C++ 5.0, который был закончен к концу ноября 2000.



2 сентября, в движок был внедрен основанный на C скриптовый язык программирования — Scripting engine 0.94a, за авторством польского программиста — Пшемыслава Подсиадлы, написанный в 1998 году.
10 сентября - внедрение интерфейса трехмерного преобразования от трехмерного движка Genesis 3D, который распространялся в открытом виде по свободной лицензии и RAPID API.
20 сентября был создан репозиторий движка, содержащий в себе сам исходный код движка, также редактор уровней и OGF экспортер. После этого была сформирована иерархия классов движка с переосмыслением старых классов:

Иерархия классов
Класс Приуроченный подкласс
Basic Camera
Object
Camera Cameras_Array
Object Hero
Key
Bridge
Teleport
Bird
CXR_APP
CXR_Input Устройство ввода
CXR_Inifile ini-файл системы
CXR_Textrloader Загрузка и управление текстурами
CXR_SoundManager Загрузка и управление звуками
CXR_Creator[прим. 4]
FStaticRender Загружает, содержит и рендерит всю статику которая раз загружается и в процессе не изменяется
CXR_Render Рендерит все остальное
CXR_EffectManager Эффекты
CXR_Meshloader Загрузка объектов
CXR_Cameras_Array Камеры уровня
CXR_Console Консоль вывода на экран
CXR_Inifile ini-файл уровня
CXR_Space Назначение определения столкновения между объектами. Загружает и содержит Collision Forms для всей статики. добавляет, удаляет и перемещает формы для динамических объектов.
CXR_Stationary_Array
CXR_Mobile_Array
CXR_Command_List Список событий

В конце сентября Шишковцов и Максимчук распределили между собой работу над собой, где игровой редактор полностью отошел к Максимчуку, графическая часть к Шишковцову. Александр начал переводить игровой редактор на среду разработки Borland C++ 5.0, А Олесь начал доводку и оптимизацию графической части. Олесем была сделана доводка скриптовой базы, в понятии обработки конструктора/деструктора/оператора функции, возвращающие структуры, различие функций[прим. 5], реализации модификатора const и typedef, строковые и векторные классы и оптимизацию кода самого движка.

В начале октября была реализована эмуляция карт освещения и четырехпроходное текстурирование, с поддержкой до 15-ти текстурных проходов, где оптимальная разворотка шейдеров для использования мультитекстуринга, на тестируемых видеокартах GeForce2 достигала до 15-ти текстур, развернутых в четыре прохода. На TNT(1/2) - в 8 проходов, Voodoo 1 - в 15 проходов. Программируемые шейдеры были переписаны в виде скриптов и оптимизированы для аппаратной T&L[прим. 6]. Была реализована автоконвертация форматов вершин в зависимости от шейдера с соотношением количества текстур, что понизило требования к памяти, ускорило трансформацию и уменьшило требования к пропускной способности ускоренного графического порта на видеокартах. Была ускорена работа отсечения объектов по сферам во фрустуме, начата реализация AABB и OBB отсечения. Начался процесс отказа от внутреннего формата текстур .t на использование формата .TGA для HUD-текстур, с целью ускорения их работы.

В процессе перевода функционала редактора на Borland C++, было решено отказаться от компиляции локаций внутри редактора и вывести компиляцию в отдельно-исполняемое приложение. 10 октября Олесь Шишковцов начал реализовывать компилятор геометрии — xrLBuilder.



В конце октября внутренний формат текстур — .t был окончательно вытеснен растровым форматом .TGA, который теперь использовался для всех текстур. Были проведены тесты отрисовки геометрии с использованием AABB, OBB отсечения и технологии progressive meshes, которая была доработана Шишковцовым. В начале ноября была оптимизирована работа просчета коллизии объекта, в частности RayPick[прим. 7] и общих математических операций, а также скелетной анимации. Движок был переведен на новый DirectX 8.0 API.

В течении декабря под новый API были адаптированы все текстурные классы движка[прим. 8], отлажена скелетная анимация под аппаратный рендер и с использованием прогрессивной геометрии. Была начата реализация статической скелетной анимации, псевдо-статической[прим. 9] и псевдо-динамической[прим. 10] геометрии, облаков на небе[прим. 11], системы фларов и воллмарков[прим. 12]. Был реализован Demo Play и Demo Record.

2001 год[править | править код]

Tavex[править | править код]

В 2000-м году произошло слияние White Lynx с компанией Tavex, она же TerraGame Group[прим. 13] и на движке X-Ray началась разработка некоторых новых (Tangram 3D, Pacman 3D, Titan Racer и Kremlin Puzzle) и доработка старых проектов. В 2001-м году были доработаны и выпущены Alien Logic, а также трёхмерный симулятор «Морского боя» 3D Armada (где использовалась самая первая версия движка wlynxengine).

Характеристики и особенности движка[править | править код]

X-Ray написан на C/C++ с использованием исходников Microsoft DirectX SDK, с подключенным к нему компилятором языка LUA “lua.JIT.1.1.4”. Использует при работе библиотеки Microsoft Visual C++ 7.1, Creative EAX, ODE, OpenAL, GameSpy Client, ColorPicker.

Графический движок[править | править код]

Direct3D 7 API[прим. 14][прим. 15][править | править код]

  • Динамический Level of Detail геометрии всей сцены;
  • Динамическое колоризированное вершинное освещение;
  • Сверхбыстрый морфинг геометрии с низким расходом памяти;
  • Симуляция атмосферных эффектов, таких как небо, облака, солнце;
  • Быстрый, аппаратно ускоренный алгоритм генерации мягких теней;
  • Полноценный антиалиасинг;
  • Использование табличного[прим. 16] или вершинного тумана с поддержкой взаимодействия с диапазоном;
  • Возможность рендеринга с тройным буфером;
  • Схема компенсации анимаций;
  • Карты освещения и динамические лайтмапы;
  • "Умное" сглаживание с низкими ресурсными затратными;
  • Система фларов;
  • Система партиклов;
  • Bump mapping.

Direct3D 8.1 API (Shader Model 1.0—1.1)[прим. 17][править | править код]

  • Поддержка всех D3D акселераторов третьего поколения, от GeForce 2 и выше;
  • Визуализация, оптимизированная под технологию TnL (both FF and shading capable parts);
  • Продвинутая Level of Detail технология для всей геометрии;
  • 500.000 — 1.500.000 полигонов в кадре;[прим. 18]
  • Высокодетализированные персонажи и оружие;
  • Высокоскоростная смешанная система анимации, способная на неограниченное число интерполяции костей и модульных операций;
  • Поддержка SSE/3Dnow! технологии;
  • Определение видимости (геометрии);
  • Основанная на портальной системе, нелинейная система определения видимости;
  • Оптимизирована для T&L оборудования для упрощения моделей;
  • Технологии Dynamic occlusion culling, contribution culling;
  • Адаптирующаяся под «железо» технология кешированния;
  • Освещение, Lightmapping;
  • Отбрасывание теней персонажами;
  • Продвинутый выбор источника света, совмещение и его разделение;
  • Detail mapping;
  • Система партиклов с реальной физикой;
  • Экранный post-processing;
  • Продвинутая шейдерная система;
  • Детальные объекты;

Direct3D 9.0\9.0c API (Shader Model 2.0—3.0)[править | править код]

Динамические мягкие тени
Подсчет файлов в исходниках, и их расширения
  • Поддерживается рендеринг в высоком динамическом диапазоне (HDR) с плавающей запятой;
  • Bump mapping;
  • Normal mapping и Parallax mapping;
  • Полностью динамическое освещение, мягкие тени;
  • Depth of field;
  • mBlur;
  • Bloom;
  • Динамические лучи света.

Direct3D 10 API (Shader Model 3.0—4.0)[править | править код]

  • Soft Water;
  • Soft Particles.

Direct3D 10.1 API (Shader Model 4.0—4.1)[править | править код]

  • Steep Parallax
  • Wetting Surfaces

Direct3D 11 API (Shader Model 4.1—5.0)[править | править код]

  • Тесселяция;

Физический движок[править | править код]

В «X-Ray» используется свободный физический движок Open Dynamics Engine (ODE). Его особенности:

  • Высокая скорость обработки коллизий (быстрее, чем коммерческие движки MathEngine, Havok, и т.д.);
  • IK в реальном времени, реалистичная физика машин, и т.д.;
  • База данных коллизий с низким использованием памяти;
  • Обнаружение столкновений оптимизировано для большого числа запросов в высокополигональной среде;
  • Реалистичная симуляция баллистики, движения и т.д.

Игровой ИИ[править | править код]

Система A-Life.

Звуковой движок[править | править код]

Папки, количество файлов находящихся в них, и общий размер

Звуковой движок использует технологию (HRTF) для качественной генерации звука. Поддерживаются различные эффекты (эхо, зависимость громкости от расстояния источника, эффект закрытого помещения). Возможен вывод шестиканального (5.1) звука, поддерживается технология EAX 2.0. Звуковые данные сохраняются в медиаконтейнерах WAV, WMA, OGG, ADPCM.

Сетевая игра[править | править код]

Движок использует сетевую модель «клиент-сервер» и технологию распределённых вычислений. Движком поддерживается до 32 игроков в одном матче. Также, есть несколько особенностей:

  • Инструменты для управления сетевой игрой;
  • SDK для создания сетевых и одиночных уровней;
  • Поддержка подключения дополнительного контента.

Статус движка[править | править код]

Исходные коды X-Ray закрыты, сторонним компаниям по лицензии не поставляются. Хотя, судя по некоторым интервью с разработчиками, изначально движок планировали продавать. Это также косвенно подтверждает презентация, проведённая GSC в 2004 году на одной игровой выставке, где Олег Яворский рассказывал исключительно о функциях и преимуществах движка.

Также, одно время циркулировали слухи, что исходники можно было приобрести за астрономическую сумму в $100.000.

После релиза Lost Alpha были выложены исходники движка для некоммерческого пользования.

Список игр на X-Ray[править | править код]

После создания X-Ray на нём планировалось много проектов — разработчики пытались использовать движок во многих игровых жанрах. Одни из них, наиболее близкие к Oblivion Lost и S.T.A.L.K.E.R., — 2 отменённые игры, Pilgrims (рус. «Пилигримы») и Commandos (оба названия рабочие).

Piligrims[править | править код]

Piligrims — одна из первых стратегий, предполагающая огромную массовость сражений подобно «Казакам». В основе лежит идея объединения игроков и их прогресса на одном сервере, возникшая по успешному опыту запуска «Казаков» с массовым прогрессом на одной глобальной карте (внутри GSC). Огромные масштабы игрового мира предполагалось обслуживать на собственных серверах.
Игра совмещала несколько жанров: FPS[прим. 19], Tactics и RTS. Среднее время прохождения игры 30 часов.

Недалёкое будущее — события войн между корпорациями, где за каждой командой, игроком и его спецподразделением закрепляется база-предприятие по добыче ресурса. На глобальной карте предусмотрены перелёты в атмосфере и укрепление на новой ресурсной точке. Миссии исследования территории вокруг базы позволяли находить редкие артефакты. На уровне развития перелётов на другие планеты миссии исследования территории вокруг базы могли дать значительное технологическое преимущество: инопланетное оружие, ресурсы для научных открытий. Но основе игры должны были быть сетевые бои — схватки и нападения на чужие заводы и защита своих базы, точек добычи и корабля транспортировки.
По мере развития игрок должен был выбирать либо численные, либо качественное улучшения. Спецподразделения укрепляются всё более мощным оружием вплоть до футуризированного, а локации переходят на колонизированные планеты освоенной системы. Основными особенностями игры было введение техники (в частности летающей и наземной), групповое управление бронетехникой[прим. 20]. Развитие героя можно было уводить либо по горизонтали — рост мастерства, либо по вертикали — рост по чину. Рост по чину позволял переходить к управлению группой, дальше большими группами, даже массовыми скоплениями, полками и техникой. На общем сервере опыт и накопления артефактов игрока не терялись после прохождения миссий, база-корабль могла уводится в разного типа боевые формы (специализации по добыче ресурсов, что побуждало бы игроков формировать между собой фракций).

Для отработки концепции этой игры проводили тесты производительности на X-Ray, массовости мобов, загруженности ландшафта, детализацией объектов. Но её разработку было решено остановить (в последствии отменить), хотя даже после отмены Алексей Мосейчук получил задачу подготовить общее видение игры в скетчах (без живописных и атмосферных зарисовок).

Commandos[править | править код]

Commandos — развитие Piligrims с идеей с техникой, но без тактического и стратегического массива логик и механик. Основной упор был на «пирамиды» коротких сетевых миссий-арен.[прим. 21] Бои планировались в 4-х тактических формах, с возможностью выбора специализации, через военные импланты и постепенное улучшение оружия.[прим. 22] Среднее время прохождения одного типа игрока — 25 часов.

Вселенная была ближе к жанру киберпанк, между Fallout и StarWars, с такой высокой динамикой боя — короткие сессии сценарного прохождения в пост-апокалиптическом мире с целью поиска артефактов, природных элементов, ресурсов или их частей. События в атмосфере гаснущего мира Земли, всё уничтожено ядерными взрывами. Основная масса населения отправилась на колонизацию других планет, на орбитальных станциях Земли остались Commandos и небольшая группа учёных-наблюдателей. Планета частично обледенела, частично радиоактивна, то есть среда стала агрессивна. События истории разворачиваются вокруг поиска первоэлементов, формирующих агрегат («дух возрождения») жизни на планете — нужно было собрать сосредоточения силы Земли, 8 духов. Дальше игрок отправлялся к центру Земли, чтобы вызвать ядерную резонансную реакцию — пробудить дух Земли. Сюжет имел 3 ветки развития, во-первых с выбором одной из сторон, фракций: боевик-полицейский, выживший-повстанец или инженер; во-вторых, выбор способа выживания, методов возвращения планеты к жизни.

Игра в осуществлении требовала много ресурсов и разработка была отменена.

Дальнейшая судьба[править | править код]

При исследовании слитого в сеть исходного кода движка версии 2.0 обнаружилось, что Vostok Engine является дальнейшим развитием X-Ray 2.0[прим. 23].

Интересные факты[править | править код]

  • Когда 4A Games выложила первые скриншоты своей разрабатываемой игры Metro 2033: The Last Refuge, многие игроки заметили сильное сходство графики с предыдущим их детищем — S.T.A.L.K.E.R. И заметили не только они. Компания GSC подала в суд на Александра Максимчука за нарушение авторских прав и выиграла дело. Конфликт был улажен. Однако, в ходе «раскопок» Metro были также вскрыты факты использования текстур и других материалов из игры Сталкер.
  • В разработке утилит hxGrid, позволяющих устраивать сетевую компиляцию ресурсов игры (S.T.A.L.K.E.R.: Зов Припяти), принимали участие бывшие разработчики Venom, ныне сотрудники Deep Shadows, Сергей Забарянский и Роман Лут.
  • В исходном коде движка числится около 8000 файлов (на состоянии 1 сентября 2006)
  • В исходном коде движка числится 8221 файл (на состоянии 10 января 2007), общий объем составляет 47,3 МБ
  • В исходном коде движка числится 6293 файла (на состоянии 28 февраля 2007), общий объем составляет 35,3 МБ
  • В исходниках движка версии 1.0 (на состоянии 2008 года), содержится 7382 файла, общий объем составляет 46,5 МБ и 86 различных расширений.
  • Полная компиляция и линковка С++ кода сталкера на одном Athlon 2000 занимала более  3х часов. С использованием IncrediBuild – 40 минут.

Примечания[править | править код]

  1. ^ До 8 августа 2002
  2. ^ До 12 июня 2003
  3. ^ До 10 января 2007
  4. ^ контейнер дл¤ одного уровн¤: создаетс¤ и уничтожаетс¤ дл¤ каждого уровн¤ отдельно
  5. ^ Функции с одинаковыми именами, но с разными параметрами
  6. ^ Трансформации и освещения
  7. ^ Выделение объекта(-ов)
  8. ^ Fire, Lightmap, Null, Reflection, Spherical Reflection, Standart, за исключением видео-стримминга
  9. ^ Предшественник детальных объектов
  10. ^ Двери, лифты. Реализацию и работу этого класса можно наблюдать в сборке 788
  11. ^ Было тестирование, не было реализовано в тот период
  12. ^ Изначально только как следы от снарядов
  13. ^ Домашний ПК. — 2002. — №39. — с. 81
  14. ^ До ноября 2000
  15. ^ Также относится и к Alien Logic
  16. ^ Попиксельный туман
  17. ^ До февраля 2003
  18. ^ Актуально только для X-Ray 1.0xx
  19. ^ Близко к Counter-Strike и Battlefield, но с небольшим преобладанием в сторону 2-й игры.
  20. ^ Во времена планирования игры подобная особенность отсутствовала в играх).
  21. ^ То есть игра была ближе к Counter-Strike.
  22. ^ Подобно Battlefield и TeamFortress.
  23. ^ XRAY2 source code - Страница 20 - ..::GAMEINATOR::..

Ссылки[править | править код]