Интервью с Берсеркером

Ну для начала расскажи немного о себе. Кто ты, откуда и чем занимаешься  по жизни?
Бородулин Сергей, ник: Берсеркер / Berserkerю Россия, Челябинск. И
Интересуюсь трёхмерной графикой: OpenGL и алгоритмы.Работаю в некоем федеральном учреждении, в нашем городе нет игровых контор чтоб работать в интересующем меня направлении... Отдел ИТ, программист FoxPro, SQL, Cи, доскональное знание железа и т.п.

Когда начал интересоваться компьютерными играм в целом и проектами id Software (как игрок) в частности?
Точный год не скажу, примерно 1993-1995, когда дома появился настоящий персональный компьютер 486 :) Покупал его ради дума 1 и 2. Потом появился квейк...

Еще во времена Дума пробовал писать графический движок (скорее демо) такого же типа графики.

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

Чем закончились те первые попытки написать свой графический движок?
Это не движок скорее был, а демо-сцена. А вот именно Quake 2 прошел мимо меня, я полюбил Ку1 за его скорость. Потом вышел Ку3.

Я был поражен во второй раз: кривые полигоны Безье и шейдеры, порталы/зеркала и туман. Вот тут я и начал писать на ассемблере нечто большее чем демо сцена.

Было написано некое подобие примитивного рендера: чистый ассемблер (использование MMX, 3DNow! и SSE). Запускался в DOS через dos-extender, использовал защищенный режим, VESA 2.0. Были фишки: туман, кривые Безье, партикли (атмосферные эффекты), лайтмапы (строились на этапе загрузки карты методом ray-trace за считанные секунды на AMD K6-2 400MHz),

Также была неевклидовая геометрия (BSP для меня был сложен для понимания, использовал систему порталов) - делал фокусы типа маленький домик а внутри гигантская  комната. :) Это мне навеяла игры Прей,  которая начала разрабатываться еще во времена Ку1. Кстати одна из карт (кажется map3) как раз демонстрирует подобные фокусы ;)

Ассемблер специально для этого изучал, или по ВУЗовской программе?
Вообще то асм изучал просто так, ради интереса, еще в школе

Вначале ломал и изучал игрушки, затем анализировал вирусы.Попутно изучил системное программирование под DOS, узнал много недокументированного.

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

А если брать не визуальные ощушения от Ку2, а геймплейные - как у тебя было в этом плане?.
Новый мир Ку2 кардинально отличается от мира Ку1. Появился полезный rail-gun ;) а также много новых фишек. Всё это мне понравилось. Но по скорости смены оружия Ку2 не понравился. В то время мы с друганами жестоко рубились по LAN в Ку1 и анимация оружия сжирала драгоценные доли секунды.

Потому Ку1 нравился для сетевых боёв. Зато для  сингла Ку2 так же интересен как Ку1

Во время массового рубилова в Ку1\Ку2 не возникало желания заняться  маппингом\моддинго? Или сразу решил писать свой порт, после того как вышли сурсы Ку2?
Маппингом я активно занимался еще во времена DOOM'а. Изначально я планировал писать свой движок, изучая внутренности второго Квейка. Но, не имея никаких серьезных знаний, как пишутся движки, я "съехал" на Q2-технологию, если можно так выразиться.

Я брал куски Q2-кода и присоединял в свой проект. Фактически код Quake 2 плавно перетёк в мой проект. Попутно я почти досконально изучил Ку2 и избавился от лишнего. Вот объяснение, почему мой проект не имеет россыпи файлов. :) Наверно это уникальный случай рождения Q2-based движка.

Кстати, в то время появилась альфа DOOM 3. Вот тогда я решил взять Ку2 и добавить к нему попикселку.

По ходу дела я нашёл много багов и избавился от них.  Добавлял много новых фишек, всё упомянуть тут не реально. Оптимизировал, ускорял. В итоге мы имеем Berserker@Quake2 в текущем виде. :)

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

