Poker Tools

Текст: ОЛЕКСАНДР АФАНАСЬОВ Привіт, читачі iphones.ru. Хочу поділитися історією створення нашої першої програми для iOSPoker 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 Гб із сусіднього магазину. З коробки розробляти у ньому було неможливо.

Тестування

Як тільки альфа-версія була готова, ми зрушили столи і всім офісом сіли грати в покер, щоб протестувати наш продукт живим. Посиділи дуже продуктивно - виявили кілька недоліків і багів,які врахували під час реалізації бета-версії:

  • Прискорили анімацію згортання/розгортання клавіатури, введення карток, розкриття рук.
  • Додали налаштування автоматичного зхлопування клавіатури після введення рук, флопа, терну та рівера – це позбавляє гравця необхідності витрачати час на самостійне згортання клавіатури.
  • Додали автоматичне повернення на сторінку "Шанси" після вибору кількості гравців.
  • Повністю переробили зображення карт для кращого відображення на невеликому екрані.

poker

Після роботи над бета-версією знову зібралися і пограли в покер. Цього разу доопрацювань знадобилося набагато менше, і продакшн-версія була готова вже за кілька тижнів.

До цього великого питання ми підійшли також ґрунтовно. Багато інформації з цієї теми вдалося отримати, читаючи форум iphones.ru (мабуть, це основне джерело) і статті на habrahabr.ru. Ось основні моменти, які я виділив:

Ready For Sale

Відео ролик

Створення ролика – окрема історія. Вартість роботи професійного оператора виявилася досить високою, і ми вирішили обійтися самотужки. З обладнання: Canon EOS 1100D, штатив, лайтбокс, перероблений по ходу в софтбокс, та термоклейовий пістолет для фіксації айфону. Старанно обирали ракурси, довго ставили світло. Зняли загальний план першого дня, а вночі раптово сталася злива і в приміщенні протік дах. То була катастрофа! Намокли карти, лайтбокс, айфон взагалі лежав у калюжі. Але треба віддати належне Apple - апарат не втратив працездатності. Всі просушили, перенесли в сухе місце і продовжили з колишнім ентузіазмом. На підбір енергійної музики та монтаж пішло ще 3 дні. Роликом ми залишилися дуже задоволені, він коштував витраченого часу.

Цей розділ логічніше було б назвати «Початок», тому що історія нашої програми тільки починається, і вже є план її подальшого розвитку. Якщо Poker Tools буде популярним серед користувачів iPhone, ми випустимо версії і для інших платформ. Ну і насамкінець трохи промо-кодів спеціально для користувачів iphones.ru:

4R9LTR49RAP4 XWFMRR3FTE67 PF6JP4N3L7PH RP9MRP7MK96A E97WH9HNKJYK 63W94KL4W4W4 WJ93T73WAJLK NTJJ6MJ4NAA3 3L7KLR3PMA4H J69WET3M3NFM

Ціна : $2.99 ​​[iTunes link]

(Немає голосів)