| ||||
| ||||
|
Важные объявления |
|
01.10.2019, 01:10 TS | #1 (permalink) |
Новичок
Регистрация: 01.10.2019
Сообщений: 26
|
Решил вести лог разработки онлайн покера Техаский Холдем в этой теме.
Разработка для себя и друзей. Поиск решений в реализации онлайн покера. Т.е. полное создание покера с нуля. Т.к. сам мастерски плохой игрок, буду рад любым подсказкам участников сообщества. Особенно не хватает хороших навыков в понимании к примеру расчёта доп банка, когда игрок идет вабанк с меньшей ставкой итд Покерный язык - только со словарём Основные параметры, с которых начал разработку: - NL SNG (MTT предполагаю после реализации SNG) - Столы до 5 и до 9 игроков Бай-ины: sb/bb - min/max - 5/10 - 100/2K - 25/50 - 500/10K - 100/200 - 2K/40K - 500/1K - 10K/200K - 2K/4K - 40K/800K - 10K/20K - 200K/4M - 50K/100K - 1M/20M - 250K/500K - 5M/100M - 1M/2M - 100M/1B Прогресс разработки: На данный момент готовы главное меню и лобби Сейчас пишется игровой процесс, собственно этот игровой процесс и в поисках истины привел меня сюда, когда разрабатывается сама логика и верные правила игры. В игре возникают постоянно те или иные ситуации, с несколькими победителями и банками, вот тут и начинается самое интересное. Надеюсь с вашей Pro помощью сумею создать правильный покер. |
0 |
01.10.2019, 03:39 TS | #2 (permalink) |
Новичок
Регистрация: 01.10.2019
Сообщений: 26
|
Что-то я запутался в выборе между SNG и CASH (изначально подумал это одно и то).
Будет Room: CASH Poker NL Texas Hold'em Задача - сделать играбельный покер за 1 месяц, а там поглядим что из этого выйдет. Спасибо модераторам за постановку темы в подходящий раздел. С завтрашнего дня постараюсь сопроводить прогресс скринами. По завершении надеюсь возможно будет играть. На данный момент готовы алгоритмы: - перемешивание карт с помощью RNG основанного на криптоалгоритмах с огромными числами, в отличии от стандартного компьютерного рандома. Модифицировал перемешивание алгоритмом Фишера Ятеса, прикрутил к нему крипто рандом. - определения рук каждого игрока, т.е. пишет игроку какая у него рука на основе выданных карт и на столе (извиняюсь за не покерный сленг, тк новичек) - алгоритм определения победителя (победителей) на основе всех карт на столе по завершении игры Не завершены: - алгоритм правильной передачи батона дилера, т.к. до конца не освоил все тонкости игры - когда вскрывать карты тоже непонятно до конца, пока что сделал когда доходит снова очередь до дилера на ривере, предполагаю в данной идеально тестовой ситуации что никто не вылетел за раунд, затем буду усложнять - доступны кнопки fold, check, call, raise, но неверно рассчитывается когда возможно делать чек, а когда нельзя |
0 |
01.10.2019, 04:32 TS | #4 (permalink) |
Новичок
Регистрация: 01.10.2019
Сообщений: 26
|
Room v01. На скрине победитель Игрок-7. Думаю алгоритм определения высшего ранга(ов) работает верно. Далее над распределением банка подумать.
Да тут еще далеко до нормального результата. вероятно завтра придётся написать локальных простых ботов для тестирования, т.к. в одного оттестировать даже начальный процесс нереально. Основать локальных ботов на простом выборе рандомом из возможных доступных действий call, raise, check, fold. Затем начну прописывать правила хода вот тут то я и завис... Не забыть о правильной связке логики с графикой. Движок пишется с нуля на низкоуровневом Open GL, хотя не 3D тут просто канва 2D, без анимаций и звука тоже не обойтись, буду думать дальше... Сейчас это работает так: - старт игры - перемешивается колода - делается small blind Player7 слева от дилера (Player6), затем big blind Player8 - каждому игроку передается по 2 карты - далее ход Player9 и далее до Player6 дилера - затем дилер тоже делает call и происходит flop, на столе первые 3 карты - алгоритм снова повторяется от игрока к игроку и после дилера turn, затем river |
0 |
01.10.2019, 06:35 TS | #5 (permalink) |
Новичок
Регистрация: 01.10.2019
Сообщений: 26
|
предыдущая последовательность неверная, новая:
- старт игры - перемешивается колода - small blind слева от дилера PnD+1, затем big blind PnD+2 - каждому игроку передается по 2 карты - pre-flop - далее ход PnD+3 и далее до Pn Big Blind - flop - алгоритм снова повторяется от игрока к игроку и после BB - turn - затем river Добавить сервер с REST API да базу key/value и на нем перемешивать колоду, вероятно лучший выбор протокол WS и база Level DB |
0 |
01.10.2019, 19:40 TS | #6 (permalink) |
Новичок
Регистрация: 01.10.2019
Сообщений: 26
|
Всё оказалось проще с определением завершения раунда pre-flop: достаточно проверить все ли уравняли ставки и только тогда открывать первые 3 карты; показывать сформированный банк.
Теперь переходим к 2му - flop. Мои нубские знания в покере хуже чем предполагал. |
0 |
02.10.2019, 15:07 TS | #7 (permalink) | |
Новичок
Регистрация: 01.10.2019
Сообщений: 26
|
Цитата:
Добавил логирование ходов игроков и отображение, кто какое действие выполнил call,raise etc. Так лучше видеть игру. Формируемый main pot пока отображаю с каждой ставкой для проверки правильности суммирования. |
|
0 |
02.10.2019, 16:38 TS | #9 (permalink) |
Новичок
Регистрация: 01.10.2019
Сообщений: 26
|
Очень важно правильно спроектировать структуры данных на этапе создания, такие как внутренние: room, players, sits, gameplay и внешние: относительные координаты расположения карт, игроков, стола, кнопок и остальных визуальных элементов, относительные потому что у всех разное разрешение экрана. Не забыть про скалярность масштабирование элементов от 1920x1080 до мобильных устройств 720x480. Генерацию предустановленных румов производить на сервере: тема стола (синий, красный, зеленый, золотой), макс число мест 5/9, блайны min/max, число фишек на вход min/max, затем использовать их в фильтре client lobby.
На стороне сервера добавить контроль/защиту от подтасовывания карт в процессе игры, с помощью хэширования получения контрольной суммы + salt, shuffled колоды перед раздачей |
0 |
03.10.2019, 18:10 TS | #10 (permalink) |
Новичок
Регистрация: 01.10.2019
Сообщений: 26
|
WS сервер создать удалось, теперь перенос всей логики на него.
Румы разбил на levelы, левелы это макс и минимальная сумма фишек байин в каждом левеле столы от 9 до 5 игроков у каждого стола свой id из начальных данных предустановленных массивов объектов и дополнительных как зашедших игроков, обмен данными проводим упакованным json, соответственно при открытии lobby отображаем кто за какими столами играет исходя из данных ws сервера, теперь можно выбрать уровень начального игрового баланса бай ин |
0 |
06.10.2019, 23:04 TS | #12 (permalink) | |
Новичок
Регистрация: 01.10.2019
Сообщений: 26
|
Цитата:
По большей части это эксперимент - возможно ли создать онлайн покер рум за короткое время, имея навыки разработки приложений, серверов но не игрока. Как по мне, покер - строго логичная игра с фактором случайности, набором условий и это интересно. Сразу появляются вопросы: необходимо ли сжигать карту в колоде перед раздачей как в настоящем покере, улучшить рандом и защитить колоду от подтасовки, прикрутить блокчейн итд.. Всё это к чему-то приведёт.. Надеюсь эта тема не смутит сообщество, ведь при успешном завершении вероятно получится движок покер рума, который возможно модифицировать и модернизировать исходя из знаний участников форума. |
|
0 |
07.10.2019, 02:13 TS | #14 (permalink) | |
Новичок
Регистрация: 01.10.2019
Сообщений: 26
|
Цитата:
На данный момент цель создать рум, к маркетингу придём, но потом, в случае успешной разработки правильного рума. (И да это не заказ на разработку, просто такая цель на данный момент времени) Можно сказать оттачивание навыков в связке нескольких новых технологий. А по маркетингу, когда придет время, будет, хотя не вижу всё это в строю с другими румами, т.к. есть другие интересные пути, но всему своё время. Сначала создание, всё будет откомпилировано под: Win, Nix, MacOs, Android, IOS, подготовил единую кодовую базу для всего, так проще в будущих модификациях, поддержке и развитии. |
|
0 |
07.10.2019, 02:15 TS | #15 (permalink) |
Новичок
Регистрация: 01.10.2019
Сообщений: 26
|
Смотрел видеоуроки, как перетасовывают колоду в офф-покере, там перед раздачей снимают, делят колоду на пополам, половины меняют местами после перемешивания, убирают первую в раздаче карту (сжигают), а потом раздают, вот думаю влияет ли это на лучший рандом и стоит ли это делать в онлайн приложении
|
+1 (+1/-0) |
07.10.2019, 02:20 TS | #16 (permalink) |
Новичок
Регистрация: 01.10.2019
Сообщений: 26
|
И если возможно помогите кто может ответом, 2 игрока в руме, играют 1 на 1, выпали следующие руки:
и1: A;10 и2: К;9 на ривере 4;5;Q;Q;2 мой алгоритм основанный на принятых правилах считает обоих игроков победителями с результатом Pair Q's оба, скрин прилагаю. Верна ли моя логика? |
0 |
07.10.2019, 02:49 TS | #17 (permalink) |
Новичок
Регистрация: 01.10.2019
Сообщений: 26
|
Ой, забыл добавить, участники форума CGM, кто посодействует любыми ответами и информацией по поводу разработки играбельного рума и ответами на правда нубские вопросы в этой теме, будут добавлены навечно в приложение в список участников (ники) в раздел - помогли с разработкой рума + хороший стартовый банкролл (наверное это так называется, то на что можно играть, выигрывать или обменять на деньги), который вполне материален. Рум будет разработан, но насколько он будет хорош, думаю может зависеть от участников сообщества тоже.
|
0 |
07.10.2019, 03:34 TS | #19 (permalink) | |
Новичок
Регистрация: 01.10.2019
Сообщений: 26
|
Цитата:
Насколько понимаю по старшей карте, игрок АТ забирает банк. Хех, премного благодарен, значит моя логика не всегда верна в расчёте победителя, придётся уделить доп время логике, так надеялся что всё точно считает. |
|
0 |
07.10.2019, 03:53 TS | #20 (permalink) | |
Новичок
Регистрация: 01.10.2019
Сообщений: 26
|
Цитата:
В тестах все ок 1 игрок с АТ, значит я всего лишь допустил ошибку в получении списка победителей на сервере, при переносе логики на сервер. Вот оно счастье, когда знаешь где ошибка. Действительно благодарю вас! 0: OnePair alwaysQualifies: true cardPool: Array(7) 0: Card {value: "A", suit: "d", rank: 13, wildValue: "A"} 1: Card {value: "Q", suit: "c", rank: 11, wildValue: "Q"} 2: Card {value: "Q", suit: "s", rank: 11, wildValue: "Q"} 3: Card {value: "T", suit: "d", rank: 9, wildValue: "T"} 4: Card {value: "5", suit: "d", rank: 4, wildValue: "5"} 5: Card {value: "4", suit: "s", rank: 3, wildValue: "4"} 6: Card {value: "2", suit: "d", rank: 1, wildValue: "2"} length: 7 cards: (5) [Card, Card, Card, Card, Card] descr: "Pair, Q's" game: Game {descr: "standard", cardsInHand: 5, handValues: Array(9), wildValue: null, wildStatus: 1, …} isPossible: true name: "Pair" rank: 2 sfLength: 0 Простыми словами, победитель 1, игрок АТ и значит модуль работает верно, но выдача не та у меня с сервера |
|
+1 (+1/-0) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чибурашго ищет друзей | Khishtaki Saritanur | Многостоловые турниры | 1 | 18.08.2009 13:50 |
Что делаю не так? | heydigi | Безлимитный холдем микро бай-инов | 23 | 31.07.2008 02:40 |
Фильм 11(одиннадцать) друзей Оушина не 12 и-13. | Alabaha | Поговорим за жизнь | 10 | 27.11.2007 21:45 |
Что я делаю не так | eLf1 | Безлимитный холдем микро бай-инов | 12 | 18.01.2007 14:09 |
Что я делаю не так? | eddyku | Limit Holdem, Omaha, 7-Card Stud и другие виды покера | 2 | 17.08.2006 14:31 |
|
|