Сегодня поговорим о свободе воли. Есть ли она, и что с ней делать. Эй, стойте, не разбегайтесь. Про геймдизайн.
С тех пор, пока я в последний раз играл в покер (было это лет 20 назад), появилась его новая разновидность: техаский hold’em. Я играл в вариацию «каждому раздается по 5 карт, он может менять до трех». В «техаском» все проще: раздается по 2 карты, их менять нельзя, раздается сначала 3 общие карты, потом к ним добавляются по одной еще две.
Из этих 5+2 надо составить выигрышную комбинацию. Вернее даже так: кто дожил до конца (не спасовал), и у кого на руках лучшая комбинация из своих и общих карт — тот победил.
Хотя вы наверняка все знаете, это просто я на 20 лет отстал.
Главный подвох все тот же: «победитель» известен в тот момент, когда была перетасована колода.
Я специально взял «победитель» в кавычки, потому что правильней было бы сказать, что человек с самой сильной комбинацией становится «известен» сразу после того, как колода перетасована.
«Известен» тоже в кавычках, вы только посмотрите! Кому известен? Ну, не знаю, «миру». Или «колоде». Ладно, чтобы не водить вас за ногу: тот, кто раздает карты (и смотрит в них), уже после тасования колоды знает, кто мог бы победить, если бы держался до конца и не пасовал.
Помимо всего прочего, это — прекрасная иллюстрация «свободы воли» и так называемой «судьбы»: вы можете победить в партии даже не с самой сильной комбинацией — для этого надо, чтобы остальные вышли. Изменить же саму комбинацию («судьбу») вы не можете. Аналогично, владея самой сильной рукой, но не зная об этом, можно испугаться и продуть.
Но вернемся к геймдизайну.
Я слышал, что какие-то люди, писавшие свой «техасский покер», долго мучилась написанием к нему ботов, чтобы игрокам было, с кем играть. Тяжелая задача на алгоритмы, искусственный интеллект и прочее. Сотни, тысячи человеко-часов, все дела. Имитация игрока. Ну, вы понимаете.
Ошибка классическая: «AI в играх не должен быть правдивым, а всего-навсего должен выглядеть правдоподобным». Что должен делать бот?
1. С разным успехом надирать игроку задницу.
2. Изображать разные стили игры (агрессивный/дефенсивный).
3. Время от времени лажаться.
Самый простой способ написания бота? Правильно! Поделиться с ним знанием о колоде. После этого бот подчинается коротенькому алгоритмы, а его поведение можно описать несколькими цифрами:
1. Как часто он должен побеждать, если знает, что победит.
2. Как резко он должен пытаться урвать деньги, если знает, что победит.
3. Как часто он должен глупо проигрывать, если знает, что проиграет.
3. Как резко он должен проигрывать деньги, если знает, что проиграет.
Тут из зала кричат, что это шулерство. Все верно. Это шулерство!
Шулеры в поездах так и делают: обладая знаниями о колоде, они разыгрывают перед «лохом» спектакль. С целью лоха раздеть.
Ровно такой же спектакль — но с благородной целью повеселить лоха — могут делать и боты.
That’s what bots are made for!