Обходя ограничения движка. Часть 3 — Тестовая проверка в Engine Extension Framework и прогресс в реверс-инжиниринге
Проверка идеи потребовала совсем немного кода в рамках Engine Extension Framework.
На этом этапе я даже не использовал перехват функций — я вызывал их напрямую для назначения и снятия эффекта с идентификатором GOID_ALRICTELEPORT. Так что код получился весьма компактным.
Самое важное здесь то, что функции Trigger_RemoveItemFromUnit и Trigger_AddItemToUnit фактически являются событиями снятия и назначения эффекта соответственно. Они вызываются независимо от того, было ли это следствием работы триггерных команд или какой-то другой движковой логики. Из этого следуют важные выводы:
- Эффекты можно менять/переназначать конкретным динамическим юнитам, переопределяя базовую механику игры
- Выполнение функций можно игнорировать, отключая базовую механику игры
На практике это означает, что такой подход можно использовать для любой базовой механики игры.
Параллельно фиксирую прогресс в списке реверс-инжиниринга исходных механик игры (вы можете отслеживать его здесь):
- Effect applying — completion 100%
- Effect removing — completion 100%
В итоге этот небольшой технический эксперимент не только позволяет обойти фундаментальное ограничение движка, но и делает проще реализацию механик, ранее недоступных через редактор сценариев.
In bundle
the third prophecy