Примеры оптимизации качества и скорости компьютерных игр с помощью программы RivaTuner 2.0
(конкурсный материал, II место)

21.04.2004


Введение
Стенд и программное обеспечение.
Этап предварительной настройки игры.
Перечень настроек, применённых для оптимизации.
Итоги оптимизации скорости и качества (примеры).
Создаем пресеты.
Автоматизация процесса.
ForceWare 56.55,  мы с вами где-то встречались?
Заключение.

Эпиграф:
«Вопрос: Вы можете научить меня настраивать мою видеокарту?
Ответ: Пожалуйста, не беспокойте меня с такими вопросами.
Я от них устал и не буду на них отвечать».

Русский FAQ RivaTuner 2.0.


Введение

Вот уже на протяжении 3 лет я использую эту замечательную программу и уже не представляю, как бы я управлялся со своей картой GeForce без её помощи. Поэтому я и взял на себя смелость поделиться с Вами, уважаемые читатели, своим личным опытом по настройке качества изображения и скорости игровых (и не только) 3D-приложений с помощью  RivaTuner или как называют ее сокращенно "старожилы" - RT.

«А есть ли такая острая необходимость использования RivaTuner?» – спросите вы – «Современные версии драйверов позволяют управлять многими параметрами из системного трея при помощи «NVDIA Settings».

Да, отчасти это так. Но, к великому моему сожалению, подобрать раз и навсегда установки драйвера на моей машинке не представляется возможным. А щелкать каждый раз по значку NVIDIA Settings, перенастраивая видеокарту с режима на режим, мне представляется несерьёзным, когда под рукой такая мощная и гибкая утилита как RivaTuner. С её помощью, однажды сконфигурировав настройки для конкретного приложения, можно не держать в голове «ценные сведении» о том, какие установки, к примеру, антиалиасинга, требуются для той или иной игры. А в свете того, что сейчас многие игры лишь адаптируются под ПК, перекочевывая с игровых приставок, и мы имеем крайне скудные возможности по настройке графики через меню — это обстоятельство не кажется мне малозначительным.

«Но позвольте!» — воскликнет проницательный читатель — «все это было верно до выхода в свет новой версии драйверов. Сохраняется ли актуальность программы на сегодняшний день?»

Да, действительно, когда статья была практически готова, на бескрайних просторах Интернета стали появляться первые сведения о новом ForceWare версии 56.55 и о его, практически, революционной панели управления. А вскоре и сам драйвер, который 10 февраля 2004 года получил статус WHQL. О его особенностях и нововведениях не написал, разве что ленивый. Разумеется, в свете рассматриваемой темы и мне пропустить столь знаменательное событие не представляется возможным. Но рассмотрим мы его именно в контексте удобства для пользователя и актуальности установки взамен предыдущих версий только ради новых возможностей панели управления (а реально это так есть, поскольку, для старых карт ждать «бешеного» прироста производительности, увы, не приходиться), при наличии на компьютере программы RivaTuner.

Я умышленно не затрагиваю в своей статье вопросы совместимости с чипсетами, а так же методику разгона видеоадаптера (пусть даже и при помощи RivaTuner). Об этом Вы сможете прочитать в FAQ нашего сайта.

За начальные условия принимаем, что все необходимое ПО установлено и настроено, всё что нужно (а может быть и не нужно :) разогнано и работает без сбоев. Итак, начинаем.


Стенд и программное обеспечение

