Germany’s Rain Radar

by Pavel on December 22nd, 2008

Недавно наткнулся в интеренете на блог Mark Schmidt и довольно забавную программу .NET Sidebar Gadget Creator 2.0
Не особо заморачиваясь написал небольшой гаджет Germany’s Rain Radar, так как давно искал подобное, но так ничего и не нашел.
Превьюшка:

Ну и сам гаджет брать тут: < germanyrain.zip >

Для запуска требуется наличие проинсталлированого .NET Framework 2.0

Silverlight & 3D

by Pavel on December 10th, 2008

Некоторое время назад мне понадобилась возможность представить простейшие трехмерные обьекты онлайн. Все бы ничего, если бы не условие – все должно быть реализовано на Silverlight.
К сожалению, на данный момент, в Silverlight, в отличии от WPF, полностью отсутствует поддержка 3D. Начиная от математического „аппарата“ и до представления обьектов, сцены. В следующей версии нам обещают „…major graphics improvements (including 3D support and GPU hardware acceleration)… “ но пока, увы.

В интернете можно встретить довольно много вопросов и обсуждений этой темы. Так же существует несколько проектов, которые в той или иной мере пытаются „выйти“ в третье измерение :) Среди известных мне можно выделить Kit3D, Balder. Но загрузив нужные мне модели в эти проекты, они были довольно быстро отсеяны. После непродолжительных поисков стало ясно, что альтернатив в общем то больше не существует. Поэтому было принято решение изобрести велосипед заново.

Результаты этой работы я и хочу продемонстрировать. Приложение является чисто софтварным рендером. Были использованы простейшие модели освещения и построения сцены. Такие «тяжелые» операции как расчет теней или bump поверхностей отсутствуют по вполне понятным причинам.

Обьяснять GUI демонстрационного приложения , наверно, не нужно. Единственное на что я хочу обратить внимание – отрендеренная 3D сцена при отображении всегда растягивается на канвас 600×600. Сам же размер 3D сцены можно менять с помощью 3 radiobuttons („300×300“, „450×450“, „600×600“). Т.е. чем больше 3D сцена, тем больше пикселей надо растеризовать, тем четче изображение, и тем медленнее все.
Онлайн приложение можно посмотреть < тут >. Для просмотра необходимо наличие Silverlight 2.0
Пользуясь случаем, хочу поблагодарить комьюнити www.rsdn.ru и в особенности minorlogic за оказанную помощь в оптимизации приложения.

Up

by Pavel on November 6th, 2008

