Тела всех кукол я укрепил рунами света, для прочности, смастерил им оружие, правда, совсем не острое. Все-таки дети, мало ли что они учудят? Своей Алите дал длинный меч, роботу-силачу — молот, кентавру — копье, богомолу — кинжалы, четырехрукому — кривые сабли. И, конечно же, у каждого будет свой собственный стиль боя. Мы с Немо несколько вечеров перебирали воспоминания из всех виденных мною фильмов и игр, подбирая мув-сет для этих уродцев. Ну, то есть набор боевых движений. Опыт у нас уже был, но теперь мы будем делать не только самые простые анимации, но и суператаки, финты, уклоны, и самое главное — фаталити!
Игровой баланс — самая сложная часть работы. Если некоторые куклы окажутся слишком сильными, то все остальные очень скоро будут пылиться на полках, а соревнования станут скучными и предсказуемыми. Поэтому я решил не пожалеть нескольких ночей, чтобы освоить еще один полезный инструмент: нейросети. В институте у нас по ним был целый курс, и я с энтузиазмом принялся за дело, предвкушая, как сильно они облегчат мне отладку. Но на практике оказалось, что я довольно смутно представляю себе, как они устроены “внутри”, так что пришлось изрядно повозиться.
Конечно, можно было и не заморачиваться такими сложностями. Но я же планирую делать боевую марионетку! И главный ее недостаток в том, что магу в бою приходится отвлекаться на управление куклой. Конечно, я собираюсь использовать для этого Немо, но было бы наивно ожидать, что она справится с этим без каких-либо инструкций.
У нас много элтелиона, так что мы можем позволить себе запустить сразу 32 процессора, общей мощностью в 3 “терафлопса”. Но и это капля в море, когда занимаешься большими данными. По сути — как хорошая игровая видеокарта, не более того. Я поинтересовался у Немо, как же она делает сложные расчеты, когда показывает реалистичную трехмерную графику. Оказалось, что у нее есть несколько типов процессоров. Для операций с числами — как обычно, для операций с матрицами — как в игровых видеокартах, и даже, о ужас, для операций с тензорами! Вот это действительно хорошая новость. Иметь 32 “видеокарты” это гораздо, гораздо лучше с точки зрения производительности! Держу пари, Немо и сама активно использует что-то вроде нейросетей, но влезть в ее "исходный код" мы никак не можем, вот и приходится начинать с нуля, шаг за шагом, нащупывая общие точки соприкосновения.
Передав управление каждой куклой отдельной нейросети, а точнее, целому каскаду разных сетей, я проводил между ними битвы в виртуальном симуляторе Немо, поощряя каждую победу. Когда уровень скорости обучения достиг своего предела, а куклы стали драться не хуже меня самого, сравнил рейтинг побед и поражений. Как и ожидалось, на вершине "пищевой цепочки" оказалась моя Алита, слишком уж много внимания я ей уделял. Достойную конкуренцию ей мог составить лишь Богомол — просто за счет своих непомерно длинных ручищ. Кентаврик волочил свои многочисленные копыта в самом хвосте списка. Чересчур неповоротливый.
Вот тут и начались настоящие "танцы с бубном". Кому-то добавить полезных движений, кому-то сократить тайминги, или наоборот — растянуть движения. Затем заново провести обучение и оценку. И так по кругу. С горем пополам, добился некоторого баланса. И все равно, эффекта "камень, ножницы, бумага" избежать мне так и не удалось. Богомол хорош против Алиты, Алита — против Четырехрукого, тот неплохо бьет Железного человека, и так далее. Ну, для игр это даже хорошо. Я и так, можно сказать, заморочился сверх всякой меры. Одно успокаивает — весь этот опыт поможет мне потом с управлением моей будущей супер-марионеткой!
Движений пришлось записывать много, гораздо больше чем у первых версий. Но я быстро понял, что необязательно пытаться протаскивать куклу через цепочку четко выверенных поз. Вместо этого можно просто приложить некоторую силу к ключевым точкам — рукам, ногам, туловищу. Конечно, векторы силы пришлось долго и муторно высчитывать, но зато количество ключевых точек сократилось в сотни раз, и драгоценной золотой фольги ушло гораздо меньше, чем в первый раз. Тем не менее, мы потратили почти все золото, что дал нам Бранд и все его накопители.
Свое собственное золото и “батарейки” из первых марионеток я пока отложил — для более серьезного проекта. Памятуя о том, как кукол пытались украсть, я сделал и систему самоуничтожения, на случай, если кто-то попытается их насильно вскрыть. Она разрушит рунные дорожки на золотой фольге, а марионетка станет простой деревянной игрушкой. В общем, работой я остался доволен. По ходу дела, мы с Немо вносили некоторые корректировки и в наш главный проект. Например, “Богомол” натолкнул меня на мысль сделать дополнительные выдвижные сегменты, например для цепной пилы. Можно будет регулировать и длину ног, чтобы увеличивать скорость ходьбы-бега.