Но все же и Q2 ты окончательно не бросаешь, периодически добавляешь и улучшаешь уже из без того наверное "вылизанный" код BersQ2.
В этом "виноваты" ATex и завсегдатаи QG-форума :) , заказывая новые фишки.  Я конечно стараюсь отмазываться )))) Пора уж завязывать с Quake 2/

Движок готов, но осталось очень много работы для художников: ретекстур, нормалмапы, параллакс, микробамп, лайт-текстуры, текстурные эффекты и т.п.

Много работы и для моделлеров - нужны новые hi-poly модели , наподобие моделей из Generation Arena Arena. Так же, все карты Ку2 нуждаются в переосвещении (релайте).

 

Вот тогда Ку2 засияет!Ку2 конечно же не бросаю. Буду по возможности что нить добавлять со временем. Но приоритет будет теперь на Ку3

Вот только где бы взять этих художников и моделлеров, которые сделают все что нам нужно =) Помню что модель для итема невидимости ты втаскивал вообще из Ку3
Было дело... но потом сам смастерил в 3D Max, хотя я там нуб полный. Да, по художественной части просто завал.

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

Один из путей - ненавязчивая реклама Bers@Q2: что то делать самому, чтоб народ увидел хотя бы по нескольким картам, что может получиться в конечном итоге. Так, я сделал Base1: полный ретекстур и переосвещение.  

Просто взял полный ретекстур Джима, и используя Фотошоп, создал параллакс на все текстуры, использующиеся на Base1

Много времени ушло на это? И  какие инструменты использовались, кроме того что заложено в сам движок?
Начало разработки можно считать конец 2004 года. В феврале 2005 я создал первый сайт, где показал первые версии. Получается, Berserker@Quake2 разрабатывался примерно 3.5 года

В процессе разработки использовал следующее::

  • программирование - MS Visual Studio 2003
  • рисование - Adobe Photoshop
  • моделирование - 3D Studio Max
  • картосторение - Radiant 1.3.13

А почему  использовал именно эту версию? Насколько я помню Радиант 1.4 появился более чем 3.5 года назад.
Как то попробовал 1.4, что то там не понравилось... наверно косяки с тектурированием..точно не помню. Но с тех пор сижу на 1.3. Пробовал 1.5 - неплохая версия. К тому же для Ку3 пригодится.

Когда ты начал разработку BersQ3?Наверно через полгода после открытия исходников Ку3; я сначала просто изучал новый код. 

И каковы были первые впечатления от него (в сравнении с кодом Ку2)?
На порядок более сложный и продуманный, более красивый код.

Но и наверное не лишенный некоторых недостатков кода Ку2, тка? =)В Ку3 мало что осталось от кода Ку2.На данный момент я еще не так сильно знаю код третьего, чтоб сказать что то определенное.

Но конечно есть то, что стоит поменять, ориентируясь на современное железо.

Много я уже сделал - убрал поддержку старых видеокарт к примеру.

И каковы сейчас минимальные требования БерсКу3 по железу и софту?
Видеочип с 4 конвейерами и поддержка ARB-шейдеров версии 1.0. Этому условию соответствует даже встроенное современное видео от Intel :D (не буду правда говорить качество реализации OpenGL на таком бюджетном видео).

По софту - вроде как Win98 подойдёт, но не проверял. Так что - требования самые демократичные :)

98-я винда? Интересно, жаль нет под рукой компа с этой ОС для проверки Работоспособности  Но сам конечно же ты работаешь уже далеко не на этой древней системе =) работаю на Windows Server 2003 x64 Enterprise :D  Думаю еще параллельно Висту воткнуть для тестирования.

К слову - в БерсКу3 будет один рендер - ARB (или может быть GLSL). Утомила меня поддержка множества render-путей в BersQ2.

Ну это не должно сильно сократить число потенциальных игроков, как мне кажется, так?

Нет конечно! В наше время большинство игроков в состоянии купить хорошую видеокарту.

Что ещё сделано на данный момент в Ку3, кроме выкидывания поддержки старого железа?

вот список из моего лога:

- Версия в консоли "Berserker@Quake3"
- Убрал накер все проекты кроме Berserker@Quake3 -> Q3Bers.exe
- Убрал поддержку Linux, FreBSD, MacOS, не x86 процессоров, A3D звука, старых видеочипов.
- Поддержка GL_EXT_texture_edge_clamp (fixed bug: щели в skyboxes)
- Поддержка доп.текст.компрессии: r_ext_compressed_textures = 0,1...5
- killed "r_logFile" и логирование OGL
- killed "r_measureOverdraw" ибо нефиг занимать stencil buffer!
- killed "r_colorbits" ибо всегда нужен 32-битный цвет окна! (UI.colorbits IGNORE!)
- killed "r_stencilbits" ибо всегда нужны 8-бит!
- killed "r_depthbits" ибо всегда нужны 24-бита!
- killed "r_glDriver" ибо всегда юзаем только OGL! (UI.driver IGNORE!)
- killed "r_lastValidRenderer" ибо всегда юзаем только OGL!
- killed "r_allowExtensions" ибо какая попикселка без екстеншенов?  (UI.allow_exts IGNORE!)
- killed "r_shadows" ибо будут свои тени.
- killed "r_ext_multitexture" ибо 1-конвейерные карты не в моде :D
- killed "r_primitives" ибо нефиг баловаться :D
- killed "r_nobind" ибо бесполезно
- killed "r_skipBackEnd" ибо бесполезно
- killed "r_norefresh" ибо бесполезно
- killed "r_showImages" ибо бесполезно
- killed "r_dlightBacks" ибо не юзается нигде
- killed "r_ext_gamma_control" ибо не юзается нигде
- killed "r_ignore" ибо не юзается нигде
- killed "r_drawSun" ибо не юзается нигде
- killed "r_showSmp" и "r_smp" - dual processor
- killed "r_stereo"
- killed "r_nocull"
- killed "r_novis"
- killed streamed-функции, ибо они и так не работают.
- killed "r_vertexLight" ибо на современных видеочипах и так быстро
- killed "r_fullbright" ибо фигня и некрасиво
- killed "r_lightmap" ибо выигрыша скорости почти нет
- killed "fs_restrict" ибо накер нам поддержка демо версий
- "r_textureMode" теперь по дефолту = "GL_LINEAR_MIPMAP_LINEAR"
- "qconsole.log" -> "q3b_console.log"
- "q3config.cfg" -> "q3b_config.cfg"
- "software acceleration" -> "software emulation"
- грохнул ветки REPLACE_MODE
- qgl* -> gl*
- qboolean, qfalse, qtrue -> bool, false, true
- кэширование вызовов glColor***
- fixed: в Q3 проверялось только EXT_texture_env_add, игнорировалось ARB_texture_env_add
- поддержка анизотропной фильрации: "r_ext_texture_filter_anisotropic (0 [0/1])" и "r_anisotropic (2 [2...max])"
- поддержка lod_bias: r_ext_texture_lod_bias (0 [0/1]), r_texture_lod (0 [-0.7...0])
- проверка на обязательное наличие ARB_vertex_program/ARB_fragment_program (maxTextureImageUnits>=8), ARB_texture_cube_map, EXT_texture3D
- проверка на GL_EXT_draw_range_elements ("r_ext_draw_range_elements")
- "r_ext_stencil_wrap" (def=1), "r_ext_stencil_two_side" (def=1), "r_ati_separate_stencil" (def=1)
- "r_arb_vertex_buffer_object" (def=1)
- убрал "ugly hack to work around a GeForce driver..." в DrawMultitextured, ибо imho этого бага уже нет.
- "r_printPrograms" - печатает какие программы загружаются.
- "programlist" - печатает список программ
- в папке glprogs обязательно д.б. хоть один файл с программами (_internal.vfp уже есть)
- "imagelist" доп. печатает размерность текстуры - 1D/2D/3D/CUBE
- killed "r_speeds=4"     - dlights
- killed частично "r_speeds=1"     в части overdraw
- "r_ignoreFastPath" теперь по умолчанию = 0
- "r_ignoreFastPath" необоснованно требовал рестарта
- killed "multitexture_decal"-ветки, ибо не используются
- за счет перевода обычного Q3-рендера на fragment programs, избавились от вызовов GL_TexEnv
- избавился от glClipPlane - за счет отсечения в fragment programs.
- KILLED FLARES:
     - killed "r_speeds=6" - flares
     - killed r_flareSize, r_flareFade, r_flares
- при ошибке ARB-program - выводит текст этой проги в консоль с описанием ошибки
- пишет в консоли дату и время сборки (DEBUG - debug project)
- MessageBox(/*NULL*/GetActiveWindow(), text, "Error", 0 /* MB_OK */ );     // fix by Barnes
- УЛУЧШЕННЫЙ SCRIPT-ENGINE - ОПИСАТЬ!!!
     сначала ищем скрипты в materials, затем в scripts (чтобы не мешать обычному Ку3)
     Пересчету подвергается TB-базис при:
          TMOD_ROTATE
          TMOD_TRANSFORM
          TMOD_STRETCH
          TMOD_TURBULENT
          DEFORM_WAVE
          DEFORM_BULGE
          DEFORM_MOVE
          для ARB-программ шейдера и если нужен TB-basis
- killed MD4 support

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

Возможно изучение GLSL и переход на него. Возможна смена технологии попикселки.

В Ку2 ты внес екоторые изменения в гейм-код насколько мне известно. А также поменял некоторые ресурсы (многие плевались на звуки из Ку3 =)). Будет ли что-то подобное с Ку3?
Нет , в Ку3 буду менять только рендер. Точнее рендер и client-side фишки. Все ради совместимости со множеством модов Ку3.

Кстати о совместимости - с какими модами "дружен" БерсКу2?
Он дружен с любыми , но только будучи запущенным в режиме сетевой совместимости. Я пробовал играть в Ground Zero, Reckoning, гонял ботов. Удачно. Правда для запуска нужно перепаковать ресурсы мода в pk2

 Т.е запускаем выделенный сервер с модом, и коннектимся к нему Берсом в решиме совместимости?
Да.Но для сервера не рекомендую Quake2. Лучше использовать Q2Pro, Q2XP или другой движок без багов типа "урезанная clientinfo строка".

Ясно. Значит будем использовать дружественный проект Q2XP =)
ага :)

Вернемся к Ку3. После внедрения всех основных фич в движок, будет ли необходима какая-либо работа по переосвещению карт?
Вполне вероятно, т.к. Ку3 карты создавались без учета попикселки. Можно сказать, по старой технологии, похожей на Ку1 и Ку2

Т.е оверрайдом текстур и добавлением файлов наподобии .rtlight, так? без перекомпиляции?

Да. Делюкс карты тоже возможно пойдут как файлы-спутники

Что ж, меня как маппера это радует очень
Да , я теперь более опытен в теме обеспечения совместимости

Вернемся ко второму квейку. Как ты оцениваешь ку2сообщество - существует ли оно на данный момент, или  фанаты этой игры практически вымерли как мамонты? (несколько провокационный вопрос наверное, но все же =))
Существуют конечно! И я их наблюдаю не только на Quake Gate  ;-) B по тем постам, что ко мне обращаются время от времени, видно, что Ку2-сообщество еще живо.

Даже японцы заинтересовались русской кудвакой(на одном японском блоге переодически встречаются упоминания о Bers@Q2 и Quake 2 XP). Да и ещё некоторое количество ресурсов, посвященным проекту нарыть можно.

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

Кирилл aka Kirk Barnes (москвич)
Костя aka KriggSvin (Одесса)
ATex (Одесса)
Артём (ты :) )

А также постояльцы нашего QG-форума, в т.ч. американец Джим.Т
вои впечатления о прошедшего QExpo'08? Что понравилось, что не понравилось?

В целом впечатления положительные. Quake-сообщество заинтересовалось проектом. Понравилось что наших проектов на выставке было относительно много.