Поднял блог и форум, так успешно “убитые” братьями китайцами :(

Deneb server bot API

by Pavel on April 22nd, 2008

Бот должен быть консольным приложением. Ввод/вывод через стандартные потоки ввода/вывода. Все вещественные числа приводятся к целому путем умножения на 100. Т.е. $2.50 передается в виде 250 Бот должен поддерживать следующий список команд

newfixlimit 9 7     // fix limit, за столом 9 игроков, мы на 7 позиции
newpotlimit 9 7     // pot limit
newnolimit 9 7      // no limit
blinds 25 50        // small blind $0.25, big blind $0.50
player 1 Bluffer    // имя первого игрока
player 2 Caller17   // имя второго
player 3 HotDog
stack 1 1000        // стек первого игрока $10
stack 2 100         // стек второго $1
blind 1 25          // игрок на sb платит блайнд
blind 2 50          // игрок на bb платит блайнд
blind 5 50          // пятый платит большой блайнд так как сел за стол
preflop Kd Jd       // на префлопе нам пришли бубновые король и валет
flop Qd 2h Td       // флоп
turn 6с             // терн
river Ks         // ривер
seatout 3        // третий вышел
fold 3           // третий упал
check 3          // третий чекнул
call 4 50        // четвертый коллирует до $0.50
raise 4 100      // четвертый делает raise до $1.00
showdown 7 Ad Ac // седьмой показывает карты
win 7 500        // седьмой выиграл $5.00
endgame          // игра закончена
quit             // выход 

action           // единственная команда на которую бот должен отвечать.
                 //Возможные ответы fold check call raise

Тут выложил проект C# с простейшим консольным ботом аналогичному SimplePlayer.dll
Подключение бота к серверу производится аналогично подключению Fisher.exe

  1. В директории Bots создается конфигурционный файл SimpleConsole.xml со следующим содержимым:

    <?xml version=1.0encoding=utf-8?>
    <
    ConsoleBot>
      <
    Executable>
        <
    FilePath>C:\Deneb\Bots\SimpleConsoleBot.exe</FilePath>
        <
    Arguments></Arguments>
        <
    WorkingDirectory>C:\Deneb\Bots</WorkingDirectory>
      </
    Executable>

      <Logging enable=true>
        <
    FilePath>C:\Deneb\Bots\SimpleConsoleBot.exe</FilePath>
      </
    Logging>
    </
    ConsoleBot>

  2. В конфигурационном файле сервера (Deneb.exe.config) добавляем или изменяем существующего игрока в виде:

    <seat position=2screenName=C# botbotName=ConsolesettingsFile=SimpleConsole.xml/>

    обратите внимание что бы значение position было уникально в пределах конфига.

  3. Копируем SimpleConsoleBot.exe в директорий Bots.

Перед этим не забудьте проапдейтить Deneb.rar

Deneb Server is public

by Pavel on March 6th, 2008

Deneb Server является Windows приложением и позволяет писать и тестировать bots для игры Texas Holdem Poker. Более подробное описание можно найти тут.

Exam. 70-431

by Pavel on May 16th, 2007

Хотя я довольно скептически отношусь к сертификации от MS, после многочисленных “пожеланий” и уговариваний со стороны шефа, сдал сегодня экзамен 70-431 (Microsoft SQL Server 2005 Implementation & Maintenance). К которому усиленно готовился последние несколько дней. Прочитал 2 толстенные книги посвященные этому экзамену: первая от Microsoft Press и вторая от Sybex.

В отличии от экзаменов которые я сдавал до сих пор, этот был разбит на две части. Первая часть - это чистая теория (30 вопросов) и вторая часть практическая – 15 simulations. Поскольку с MS SQL 2005 я сталкиваюсь по работе чуть ли не каждый день, то особых трудностей не возникло. Единственное, что меня довольно прикололо, так это тот факт, что все практические задания были из серии “wizard walking”. Сплошное ползание по SQL SMS и кликание чекбоксов, притом что в книге от MS практически ни одного слова о визардах и все примеры делаются в консоли.

Таким образом к моему “портфолио” добавляется еще одна лычка от MS и судя по довольному начальству это не будет моя последняя.

DenebChart

by Pavel on May 6th, 2007

Начал экспериментировать над ботами. Тут же возник вопрос – каким образом оценивать эффективность изменений? Гора цифр является плохим наглядным пособием :(
Попробовал импортировать логи в РТ, затем левыми тулзами получать графики. Через некоторое время бросил это занятие – то тулзы не понимали формат базы данных РТ, то надо было экспортировать данные в нужном формате. Много телодвижений вокруг элементарной цели.
Поэтому решил на скорую руку написать тулзу для построения графиков, по своим логам. Через пару часов получился следующий результат:

 

Кроме того, что бы иметь производить замеры “производительности” того или иного изменения в алгоритме бота, необходимо подавать одни и те же данные данные на вход. Для этого был написана программка генерирующая сет карт. А так же “сервер” был обучен брать карты из заданного сета, а не генерировать их каждый раз случайным образом.

100 Hands

by Pavel on April 30th, 2007

Сегодня выкроил немного времени и отладил batch режим, причесал history к виду, который может быть импортирован poker tracker’ом для дальнейшего анализа. Хотя на данный момент анализировать пока нечего :)

Итак, представляю вашему вниманию!
В синем углу – 3 маньяка (Maniac1, Maniac2, Maniac3). Вся их тактика состоит в постоянном увеличении ставки и call при невозможности поднять ставку. В красном углу – 3 simple player (player3, player3, Simple player) и игрок (Check1) который платит блайнды и при любом повышении ставки (в данном случае, при наличии маньяков, это происходит постоянно постоянно) делает фолд.
Simple player на префлопе играет высокими парами на рейз, мелкими парами а также suited connectors (ну и еще пара комбинаций) коллт.
После разыгранных 100 рук видим следующую картину:

Main window 

Все остались “при своих”. Даже чекер (Check1) и тот слил меньше, чем Simple player :)

Следующим шагом является написание бота который позволяет вручную делать ставки.

Начало

by Pavel on April 19th, 2007

В покер я играю давно – последние пару лет это онлайновый покер или при встрече с друзьями. В большей степени меня интересует сама игра, а не возможность выигрыша. Хотя, безусловно, приятно и выигрывать. Поскольку моя основная работа связана с проектированием и програмированием программных комплексов, то не удивительно, что в один прекрасный момент меня посетила мысль написать бота – программы которая подсказывает/делает следующий ход в игре. Я довольно трезво отношусь к своим качествам изобретателя, поэтому некоторое время провел в поисках «украденного велосипеда».

(Заранее хочу извиниться, если мой перевод на русский язык не совпадает с устоявшимися терминами. Я ни разу не играл в «русскую» версию покера.)

В принципе, все программы, что я нашел в интернете можно отнести к следующим 2 категориям:

1. Програмы для анализа, и статистической обработки сыгранных рук (hands) на основе логов.
2 . Программы анализирующие on the fly происходящее на игровом (виртуальном) столе и дающие те или иные рекомендации по ведению игры.

Единственный пакет, который имеет большое преимущество по сравнению с другими был Poker Academy. Poker Academy представляет собой сервер который позволяет писать своих собственных ботов (клиентов). Но он тоже имеет свою ложгу дегтя – никаких шансов когда либо использовать написанного бота в реальном онлайн казино. Все остается ограниченным виртуальной машиной Poker Academy.

Кроме того интернет полон отдельных кусков, библиотек и программных ресурсов которые так или иначе связаны с покером. На одном только sourceforge.org по запросу «poker» вываливается 46 страниц с результатами.

Таким образом я понял, что я не единственный, кого интересует эта тема :) После этого я и принял решение о создании этой страницы. Возможно кто то найдет эту тему интересной, или решит принять в этом «проекте» участие.

I’m back

by Pavel on April 11th, 2007

после продолжительного молчания связанного с трудностями на работе, семье и тому подобными мелочами, что сопровождают нас всю жизнь, постепенно возвращаюсь к нормальной жизни :)