5 березня 2026 р. · Михайло Васильєв
Nexus Devlog: прототип рушія
Півтора місяця тому я виклав на сайті плани студії - про рушій Nexus: що це таке і які проєкти ми робитимемо на ньому, аж до стратегій і продовжень єгипетської серії. Там же була дорожня карта. Рушій складний, і щоб знизити ризики, я хотів збирати його поступово. Але гравці в коментарях сказали прямо: зібрати таке неможливо. Тому я вирішив почати з прототипу - показати, що зібрати такий рушій усе-таки можна. Його й покажу.

Ось як рушій виглядає зараз. На вигляд це доволі примітивний консольний застосунок. Але він добре показує головне - що різні механіки працюють на одному універсальному рушії.
Зараз на ньому крутяться чотири симуляції. Перша - Stone Age, найперша гра студії, 2013 року. Решта три зроблені за чужими проєктами. Копіювати чи випускати їх я не збираюся, вони тут тільки щоб показати, що на одному рушії можуть працювати геть різні ігрові механіки.
Stone Age
Stone Age відтворена на рушії повністю. Ті самі характеристики, роки й ходи, населення, землі. Робітників відправляєш у ліс, вони добувають їжу, населення росте, з'являються технології - їх досліджуєш, відкриваєш будівлі й дерево еволюції, від австралопітека до людини вмілої й далі. Події, кінцівка - усе з оригіналу на місці.

Slay the Spire
Далі - Slay the Spire, чудовий картковий роґалик, хтось напевно грав. На рушії тільки бій: у гравця карти, енергія та здоров'я, у ворога свій намір. Strike (Удар) б'є, Defend (Захист) ставить блок. Витрачаєш енергію, завершуєш хід, і так по черзі, поки хтось не переможе.

GURPS
Третя симуляція - GURPS, настільна система, доволі складна. З неї я взяв тільки один модуль, генератор зоряних систем. Цікаво, що сам цей модуль - узагалі не гра, а складний генератор. Він зібрав систему з однією зорею й купою властивостей: десять орбіт, на них різні світи. Перший, маленький кам'яний, схожий на Меркурій - зі своєю масою, тиском атмосфери та іншим. Усього в цій симуляції більше шести тисяч фактів. Це добрий стрес-тест: видно, скільки даних рушій тягне.

Oregon Trail
Четверта - Oregon Trail, класика 1971 року й одна з найраніших комп'ютерних ігор. Це шлях переселенців через Америку на возах: перед дорогою закуповуєш припаси - волів, їжу, набої, одяг, - а далі полюєш, розподіляєш пайок і розбираєшся з подіями. На нас ось напали. І так до кінця маршруту.

Усі чотири гри працюють на одному рушії, і для жодної не довелося писати код.
Правка на ходу
Але рушій не тільки запускає ці ігри - їх можна міняти прямо на ходу, не чіпаючи код. Візьмемо Slay the Spire.

Поміняю урон карти Strike (Удар), поставлю 100:
/set Strike.CalcDamage Value 100Властивість одразу змінилася в обох таких карт, бо клас у них спільний.

А можна додати й геть нову карту, Fireball (Вогняна куля):
/add Fireball Is DirectDamage
/set Fireball.CostEnergy Value 2
/add Fireball Has CalcDamage
/set Fireball.CalcDamage Value 20
/add Fireball Has ApplyDamage
/add Fireball.ExecutionEffects Has CostEnergy
/add Fireball.ExecutionEffects Has CalcDamage
/add Fireball.ExecutionEffects Has ApplyDamageЇї не було, а тепер вона в грі - лежить у руці, розігрується, завдає 20 урону й іде в скид, як звичайна:

Можна поміняти й самі правила, однією командою. Заберу правило, за яким зіграні карти йдуть у скид.
/remove PlayCard Has MovePlayedCardТепер вони лишаються в руці. Зіграв Defend (Захист): з'явився блок, енергія витратилася, а карта лишилася.
![Після зміни правила: Defend (Захист) зіграно - енергія 0/3, блок 5, - але всі зіграні карти лишилися в руці, позначені [X]](/_next/image?url=%2Fvblog1_slayrule.jpg&w=3840&q=75)
У звичайній грі, написаній мовою програмування, для цього довелося б лізти в код і перезбирати проєкт. Тут це не потрібно.
Так само в гру додається й те, чого в ній раніше не було зовсім. Наприклад, золото - заведу його й опишу, як воно витрачається:
/set Player.Gold Value 100
/add CostGold Output Owner.Gold
/add CostGold Math.Subtract.Apply trueЗ'являється характеристика, якої щойно не було, - золото, і одразу ціла сотня.

На цьому золоті можна зробити й нову дію - Bribe (Підкуп). Воно витрачає не енергію, а золото:
/add Bribe Is DirectDamage
/set Bribe.CostEnergy Value 0
/set Bribe.CostGold Value 30
/add Bribe Has CalcDamage
/set Bribe.CalcDamage Value 15
/add Bribe Has ApplyDamage
/add Bribe Has CostGold
/add Bribe.ExecutionEffects Has CostGold
/add Bribe.ExecutionEffects Has CalcDamage
/add Bribe.ExecutionEffects Has ApplyDamage
/create Bribe Player.HandBribe (Підкуп) коштує тридцять золота й завдає п'ятнадцять урону - і одразу працює.

Може здатися, що це чити й що набирати такі команди незручно. Але це не чити. Це правка логічних фактів і даних, на яких тримається вся гра: її об'єкти, властивості й механіки. По суті це мова, якою гра написана.
Вчити цю мову не обов'язково. Можна попросити ШІ перекласти звичайну фразу в команди, які розуміє Nexus. Наприклад:
give 999 goldУ перекладі це просто «Додай 999 золота».

ШІ думає, знаходить потрібну команду й виконує, і в нас 999 золота.
Можна сказати інакше, «золото 100» - теж спрацює. «Зроби мене богом» - ШІ видає невразливість. Завершити хід, ударити, вилікуватися - усе це можна зробити словами, рушій розуміє. І нічого з цього не заскриптовано, усе працює по-справжньому.
Плани
Команди я хочу спростити. Зараз, щоб створити той самий Fireball (Вогняна куля), потрібно близько восьми команд, а думаю звести до трьох-чотирьох. А в наступному ролику постараюся показати щось наочніше - 2D-рендер.
Докладніше про рушій і плани - у розділі Nexus.
Застереження: Stone Age - гра студії. Slay the Spire, GURPS та Oregon Trail належать їхнім правовласникам і показані тільки як демонстрація рушія - ці збірки ніде не поширюються.
