на каком языке написан сталкер тень чернобыля

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.

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

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

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

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

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]

Direct3D 8.1 API (Shader Model 1.0—1.1) [прим. 17]

Direct3D 9.0\9.0c API (Shader Model 2.0—3.0)

на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля

Динамические мягкие тени

на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля

Подсчет файлов в исходниках, и их расширения

Direct3D 10 API (Shader Model 3.0—4.0)

Direct3D 10.1 API (Shader Model 4.0—4.1)

Direct3D 11 API (Shader Model 4.1—5.0)

Физический движок

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

Игровой ИИ

Звуковой движок

на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля

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

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

Сетевая игра

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

Статус движка

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

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

Список игр на X-Ray

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

Piligrims

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

Commandos

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

Дальнейшая судьба

Источник

На каком языке написан сталкер тень чернобыля

на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля

на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля

на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля

на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля

Языки программирования

неприкаяннаяДата: Вторник, 27.03.2012, 00:19 | Сообщение # 1
на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля

на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля

muhaДата: Вторник, 27.03.2012, 00:19 | Сообщение # 2
на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля

на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля

Особенность первая. Типы данных и западло с nil.

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

== сравнение, равно ли значение

= сравнение, НЕ равно ли значение

сравнение, больше ли значение

= сравнение, больше ли значение или равно

and логический оператор И

not логический оператор НЕ

or логический оператор ИЛИ

local exposure_count = 0

Выглядит это примерно так:

if auto_injection_active then

if antirad_check_delay == nil or game.get_game_time():diffSec(antirad_check_delay) > 60 then

if not db.actor:object(«antirad») and not (use_scientific_kit and db.actor:object(«medkit_scientic»)) then

—обратите внимание сюда
if reminder and reminder_count == 0 or reminder_count >= mins_till_next_remind then
—обратите внимание сюда
if use_text then
local news_text = «%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n»..»%c[default]Напоминаю: %c[255,230,0,0]Противорадиационные препараты отстутствуют! %c[default]Автоматический ввод препаратов невозможен.»
db.actor:give_game_news(news_text, «ui\\ui_iconsTotal», Frect():set(0,188,83,47), 0, 3000)
end
if use_sounds then
local snd_obj
if use_custom_sounds then
snd_obj = xr_sound.get_safe_sound_object( [[HEV\no-anti-rad]] )
else
snd_obj = xr_sound.get_safe_sound_object( [[device\pda\pda_tip]] )
end
if snd_obj then
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
end
end
reminder_count = 1
elseif reminder then
reminder_count = reminder_count + 1
end
else
radiation_warning = true
reminder_count = 0
end
antirad_check_delay = game.get_game_time()
end
end
end

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

if reminder and reminder_count == 0 or reminder_count >= mins_till_next_remind then

выдаст ошибку и приведёт к вылету!

Почему? Да потому что НЕЛЬЗЯ сравнивать НИЧТО с вещественным значением.
Именно поэтому, когда вы создаёте новую переменную, вы ОБЯЗАНЫ задать ей значение по умолчанию, даже если вы полностью уверены, что она нигде не будет использована до инициализации.

if (reminder_count or 0) >= mins_till_next_remind then

Кроме вышеприведённой ситуации, возможен ещё один неприятный момент, связанный с определением переменных и значением nil. Суть его заключается в том, что при присваивании значений или операциями с переменными мы можем получить кучу проблем. покажу конкретнее каких:

1) «Убийство» переменных

Положим, у нас с reminder_count происходят ещё какие-нибудь занимательные вещи, например мы его значение зачем-нибудь присваиваем другой переменной вот так:

В результате чего переменная antirad_check_delay «сдохнет» и будет деловито убрана «сборщиком мусора» из памяти, что моментально приведёт к вылету, когда в дальнейшем какая-то часть кода обратится к значению antirad_check_delay.

2) Ошибки деления на 0.

Теперь положим что у нас reminder_count используется в каком-нибудь расчёте вот так:

Как мы помним, у нас reminder_count не инициализирована, и как следствие равна nil.

В итоге мы получим попытку поделить exposure_count на ноль (в нашем случае на nil, что суть одно и то же в нашем случае) и получим «классический» программистский вылет из-за ошибки деления на ноль.
3) Ошибки присвоения.

