ТЕКСТ: АЛЕКСАНДР АФАНАСЬЕВ Здравствуйте, читатели iphones.ru. Хочу поделиться историей создания нашего первого приложения для iOS — Poker Tools.
Я не самый искушенный игрок в покер, можно даже сказать, новичок. Идея создания набора полезных инструментов для любителей покера возникла после просмотра приложений покерной тематики — такого, которое бы мне действительно понравилось, не нашлось. Есть отдельно расчет вероятностей, таймеры, «Руки», их много, но приложений, включающих в себя все нужные фишки, к сожалению (или к счастью), нет.
Поделился идеей с коллегами по цеху и, как оказалась, подобная идея созревала и у нашего UX/UI дизайнера. Нам показалось, что мы сможем сделать такое приложение быстро и без особых трудностей, но все оказалось не так просто.
Начало
Было принято решение разрабатывать для нескольких платформ. Начали с iPhone/iPod, потому что именно там самые платежеспособные покупатели.
Первым делом мы составили список необходимых на наш взгляд функций, которые должны входить в приложение:
- Вероятность выигрыша — игрок вводит свои карты, и программа рассчитывает шансы на победу.
- Таймер — напоминает о необходимости повышения ставок через заданный интервал времени.
- Судья — игроки, претендующие на победу, вводят свои карты, и программа показывает кто из них выиграл. Незаменимый инструмент для новичков.
- Руки — справочник покерных комбинаций. Тоже весьма полезная функция для начинающих.
Разработка
После согласования всех функций приложения, дизайнер закрылся у себя в кабинете и две недели работал над прототипом. Мы поставили цель сделать приложение максимально удобным и красивым, поэтому надо было проработать интерфейс вплоть до мельчайших деталей, пусть даже и не влияющих на функционал. Этот факт несколько раз откладывал выпуск приложения, и даже такие мелочи, как интервалы, корректные тени, анимация – все скрупулезно оттачивалось.
Руки
Разработку начали с инструмента «Руки», т.к. именно его дизайн был готов раньше. Как ни странно, реализовать необходимые эффекты анимации оказалось делом не слишком сложным, однако после проверки на реальном устройстве стали очевидны серьезные проблемы с производительностью, которые пришлось дорабатывать.
Таймер
Таймер сделан максимально простым и понятным. Время раунда и начальные ставки — все, что нужно подавляющему большинству игроков. Оповещение о новом раунде очень громкое, кроме того, приложение передает уведомление в Notification Center айфона. Кстати, звуковой сигнал мы покупали на сайте istockphoto.com.
Расчет вероятности выигрыша
Очередь дошла до основного функционала программы – расчета вероятностей победы и шансов собрать определённую комбинацию. Предстояло много работы в области тервера, поэтому к разработке подключился наш программист-математик, которого, по его словам, «всегда переполняло чувство эстетического наслаждения при работе с Теорией Вероятности». Вообще, такие масштабные и сложные задачи, как наша, могут иметь множество подходов к решению, и только некоторые из них удобны в реализации. На помощь пришел метод Монте-Карло. Его принцип: если проводить очень-очень много случайных испытаний, то их усредненный результат будет близок к истинному значению. Этот способ намного быстрее исчерпывающего перебора всех комбинаций и как нельзя лучше подходит для получения приемлемого качества результата. Существуют различные библиотеки, но все они, как правило, защищены GPL-подобными лицензиями. На разработку своей ушло бы слишком много времени.
Встала задача найти алгоритм или его прототип без всяких GPL, возможно, не самый быстрый, но работающий, а затем развивать его и дополнять под свои нужды. Прототип был найден на javascript и стал основой для алгоритма, реализованного на Objective-C.
Вероятность выигрыша пересчитывается на лету, сразу после ввода каждой карты. Разброс вероятности по комбинациям можно узнать просто смахнув экран влево.
Главный камень преткновения для подобных приложений — ввод карт. Он должен быть максимально быстрым, удобным и понятным. Мы решили эту проблему, создав карточную клавиатуру: экраны мастей переключаются смахиванием, фокус ввода переводится автоматически, по желанию клавиатура схлопывается после ввода префлопа, флопа, терна и ривера. В реализации клавиатура оказалась достаточно сложной. Анимация и взаимодействие большого количества видов, их контроллеров, эффект раскрытия, имитирующий раскрытие папок домашнего экрана IOS, но со своими тонкостями… Все это заняло большую часть времени разработки. Обычного UIKit тут уже явно не хватало, и в дело пошел более сложный, но и более могучий Core Graphics. Потребовалось создать несколько различных версий этого компонента, прежде чем был достигнут желаемый результат.
Судья
Полезная вещь для новичков, которые часто путаются с определением старших комбинаций в конце раздачи.
Это был наш первый нативный проект для IOS, поэтому разбираться пришлось в ходе работы. Спасибо лекциям от Paul Hegarty – освоить разработку на новом языке для незнакомой платформы оказалось проще простого. Ну и конечно Stackoverflow, без этого ресурса, вероятно, многие проблемы так и остались бы неразрешенными.
Вся работа велась на MacMini, в котором практически сразу родные 2 Гб памяти были заменены на 8 Гб из соседнего магазина. Из коробки разрабатывать на нем было совершенно невозможно.
Тестирование
Как только альфа-версия была готова, мы сдвинули столы и всем офисом сели играть в покер, чтобы протестировать наш продукт «в живую». Посидели весьма продуктивно – выявили несколько недочетов и багов, которые учли при реализации бета-версии:
- Ускорили анимацию сворачивания/разворачивания клавиатуры, ввода карт, раскрытия рук.
- Добавили настройку автоматического схлопывания клавиатуры после ввода рук, флопа, терна и ривера – это избавляет игрока от необходимости тратить время на самостоятельное сворачивание клавиатуры.
- Добавили автоматический возврат на страницу «Шансы» после выбора количества игроков.
- Полностью переработали изображения карт для наилучшего отображения на небольшом экране.
По завершении работы над бета-версией опять собрались и поиграли в покер. На этот раз доработок потребовалось гораздо меньше, и продакшн-версия была готова уже через пару недель.
Маркетинг
К этому большому вопросу мы подошли тоже основательно. Много информации по этой теме удалось почерпнуть, читая форум iphones.ru (пожалуй, это основной источник) и статьи на habrahabr.ru.
Вот основные моменты, которые я выделил:
- Промо-сайт pokertoolsapp.com. Он выполняет важные функции: содержит промо-материалы, необходимые для написания обзоров и знакомит пользователя с приложением.
- Перевод приложения на разные языки повышает лояльность покупателей к продукту. Мы перевели приложение и сайт на 12 языков. Мы пользовались услугами профессиональных переводчиков-носителей языка на сайте onehourtranslation.com. Рекомендую заказывать перевод сразу с корректурой, потому что ее выполняют переводчики с высоким рейтингом, что гарантирует высокое качество результата.
- Промо-материалы должны быть очень качественными. Логотип и скриншоты в большом разрешении. Такие материалы обычно помещают в раздел «Press kit».
- Социальные сети нужны для быстрого контакта со своими покупателями, решения их вопросов и популяризации продукта.
- Очень классно, если есть видео ролик, демонстрирующий возможности приложения. О том, как мы его снимали, читайте ниже.
- Первый поток покупателей приходит из раздела «Новые» — это длится 2-3 дня, и за это время нужно делать всё, чтобы о приложении узнали, стали писать и покупать.
- Сразу после отправки приложения в itunesconnect нужно готовить апдейт, т.к. после каждого апдейта Apple дает дополнительно 50 промо-кодов. Отправлять апдейт можно сразу после публикации приложения в магазине, чтобы через неделю получить новые коды.
- При использовании iAd важно понимать, что реклама как таковая себя не окупит, но за счет резкого скачка вверх и попадания в ТОПы начнутся естественные продажи, которые должны окупить расходы на рекламу и принести прибыль.
- Можно продвигаться, если снизить цену на приложение. Аудитория сайтов типа AppShopper начинает интересоваться такими приложениями.
- Важен тщательный подбор ключевых слов. Если разделить их запятыми без пробелов, то влезет больше запросов — под них выделено всего 100 символов. Также не стоит дублировать название приложения — по этому ключу оно уже будет находиться.
- Помимо основной, можно указывать все возможные дополнительные категории — это повысит шансы выйти в топ хоть в каком-то разделе.
- И, конечно, нужно рассылать промо-материалы сайтам, занимающимся публикацией обзоров — пожалуй, это самый эффективный способ продвижения.
Ready For Sale
Этого статуса с нетерпением ждет каждый разработчик, и мы не были исключением. Приложение мы отправили на рассмотрение 17 августа 2012 и назначили днем публикации 1 сентября. Заложили чуть больше двух недель, чтобы успеть подготовить все необходимые промо-материалы. Заветное «Ready For Sale» высветилось 29 августа. Мы ждали почти две недели — это долго. На форуме пишут, что рассмотрение обычно занимает неделю.
Все было готово к релизу. Вечером 31 августа мы все ждали долгожданного момента выпуска приложения. В 17:00 я нашел наше приложение в новозеландском AppStore, и тут меня ждало разочарование: Apple выложили приложение 1 сентября, но дату публикации поставили 29 августа (дата аппрува), поэтому наше приложение так и не засветилось в разделе «Новые». Только спустя 5 дней дату публикации поменяли на 1 сентября. Конечно же, ни о каких стартовых продажах не может быть и речи.
Видео ролик
Создание ролика — отдельная история. Стоимость работы профессионального оператора оказалась довольно высокой, и мы решили обойтись своими силами. Из оборудования: Canon EOS 1100D, штатив, лайтбокс, переделанный по ходу в софтбокс, и термоклеевой пистолет для фиксации айфона. Тщательно выбирали ракурсы, долго ставили свет. Отсняли общий план в первый день, а ночью внезапно приключился ливень и в помещении протекла крыша. Это была катастрофа! Намокли карты, лайтбокс, айфон вообще лежал в луже. Но нужно отдать должное Apple — аппарат не утратил работоспособности. Все просушили, перенесли в сухое место и продолжили с прежним энтузиазмом. На подбор энергичной музыки и монтаж ушло еще 3 дня. Роликом мы остались очень довольны, он стоил затраченного времени.
Конец
Результаты долгой и кропотливой работы позволяют собой гордиться: в категории «для любителей» программа покрывает весь необходимый функционал, а в плане юзабилити и дизайна наше приложение, на мой взгляд, выгодно отличается от аналогов.
Этот раздел логичнее было бы назвать «Начало», потому что история нашего приложения только начинается, и уже есть план его дальнейшего развития. Если Poker Tools будет пользоваться популярностью среди пользователей iPhone, то мы выпустим версии и для других платформ.
Ну и напоследок немного промо-кодов специально для пользователей iphones.ru:
4R9LTR49RAP4
XWFMRR3FTE67
PF6JP4N3L7PH
RP9MRP7MK96A
E97WH9HNKJYK
63W94KL4W4W4
WJ93T73WAJLK
NTJJ6MJ4NAA3
3L7KLR3PMA4H
J69WET3M3NFM
Цена: $2.99 [iTunes link]
52 комментариев
Форум →XWFMRR3FTE67
Уже все коды разобрали, не один не подошел :(
@antonlitvin, +1 кто-то просто видимо очень быстрый или хитрый…
@pasha888, угу.. 1 человек только отписался, я бы даже не пробовал тогда, если бы отписались все..
Жалко, хотел потестить
@asimonenkov, всегда можно купить и потестить ;)
@afanasyev, так то да ;) но тут уже спор и другая философия. ИМХО когда у меня ЗП будет 100тр, тогда я и перейду полностью на лецензию.
@pasha888, лицензию, sorry
@afanasyev, вы готовы для тестов(!) – покупать? Я понимаю если у программы уже были тысячи поклонников, тогда да, можно и купить положившись на мнение окружающих.. А потестить никому неизвестную прогу..те. тратить и время и деньги на тесты – бред, имхо
Коршуны, могли бы уже и коммент оставить чтобы другие не тратили время. =\
Да ладно, 3 бакса не такая уж и большая цена… а приложение и правда удобное – судья ваще вкатил, на прошлых выходных играли с друзьями, и до посинения спорили, кто выиграл))
я один не пойму зачем это приложение? играю на pokerstars..
@ilext, а кто то играет с друзьями дома с бутылочкой виски. У всех свои предпочтения.
@ilext, а кто-то занимается виртуальным сексом и тоже не может понять зачем все эти контрацептивы…х)
Тоже купил. И лично я благодарен ребятам за разработку. Им спасибо.
В покер не играю, но дизайн приложения на скриншотах очень понравился. Клавиатура сделана с любовью, особенно зацепил пейджер с точками в виде мастей. Молодцы! С таким подходом вас ждет успех!
P.S. И про Mac mini согласен на 100%. Память Xcode высасывает как верблюд воду. Правда, я переписывался с главой разработчиков этого пакета – обещают, что в 4.5 эту проблему решат.
Очень интересно как пропустили данное приложение в АппСтор, Разработчикам крупно повезло, т.к. проверял их видимо новчек или раздолбай, т.к. в правилах четко написано что в АппСтор не пройдут карточные счетчики и пр. программы которые помогают жульничать либо увеличивают шанс на выйгрышь.
@Alexander.SAS, При Стиве, если не ошибаюсь, в АппСторе ни одной покерной проги не было (где так или иначе деньги фигурировали), а сейчас даже PokerStart обещают клиент выпустить. Подход, наверное, меняется. Делай деньги! (с)
@peper-, не вижу ничего плохого, кстати PokerStars уже давно на андройд и на айфоне есть, уж полгода как.
@ilext, http://www.pokerstars.net/mobile/
Про iOS написано Coming Soon.
Про Android и говорить нечего – там не только азартные игры, но и порно, и оружие, и наркотики и другие радости. :-)
@peper-, appstore открой да поищи. На айпаде играю тоже давно.
@ilext, Оказывается, что PokerStars.net PokerStars.com. Но оно мне не надо – я не играю.
@peper-, при Стиве не было приложений для игр на реальные деньги, но не потому что он считал что это “некошерно”, а из-за запрета онлайн-гэмблинга в Штатах. Потом на британском рынке, где у PokerStars все абсолютно легально обкатали мобильный клиент и дальше начали экспансию в другие страны. а игры типа WSOP Poker, китайский покер и все что угодно, на playmoney (фантики, а не реальные деньги) в App Store были всегда.
Блин вот наши приложения как обычно стоят дороже чем не наши(((
@dimsonclear, но ведь в AppStore приложений с таким функционалом (чтобы все и сразу) нет. Поэтому цену сравнивать не с чем, имхо. А если покупать все по отдельности, еще и дороже выйдет.
Лично мне понравилось, красивое приложение. И для меня реально полезное – я еще толком не научилась играть в покер, постоянно забываю комбинации.
@ablipiha, да не спорю — у нас ценники просто любят поставить почаще: 1,99, 2,99
я иногда просто специально не покупаю
@dimsonclear, Цена 0,99$ актуальна для игр, которые скачиваются огромными тиражими в первые дни появления.
Цена 1,99$ и выше выставляется приложениям, которые окупаются в долгосрочной перспективе.
@АЛЕКСАНДР АФАНАСЬЕВ
A расчет EV из какой проги взяли?
@zotankka, расчет EV мы писали самостоятельно. Теоритический материалы для написания подчерпывали из интернета.
Программа разве что для самых новичков. А таким полезнее почитать азы в интернете, чем ставить такие программы. После нескольких игр должна стать бесполезной.
Интрефейс тоже не блещет… ценник имхо завышен нереально.
@Xundus, как может быть бесполезен таймер после нескольких игр? Я считаю, он нужен постоянно.
Насчет вероятности: даже самые опытные игроки не брезгуют проверить вероятность выигрыша. Например, передачи pokerstars, где всегда на экране отображена вероятность.
согласен, цена слишком высока. да покер- это, по счастью, не голая статистика.
Как меня умиляют рассуждения, что “цена слишком высока” о двух- или трех-долларовых приложениях! Вы считаете, что это дорого? 2 или 3 доллара дорого? Серьезно? А еще лучше, чтобы разработчики приложений делали их бесплатными. Потому что не фиг им деньги зарабатывать. Зачем им деньги, мне они нужнее! Что? Кушать хочется? Тогда пусть работать идут, а не программы писать! Программы – это так, ерунда. Не стоит этот труд даже доллара из моего кармана!
Так как-то?
@spinn, согласен. Порой пойдешь купишь себе домой продуктов и не заметишь как оставишь n-количество денег на то, что можно было бы не покупать. Или даже вечерком купишь пиво с рыбкой и оставишь как минимум рублей 300. А в данном случае 3 бакса получается – это уже нереально много. Считаю, что нужно поддерживать разработчиков, к тому же приложуха получилась интересной.
@g2044, @spinn, спасибо! Разработчикам очень приятно читать такие сообщения.
Your Cards: AJ крести
Table: 3 x x 2 4 (тоже крести)
Пишет вероятность выигрыша 95%, если заходишь в детали то видешь 4% вероятность Royal Flush. Похоже тут баг – это вероятность Straight Flush, а не Royal
Также не хватает указания вероятности сплита (когда игроки делят банк)
@bereal, или вероятности “не проигрыша”.
Вот ситуация:
Стол: ААААК
Рука: КК
Пишет что вероятность выигрыша 0%. Это действительно так (будет точно сплит), но вероятность непроигрыша = 100%, это важно видеть, и новичкам тоже.
Или другой пример:
Стол: АААА2
Рука: КК
Вероятность выигрыша 91% (тоже верно). Но вероятность сплита = 2/45 * 2 = 8.9%, а вероятность непроигрыша 100%. Важно понимать что при такой карте ты уже точно не проиграешь.
@bereal, это отличное замечание! Мы его обязательно рассмотрим. Спасибо.
Можно я подарю вам промо код? Дайте свой контакт.
@afanasyev, да я купил уже, но всё равно – спасибо.
@bereal, отдадите кому-нибудь :)
@afanasyev, me(at)bereal.ru
@bereal, отправил.
@bereal, сложности в реализации такого функционала нет, тут главный вопрос, как это показать пользователю. Если показывать вероятность сплита, выигрыша, … то это может выглядеть не так изящно.
@afanasyev, Согласен, надо думать. Показывать скорее всего придется 2 вероятности – выигрыша и ничьи, или выигрыша и проигрыша.
@bereal, да, вы правы – это баг. Будем исправлять.
Хотел спросить у автора, не собирается ли он написать более продвинутый калькулятор, считающий как мы стоим не только против открытых карт оппонента, но и диапазона рук
(аналог PokerStove, ICIMIZER), для тех, кто играет в покер уже давно ;)
Забыл добавить про подсчет EV тех или иных решений, учитывая наши стеки и шансы банка, оценку розыгрыша по ICM-модели в турнирах.
@SSergio, нет не планировали. Прелесть этого приложения в простоте.
Это программа для игроков в покер?
Если была идея сделать полезные “Инструменты”, то она не реализована. То, что представленно – это красивые и бесполезные картинки.
По пунктам.
1. Шансы банка.
Вероятность выигрыша АА и так известна. Равно, как и шансы 22 против АК. А вот каковы шансы 99 если первый игрок сделал рейз, а второй ререйз? И мы знаем, на каком диапазоне это может быть. То есть, я знаю, на каких картах первый игрок делает рейз, а второй делает ререйз. И мне нужно знать мои шансы в этом случае.
И где указывать общие карты? Как подсчитать шансы АА против 9J при флопе 89Q?
Всё это умеет купленная мной утилита pkrCruncher. Есть также и другие подобные программы, тут уже дело вкуса.
2. Таймер
Это приложение для организации турниров. Реализована лишь самая базовая функция. Нет профилей игроков, нельзя управлять структурой призов и проче, прочее. Как должно быть на самом деле вы можете посмотрев скачав БЕСПЛАТНОЕ приложение PokerStars Clock.
3. Судья и Руки.
Возможно, это может быть интересно тем, кто ни разу не играл в покер. Как только вы раз, другой сыграете в покер с друзьями это вам будет не нужно.
На самом деле, если вы посмотрите AppStore, то найдёте множество утилит для игроков (в том числе, в покер). Некоторые из этих программ я покупал и использую.
Однако есть ещё много инстументов которые никак и никем не реализованы. И если российские разработчики сделают эти утилиты, они будут единственными в аппсторе.
@rabestro, cпасибо за столь подробный ответ.
Отвечаю по пунктам.
1. Шансы.
Вы лукавите, эту программу (pkrCruncher) вы не можете использовать, когда играете в турнире или с друзьями, потому что, чтобы вбить свои карты + подумать, какие могут быть карты у оппонентов + внести их + забить стол + посмотреть в таблице полученные вероятности и принять решение, на это, извините меня, нужно очень много времени, и никто вас ждать не будет, а просто попросят удалиться.
Программа pkrCruncher для анализа, а не для использования в игре.
Наша программа позволит быстро вбить руки, стол, указать количество игроков и увидеть вероятность выигрыша, пусть не такую полную как в той программе, но быстро и просто.
Кстати, вероятность AA, 22 многие знают, а вероятность при игре с 5 игроками, при АА 3457A посчитать сложно, и она составляет всего 36%, хотя у вас сложился сет из тузов.
2. Таймер.
Это функция для игры с друзьями. Не все хотят вести профили игроков, управлять структурой и прочее, прочее. Многие хотят сесть с друзьями, раздать фишки, запустить таймер, раздать карты и приятно провести время.
Для турниров есть online турниры того же PokerStars и функцинальность таймера вам не нужна. Там все и играют.
3. Судья и руки.
Да, вы правы, но даже в эти первые разы нужно где-то проверять. Начинаешь искать в инете, звонить друзьям, а тут все под рукой.
На самом деле, да, в AppStore много утилит, но все они сложные и
неудобные. Мы сделали простую и удобную. Пользователям, купившим ее, считают ее полезной и она им нравится, о чем говорят комментарии в AppStore.
@afanasyev,
Вам развернуто указывают на недостатки вашей “реализации” заявленных функций. Вы же упрямо доказываете, что они не нужны. Хотя те же отсутствующие функции таймера именно для игры с друзьями и пригодятся. При другой игре за вас это сделает крупье.
Слабо разбираясь в предмете вы сделали приложение на уровне курсовой работы и тем не менее ждете от него ощутимой прибыли. Результат предсказуем. Надеюсь, на этом вы закончите пополнение апстора “удобными” приложениями.
@Xundus, пользователь сам выбирает, что ему важно.
Если вам нужно управлять структурой призов, вести профили игроков, здорово пользуйтесь приложением PokerStars Clock.
Наше приложение – это взгяд с другой стороны, оно не претендует на полный охват всех функций и удовлетворение потребностей всех любителей покера. Это альтернатива, которая позволяет сделать все быстро и просто. Кому по вкусу такой подход, будет пользоваться нашем приложением.
Классно, когда есть выбор.
Нашли орфографическую ошибку в новости?
Выделите ее мышью и нажмите Ctrl+Enter.Что делать, если экран iPhone выключается во время воспроизведения видео
Включаем автоматическую смену часового пояса на iPhone
Что означает ошибка «Профиль приложения больше не доступен» в iOS
Как использовать любое видео в качестве заставки на Mac
Как настроить внешний вид папок на Mac
Нужно ли покупать роутер с поддержкой Wi-Fi 6 для работы с iPhone 11
Почему iPhone не отображается в списке доступных устройств для AirDrop
На iPhone не пришло обновление iOS 10.3. Что делать