Есть известная в узких кругах история о том, как в 1981 и в 1982 году программист Дуглас Ленат выигрывал чемпионаты по игре
Traveller, посвящённой космическим боям далёкого будущего. А если совсем точно, Traveller - это целая ролевая система и игровая вселенная, и даже не одна. В данном случае речь шла о классическом Traveller в режиме TCS - Trillion Credit Squadron. Каждому участнику выдавался определённый бюджет в игровой валюте (триллион кредитов), который он должен был использовать для создания непобедимой космической эскадры, начиная с проектирования отдельных кораблей из имеющихся в игре деталей и оборудования. Затем эскадры игроков воевали друг с другом по правилам моделирования космооперных сражений.
Ленат использовал программу Eurisco (
рус.,
англ.) для того, чтобы исследовать правила игры - чтобы вывести правила, описывающие правила. Иначе говоря, он сумел изложить формальным языком правила Traveller и загрузить их в компьютер, после чего программа начала генерировать случайные корабли и воевать сама с собой, много-много раз. Если обнаруживались какие-либо закономерности в исходе боёв, программа обращала на них внимание Лената, после чего он формулировал новые правила, описывающие эти закономерности, а программа создавала на их основе очередные, более совершенные корабли и эскадры. И так до упора.
Таким образом, за месяц он выявил наиболее оптимальный состав флота - радикально отличавшийся от того варианта, который за несколько лет существования игры естественным путём сложился в сообществе любителей Traveller.
Я хотел упомянуть об одном конкретном правиле анализа правил, которое он использовал. Если во время перебора комбинаций программа наталкивалась на устойчивые решения, которые относились друг к другу, как "камень"-"ножницы"-"бумага" - флот A бил флот B и проигрывал флоту C, который был слабее B - она должна была отбросить все три, и начать искать решение, которое будет побеждать сразу A, B, и C. Иначе программа могла бы застрять на трёх вариантах с одинаковым "весом", не имея возможности выбрать из них самый лучший. Ленат же искал такой набор кораблей, у которого не будет очевидных слабостей, то есть такой, чьим самым страшным противником будет его идентичная копия.
Но раз уж я начал говорить об этом, то расскажу и о его решении.
Типичная турнирная эскадра в те времена состояла из 15-20 крупных и быстрых кораблей, с одним мощным орудием главного калибра на носу и батареями "противоминных" лазеров по бортам. Ленат же выставил около сотни мелких, малоподвижных и предельно бронированных судёнышек с максимально возможным числом ракетных установок на каждом. Экспериментальным путём он выяснил, что несколько маленьких кораблей лучше одного большого, ракеты эффективнее лазеров (так как урон от них не зависел от расстояния), а броня важнее скорости. К тому же, толстая броня сводила на нет урон от вражеских лазеров - вообще, практически во всех случаях было выгоднее тратить тоннаж и средства на броню, а не на лазеры.
Выяснилось, что до вмешательства Eurisco игроки в Traveller воевали между собой с использованием весьма неоптимальных кораблей. И эти корабли обладали хоть какой-то реальной боевой эффективностью лишь потому, что сражались с себе подобными - или с ещё более неудачными поделками. (Вот она, "
инерция парадигмы" - привет
makarovslava.) У опытных игроков было принято вкладывать все ресурсы в вооружение и скорость, поэтому корабли получались манёвренными, но хрупкими. Лазеры были эффективны лишь потому, что все участники жертвовали бронёй, чтобы воткнуть по бортам побольше лазеров. Возможно, игроков также привлекала возможность активно маневрировать, проявляя свой тактический гений, поскольку это соответствовало их представлениям о том, как должен выглядеть космический бой. В итоге, победу приносили правильные решения в ходе сражения, а также те или иные незначительные отклонения характеристик кораблей в нужную сторону.
Когда Ленат выставил на турнир свою армаду маленьких черепашек с ракетами, над ним сначала смеялись. Но потом выяснилось, что его медленные и толстокожие кораблики очень трудно запилить лазерами. Их можно было достать только большим носовым орудием, прямое попадание из которого обычно сразу же убивало черепашку. Но тут уже работало численное превосходство: большая пушка стреляла один раз за ход, и каждый ход гибло несколько черепашек, по которым удавалось попасть - но их изначально было под сотню, и каждый ход все выжившие черепашки выпускали по врагам тучи ракет. Большие корабли представляли из себя хорошие мишени, нормальной брони у них не было, а скорость их не спасала, потому что ракеты всё равно были быстрее. Потери были неизбежны, а дальше всё было просто. Меньше кораблей - меньше выстрелов из главного калибра - меньше попаданий. Раз за разом очередная вражеская эскадра таяла быстрее, чем войско Лената.
Понятно, что некоторые из использованных решений были откровенно читерскими и манчкинскими. Например, Ленат выяснил, что броня практически всегда будет эффективней лазеров - но в определённой ситуации лазер окажется эффективнее в качестве брони. Таким образом, в финальной компоновке его черепашек присутствовала одна единственная лазерная пушка. Она не использовалась в бою, но расчёты показывали, что она повышает выживаемость, так часть неприятельских попаданий в случайным образом распределялась на неё, что позволяло спасти другие, более важные узлы. (Дополнительная броня туда уже не вставала, из-за цены/тоннажа/эффективности.)
Потом возник вопрос войны с себе подобными. Понятно, что по мере перебора вариантов и выработке новый правил конструирования эскадр, всё больше и больше флотов-финалистов становились похожими друг на друга. Тогда Ленат обратил внимание на странную закономерность - флот, который практически ничем не выделялся среди остальных, а в каких-то отношениях даже был откровенно неудачным, вдруг стал получать аномально высокие оценки. Оказалось, что в ходе очередной перетасовки программа добавила ему "шлюпку" - минимальный корабль вообще без оружия. Дальше происходило следующее - в ходе перестрелки весь флот погибал, а шлюпка оставалась. Противник стабильно по ней мазал (она была слишком маленькой), на этом кончались отведённые на симуляцию ходы и программа фиксировала ничью. Этот флот практически никогда не проигрывал.
Так Ленат вывел свою вторую главную закономерность. Правила позволяли создать неуязвимый юнит - минимальный невооружённый корабль без брони и с одним мощным движком. Скорость в сочетании с малыми размерами приводили к тому, что стрелять по такому объекту было в общем-то бесполезно. А несовершенство правил Traveller означало, что наличие в составе флота хотя бы одного неубиваемого юнита резко повышало боевую устойчивость всей эскадры - безоружный кораблик каким-то образом умудрялся связать боем вооружённых до зубов противников.
Финальным штрихом было решение, рассчитанное на тот маловероятный случай, если бы кто-то из противников тоже использовал чит с минимальным кораблём. В окончательный состав эскадры вошли два корабля-снайпера, построенные вокруг лучших систем наведения из доступных в игре, и вооружённые маломощными дальнобойными лазерами с максимально широкой зоной поражения. Бесполезные в реальном бою, они, тем не менее, имели неплохие шансы поймать сверхбыстрый кораблик без брони в свет своих "прожекторов".
Ленат рассказывал, что в финале на него вышел парень, который самостоятельно додумался до многих правильных решений - его корабли тоже были сконструированы с упором на броню и ракеты, а не на скорость и лазеры. Но когда Ленат показал ему свою неубиваемую "шлюпку", парень посмотрел на её характеристики, посчитал что-то на салфетке - и капитулировал. Никаких инструментов для нейтрализации подобного трюка в его эскадре, естественно, не нашлось.
Да, на следующий год организаторы внесли ряд поправок в правила, чтобы покончить с "бронечерепашками". Но все их исправления привели к тому, что игровая система стала ещё более глючной и несбалансированной, программа Eurisco за неделю нащупала новые эффективные решения, и эскадра Лената в очередной раз разгромила всех противников. В результате чего организаторы сказали, что либо турнир, либо Ленат - если он продолжит глумиться над их игрой, они просто не будут проводить такие мероприятия.
***
В наших краях эта история в основном известна по пересказу Розова, который
переврал вообще всё, как в бородатом анекдоте про лотерею и преферанс.
Довесок с цитатами из оригинала.