local enemy = self.npc:best_enemy()
if wpn then
—обратите внимание сюда
self.weapon_id = wpn:id()
—обратите внимание сюда
self:return_items(self.weapon_id)
— printf(«set_weapon[%s]:set %s[%s]»,self.npc:character_name(),wpn:id(),wpn:section())
else
printw(«set_wpn:weapon not exist»)
end
if self.modes.process_mode == «3» and enemy then
for k,v in pairs(self.weapons) do
for i,w in ipairs(v) do
if w.id

= self.weapon_id then
local item = level.object_by_id(w.id)
if item and item:parent() and item:parent():id() == self.npc_id then
printw(«set_weapon[%s]:process %s[%s]»,self.npc:character_name(),w.id,w.sec)
self:process_item(item)
end
end
end
end
end
if enemy then
self.npc:set_item(object.idle,wpn)
end
self.weapons = nil

произойдёт попытка присвоить значение ПУСТОТЕ, т.е. nil = wpn:id(), и это МГНОВЕННО приведёт к вылету.

Как с этим бороться.

Бороться с такими ситуациями очень просто на самом деле. Во-первых:
ВСЕГДА ИНИЦИАЛИЗИРУЙТЕ ПЕРЕМЕННЫЕ.

Т.е. вот такое описание переменной:
local reminder_count

НЕДОПУСТИМО! ВЫ ОБЯЗАТЕЛЬНО ДОЛЖНЫ ЗАДАТЬ ПЕРЕМЕННОЙ ЗНАЧЕНИЕ! Если переменная числовая, сделайте это так:

local reminder_count = 0

local reminder_count = «» (получится вместо nil пустая строка)

Если логическая, то так:

local reminder_count = false

В общем, делайте так, как вам удобнее, но ДЕЛАЙТЕ ОБЯЗАТЕЛЬНО!

И во-вторых:
ВСЕГДА ПРОВЕРЯЙТЕ ПЕРЕМЕННУЮ ПЕРЕД ИСПОЛЬЗОВАНИЕМ! Т.е. в кусках кода, чреватых вылетами (к ним относятся АБСОЛЮТНО ВСЕ части, где идёт работа с вещами или оружием) обязательно вставляйте проверки переменных на nil следующим образом:

= nil then
self.weapon_id = wpn:id()
end

= nil and reminder_count

= 0 then
antirad_check_delay = exposure_count/reminder_count
end

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

Небольшое дополнение итак, вы вставили обходные проверки вот таким образом:

= nil then
self.weapon_id = wpn:id()
end

= nil and reminder_count

= 0 then
antirad_check_delay = exposure_count/reminder_count
end

И у вас в случае некорректного значения компилятор спокойно пропустил этот код, ничего не сделав ни с self.weapon_id (из первого примера), ни с antirad_check_delay (из второго). Однако вам всё-таки нужно, чтобы с ними что-то происходило, даже если проверяемые переменные неверны. Тогда я бы советовал вам дополнить этот обход отработкой нештатной ситуации. Делается это банально просто:

= nil then
self.weapon_id = wpn:id()
elseif self.weapon_id == nil then
—вставьте сюда код, что делать если self.weapon_id не существует
elseif wpn:id() == nil then
—а сюда, если wpn:id() не существует
end

И для второго случая аналогично:

= nil and reminder_count

= 0 then
antirad_check_delay = exposure_count/reminder_count
else
—а тут что мы сделаем если reminder_count не существует
—я бы сделал например вот так:
antirad_check_delay = exposure_count/1
—и все дела
end

Источник

История игровых движков №7 — X-ray Engine

История появления движка

Движок полностью разработала украинская игровая студия GSC Game World, над графической частью движка в основном работали программисты Алесь Шишковцов и Александр Максимчук (они же работали в 4A Games над проектом Metro 2033). Первая демонстрация движка была проведена в 2001 году:


