KA-TET представляет:
"Пуля v0.9.2 beta" для Windows 9x/NT 4.0/2000/Me/XP
Содержание:
1. Назначение и особенности программы
2. Условия распространения
3. Аппаратные и программные требования
4. Инсталляция. Состав дистрибутива
5. Описание программы
6. Используемые алгоритмы
7. Часто задаваемые вопросы (ЧаВо/FAQ)
8. Авторы программы
9. Немного истории и планы на будущее
1. НАЗНАЧЕНИЕ И ОСОБЕННОСТИ ПРОГРАММЫ
Программа является полноценным преферансом для троих игроков с поддержкой сетевой игры. Предметом особой гордости является функция "Решатель преферансных задач". Задачи деляться на два типа: "Торговля и заказ игры" и "Розыгрыш раскладов". Решатель может быть полезен как опытным игрокам для отработки сложных или спорных игровых ситуаций, так и начинающим для подробного анализа любой игровой ситуации.
"Решатель преферансных задач" обладает следующими возможностями:
- моделирование игроком любой игровой ситуации;
- сохранение и загрузка игровых ситуаций;
- формирование подсказки в любой игровой ситуации, с показом результата возможных альтернатив;
- выполнение анализа нескольких подряд сделанных действий;
- возврат сделанных действий.
Данная версия предназначена для публичного бета-тестирования и распространяется безвозмездно. Основной целью распространения данной версии является выявление ошибок и недочетов, допущенных при написании программы. Поэтому мы всячески приветствуем посылку нам сообщений об ошибках, хотя хвалебные высказывания и деньги тоже принимаются. Читайте подробнее п.8. Неизвестно, получим ли мы в конце концов за эту программу какое-либо материальное вознаграждение, поэтому не можем обещать нашим тестерам золотые горы. Пока мы можем предложить лишь моральное поощрение, да бесплатное получение будущих версий программы.
Примечание! В ходе выполнения игры производятся вычисления, которые могут занимать значительное время. При этом загрузка процессора составляет 100% и переключение к другим задачам выглядит проблематичным. По сообщениям наших тестеров при использовании сильно разогнанного процессора или задранной частоты системной шины время от времени можно наблюдать сообщение о том, что программа выполнила недопустимую операцию и будет закрыта. К сожалению на компьютерах разработчиков такой эффект не проявляется, поэтому он будет устранен как только мы раздобудем достаточно глючный компьютер.
Поэтому, пожалуйста присылайте сообщения об ошибках, только в том случае, если они проявляются стабильно в одной и той же игровой ситуации.
3. АППАРАТНЫЕ И ПРОГРАММНЫЕ ТРЕБОВАНИЯ
а) Аппаратные
Процессор. 90% кода программы были написаны и отлажены на машинах класса Pentium-166 :-(
Поэтому нет никаких препятствий для работы программы на аналогичных процессорах. Однако, если вы не обладаете ангельским терпением и не готовы ждать полдня, чтобы узнать решение заветной задачи, то не рекомендуется использовать процессор хуже Pentium II - 400. Наличие кэша различных уровней, усовершенствования конвейера и другие ускоряющие фенечки всячески приветствуется в плане ускорения вычислений.
Оперативная память. Программа запрашивает у системы порядка 24 Мб памяти. Системы, имеющие рекомендуемый процессор обычно снабжены гораздо большим количеством ОП, поэтому данный параметр не является критическим.
Параметры экрана. Минимальное требуемое разрешение экрана: 800x600. Программа запустится и при 256 цветах, однако лицам с неустойчивой психикой не рекомендуется использовать менее 65535 (HiColor) цветов.
а) Программные
Программе для запуска требуется наличие одной из следующих версий Windows: 9x/NT/Me/2k/XP.
Кроме того, для запуска режима сетевой игры требуется наличие библиотеки DirectX, не ниже 5-й версии.
4. ИНСТАЛЛЯЦИЯ. СОСТАВ ДИСТРИБУТИВА
Возрадуйтесь!!! Никаких инсталляций, никаких переписываний кучи .DLL в ваш захламленный Windows каталог, никаких регистраций OLE объектов, никаких прописываний в системе глючных драйверов, никаких изменений в вашем драгоценном РЕЕСТРЕ и не менее ценных .INI файлах. Просто распакуйте дистрибутив в какой-либо каталог (рекомендуется "C:\PULYA") и запускайте PULYA.EXE. Все настроечные файлы системы будут созданы в этом же каталоге, поэтому при переносе программы на другой компьютер со всеми вашими настойками, Вам достаточно скопировать лишь содержимое данного каталога. А, если даже вдруг, Вы захотите удалить нашу замечательную программу, то Вам достаточно удалить содержимое данного каталога.
В состав дистрибутива входят следующие файлы:
Pulya.exe - Исполняемый модуль.
Theme00.dll - Не пугайтесь, это не .DLL в прямом смысле этого слова. Это просто сборище используемых программой графических ресурсов. Программа имеет открытую архитектуру и поддерживает до 100 таких ресурсных файлов с именами от Theme00.dll до Theme99.dll, каждый из которых способен серьезно изменить внешний облик программы. Когда наша программа станет всемирно знаменитой, мы выпустим еще пару десятков графических тем, однако пока в дистрибутиве прилагается только одна.
User00.dat, User01.dat, User02.dat - файлы, содержащие настройки пользователей. В дистрибутиве содержатся настойки пользователей для трех наиболее распространенных версий преферанса (Сочи, Ростов, Ленинград). Вы, конечно, можете создавать свои собственные настроечные файлы или редактировать существующие. Количество файлов с настройками пользователей, поддерживаемое системой - 100.
"Задача Галактионова.gam","Мизер Ласкера.gam","Мизер Ковалевской.gam" - файлы, содержащие игровые ситуации, моделирующие классическте преферансные задачи. Прилагаются в качестве примера.
"Сложный расклад.gam" - файл, содержащий игровую ситуацию, на порядок превосходящую по сложности вышеупомянутые классические задачи.
Кроме того, при первом запуске программы будет создан файл Pulya.ini, хранящий стартовую информацию программы. В процессе работы Вами могут создаваться файлы настроек пользователя .DAT, игровых ситуаций .GAM, распределения карт .CRD, пули .PUL.
5. ОПИСАНИЕ ПРОГРАММЫ
Запустив исполняемый модуль, Вы попадаете в главное меню программы и можете выбрать пользователя, настройки которого будете использовать. В дистрибутиве предлагаются настройки трех пользователей, соответствующие основным версиям преферанса. Вы можете редактировать настройки этих пользователей или создавать свои собственные.
В главном меню можно выбрать один из следующих режимов:
Настройки. Внимание!!! Программа имеет очень детальные настройки, касающиеся стоимости игр, благодаря чему может быть настроена под любую местную разновидность преферанса. Однако, может быть настроена так, что получится не игра преферанс, а нечто неизвестное. Например, можно установить приоритет игры 6ПИК больше 10ПИК. Поэтому будьте очень осторожны при редактировании этих настроек. Проконтролировать себя можно просмотрев стоимость игр. Бесприкупные игры позволяются, но не рекомендуются.
Примечание: изменение настроек игрока возможно лишь при выборе данного пункта из главного меню. При выборе любого режима игры или решателя задач настройки становятся доступны только в режиме просмотра. Это связано с тем, что настройки оказывают влияние на диапазон возможных действий игроков и не могут быть изменены без ущерба для начатого режима игры.
Единственный вид настроек, доступный для изменения после выбора какого-либо режима игры - это настройки пользовательского интерфейса.
Решатель преферансных задач. Торговля и заказ игры. Данный режим предназначен для решения следующих задач: определения силы карт, выгодности заказа игроком различных игр, выбора роли игрока при игре на взятки и типа вистования. Можно создавать, сохранять и загружать как полные игровые ситуации, так и только распределение карт. При сохранении игровой ситуации, сохраняются и все пользовательские настройки. При задании карт прикупа, в случае выбора в настройках распасов с открытием прикупа, имейте ввиду, что первая выбранная карта прикупа окажется открытой второй. Таким образом, эмулируется сдача карт человеком, когда вторая карта кладется сверху первой и открывается раньше. Начинать торговлю можно после распределения карт игрокам.
При загрузке ранее сохраненной игровой ситуации следует иметь в виду, что в связи с достаточно сложным описанием действий игроков (заявки, взятие прикупа, снос, заказ, выбор роли и типа вистования) изменение каких-либо параметров ситуации (карт или текущего игрока) приведет к очистке всех произведенных игроками действий.
Несмотря на то, что все карты на игровом столе изображены открытыми, при формировании подсказок и выполнения анализа для каждого игрока используется его собственный, установленный в настройках тип подсматривания карт. Подсказки для игрока с подсматриванием карт во время торговли формируются достаточно медленно и дают точный результат. Поэтому, подсматривание карт при торговле рекомендуется использовать для точного расчета сложного расклада. В остальных случаях рекомендуется использовать честную игру без подсматривания карт.
После начала торговли можно вызвать меню нажатием клавиши "Escape" или правой кнопки мыши. Меню изменяется, в зависимости от этапа торговли, но обычно содержит пункты, позволяющие выдать подсказку по данной ситуации, произвести необходимое действие, возврат и анализ действий.
Наиболее медленно анализируемые этапы торговли: заявки, снос и заказ игры. Остальные этапы анализируются быстрее. Однако, все этапы анализируются лишь один раз, поэтому последующие анализы для того же игрока выполняются быстрее.
В данном режиме игры доступен возврат всех сделанных игроками действий, а также их анализ.
После окончания торговли можно начать розыгрыш сложившейся игровой ситуации.
Решатель преферансных задач. Розыгрыш раскладов. Данный режим позволяет производить детальную оценку расклада и его оптимального розыгрыша. Можно создавать, сохранять и загружать как полные игровые ситуации, так и только распределение карт. При сохранении игровой ситуации, сохраняются и все пользовательские настройки. При задании карт прикупа для игр, в которых последовательность сданных карт важна (распасы с открытием прикупа), имейте ввиду, что первая выбранная карта прикупа окажется открытой второй. Таким образом, эмулируется сдача карт человеком, когда вторая карта кладется сверху первой и открывается раньше. Начинать розыгрыш расклада можно после распределения карт игрокам и задания их ролей в игре.
Моделирование игровых ситуаций, в которых начальное количество карт у игроков менее 10 невозможно. В случае необходимости моделирования такой ситуации, можно раздать игрокам по 10 карт и картами, не участвующими в интересующей ситуации обеспечить передачу захода требуемому игроку. Единственная, не поддерживаемая игровая ситуация - это распасы при четырех игроках. Для ее реализации необходимо проделать слишком большие изменения в пользовательском интерфейсе, хотя аналитический модуль для этого готов.
В данном режиме игры доступен возврат всех сделанных игроками ходов, а также их анализ.
После того, как начат розыгрыш расклада можно вызвать меню нажатием клавиши "Escape" или правой кнопки мыши. Наиболее интересными и полезными пунктами меню являются следующие:
"Подсказать ход" - выводит текстовую подсказку, описывающую результаты возможных вариантов захода. В подсказке рассматриваются все стратегии, соответствующие данному типу игры. Подробнее о возможных стратегиях см. п.6. В конце подсказки находится рекомендуемая стратегия (если данному типу игры соответствует несколько стратегий) и рекомендуемый ход. При рассмотрении нескольких стратегий наилучшими ходами являются те из лучших ходов оптимальной стратегии, которые также соответствуют лучшим ходам неоптимальных стратегий. При отсутствии таких совпадений, наилучшими ходами являются все лучшие ходы оптимальной стратегии.
"Анализ ходов" - позволяет проанализировать как все сделанные игроками ходы, так и их выбранный диапазон. Внимание! Анализ ходов может занять продолжительное время. Анализ каждого хода может содержать один из следующих результатов:
а) Правильный ход. Ход соответствует наилучшему ходу.
б) Ход соответствующий лучшему ходу оптимальной стратегии, однако существуют другие лучшие ходы, удовлетворяющие нескольким стратегиям.
в) Ошибочный ход.
Новая пуля. Начинает новую пулю для выбранного игрока. Рекомендуется в настройках игрока указывать тип игры "Подсматривание при розыгрыше" как оптимальный по скорости и качеству вычислений. В процессе игры можно выполнить различные действия выбрав соответствующий пункт меню, которое появляется при нажатии на правую кнопку мыши или клавишу "Escape".
В случае наличия среди оппонентов сетевого игрока, в начале игры будет выведен диалог ожидания подключения удаленных игроков. Данный компьютер после подключения всех необходимых игроков будет являться сервером игры, поэтому для этой роли следует выбрать наиболее производительный компьютер из планируемых для участия в игре.
В диалоге ожидания игроков следует выбрать используемый сетевой протокол. Игроки по мере подключения будут отображаться в списке подключенных игроков и когда их количество достигнет необходимого для начала игры кнопка "Начать игру" будет разблокирована и ее нажатие приведет к началу сетевой игры. Другим игрокам для подключения к компьютеру-серверу следует использовать режим:
Подключиться к пуле. При его выборе появляется диалог подключения к сетевой игре. Следует выбрать используемый сетевой протокол (он должен быть таким же, как и выбранный на сервере), после чего в списке доступных серверов должен появится компьютер-сервер. В зависимости от выбранного сетевого протокола могут быть заданы дополнительные вопросы, необходимые для организации сетевого подключения (например, IP адрес сервера в случае выбора протокола TCP/IP ).После нажатия на имя желаемого сервера, разблокируется кнопка "Подключиться", соединяющая данный компьютер с сервером.
Во время сетевой игры игроки могут обмениваться текстовыми сообщениями.
Загрузить пулю. Позволяет загрузить сохраненную для последующего доигрывания пулю. При загрузке пули, в случае если была сохранена сетевая игра, загружать сохраненную пулю следует на компьютере, предназначенным на роль сервера.
6. ИСПОЛЬЗУЕМЫЕ АЛГОРИТМЫ
6>Внутре смотрите, где у нее анализатор и думатель...
АБ Стругацкие. "Сказка о тройке"
Ну вот, с официальной частью покончено. Надеюсь, Вам примерно понятно как, куда и чего нажимать в программе. В данном разделе Вы найдете краткое описание внутренностей программы, ее мозгов и AI (Artificial Intellect, не путать с Artificial Insemination ;).
Когда мы уже совсем было решили взяться за написание этой программы, встал один мелкий вопросец. А как, собственно говоря, будет думать наш будущий компьютерный карточный гений? Немного поразмышляв, мы выдвинули две идеи: набор фиксированых правил (a la "Экспертная система") или полный расчет всего дерева игры. Вариант с "ЭС" мы после некоторого размышления отвергли, так как среди нас не нашлось гигантов преферанса такого уровня, как Дмитрий Лесной у разработчиков "Марьяжа". А также, даже самый широкий набор правил не обеспечивает 100% уверенности в правильности рекомендуемого хода.
Решили производить полный расчет дерева игры и взялись за клавиатуры. После месяца кодирования родился алгоритм-красавец, универсальный решатель любых логических задач от домино до шахмат. Имел, правда, один недостаток - жутко тормозил. Расклад из 5 карт просчитывал за минуту. Мы слегка приуныли и стали считать. При 10 картах раздаваемых 3 игрокам количество вариантов розыгрыша одного расклада = 10 факториал в кубе. Число достаточно приятное, если иметь его на своем счету в банке. Однако, выполнение такого количества итераций на PC за приемлемое время представляется достаточно проблематичным. Правила преферанса, ограничивающие масти допустимые к заходу слегка кастрируют дерево вычислений, однако не настолько, чтобы свести количество вариантов к разумной цифре.
Пришлось шевелить мозгами. После полугода оптимизации по скорости, переписывания по несколько десятков раз ключевых процедур родился уродец, за которого наши преподаватели программирования оторвали бы нам руки и запретили бы подходить к компьютеру всю оставшуюся жизнь. Однако он работал и работал не так уж плохо. Если взять классическую преферансную задачу "Задача Галактионова" и решить ее нашим алгоритмом, то на решение уйдет пара секунд на среднем PC. Стоило ли Галактионову не спать всю ночь, просчитывая варианты этого розыгрыша, имей он под рукой нашу программу и компьютер? Эту версию алгоритма мы и положили в основу всей программы.
Прежде чем переходить к тонкостям AI, поразмышляем о том, как люди выбирают карту для захода при игре в преферанс. Исходными данными являются следующие сведения: свои карты, предполагаемые карты оппонентов, масть козыря и цели игроков. Если с картами все понятно, то цели оппонентов обычно скрыты в тумане. Лишь при игре на взятки всветлую и ловле мизера мы можем точно указать цели каждого игрока. При вистовании втемную и распасах, каждый из игроков может выкинуть пассаж, ломающий все наши планы.
Рассмотрим игры поподробнее:
Игра на взятки всветлую. Играющий хочет взять как можно больше взяток, вистующий и пасующий противодействуют ему.
Мизер. Играющий хочет взять как можно меньше взяток, ловящие мизер противодействуют ему.
Распасы. Возможны три стратегии:
а) Параноидальная. Анализируемый игрок хочет взять как можно меньше взяток, оппоненты противодействуют ему невзирая на количество взяток, хапаемое самими.
б) Оптимистическая. Анализируемый игрок хочет взять как можно меньше взяток, оппоненты противодействуют ему, стараясь самим взять как можно меньше.
в) Антагонистическая. В случае возможности какого-либо другого игрока сыграть распасы, анализируемый игрок пытается помешать ему, невзирая на собственное количество взяток.
Игра на взятки втемную. Самая неожиданная игра. Играющий старается взять как можно больше взяток. Однако, поведение вистующих трудно формализуемо. Их основные возможные стратегии:
а) Союз вистующих против играющего.
б) Подсад другого вистующего.
в) Каждый из вистующих старается хапнуть как можно больше взяток.
Это лишь основные стратегии каждого из вистующих, на самом деле их гораздо больше.
Исходя из вышеизложенных соображений AI действует следующим образом:
а) При игре на взятки всветлую и мизере расчитывается одна основная стратегия.
б) При распасах рассчитываются две стратегии, если ни один из оппонентов не имеет шансов сыграть распасы или три, если такой шанс есть. Компьютер всегда рекомендует использовать параноидальную или антагонистическую стратегию. Рискованные игроки могут выбрать оптимистическую стратегию.
в) Вистование втемную. Сначала проверяется могут ли вистующие подсадить играющего. Если могут - это считается наилучшей стратегией и анализа далее не производится. Если вистующие не могут подсадить играющего проверяются также стратегии "Подсад другого вистующего" и "Каждый за себя". После чего производится сравнение результатов в вистах от каждой из стратегий и на основании этого выбирается лучшая из трех. Однако стратегия "Союз против играющего" выбирается только в случае ее выгодности обоим вистующим.
Данный алгоритм игры не идеален, однако, возьму на себя смелость утверждать, что при распасах и вистовании втемную не существует однозначно 100% лучшего хода, так как при расчете хода используется неопределенный фактор - цели оппонентов. Поэтому, мы будем рады выслушать любые предложения по улучшению алгоритма нахождения наилучшего хода.
Немного поэкспериментировав с программой, Вы можете заметить, что время расчета игровой ситуации значительно различается в зависимости от анализируемой ситуации. Вот основные факторы, влияющие на скорость выполнения вычислений:
- Количество карт у игроков. Естественно, чем больше карт, тем больше требуется времени.
- Масть козыря. Бескозырные игры анализируются медленнее.
- Наличие перехватов у игроков. Расклады с явно выраженным лидером и аутсайдером анализируются быстрее, чем равномерные. Например, при 10 картах у игроков расклад с перехватами (8, 2, 0) посчитается быстрее, чем расклад 3, 3, 4.
- Наличие у игроков карт идущих по порядку величины и масти. Чем больше таких карт, тем быстрее будут проходить вычисления.
Примечание: Как уже было сказано выше, наибольшее количество вариантов розыгрыша одного расклада составляет факториал десяти в кубе. Как правило, на практике это число значительно меньше, за счет того, что правила не позволяют выкладывать любую карту из имеющихся, а требуют определенную масть. Тем не менее, при приближении расклада к этому идеальному варианту человеческий мозг начинает пасовать перед столь объемной вычислительной задачей. И получается, что красивые (для человека) преферансные задачи имеют всего порядка сотен вариантов розыгрыша. В то время как по-настоящему сложные расклады из хотя бы сотен тысяч вариантов не вызывают никакого интереса, лишь потому, что человеческий мозг не способен ухватить и части огромной картины. В качестве примера сказанному, попытайтесь определить количество взяток играющего (3 или 4), загрузив прилагающийся файл игровой ситуации "Сложный расклад.gam". И Вы сами убедитесь, насколько это сложнее других классических преферансных задач, которые также содержаться в виде файлов игровых ситуаций в данном дистрибутиве.
Все вышеперечисленные рассуждения касались розыгрыша расклада после завершения торговли, когда роли игроков определены. Хотя торговля в преферансе предшествует розыгрышу, алгоритмы анализа использумые в ней основаны на алгоритмах, применяемых при розыгрыше, так как при торговле необходимо просчитать варианты розыгрыша данного набора карт при различных типах игр (мизер, игра на взятки с различным козырем, распасы). Поэтому описание алгоритмов, использумых при розыгрыше и было приведено раньше.
Алгоритмы, использумые нашей программой при торговле различаются в зависимости от подсматривания компьютером карт других игроков. При описании этих алгоритмов под словами "все варианты игр" мы будем подразумевать расчет результатов игр на взятки со всеми возможными козырями, мизера и распасов при данном конкретном раскладе.
Честная игра. Используется вероятностный анализ.
1) Этап заявок. Нам известны лишь свои 10 карт. Теоретически на этом этапе необходимо производить анализ всех вариантов игр, получающихся при всех комбинациях из оставшихся 22 карт, из которых по 10 идут остальным игрокам, а две в прикуп. К сожалению вычислительных мощностей, способные справиться с таким объемом вычислений за приемлемое время пока не существует. А все более-менее приличные компьютеры заняты всякой ерундой, типа клонирования овец.
Поэтому для ПК нами предложен упрощенный вариант алгоритма расчета всех вариантов игр на основе анализа имеющихся мастей по отдельности. Естественно, по точности результатов он далеко не идеален, зато имеет приемлемое время выполнения. Кроме того, точность анализа всех вариантов игр во время начальных этапов торговли при честной игре не имеет принципиального значения, так как вычисляемые вероятностные величины имеют примерно такой же смысл, как средняя температура больных в больнице. Ведь какой нам прок, если суперточный вероятностный анализ покажет, что вероятность прикупки взяток к уже имеющимся на руке 99%, и мы на это понадеемся, а в прикупе окажется тот самый маловозможный процент. Поэтому, не стоит особенно доверять подсказкам на этом этапе, хотя применяемый упрощенный алгоритм достаточно осторожен и склонен несколько занижать реальную силу карт.
2) Этап сноса. Нам известны свои 10 карт, заявки сделанные другими игроками, 2 карты прикупа. Из заявок других игроков полезные сведения получить трудно, так как это достаточно сложная эвристическая задача, учитывающая ментальность игроков и вероятность их блефа. Поэтому приходится опираться лишь на известные карты и анализ на данном этапе является частным случаем первого этапа.
3) Этап заказа игры. Данный этап является частным случаем второго этапа, так как нам известен конкретный вариант произведенного сноса.
4) Этап выбора роли оппонентов при игре на взятки. Вистовать или не вистовать? Вот в чем вопрос! Ответу на этот вопрос можно посвятить многотомные издания, так как вопрос выбора роли при неизвестных картах других игроков и их поведения при розыгрыше в общем случае не имеет однозначного формального решения. Все возможные варианты решения данного вопроса имеют эвристический и психологический аспект, а посему обладают недостаточной достоверностью. В нашей программе реализован один из возможных вариантов, пожалуй несколько оптимистический и жадный до вистования.
5) Этап выбора типа вистования. Если вопрос выбора роли можно отнести к достаточно туманным, то выбор типа вистования вообще скрывается в кромешной мгле. Ответ на него в большей степени зависит от проницательности игроков, а ее компьютеры пока не состоянии измерять. Поэтому, на данном этапе не доверяйте подсказкам, а более прислушивайтесь к своему шестому чувству.
Игра с подсматриванием карт. Так как нам известны все карты, то мы можем произвести расчет всех вариантов игр при всех вариантах сноса. Т.е. мы должны (5+1)*66 + 1 = 397 раз выполнить алгоритм анализа игровой ситуации при наличии у игроков 10 карт. Анализ одной игровой ситуации занимает не более десятков секунд. Соответственно, вы можете подсчитать ориентировочное время выполнения полного анализа. Однако, не расстраивайтесь от полученной многочасовой цифры. Потоковый анализ ситуаций нами был сильно ускорен и время ожидания составляет порядка десятков минут. Но все же, даже это время трудно назвать приемлемым для ожидания, поэтому торговлю с подсматриванием следует выбирать в настройках только в том случае, если Вы хотите получить наиболее достоверный анализ игровой ситуации.
Подсказки на различных этапах торговли формируются с учетом распределения карт, поэтому более точны, нежели при честной игре. Хотя вопрос выбора роли при игре на взятки также носит неоднозначный характер, ввиду непредсказуемости поведения другого вистующего.
7. ЧаВо (FAQ)
В: Ваша программа играет довольно слабенько, в ситуации ХХХХХХХ компьютер тупо несет YYYYY, алгоритм игры вам еще надо улучшать.
О: Вместо недетального описания непонятной ситуации лучше выслать нам сохраненный .GAM или .PUL файл, это значительно ускорит устранение ошибки. Все Ваши пожелания и мнения принимаются разработчиками близко к сердцу и по возможности претворяются в жизнь.
В: Какие сетевые протоколы поддерживает игра и возможна ли настройка работы через прокси-сервер?
О: Сетевая игра реализована при помощи интерфейса DirectPlay, входящего в MS DirectX. Соответственно, поддерживаются все протоколы, обеспечиваемые этим интерфейсом. Как правило это протоколы IPX, TCP/IP и прямое модемное соединение. Этих протоколов достаточно для организации сетевой игры в сети практически любой конфигурации.
Работа через прокси-сервер, пока не поддерживается.
В: В режиме сетевой игры при пропадании канала связи или зависании одного из компьютеров, остальные игроки не получают никаких сообщения и игра останавливается. Что делать?
О: Да, реализация сетевой игры пока еще несколько сыровата и при выпадании одного узлов сетевой игры дальнейшее ее продолжение возможно лишь сохранением пули на одном из работоспособных узлов и загрузке ее на компьютере-сервере. После этого все игроки должны снова подключиться к игре и она продолжится с момента останова.
Реализация уведомлений о выходе из строя узлов сетевой игры и повторное подключение узла к игре будет произведено лишь в полной версии игры.
В: Почему в игре не реализована система рейтинга игроков?
О: Потому что, ни один вид рейтингов не кажется нам объективным. Если, какой-либо способ ранжирования игроков, покажется нам наименее худшим, то возможно мы реализуем его в полной версии игры.
В: Почему в игре не реализовано ускоренное завершение розыгрыша и предложение вероятного результата розыгрыша?
О: Потому, что это не является такой тривиальной задачей, как кажется на первый взгляд. Хотя, сейчас в игре наряду с выбором карты для захода, решается и задача распределения взяток между игроками, но простое использование результатов этого решения для предложения вероятного результата не представляется оптимальным. Так как это решение предполагает отсутствие ошибок со стороны игрока, а в реальной игре это не всегда так, ведь карты не стеклянные, да и все мы человеки и можем облажаться.
В полной версии игры будет реализован режим предложений результата розыгрыша, в том случае, если его исход очевиден.
В: Почему компьютер так долго думает над заходом, ведь у данного игрока есть только одна карта, которой можно зайти, согласно правилам игры?
О: Потому, что наряду с определением карты для захода компьютер решает задачу определения вероятного результата розыгрыша. Результаты этого решения будут в дальнейшем использоваться для ускоренного завершения розыгрыша при согласии всех игроков.
В: Почему, когда я заторговываюсь и затем прошу подсказку для заказа игры, компьютер предлагает мне уход без трех на бескозырной игре, ведь с моими картами на бескозырной игре мне ничего не светит?
О: В том случае, когда компьютер предлагает уход без трех, он всегда советует бескозырную игру, так как она является старшей игрой при одинаковом количестве взяток и явно перекрывает объявленный при торговле козырь. А при уходе без трех масть козыря предполагаемой игры не играет никакого значения.
В: Начав игру я решил изменить некоторые настройки, произвел необходимые изменения и нажал кнопку "ОК". Однако, настройки не изменились, в чем же дело?
О: После выбора любого режима игры настройки становятся доступны только в режиме просмотра. Подробнее, смотри раздел описания программы.
. АВТОРЫ ПРОГРАММЫ
Страна должна знать своих героев в лицо и поименно. На наши физиономии Вы можете полюбоваться нажав кнопку "О программе" в главном меню. А вот имена членов команды "KA-TET":
- Дмитрий Роскошный (aka $pakum)
- Дмитрий Тихомиров (aka dnt)
- Алексей Зайцев (aka Alek$)
Отдельное спасибо Евгению Еремину (aka Gentle Giant) за созданный им графический материал.
Новые версии игры Вы можете найти на www.ka-tet.galactic.ru.
Мы будем рады прочесть Ваши замечания по поводу программы, присланные на katet_team@yahoo.com.
При собщениях об ошибках в программе приветствуется посылка соответствующих .GAM, .PUL файлов или текстовых файлов, формируемых при подсказках. Помните, что размер нашего почтового ящика ограничен, поэтому шлите не тупой флэйм, а конструктивную критику.
9. НЕМНОГО ИСТОРИИ И ПЛАНЫ НА БУДУЩЕЕ
Начинали мы свое знакомство с вычислительной техникой еще в те времена, когда деревья были большими, вода мокрой, а компьютеры - серии ЕС. Сердобольные сисадмины N-ого ВЦ пускали нас, доблестных пионеров из "Станции Юных Техников" порулить по ночам за терминалами ЕС-1012. И сколько счастья было в наших детских глазенках, когда после полуночи ожидания трансляции заветного исходника на Фортране, ты получал сообщение типа: "Invalid operator in line XXX". Поэтому, пришлось слегка освоить язык управления заданиями и приоритетами. Наши задания стали выполняться быстрее, однако теплые чувства к нам со стороны сисадминов стали угасать.
Но тут уже появилась "стодвадцатьпятка" и чудный режим реального времени, а также первые потуги ЭСЭСЭСРовских персоналок: бэкашки и дэвэкакалки. Однако, компьютеры все еще оставались достоянием государства и получить их в частное пользование было проблематично. И тут появился SPECCY, теплые чувства о котором до сих хранятся в моем сердце. Может быть это потому, что он был первым компьютером купленным мною на относительно честно заработанные деньги, или потому, что на нем я впервые поучаствовал в серьезном проекте из десятков тысяч строк кода. Программеры со стажем, а не нышнение кул хацкеры может помнят игру ""LAST BATTLE", появившуюся как раз в тот момент, когда SPECCY приказал долго жить, ибо в стране появились ПИСЮКИ.
И сразу наступило какое-то отупение, ибо написать что-либо путное в одиночку для PC достаточно трудно, да и вроде почти все уже есть. Да, были какие-то хаки, попытки написания демок, утилит. За некоторые даже удалось получить какие-то деньги. Однако, ни в душе ни в сердце ничего запоминающегося не осталось. Тут потихоньку закончилось отрочество, появилась постоянная работа, необходимость кормить семью, однако неугомонный дух познания все еще витал в моем мозгу. И вот, когда совсем уж стало погано на душе от работы прокладкой между бухгалтерией и БиДе, когда немудреные конструкции SQL стали набираться руками без участия мозга, я и подбил dnt на "написать чего-нибудь на C++".
Писать решили то, в чем разбирались и чего на тот момент нам не хватало. А не хватало нам хорошего компьютерного преферанса. Сейчас при существующем "Марьяже под Windows" мы, вероятно, не стали бы этого делать, но на тот момент был лишь "Марьяж для DOS" и он нас совершенно не возбуждал. Работу зачали глобально. Ввели кучу настроек, имеющиеся в "Пуле" сейчас это не обезьяний закос под "Марьяж", а попытка следовать хоть какому-то предложенному стандарту. Но, так как работа над проектом велась в свободное от зарабатывания денег время, то дело продвигалось не слишком быстро. Когда мы уже закончили отладку основных алгоритмов AI, нас ждал приятный сюрприз - выход "Марьяж для Windows". Энтузиазм наш слегка упал, так как большинство наших идей было в нем реализовано, тогда как наш проект находился на полпути.
Так как на появление "Марьяжа" надо было чем-то ответить, то решили бросить все силы на доделку режимов и возможностей, которые в нем отсутствуют. Приоритетным выбрали создание "Решателя преферансных задач", так как в преферансе частенько хочется проверить алгеброй гармонию, а скудные возможности человеческого мозга не всегда позволяют это сделать. Первоначально наши представления о пользовательском интерфейсе не шли дальше простенького использования стандартной cards.dll. Но, как-то мы показали наши наработки Alek$-у и он облажал нас с ног до головы, за что и был приглашен на разработку интерфейса.
И вот, то, о невозможности чего так долго твердили большевики, свершилось. Выпущена ознакомительная версия "Пули". Еще одна логическая игра пала смертью храбрых. Теперь любую игровую ситуацию в преферансе можно рассмотреть со 100% гарантией правильности анализа.
А что же дальше????????
Первым делом мы хотим оцифровать двухчасовой видеоролик о том, как создавалась "Пуля" и вставить его проигрывание в диалог "О программе". Игра таким образом как раз будет влезать на CD ;-)
А если серьезно, то в наших планах следующее:
а) Посмотреть на реакцию по поводу выхода игры. Пусть будут одни критические письма, но пусть будет хоть какой-то отклик пользователей. Если будет тишина, то вероятно работа над дальнейшими версиями будет заморожена.
б) Реализация полной версии преферанса пока отдалена и вероятно будет осуществлена лишь в случае нахождения спонсора или издателя. В полной версии планируется реализация следующих возможностей:
- Нормальная, цивильная поддержка сетевой игры.
- Контекстная хелп-система ;)
- Ведение системы рейтингов игроков.
- Формирование предложений по предполагаемому результату игры и ускоренному окончанию розыгрыша.
- Самообучение компьютерных игроков и изменение тактики их игры, в зависимости от действий противника
В белый свет были выпущены следующие версии игры:
Pulya v0.9.2 beta - Исправленные ошибки:
- Пропуск показа некоторых выкладываемых при розыгрыше карт в режиме сетевой игры.
- Неотображение выложенных карт после загрузки сохраненной мизерной ситуации.
- Появление лишних диалоговых окон при загрузке раскладов в решателе задач.
- Ошибка при торговле без подсматривания, приводящая иногда к неверному определению силы имеющихся на руке карт.
- Незначительные ошибки при прорисовке игрового стола.
Pulya v0.9.1 beta - Исправлена незначительная ошибка, иногда приводящая к зависанию игры.
Pulya v0.9 beta - К сожалению, спеша успеть к конкурсу "Наша игра - 2000" мы не имели достаточно времени для полноценного тестирования предыдущей версии. В результате она содержала ряд мелких, но неприятных ошибок, приводящих иногда к зависанию программы. Введены некоторые новые настройки, изменен формат файлов отгрузки, однако формат версии 0.8 понимается. Данную версию уже практически не стыдно показывать широкому кругу общественности.
Исправленные ошибки:
- Зависание из-за неверной инициализации данных
при "Розыгрыше раскладов" и честной игре.
- Стоимость некоторых игр вычислялась неправильно,
особенно в случае "Уход без трех".
- При заказе 6П и конвенции "Сталинград" не удавалось затем повысить игру.
- При распасах с открытием прикупа и всегда заходящим игроком первой руки
заход у него оставался дольше на один раз, чем нужно.
- Снижены вероятности для принятия решений.
- Исправлен показ пули.
- При настройках "первый ход всветлую" карты оппонентов открывались еще
до определения их ролей в предстоящем розыгрыше
- При загрузке игровой ситуации из сохраненной сетевой игры
инициализировались сетевые подключения.
- При розыгрышах с открытыми картами двух оппонентов предположительный снос
игрока определялся случайным, а не логичным образом.
- При проверке десятерной запрашивались роли оппонентов и не открывались
карты оппонентов при недоверии розыгрыша
крупных игр компьютеру.
- Определение лучших ходов для стратегии изменено с точного руководства
целями на ориентирование по результату в вистах.
- При двух пасах при игре на взятки
приходилось все равно разыгрывать расклад.
- В обмене сообщениями показываются теперь и свои сообщения.
Новые сообщения показываются сверху.
-
Автоматическая активация информационных
окон не мешает набирать текст в режиме
обмена сообщениями.
Pulya v0.8 beta -
Следующая бета-версия, приуроченная к конкурсу
"Наша игра - 2000". Добавлены режимы локальной
и сетевой игры.
Исправленные ошибки:
-
Неправильная загрузка игровой ситуации.
- В режиме "Тренировка торговли" в диалоге начала торговли
отображались неправильные имена игроков.
- Неверное предпочтение стратегий из-за того,
что количество взяток у незаданных игроков было отрицательным.
Pulya v0.5 beta -
Первоначальная бета-версия выставленная на суд
общественности.
<<< Текст составил $pakum 01:01:01 01.09.2001 >>>