Нервы попортил одиум со своими тупыми и необоснованными нападками. Именно необоснованными, т.к. предъявы типа "расширение pk2 мы первые придумали" или "твой эффект мерцания бластера похож на наш" я не принимаю во внимание, это утверждения уровня малолетнего ребенка.

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

VorteX порадовал оригинальной разработкой: квейк в 2D проекции.

А на каких сайтах бывает, когда выходишь в инет?
Путь по которому хожу, начиная рабочий день: :)
berserker.quakegate.net, форум quakegate.ru,
затем новости КГ (с повторным заходом в форум), почта, одноклассники ))))

Иногда проверяю статистику посещений. Заглядываю на quakedev.com, gamedev.ru, gamedev.net, ixbt   Иногда проверяю инет на наличие ссылок на мой проект...

 Ну и в завершение  нашего  интервью,расскажи чем занимаешься в реале кроме работы и кудева?
Читаю, люблю смотреть фильмы,  домашняя качалка (громко сказано, пудовая гиря всего то) :-D  Вот и всё, на что хватает времени... иногда поигрываю, чисто ради поглядеть на графику и подчерпнуть новые идеи.

 Что предпочитаешь смотреть и читать? А также слушать (если слушаешь)?
Смотрю - фильмы про бандюков (недавно пересмотрел все 10 эпизодов Бандитского петербурга, 2 эпизода Крота,  2 эпизода Боец),  люблю сериал (22 серии) Смертельная битва: завоевание (затянуло красивой боевой акробатикой и красивыми женщинами ;) )

Это я посматриваю когда еду на работу или с работы (видеоплеер у меня). Дома - посматриваю ужастики (про катастрофы) или новинки видео.

Читаю - правдоподобная космическая фантастика, но не фэнтези. Но щас читаю редко. Из самого любимого - сага Фреда Саберхагена "Берсеркер" (5 толстых томов)  :-D

Слушаю - тоже только в поездках (юмористы - Шурка Каретный,  Михаил Евдокимов, либо просто музыка), либо на работе: иностранное (русские песни не люблю слушать во время работы ибо мозг отвлекает).

Происхождение твоего ника как я теперь понимаю, именно из этой саги Фреда Саберхагена, да?
Да. Берсеркеры - это разумные машины (звездолёты, роботы, планетарные базы, верфи, лаборатории и пр. формирования), оставшиеся после древней межзвездной войны между двумя расами.

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

Ник этот я взял когда начал играть в сетевые игры. Играл я очень неплохо, бывало что один против всех (например я один против 5 врагов на dm4), выносил фраги сотнями за час обеденного перерыва. 8-) Вот и придумал себе этот ник - типа как машина для уничтожения жизни на dm4. К тому же, ник почти созвучен фамилии и имени.

Сторилайн Ку2 похожа на историю с Берсеркерами, даже есть идея замутить игру на эту тему. Монстры Ку2 подходят на 100%, надо только карты создать. Для этого нужен новый текстурный пак.  Как идея?  ;-)

 Спасибо за интервью и удачи в дальнеших разработках! :)
:-)

Всего комментариев: 10

#1 | DOOMer -

[SDC]Doomer, перепиши заново то что писал - там был баг в скрипте.

#2 | profile -

а почему нет БерсКу1? былобы здорово если бы такой человек помог развитию какого нибудь кувэ клиента например ezQuake или сейчас довольно запущенному FTE. Кувэ коммюнити было бы радо если бы кто-нибудь продолжил развитие текущих или же новых клиентов.

#3 | crystallize -

Вам тенебрая мало?

#4 | K.O. [unreg] -

>> Вам тенебрая мало?

#5 | Az0t [unreg] -

Програмист супер )

#6 | Heku4 -

Молодец Дядько!

#7 | Thuslo Doom [unreg] -

Сколько труда напрасно- даже полный нуб сразу видит, что этот порт недоделан минимум на 50% и таким и останется,

#8 | BSV -

to Thuslo Doom: Ты не прав, порт находится на весьма и весьма зрелой стадии развития, я бы сказал почти завершен. И труд этот совсем не напрасный, поверь.