1. Ферапонтов Олег Владимирович
Возраст: 27 лет.
Место жительства: Россия, г. Брянск.
Электронная почта: oleg.osiris.ferapontov@gmail.com
Образование: Неполное высшее
2006 – 2008 гг. - Брянский Государственный Технический Университет. Факультет
экономики и информатики. Кафедра: «Программное обеспечение». Специальность -
«Математическое обеспечение и администрирование информационных систем».
Иностранный язык: разговорный английский.
Профессиональные навыки:
- Большой опыт работы с C++, STL.
- Опыт работы с C#, NET.
- Опыт работы с MFC, WinForms, wxWidgets.
- Опыт работы с репозиторием.
- Большой опыт работы с DirectX 9, 10, 11.
- Опыт работы OpenGL.
- Опыт разработки игровых движков.
- Havok Physics, PhysX.
- Havok Animations.
- Angel Script, Lua.
Проекты:
Более 8 лет в качестве разработчика игрового движка в составе команды Totem Games
(http://totemgames.ru/).
2006 – 2008 – Разработка пошаговой морской стратегии «Ironclads: American Civil War»
для PC.
http://en.wikipedia.org/wiki/Ironclads:_American_Civil_War
Все технические работы выполнялись мной, был написан трехмерный движок, с простой
графической системой, написана игровая логика, пользовательский интерфейс, редактор и
дополнительные утилиты.
2008 – 2009 – Разработка морского симулятора реального времени «Ironclads: High Seas»
для PC.
http://en.wikipedia.org/wiki/Ironclads:_High_Sea
Релиз для стим:
http://store.steampowered.com/app/46710/
Мною был значительно переписан графический движок, улучшена картинка. Добавлены
shadow maps, поддержка post process. Разработана самостоятельно физическая система для
симуляции движения, плавучести и столкновения кораблей с учетом волнения моря.
2. Значительно изменена система частиц, ускорено ее отображение. Написана гибкая
система пользовательского интерфейса.
2010 — 2014 — Разработка новой технологии для игр внутри студии. Написание системы
рендера, утилит, игровых редакторов, внутри-игрового интерфейса и прочее.
2015 – Разработка стратегической военно-морской игры «Ironclads 2: American Civil War».
Релиз для стим:
http://store.steampowered.com/app/414260/
Была написана уникальная игровая механика для стратегического игрового режима.
Опыт работы с графикой:
По последней версии движка я написал ряд статей с общим описанием идей и методов,
которые реализовывались в рамках в основном графической системы движка.
http://www.gamedev.ru/pages/totem4_engine/articles/
Система рендера полностью вынесена в отдельный поток, синхронизация производится
между потоками игры и рендера независимо от других потоков, без использования
критических секций и прочих алгоритмов системной синхронизации. Использование
атомарных переменных для флагов синхронизации так же не показало своей
необходимости по тестам. Используется обычная bool переменная, которую считывает
основной поток движка.
Подробнее: http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article1
Сама система рендера представляет собой многопроходный цикл. Проходы генерируются
на основании конфига рендера движка, для каждого приложения можно реализовать
полностью уникальную систему.
Для управления ресурсами используются менеджеры, каждый ресурс представлен умным
указателем с простым или управляемым счетчиком ссылок для особых схем управления
освобождением ресурса (например некоторые ресурсы могут оставаться в менеджере для
быстрого доступа или же быть полностью выгружены из памяти).
Подробнее: http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article2
Для всех проектов реализовывался прямой рендер с одним основным источником света и
несколькими локальными источниками на объект (макисимум 10 omni, 4 spot). Для
реализации теней использовалась технология CSM (cascaded shadow maps) с фильтрацией
для смягчения по технологии VSM (variance shadow maps), экранная фильтрация с учетом
карты глубины.
Отложенный рендер не был реализован в силу избыточности технологии для данного
проекта.
Отображение моделей сделано по технологии Phong lighting model с учетом карты
нормалей (normal map) и свечения (specular map) для металлических поверхностей.
3. Два точечных источника
света и простая тень от
направленного источника
света в тестовой программе.
Из крупных систем эффектов реализовано небо по технологии atmosherical scattering:
http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article4
И поверхность океана с динамически изменяемыми погодными условиями, в основе
лежит технология предложенная Тессендорфом и ряд примеров по этой технике:
http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article5
http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article6
В ходе реализации много работал с D3D11 и Compute Shaders, разбирался в примерах
nVidia Ocean11 и Island11. Перекладывал технологию на D3D9. В процессе работы
остался очень доволен написанной многопроходной системой рендера, позволяющей
реализовывать нужное число проходов для FFT преобразований.
динамический расчет волн с текстурой 256х256 и партикловые облака
4. Системы частиц заняли большое время в разработке, три раза модель обработки была
полностью переписана. Изначально алгоритм базировался на физической моделе. Каждая
частица имела массу и действующие на нее импульсы или силы, но наличие большого
числа динамических сил приводило к большому числу циклов, что сильно сказывалось на
скорости обработки. В результате решил перейти на систему интерполяции
трансформаций частиц: линейную интерполяцию, сплайновую (по кривой Безье). В
результате у эмиттера в обработке статическое число эффекторов, что устраняет лишние
циклы, а интерполяция позволяет реализовывать сложные эффекты.
Рендер частиц реализован за один DIP для одного атласа текстуры, все данные о частицах
собираются в буфер вершин, который используется с технологией Hardware Instancing.
Для частиц реализован редактор.
Не самая важная часть, но, к сожалению, очень громоздкая — GUI. Интерфейс реализован
на основе вывода примитивов при ортогональной проекции, используется точечная
фильтрация текстур для избежания искажения изображения. Все алгоритмы обработки
реализованы самостоятельно. Рендер за один DIP (один VB и IB) для одного атласа
текстур.
Небольшая статья о реализации:
http://www.gamedev.ru/pages/totem4_engine/articles/totem4_article3
5. Опыт работы с физикой:
Был опыт написания своего движка по обработки физики, но стал использовать готовую
технологию, чтобы не решать проблемы быстрого расчета столкновений выпуклых тел
решил не целесообразным, выбирал из PhysX и Havok, последний мне показался наиболее
приемлемым, так как имелось множество примеров реализации, что помогало обучению.
Кроме использования основных методов физической системы, связанной с определением
контакта тел (collisions) и нахождения пересечений (ray casts), была написана симуляция
плавучести твердого тела на основе метода точечных объемов. Он заключается в
разделении модели объекта (корпуса) на боксы, равные примерно по объему участку
корпуса модели и дальнейшему просчету контакта бокса с поверхностью воды для
определения погружения и следовательно выталкивающей силы.
6. Программа использует просто алгоритм расчета пересечения плоскости воды в текущей
точке (построение плоскости по трем точкам на основании карты высот) с гранями
объемного бокса, для ускорения просчетов плоскость строится в локальном пространстве
модели.
Алгоритм позволяет реализовать плавучесть
любого тела в воде, расположение центра
тяжести и метоцентрическая высота судна
определяет остойчивость, масса тела и его
размеры определяют стабильность
артиллерийской платформы.
Для расчета игровой модели судна с учетом реальных характеристик корпуса,
сопротивлению пробития от механического воздействия (таран, снаряд) или фугасного
(взрывная волна) была реализована система конструкции судна, с учетом разделения на
отсеки.