Как видно, изначально тематики S.T.A.L.K.E.R. не было и близко — демонстрация была больше похожа на джунгли Far Cry 1. Однако уже тогда движок был достаточно продвинутым — работал на DirectX 7 (в дальнейшем к выходу Теней Чернобыля в 2007 году добавили поддержку DirectX 8 и 9), поддерживал Detail mapping, Lightmap, продвинутый AI и текстуры высокого разрешения — в одном кадре могло находиться до 4 000 000 полигонов. Однако, чтобы всю эту красоту могли тянуть компьютеры того времени, пришлось сильно ограничить размер игровой локации — она могла быть не больше 2 кв. км и грузилась сразу и целиком, но между локациями были переходы с загрузочными экранами. X-Ray был написан на C/C++ с использованием исходников Microsoft DirectX SDK, с подключенным к нему компилятором языка LUA “lua.JIT.1.1.4”. При работе использовались библиотеки Microsoft Visual C++ 7.1, Creative EAX (технология для создания звуковых эффектов окружающей среды), ODE (открытый физический движок), OpenAL(интерфейс программирования приложений (API) для работы с аудиоданными, GameSpy Client (мультиплеерная составляющая) и Color Picker.

на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля
на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля
A-Life

Еще одна особенность движка, которой могут гордиться разработчики — это система искусственного интеллекта A-Life (artificial life — искусственная жизнь). Сами разработчики описывают ее так:

Суть [A-Life] заключается в том, что персонажи в игре живут своей жизнью и существуют всё время, а не только когда их видит игрок. [. ] Мы ввели два термина, характеризующие 2 модели поведения персонажа, отличающихся степенью детализации: офлайн и онлайн. Офлайновое поведение персонажа является очень простым с точки зрения детализации: персонаж не отыгрывает анимации, звуки, не управляет активно инвентарём, не строит детализированные сглаженные пути (хотя строит пути по глобальному навигационному графу, но об этом позже) и т.д. Онлайновое поведение напротив имеет полную степень детализации. Т.е. можно считать, что офлайновое поведение является плодом онлайнового.

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

Для реализации этого симулятор следит за передвижением игрока и объектов в офлайне и переводит их в онлайн/офлайн. При вычислении перехода объектов используется стандартный трюк с инерцией: радиус перехода в офлайн больше радиуса перехода в онлайн.

Далее стоит сказать о навигации объектов в онлайне и офлайне. У нас в игре есть уровни, для каждого из которых создаётся свой навигационный граф, который используют персонажи для передвижения в онлайне. Мы называем его детальным графом. Для каждого детального графа также создаётся его менее детализированный аналог, вершины которого можно связать с вершинами такого же графа другого уровня/ей. Т.е. после объединения всех таких графов воедино мы получаем граф, который объединяет все уровни. Он и используется персонажами для передвижения в офлайне. Также им пользуются персонажи в онлайне, когда они выполняют свои стратегические цели. Например, если персонаж в онлайне решил идти на другой уровень, то он строит путь по глобальному графу, затем строит путь по детальному графу своего уровня со своей позиции до точки глобального графа. Если эта точка уже на другом уровне, то он телепортируется туда и автоматически переходит в офлайн. Для того, чтобы это не происходило на глазах у игрока, мы точки перехода для игровых персонажей ставили дальше точки перехода игрока, где-то «за углом»

Как видно, ИИ сделан очень качественно, и на протяжении всей игры нет ощущения, что Зона мертва — постоянно происходят какие-то события: перестрелки, встреча различных сталкеров, мутантов, появление новых сообщений на КПК и т.д.

на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля

В заключительной части трилогии, Зов Припяти, вышедшей в 2009 году, движок получил поддержку DirectX 11. Однако увы — все его особенности движок 8илетней давности не потянул, поэтому добавили только тесселяцию (процесс добавления новых выпуклых многоугольников в полигональную сетку с целью повышения детализации сетки, иными словами — выпуклые объекты стали реалистичнее). Общий уровень графики остался тем же:

на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля

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

Источник

История создания S.T.A.L.K.E.R. Часть 1. От любительского продолжения Warcraft до культовой игры о Чернобыле

на каком языке написан сталкер тень чернобыля. Смотреть фото на каком языке написан сталкер тень чернобыля. Смотреть картинку на каком языке написан сталкер тень чернобыля. Картинка про на каком языке написан сталкер тень чернобыля. Фото на каком языке написан сталкер тень чернобыля

Продолжение: История создания S.T.A.L.K.E.R. Часть 2. Смена концепции, поездка в Чернобыль и работа над виртуальной Зоной отчуждения S.T.A.L.K.E.R. В названии этой игры есть что-то близкое для каждого игрока, рожденного в одной из стран бывшего Союза, понятное одновременно и украинцам, и россиянам. Да что там — даже среди игроков других стран, в том числе англоговорящих, она пользуется заслуженной популярностью за особенный стиль и выверенную атмосферу. Атмосферу, конечно, нерадостную. Но в которой однозначно чувствуется что-то «русское», даже «советское» что ли, общее для всех нас. Пускай это и атмосфера разрухи. В Чернобыльской зоне, с руинами заброшенных зданий, с давно неработающим колесом обозрения, есть особенная, как бы это не прозвучало, притягательность.

Оригинальная S.T.A.L.K.E.R., имеющая подзаголовок «Тень Чернобыля», появилась на прилавках магазинов в 2007 году. Самостоятельное дополнение к ней, S.T.A.L.K.E.R.: Чистое небо, вышло в 2008 году. Второе дополнение, S.T.A.L.K.E.R.: Зов Припяти, увидело свет в 2009-м. До сих пор ожидается и полноценная номерная часть серии, S.T.A.L.K.E.R. 2.

Этот материал — первая часть в цикле статей.

Коротко о GSC Game World

А точнее, назад. Рассказ о серии стоит начать с небольшого экскурса в прошлое, в историю компании, которая ее разработала.

GSC Game World была основана в 1995 году в Киеве. Название состоит из инициалов ее руководителя — Григоровича Сергея Константиновича. Интересно, что название и логотип были придуманы задолго до ее формального основания, еще когда Сергей учился в школе.

Вообще юный Григорович, страстно увлекавшийся тогда еще появляющимися в Украине — а это было начало 90-тых — компьютерными играми, начал коммерческую деятельность не с разработки игр, а с продажи дисков (пиратских, разумеется).

Открыв компанию, Сергей с несколькими товарищами, занимались разработкой дисковых энциклопедий и даже переводом зарубежных игр (это, кстати, малоизвестный факт). Наконец, они принялись за создание своей первой игры — квеста. Но на тот момент опыта в производстве игр было маловато и до релиза проекта дело не дошло.

Первой выпущенной в свет разработкой считается стратегия WarCraft 2000: Nuclear Epidemic. Будучи поклонниками оригинальной Warcraft от Blizzard, команда из четырех человек создала свою, новую часть серии. Графические ресурсы было решено извлечь из Warcraft 2, а код — написать самостоятельно.

Мы взяли популярную игру Warсraft 2, взломали ее, вытащили оттуда всю графику и написали к ней полностью свой код. Получилась наша программа, но с их графикой. Мы планировали продать эту игру компании-разработчику Warсraft в США. Точнее, предложить им сделать Warсraft 3. Это имело смысл, поскольку код, написанный американцами, был очень сложным, поэтому громоздким и бестолковым. А мы написали хороший. Когда мы показали [свой] Warсraft, ее разработчики очень обиделись. Но предложили с ними работать, только при условии, что мы войдем в состав их компании. Больше мы с ними не общались.

WarCraft 2000 была не только размещена на сайте для свободной загрузки, но также поступила в продажу на дисках. Сейчас сложно сказать, что это именно GSC производила диски, однако они успешно продавались. Для желающих ознакомиться: проект без проблем находится в интернете, а комментаторы оставляют положительные отзывы и делятся теплыми воспоминаниями.

В 1999 авторы занимаются игрой DoomCraft, но ее разработку закрывают, полностью переключаясь на другой проект — Казаки: Европейские войны. Эта игра в жанре стратегии в реальном времени, об украинских казаках, увидит свет в 2001 году.

Со временем «Казаки» превратятся в масштабную серию игр. Авторы выпустят два аддона к ней (2002), вторую часть и аддон к ней (2005-2006) и наконец, Казаки 3 в 2016-м, и затем еще целых четыре дополнения.

Нам же интересны именно шутеры компании. Ведь они, по сути, стали предтечей «Сталкера».

Venom: первый шутер GSC и предшественник S.T.A.L.K.E.R.

Отправной точкой стало желание программистов Сергей Забарянского и Романа Лута создать собственный игровой движок, подходящий для разработки шутеров от первого лица. В наше время унифицированной разработки большинство компаний предпочитает покупать готовые движки у лидеров рынка, а тогда студии, в основном, делали свои собственные. Сначала вне студии, а затем и в составе GSC Game World, программисты работали над движком, названным Vital Engine.

Далее художником Андреем Прохоровым впервые предлагается концепция игры по мотивам романа братьев Стругацких «Пикник на обочине». Эта идея позднее сыграет значительную роль в создании Сталкера. Но на тот момент авторы отвергают ее. Взамен они берут концепцию, основанную на научно-фантастическом романе «Кукловоды» Роберта Хайнлайна о вторжении пришельцев-паразитов, живущих на спинах людей и подчиняющих себе их волю.

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

Шутер получил неплохие оценки, а Забарянский и Лут покинули GSC и открыли свою компанию — Deep Shadows. Она известна отечественным геймерам своими шутерами в открытом мире Xenus и Xenus 2. В чем-то похожие на «Сталкер», эти игры содержали несметное количество багов, они вылетали на рабочий стол, но вместе с тем имели множество оригинальных идей, и приобрели солидное сообщество почитателей. Ну а Venom и сейчас можно купить в GOG, адаптированную под современные ОС.

От Oblivion Lost к S.T.A.L.K.E.R.

После релиза Venom в 2001 году GSC начинает разработку еще двух шутеров — FireStarter и Oblivion Lost.

Но вернемся к Oblivion Lost. Как и Venom, ее начали делать с игрового движка, еще не имея четкого замысла.

Сергей одобрил технологию Шишковца и Максимчука и предложил использовать движок для создания стратегий в реальном времени Pilgrims (здесь были бы даже элементы шутера от первого лица, а также массовость сражений) и Commandos (с акцентом на использование техники). Эти игры так и не увидели свет. Взамен них целью стал шутер от первого лица с тактическими элементами — Oblivion Lost.

Появился первый вариант сюжета. В мире Oblivion Lost научно-технический прогресс достиг невиданного уровня. Был открыт способ перемещения по гиперпространственным тоннелям. Такие тоннели связывали между собой планеты и позволяли перемещаться между различными мирами. Солдаты из группы «Следопыты», в числе которой и персонаж, управляемый игроком, должны были стать первооткрывателями этого способа перемещения.

Авторы хотели воплотить линейный сюжет со множеством скриптовых сценок в духе первой Half-Life. Действие разворачивалось бы на пятнадцати больших уровнях. Помимо перемещения на «своих двоих», игрок мог бы использовать транспортные средства — вертолет, военные автомобили и ховерборды.

Так же, как и в случае со S.T.A.L.K.E.R., к которому мы вскоре перейдем, во время разработки Oblivion Lost случались утечки «сырых» сборок игры из недр компании. Это дало возможность фанатам ознакомиться со всеми этапами разработки и детально описать их на тематических сайтах и вики-ресурсах, а также вдохновило авторов модов, которые позднее создавали модификации для «Сталкера», используя материалы бета-сборок. Вы можете без особых сложностей найти такие «сырые» варианты игры в Сети, они вполне играбельны. Вышеупомянутая локация, например, появилась в сборке 749, которая утекла в сеть в 2001 году с рядом других.

В конце 2001 — начале 2002 года художник Денис Волченко придумывает новую концепцию для «Обливиона». Вновь предлагается взять за основу фантастический роман «Пикник на обочине». Волченко объясняет эту идею тем, что, по его мнению, выбранная технология подходит для приключенческой игры с видом от первого лица, с поиском артефактов в запретной Зоне. Прохоров и Шишковцов предложили изменить сюжет так, чтобы вместо пришельцев в нем фигурировала авария атомной электростанции. Было предложено перенести действие в Крым, на мыс Казантип, что на берегу Азовского моря. А центром Зоны сделать Крымскую АЭС.

Кстати, о Зоне и сталкерах. Это из мифологии книги Стругацких. Там Зонами называются участки местности на Земле, в которых не могут жить люди и животные. Существуют легенды, что в одной из областей Зоны остались люди, пережившие мутации. Зона содержит множество аномалий, ловушек. Сталкеры — это люди, которые проникают на территорию Зоны, посещая ее на свой страх и риск. Они выносят из нее разные артефакты, которые затем продают, зарабатывая себе этим на жизнь. Вообще для понимания сюжетной подоплеки крайне желательно, как минимум, просмотреть статью в «Википедии» о книге.

Крым идеален для геймплея. Горы отсекут ненужную геометрию, что облегчит программирование, и сократят пространство открытых площадок, наполняя кадр. Там есть много играбельных мест, я их знаю по походам. Например, Чернореченский каньон, Долина Привидений. (. ) Недостроенную Крымскую АЭС можно подробно отснять и превратить во вторую ЧАЭС. Кстати, она очень похожа на блок, который в Чернобыле взорвался.

Планировалась поездка в Крым для сбора фотоматериалов, которые послужат референсами — примерами для моделирования локаций.

Однако как раз в то время Григорович увидел по ТВ сюжет про аварию на Чернобыльской АЭС. Ему пришла идея перенести действие в «настоящую Зону». Не всем членам команды она понравилась из-за морально-этических аспектов. Однако Григорович настоял на своем, сказав, что Чернобыль — это своего рода бренд, узнаваемость Украины, выход на европейский и американский рынки.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *