creator cover 1NTERRUPTOR
1NTERRUPTOR

1NTERRUPTOR 

Разработчик модификации The Third Prophecy

3subscribers

15posts

Showcase

1
goals2
0 of 150 paid subscribers
Поддержка основного развития проекта - ваша подписка позволяет мне посвятить проекту максимум времени и реализовать весь задуманный контент.
$0 of $886 raised
Благодаря вашим донатам я могу активно работать над проектом, ускоряя выпуск рабочей демо.

About

Привет, меня зовут Александр, также известный как INTERRUPTOR. Моддинг и разработка игр - мое хобби. Сейчас мой основной проект - "The Third Prophecy", мод для Armies of Exigo, который я делаю полностью в соло. В этом проекте я экспериментирую с механиками и технологиями, пробую себя во многих областях геймдева: от написания кода и реверс-инжиниринга движка до левел- и саунд-дизайна.
Ваша поддержка помогает мне уделять больше времени разработке и делать проект лучше.

Краткая информация о текущем проекте

Сюжетный мод для Armies of Exigo, который продолжает оригинальную историю конфликта между людьми и варварами. Мод добавляет элементы RTT и RPG в игровой процесс, внедряет новые и изменяет существующие механики.
Что ожидается:
  • Полностью новая нелинейная кампания с кросс-квестами
  • Новые герои, юниты, здания и дерево технологий
  • Новые параметры юнитов, навыки и заклинания для героев, система их прокачки от миссии к миссии.
  • Новая концепция ресурсов, поселений и поддержки фракций
  • Псевдодинамическое освещение, атмосферные эффекты, ReShade с AO, GI, SSR, bloom
  • Новый саунддизайн и катсцены
  • Инвентарь для юнитов и новые предметы
  • Улучшенные текстуры и новые статические объекты
  • Полностью переработанный контекстуальный ИИ противника
  • Поддержка широкоформатных разрешений экранов и расширенные возможности редактора сценариев
Цель проекта: экспериментировать с механиками и создавать уникальный игровой опыт, внося инновации в устоявшийся жанр.
Присоединяйтесь к Discord-серверу, чтобы узнать актуальную дорожную карту и много другой информации по проекту.
Ваша поддержка и подписка помогают мне сохранять мотивацию и продолжать регулярно работать над проектом.

Интеграция Wwise и первые тесты

Я внедрил Wwise в проект, полностью заменив прежний звуковой модуль на базе OpenAL. Это дает больше контроля над пространственным звуком и атмосферой внутри игровой сцены.
Так выглядит редактор Wwise в деле
Что это меняет:
  1. Эффекты реверберации для пространственных звуков (ключевая фича). Диалоги персонажей, звуки шагов, битвы или звуки окружения теперь будут чувствоваться частью сцены.
  2. Вариативность звуков. Рандомизация сэмплов, управление громкостью, частотой и другие обычные эффекты доступны практически "из коробки", что ускоряет настройку звуков.
  3. Гибкая настройка микса. Звуки проще балансировать между собой — параметры можно донастраивать прямо в редакторе Wwise, чтобы они лучше вписывались в общий микс игры.
Вот небольшая демонстрация работы звуков шагов: 16 сэмплов проигрываются рандомно с учетом затухания и ориентации относительно камеры.ᅟ

Переработка освещения. Часть 1 — Ванильная система освещения

Эта статья — часть исследования системы освещения оригинальной игры, которое я сделал уже достаточно давно. Сейчас я завершаю переработку освещения в рамках мода, поэтому решил оформить всё в виде обширной серии материалов. Данная статья является неким вступлением.
Для начала: из чего вообще состоит освещение в игре?
Вы удивитесь (возможно), но всё затенение управляется всего двумя вещами:
  1. Погодный сет
  2. Статические источники света
Теперь добавим щепотку ограничений:
  1. На каждый объект — только одна тень. Она формируется от направленного источника objectLight — импровизированного «солнца».
  2. Тень отбрасывается только на террейн и статические объекты, являющиеся его частью.
  3. Нестатические анимированные объекты освещаются только одним источником света — тем же «солнцем».

Обходя ограничения движка. Часть 3 — Тестовая проверка в Engine Extension Framework и прогресс в реверс-инжиниринге

Предыдущая часть — здесь.
Проверка идеи потребовала совсем немного кода в рамках Engine Extension Framework.
На этом этапе я даже не использовал перехват функций — я вызывал их напрямую для назначения и снятия эффекта с идентификатором GOID_ALRICTELEPORT. Так что код получился весьма компактным.
Самое важное здесь то, что функции Trigger_RemoveItemFromUnit и Trigger_AddItemToUnit фактически являются событиями снятия и назначения эффекта соответственно. Они вызываются независимо от того, было ли это следствием работы триггерных команд или какой-то другой движковой логики. Из этого следуют важные выводы:
  • Эффекты можно менять/переназначать конкретным динамическим юнитам, переопределяя базовую механику игры
  • Выполнение функций можно игнорировать, отключая базовую механику игры
На практике это означает, что такой подход можно использовать для любой базовой механики игры.
Параллельно фиксирую прогресс в списке реверс-инжиниринга исходных механик игры (вы можете отслеживать его здесь):
  • Effect applying — completion 100%
  • Effect removing — completion 100%
В итоге этот небольшой технический эксперимент не только позволяет обойти фундаментальное ограничение движка, но и делает проще реализацию механик, ранее недоступных через редактор сценариев.
Отчет разработки #1
Охваченный период разработки: 04.02.2026 — 01.03.2026
Level required:
Хронист

Обходя ограничения движка. Часть 2 — замена ID объектов

Часть 1 — здесь 
Суть идеи: если триггер не позволяет указать нужный ID объекта напрямую, значит нужно "вмешаться" в код в момент непосредственно перед началом выполнения триггерной команды.
Мне удалось найти связанную с триггерной командой функцию и перехватить ее. В точке перехвата можно подменить идентификатор объекта на произвольный — тот, который нужен мне.
Поверх этого делается надстройка: собственные функции из Engine Extension Framework, которые подставляют ID целевого объекта вместо стартового объекта, указанного в редакторе сценариев, в зависимости от моей игровой логики.
Идея была проверена на триггерных командах AddItemToUnit и RemoveItemFromUnit. В тестовом примере я добавил эффект, который отсутствует в оригинальном редакторе сценариев, всем юнитам, попавшим в область выбора области действия заклинания (хороший пример нетривиальной игровой механики):

Обходя ограничения движка. Часть 1 — Проблема целеуказания

В редакторе сценариев есть фундаментальное ограничение, которое почти незаметно, пока вы не пытаетесь сделать что-то нетривиальное.
Триггерные команды позволяют выбирать объект двумя способами: через объектный выбор или через фильтрацию. Фактически, это означает, что вы можете работать либо с конкретно заданным объектом, либо с группой объектов по условиям.
Проблемы возникают, когда объект динамический — то есть его положение меняется в течение времени — и не стартовый — то есть не был установлен в редакторе карт изначально.
Простой пример: вы хотите, чтобы конкретный мечник автоматически восстанавливал здоровье, если оно падает ниже 10. Казалось бы, задача тривиальная — изменить атрибут HP при выполнении условия. Но вы не можете указать ID конкретного динамического юнита напрямую.
Вместо этого редактор вам "предлагает" изменить здоровье:

В поисках атмосферы

Параллельно с технической частью мода я продолжаю искать музыкальный стиль проекта.
В качестве эксперимента я взял минимум инструментов, а в качестве референсов:
  • оригинальный саундтрек Armies of Exigo
  • саундтрек The Lord of the Rings
  • саундтрек Interstellar
Получившийся фрагмент важен прежде всего как аудио-референс, который может задать направление для других композиций.
Помимо темы главного меню, которая уже почти отполирована, это первый материал, который очень точно передает ту атмосферу, которую я хочу создать.
Пока это черновик, но он уже подходит для:
  • игрового эмбиента
  • подложки девлога
  • титров
INTERRUPTOR
Is This The End
0:00
0:59

Внутренняя консоль логирования - шаг к стабильному технодемо

Помимо обычных методов отладки, такие как отладка в Visual Studio и вывод текста на экран, в какой-то момент стало ясно, что их недостаточно.
По мере усложнения систем стало труднее быстро находить конкретные объекты в памяти, отслеживать состояние внедрённых функций и разбирать причины сбоев. Обычный стек вызовов не всегда даёт полную картину того, что происходило внутри игрового цикла непосредственно перед крашем.
Первым шагом стало создание вспомогательных окон с отладочной информацией через API ReShade:
Теперь я могу привязать вывод к выделенному юниту и одним нажатием скопировать адрес соответствующей структуры в памяти процесса. Это позволяет сразу продолжить анализ в Cheat Engine. Это значительно ускоряет процесс отладки, когда нужно найти конкретный объект среди сотен остальных.
Однако этого оказалось недостаточно. Разбор crash dump'ов вручную - медленный и неудобный процесс. Поэтому была реализована отладочная консоль.
[Order] Update for patch (triggers source code) for Armies of Exigo
Индивидуальный заказ.
This patch retrieves full triggers source code of loaded scenario.
Post is available after purchase
Subscription levels3

Хронист

$4.5 per month
Для тех, кто хочет следить за разработкой и поддерживать проект.
Вы получаете доступ к регулярным отчётам о ходе разработки, эксклюзивным материалам (концепты, наработки, идеи) и участию в голосованиях. Также вы получаете роль Boosty supporter на Discord-сервере проекта.
+ chat

Испытатель Круга

$10.4 per month
Вы получаете:
- Все из уровня Хронист
- Доступ к тестированию незавершённых билдов (новые фичи и изменения) через закрытый Discord-канал
- Доступ к подробному журналу изменений
- Роль Circle Trialist на Discord-сервере
- Упоминание в титрах YouTube-видео проекта
Внимание: тестирование не равно раннему доступу. Незавершённые билды могут содержать ошибки и баги и не предназначены для комфортного игрового опыта.
+ chat

Пророк

$22.2 per month
Вы получаете:
- Все из уровней Хронист и Испытатель Круга
- Ранний доступ к стабильным обновлениям и релизам
- Приоритетное общение с разработчиком в закрытом Discord-канале
- Доступ к todo-листу текущей стадии разработки
- Возможность предлагать и обсуждать идеи для внедрения в закрытом Discord-канале.Внимание: если вы не принимаете, что финальное решение при обсуждении фичи всегда остаётся за автором проекта - этот уровень не для вас
- Роль The Prophet на Discord-сервере
- Упоминание в титрах релизов
+ chat
Go up