В качестве стенда выступает рабочая станция следующей конфигурации:

  • Процессор: Athlon XP 1800+ (T-Bred Step. B) 11,5*133
  • Материнская плата: ECS L7S7A2 rev. 1.1
  • Системная память: 512 МБ РС2100 Hynix
    Процессор и память работают в синхронном режиме на частотах 155/155
  • Видеокарта: Palit Daytona GeForce 3 Ti 200, работающий на частотах 220/500 (ядро/память)
  • Монитор: Samsung SynсMaster 550b
  • Жесткий диск: Quantum Fireball llc 15 UDMA 66
  • CD-ROM: SONY CDU-4821
  • Операционная система: Windows XP Pro, SP1
  • Драйвер: ForceWare ver. 53.03 WHQL
    В дальнейшем, я буду приводить примеры подобранных настроек игр, исходя из этой конфигурации. Возможно, что многие найдут много общего со своей машиной. Тем более, как мне кажется, в данном случае наглядно будут выглядеть примеры оптимизации.
  • Программы:
    • RivaTuner 2.0 RC 14.3NY — собственно виновник торжества.
    • Fraps 1.9c — можно обойтись и без него, если вы не сторонник «скока вешать в граммах», а привыкли полагаться на визуальные ощущения, но для статистики нам пригодиться вполне.
  • И, наконец, «подопытные кролики» — игры из моего домашнего архива. Я постарался выделить из них, по возможности, наиболее показательные, чтобы наглядно продемонстрировать способности RivaTuner:
    • NFS Underground (далее по тексту NFS-U)  — очень красивая и занимательная «гонялка-водилка», с достаточно богатыми настройками графики. Но, тем не менее, с полным отсутствием настроек антиалиасинга и анизотропии в меню игры.
    • NFS Hot Pursuit 2 (далее по тексту NFS-6) — предшественник нынешнего хита. Интересен в плане регулировки анизотропной фильтрации (она завязана с детализацией в игре) и уже ставшим хорошим тоном отсутствием управления антиалиасингом через меню игры.
    • Colin McRae Rally 3 (далее по тексту CMR3) — симптомы те же, что и у NFS Underground, но особенная изюминка заключается в том, что режим «Чемпионат» категорически виснет без форсирования параметра V-sync (вертикальная синхронизация) в режим «always-on» (т.е.  включен всегда). Такое грех пропускать :), тем более что контрольная панель драйвера 53.03 (и более старые версии Detonator'ов так же) по умолчанию этим параметром не управляет в Direct 3D. Правда, младший бит ключа CoolBits включает закладку More Direct3D, позволяющую управлять этим параметром в любых версиях драйверов.
    • Speed Thief (далее по тексту ST), в русском варианте «Угнать за 40 секунд» — древняя по компьютерным меркам игра. Всего одно разрешение 640х480. Всего одна настройка — степень детализации. Непаханое поле для шаловливых ручек :).
    • «Странствия Торина» (далее по тексту ТОРИН) — детская 2D квестовая бродилка. Очаровательно проблема этой игры описана в README файле. Трудно удержаться от цитирования:

      ПРОБЛЕМЫ С ИЗОБРАЖЕНИЕМ
      Проблема: окно игры слишком маленькое.
      Объяснение: игра «Странствия Торина» рассчитана на разрешение экрана 640х480. Если для Рабочего стола Windows на вашем компьютере выбрано большее разрешение (скорее всего, так оно и есть), то игра запускается в окне размером 640 на 480 точек. На ее функциональности это никак не сказывается.

      Потрясающе! То есть, зияющая чернота экрана и ма-а-аленькая такая картиночка размером 5*3 сантиметра, по мнению распространителей программы, только тренирует неокрепшее детское зрение. И здесь RivaTuner нам очень пригодиться для превращения процесса смены разрешения в сущую безделицу.


Этап предварительной настройки игры.

На этом этапе, пока без вмешательства RivaTuner, пробуем выбрать разрешение экрана и детализацию, дающую нам максимально комфортную картинку в плане качества и скорости, используя только настройки в меню игры. Для себя я давно уже определил минимально комфортный уровень в 30–40 fps (кадров в секунду). Но это не догма, зачастую эта величина зависит даже от жанра игры. Поэтому, не забивая голову абсолютными значениями, спокойно находим «золотую середину» между скоростью и качеством.

Перечень настроек, применённых для оптимизации.

