Дневник разработки: май
Сборка ракеты
Добрый вечер!
Сегодня я расскажу о конструировании ракет в игре «Rocket Science».
В январском обновлении я рассказывал о трех вариантах реализации этой системы и о том, что у меня было одно очень важное требование: эта система должна быть достаточно простой, но в то же время давать возможность комбинировать между собой детали ракет разными способами. Поразмыслив и поэкспериментировав некоторое время, я пришел к выводу, что система конструирования, основанная на слотах, подойдет лучше всего. При этом возникла другая проблема: я понял, что существует как минимум пять разных подходов к созданию такой системы, каждая со своими преимуществами и недостатками.
Давайте представим, что у нас есть четыре классические детали ракеты: командный модуль, отделитель, топливный бак и реактивный двигатель.
Замечание: это и последующие изображениия взяты из процесса прототипирования
Я хотел, чтобы система слотов проверяла, выполняется ли следующий набор правил:
- вы можете присоединять друг к другу топливные баки в любых количествах;
- вы не можете прикрепить двигатель к командному модулю или к отделителю;
- вы не можете присоединить ни одну из перечисленных деталей сверху командного модуля.
Первая пришедшая мысль была ограничить соединения по типу деталей. Например, у командного модуля есть две точки соединения, вверху и внизу:
Представьте, что вы можете присоединять только вспомогательные детали сверху и топливные баки и разделители снизу. Но сразу возникает две проблемы. Первая заключается в том, как визуально передать игроку, какие детали можно соединять друг с другом, а какие нет. Просто написать список поддерживаемых типов в подсказке к детали явно недостаточно. А во-вторых, эта система накладывает слишком большие ограничения. Что если я хочу присоединить шесть маленьких двигателей к топливному баку, вместо одного большого? А если нужно будет сделать так, чтобы к верху командного модуля крепились только некоторые вспомогательные детали?
Спустя недели страданий, проведенных в поисках лучшего решения, я, наконец, нашел одно. И как это обычно бывает, оно кажется очевидным, после того, как ты его нашел.
Итак, встречайте два столпа системы соединений:
У каждой детали будет от одного до семи коннекторов или слотов, расположенных определенным образом. Крепления выше названных деталей сейчас выглядят следующим образом:
У вас может возникнуть вопрос: «Как это работает?». Ответ прост, все подчиняется одному правилу. Все коннекторы одной детали должны быть помещены в слоты другой. И это, по сути всё.
Эта система позволит мне ограничивать некоторые сочетания деталей. Также теперь я могу попробовать усложнить физику ракет. В то же время у вас будет гораздо больше свободы в конструировании различных ракет из одного и того же набора деталей. К примеру, вы можете присоединить два или три средних двигателя (с двумя коннекторами) к топливному баку, упомянутому выше. Или от одного до семи маленьких двигателей с одним коннектором!
Также эти соединения могут быть легко представлены в интерфейсе выбора деталей:
Я также экспериментирую над цветовой схемой интерфейса, что можно увидеть на этой картинке
Хотя описанная система довольно проста с точки зрения игрока, с точки зрения реализации это настоящий кошмар, и она сдвинет релиз игры еще дальше. Но я думаю, что оно того стоит. Также у меня есть несколько идей о том, как расширить эту систему, практически не усложняя текущий набор правил.
Итак, что вы думаете об этой системе? Я ценю все отзывы, всегда их читаю и принимаю к сведению, поэтому не стесняйтесь комментировать.