Разумеется, данный перечень — это лишь настройки, которые применялись для оптимизации вышеперечисленных игр.

  • Анизотропная фильтрация (АФ) — позволяет существенно улучшить качество изображения. Особенно на достаточно старых играх. Используется мною достаточно часто из-за менее сильного урона скорости игры по сравнению со сглаживанием. Иногда полезна и для увеличения количества fps путем снижения уровня фильтрации. В качестве примера, могу привести игру NFS 6, в которой АФ жестко завязана с настройками качества картинки. Форсируя более низкие настройки получаем прибавку в скорости.
  • антиалиасинг (АА) или сглаживание — так же очень сильно улучшает качество изображения путём сглаживания лесенки по контуру объектов. Реализация зависит от аппаратных возможностей вашего видеоадаптера. Зачастую приходиться жертвовать (на слабых картах) данной опцией, заменяя её более высоким разрешением экрана (если монитор позволяет) или отказываться вовсе.
  • Вертикальная синхронизация — оказалась гораздо интереснее, чем я думал. Обычно я всегда первым делом отключал V-sync на соответствующих вкладках в RivaTuner. Однако при попытке запустить игру CMR3 в режиме Чемпионата получил шикарнейший зависон (от чего отвык уже давно). Благодаря участникам Конференции МИРа NVIDIA была добыта информация об этой проблеме.

    Выходов 5:

    1. качать 10-ти мегабайтовый патч, устраняющий проблему;
    2. качать драйвер для видеокарты версии не ниже 56.55 (удовольствие, для людей «сидящих» на Dual-Up, прямо скажем, ниже среднего :);
    3. форсировать V-sync в режим «always on» c помощью этой замечательной утилиты, с возможностью автоматического возврата к значению, выбранному вами по умолчанию;
    4. изменять CoolBits (возможно и при помощи закладки Power User в RivaTuner) и управлять V-sync через панель настроек драйвера;
    5. править реестр руками.

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

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

    Результаты «исследований»:

    • V-sync — on — 29 fps
    • V-sync — auto — 30-40 fps
    • V-sync — off  — 30-45 fps

    При одних и тех же остальных настройках! Вот так.

  • Уровень детализации MIP-карт — позволяет улучшить качество картинки, причем RivaTuner предоставляет, в отличие от драйвера, более значительный диапазон регулировки этого параметра. Естественно, качество как всегда бьет по скорости, но в этом случае не очень сильно.
  • Texture filtering preferences (в контрольной панели драйвера обозначена как «Производительность») — позволяет отвоевать пару-тройку fps в реальных играх и достаточно внушительное количество очков в синтетических тестах. Обычный для меня режим — «High Performance».



Итоги оптимизации скорости и качества (примеры).

Цель главы не руководство к действию, а попытка показать на примерах с каким «винегретом» настроек приходится сталкиваться в данной ситуации.

Итак:

  • NFS Underground
    Разрешение экрана 1024*768*32, настройки игры — средний уровень. В этой ситуации скорость игры составила 50–60 fps. Что же, неплохо. Пробуем проиграть с АА-2х. Скорость тут же падает до не очень играбельных 22–32 fps. Похоже, от этой настройки придется отказаться. Начинаем эксперименты с АФ, тут нам везёт больше — 8 уровень даёт весьма приличное качество при нормальной скорости игры 38–45 fps.
  • NFS Hot Pursuit 2
    Разрешение экрана 1024*768*32, настройки игры — максимальные, скорость составила мало приятные 25–45 fps из-за принудительно включенной игрой максимальной АФ. Аналогично предыдущему примеру, сглаживание превращает игру в пошаговую автомобильную стратегию. Здесь проблема больше со скоростью, чем с качеством. Снижаем степень анизотропии до 2-го уровня и получаем 45–85 fps при приемлемом качестве изображения.
  • Colin McRae Rally 3
    Проблема игры и её решение описаны в предыдущей главе. К сожалению, добиться приемлемой скорости при попытке повышения качества изображения мне не удалось, поэтому оставляем всё без изменений при разрешении экрана 1024*768*32 и максимальных настройках игры. Скорость 43–50 fps.
  • Speed Thief
    Год выхода игры (2000) настраивал на оптимистичный лад и я не ошибся: 60–80 fps при АА-8х и АФ-8 уровень и повышении качества МИП карт.
  • «Странствия Торина»
    Настраивать нечего вообще, кроме разрешения и глубины цвета. При 640*480*16 очень симпатичный мультик. Остаётся только автоматизировать процесс смены разрешения.

Как вы видите, настройки игр получились совершенно разные и непохожие друг на друга.

Создаем пресеты.

Для начала я процитирую русскую документацию к RivaTuner 2.0, определяющую что же такое пресет:

«Пресет это тип скрипт-файла, который может добавлять или удалять ключи реестра. Вы можете создавать пресеты, используя встроенный редактор реестра или просто экспортировать ваши настройки в REG файл. RivaTuner использует макроимена для ключей реестра сохраненных в пресет, так что вы можете спокойно переносить настройки с компьютера на компьютер. Пресеты для достижения максимального качества/скорости, профессиональные пресеты для (Soft)Quadro-карт и набор игровых пресетов для Detonator 5.xx и выше включены в эту версию.»

Расположены они в директории C:\Program Files\RivaTuner\Presets\NVIDIA\, далее выбираем тип вашей ОС. Создать свой пресет можно как на основе уже готового (из комплекта программы), так и с чистого листа, так сказать. Рассмотрим методику создания собственного пресета, исходя из условий: сглаживание (АА) 4х, анизотропия — 4 уровень, вертикальная синхронизация — отключено, производительность — максимальная.

Итак,

  • Способ №1  (самый простой, даже для неопытного пользователя)

    1. Шаг 1-ый:
      Перемещаемся в секцию Direct 3D tweaks, где на вкладках Antialiansing, Textures и V-sync выставляем требуемые значения настроек: 4x4-level и High Performance (обе на вкладке Textures), always off соответственно.

    2. Шаг 2-ой:
      Открываем вкладку Launcher. Нажимаем на значок . Выбираем Regular item, в появившемся окне (более подробно возможности Launcher'а мы рассмотрим в следующей главе, пока только то, что относиться именно к созданию пресета). Ставим галку в чекбоксе Associated preset и нажав на кнопку «create» сохраняем полученный пресет в файл.

    Способ №1

  • Способ №2 
    1. Шаг 1-ый:
      Откроем вкладку «Power User», представляющую собой не что иное, как, цитирую:

      Гибкий встроенный редактор реестра. Никаких REG файлов, никакого ручного редактирования реестра. Просто забудьте об этом. RivaTuner определит ключи реестра драйвера видеокарты и позволит вам прослеживать изменения, добавлять, редактировать, удалять указанные ключи реестра. Этот необходимый инструмент полезен для продвинутых пользователей и облегчает настройку драйверов.

      Он то и поможет нам в создании пресета. По умолчанию в окне редактора закружена база данных самой программы. При нажатии на кнопку «Open matched Detonator database» программа автоматически подгрузит базу соответствующего Детонатора, установленного в Вашей системе.
      Важно: необходимое условие — текущая версия вашего драйвера должна поддерживаться данной версией программы.

      Закладка 'Power User'

    2. Шаг 2-ой:
      Перемещаемся в секцию Direct 3D tweaks, где на вкладках Antialiansing, Textures и V-sync выставляем требуемые значения настроек: 4x4-level и High Performance (обе на вкладке Textures), always off соответственно.

    3. Шаг 3-ий:
      Возвращаемся на вкладку Power User и нажимаем на кнопку с изображением дискетки. При этом программа выдаст вам предупреждение, что сохраняются все (а не только измененные) ключи. Смею Вас заверить — это не принципиально. Конечно, если вы владеете познаниями в плане значений ключей драйвера, то вы сможете найти нужные параметры и сохранить только их (еще и пропустив 2-й шаг :). Но многие ли пользователи могут этим похвастать? Думаю, что нет. Далее, в появившемся окошке проводника, проводим совершенно стандартную процедуру с присвоением имени и сохранением файла.

    4. Шаг 4-ый:
      Возвращаемся на вкладки, перечисленные в шаге 2 и восстанавливаем настройки по умолчанию.

Несколько замечаний, к составленному алгоритму:

  • шаг 1-ый можно пропустить при последующих созданиях пресетов в случае, если драйвер видеокарты не обновлялся;
  • шаг 4-ый можно пропустить ,если вы создаете несколько пресетов сразу (чуть было не сказал оптом :)

Итак, пресет создан. Теперь при его загрузке драйвер перейдет к заказанным Вами настройкам. Но это пока полдела. О том, как автоматизировать этот процесс, читайте в следующем разделе.

Автоматизация процесса.

Последний завершающий штрих. В этом нам снова поможет закладка под названием Launcher. Снова позволю себе процитировать русскую документацию к RivaTuner 2.0:

  • Гибкий лаунчер пресетов / цветовых схем / приложений / настроек десктопа:
    • Вы можете запускать любой пресет, созданный с помощью Мастера пресетов RivaTuner или Редактора пресетов.
    • Вы можете запускать цветовые схемы, созданные во встроенном редакторе цветовых схем.
    • Вы можете быстро переключать режимы дисплея.
    • Пресет и цветовая схема может быть связана с любым приложением. Также вы можете получить прибавку в скорости за счет изменения приоритета приложения.
    • Опциональный «Restore After Terminating» (RAT) режим. RivaTuner может сохранить цветовую схему и ключи пресета до запуска приложения и восстановить сохраненные установки после завершения его работы.

По моему глубокому убеждению, это украшение программы. Рассмотрим его возможности более подробно. При первом обращении в этой вкладке мы видим пустое поле. Нажимаем на значок .


Лаунчер пресетов

В появившемся окне Menu item type, существует возможность выбора между Regular item (за ним скрывается привычное для постоянных пользователей программы окно с полями выбора или создания пресетов, открытия цветовых схем / приложений / настроек десктопа) и RivaTuner module activation item (новая возможность программы, позволяющая создать пункт для быстрого вызова определенной закладки самой программы).


Menu item type

Для автоматизации процесса применения настроек выбираем Regular item. В RivaTuner предусмотрена так же и процедура быстрого вызова окна Regular item или RivaTuner module activation item. Для этого необходимо при клике по значку одновременно нажать клавишу «Ctrl» в первом случае, и «Shift» - во втором.
Итак, окно Regular menu item editor. При его открытии активно только поле Name (имя пункта меню). Если при этом, не выполняя никаких действий, нажать на кнопку «ОК», то вы получите строку-разделитель. Возможно, это пригодиться вам для отделения, к примеру, пунктов запуска Regular item от пунктов RivaTuner module activation item. Обычно имя для пункта меню я беру по названию той программы, для которой хочу применить конкретные настройки, т.е.  в нашем случае это название игры. При заполнении этого поля, активируются все строчки Regular menu item editor.

Regular menu item editor

  • Associated preset — поставив галку в чекбоксе и нажав на «browse» (если вы создали его способом №2 или используете готовый пресет из комплекта программы) выбираем пресет (или создаем его способом №1), с которым вы хотели бы запустить данное приложение. Если больше ничего не требуется (наиболее частый случай) переходим к последнему пункту меню «associated application» где указываем запускающий файл (при необходимости с параметром запуска в командной строке) выбираем приоритет запуска (в большинстве случаев вполне хватает нормального) и вот здесь самое главное, что существенно облегчает жизнь — функция RAT. При её активации все настройки драйвера, измененные пресетом, вернутся в первоначальное (т.е. до его запуска) состояние. В противном случае, после завершения работы приложения, драйвер сохранит все настройки, полученные при загрузке пресета. Таким образом, один раз потратив 1–2 минуты на создание пункта лаунчера, вы, при последующих запусках игры, можете совершенно не заботиться о текущих настройках драйвера.
  • Associated l/l (low-level) color scheme или Associated d/l (driver-level) color scheme

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

    Так, например, мною была решена проблема недостаточной яркости изображения в игре Quake 2. Запустив игру, я обнаружил эту проблему. Свернув её на панель задач, я открыл закладку Color Adjustment в RivaTuner, где и выставил максимально комфортный уровень яркости.

    После сохранения настроек в соответствующую цветовую схему, появилась возможность её запуска через Associated d/l color scheme.

  • Associated l/l (low-level) clock frequencies

    Сравнительно недавно появившаяся опция, адресованная  любителям «разгона по требованию». Позволяет запускать через лаунчер, предварительно созданные низкоуровневые профили разгона (вкладка Low-level system tweaks/Overclocking).

    Опция в полной мере доступна лишь обладателям видеокарт моделей до GeForce 4-ой серии, поскольку семейство FX «умеет» динамически изменять частоту GPU и не поддается низкоуровнему разгону.

  • Associated display mode

    Незаменимая вещь в случае, если приложению требуется особое разрешение экрана, глубина цвета и частота развертки. Так, вернувшись к нашим примерам, вспомним об игре «Возвращение Торина». Ассоциировав её с режимом 640*480*16, 120 Гц и включив RAT, можно навсегда забыть о данной проблеме.

    Создав пункты лаунчера, далее вы можете создать ярлыки рабочего стола для быстрого запуска приложения, ассоциированного с особыми настройками видеоадаптера. Для этого наводим курсор на соответствующий пункт и кликаем правой кнопкой мыши. В появившемся меню выбираем пиктограмму ярлыка и нажимаем уже на левую кнопку. Теперь на рабочем столе Windows есть ярлык с иконкой ассоциированного с ним приложения и префиксом «RivaTuner's shortcut to (название пункта лаунчера)». После этого, лично я удаляю ярлык игры, заменяя его вновь созданным. Ну а те кто не любят обилие иконок на рабочем столе могут запускать пункты лаунчера, кликая правой кнопкой мыши на значок программы в системном трее.

Из системного трея

ForceWare 56.55, мы с вами где-то встречались?

Этот вопрос возник у меня при первом знакомстве и не случайно. Ведь все нововведения в контрольной панели драйвера давным-давно знакомы пользователям RivaTuner 2.0. Правда есть и нюансы, которые мы сейчас и рассмотрим:

  • Производительность и качество. Настройка.
    Очень понравилась реализация возможностей доступных регулировок, выполненная на одной вкладке. А не понравилось то, что настройки DirectX и OpenGL свалены в кучу, что может вызвать некоторые затруднения у не очень подготовленных пользователей или новичков. К тому же контекстная помощь (во всяком случае, в русскоязычном варианте) вводит в заблуждение, утверждая, что управление вертикальной синхронизацией распространяется только на OpenGL приложения. RivaTuner, со своими раздельными секциями по типу API, может показаться с первого взгляда более громоздкой, но и в этом есть определенный смысл. Например, я до сих пор поигрываю иногда в старые OpenGL игры, не слишком требовательные к ресурсам, выставив для них одинаковые параметры. При этом в секции DirectX по умолчанию остаются совершенно другие настройки АА и АФ. Кроме того, программа предоставляет более широкие возможности настройки видеокарты. Из «хитов» сразу можно назвать управление поддержкой шейдеров, что может пригодиться владельцам low-end карт семейства FX. А так же многое другое (перечень настроек зависит от типа вашей видеокарты).
  • Настройка частоты обновления экрана, разрешения и глубины цвета.
    Опять же порадовало определенное продвижение вперед. Теперь всё это можно сделать при помощи NVDIA Settings. Но, увы, только в ручном режиме. Тут RivaTuner на высоте.
  • Настройка цветовых схем.
    Ничего принципиально нового, снова RivaTuner лидер по удобству пользования и реализации данной опции.
  • Загрузка профилей приложения.
    Аналог пресетов как по принципу, так и по реализации процесса создания новых профилей (если брать в расчет только способ №1). Очень понравилось обилие уже готовых профилей, для запуска с соответствующими приложениями без дополнительного вмешательства пользователя. Кстати, программисты компании NVIDIA обещают, что от версии к версии количество готовых профилей будет пополнятся. Единственный минус — отсутствие данных игр у меня :). Ну а если серьезно, то RivaTuner пока не может похвастать таким количеством готовых пресетов, но зато позволяет легко их создать, причем с более богатыми вариантами настроек. Хотя завтра все может измениться. Словом, ознакомится с новым ForceWare 56.55 было очень интересно, но однозначно советовать его для установки ТОЛЬКО ради новых возможностей панели управления я бы не рискнул.

Заключение.

От версии к версии RivaTuner становиться все функциональней и удобнее. Надеюсь, что мой скромный вклад в популяризацию этой замечательной программы не остался без внимания, и вы обязательно установите её у себя на компьютере. Разумеется, я не смог рассказать вам обо всех возможностях, пожалуй, удостоив внимания лишь 1/6 части её настроек и закладок. Но я постарался в максимально простом виде показать вам как, затратив мизерное количество времени, совершенно неподготовленный пользователь программы может существенно облегчить себе жизнь. Надеюсь, мне это удалось. Приятной Вам игры!


Огромная благодарность Алексею Николайчуку а.k.а Unwinder
за оказанную моральную и теоретическую поддержку.

Сергеев Максим a.k.a max-sever


Обсудить/дополнить в конференции