Sunduk или 10 секунд на название

image

Давно собирался написать статью на хабр, да все никак не мог собраться. То темы достойной не было, то была, но слишком объемная, то лениво. А может, всегда было лениво. Но сейчас, во всяком случае, собрался.


Пролог


Не знаю как вы, а я подсел на хакатоны. Хожу на них при любой возможности. И очень расстраиваюсь, когда у меня по тем или иным причинам не получается сходить на очередные ночные посиделки программистов. За темой для проекта далеко ходить не нужно – идеи рождаются у меня в голове сами собой. Как правило, дурные, но зато прикольные. Шило в известном месте всегда заставляет меня написать какую-нить «прикольную штуку». И, как правило, шилу везет – папка Projects/4Fun пополняется новым проектом, иногда даже выходящим в паблик.

Завязка


Был у меня и опыт победы на хакатоне, и приз зрительских симпатий… Но сейчас не об этом. А о вполне рядовом участии, но, надеюсь, не о рядовом результате. Неделю назад, 17-18 мая в Минске проходил региональный этап хакатонов Qiwi Universe. Я и мой напарник решили пойти. Решаем пойти на хакатоны мы с ним часто, но ходим на них не всегда. Но в этот раз наши возможности совпали с нашими желаниями, и мы пожертвовали выходными ради… даже не знаю, как сказать… ради хорошего настроения, что-ли.

Развитие действия


Кто не знает что такое хакатон – добро пожаловать в википедию. Вкратце: собираются праздно шатающиеся программисты, дизайнеры и прочие около IT-шные персонажы, сидят 1 или 2 дня (в зависимости от формата хакатона), пьют кофе, иногда едят, и выдают в результате на суд жюри и других участников результаты своих потуг – веб сайты, мобильные приложения, программы для десктопов, иногда какие-нибудь железки или роботов. Кто на что горазд, в общем. Мы с напарником оказались горазды на мобильное приложение…

Наверное, в отличие от большинства участников хакатонов, многие из которых считают, или хотят считать себя стартаперами, я стараюсь за отведенное время сделать не сколько проект, имеющий потенциал захвата мира, а проект прикольный, обладающий вау эффектом, ну или хотя бы пытающийся удивить. Это и есть та самая «прикольная штука», которую периодически хочется мне сделать, а не очередная социальная сеть для собак, сервис обмена книгами или поиска попутчиков. Все это уже было, и не один раз. У меня даже на одном из хакатонов возникла идея сделать прогу для его участников, в которую бы они вбивали свои идеи/проекты, а другие участники бы их оценивали: «Боян», «100500-ый фейсбук», «Сервис краудфандлинга? Что, серьезно?». Я даже эту идею подарил для реализации всем желающим. Но, судя по всему, никто не оценил. Но я опять отвлекся.

Мобильное приложение, которое мы собирались сделать (и сделали), не должно было быть полезным, упрощающим жизнь его пользователю, или приносящим ему выгоду. Оно должно было служить одной цели – радовать глаз. И в первую очередь его создателям. Нам должно было быть приятно, что все получилось, работает так, как мы задумали. И выглядит неплохо. В итоге так все и получилось. Прогу мы назвали… Sunduk. Как выразился напарник – «это название, сгенеренное за 10 секунд». Нужно было срочно регистрировать команду в списке участников, и ничего не оставалось, как включить генератор названий проектов у себя в голове. И генератор выдал — «Sunduk». Пришлось с ним согласиться. Народная мудрость гласит: «Как лодку назовешь, так она и поплывает». Возможно, именно это название и сыграло роль в номере места, которое мы заняли. А заняли мы «никакое» место.

Тем не менее, проект получился. Идея заключалась в следующем – с помощью одновременного свайпа (swipe) по экранам телефонов, лежащих рядом друг с другом, законнектить их между собой, и передавать «деньги» жестами с одного телефона на другой. В качестве «денег» могли быть файлы, музыка или что-то подобное, но «qiwi -> e-commerce -> деньги». Писали мы все это на Unity3d – очень удобный движок для кросплатформенной разработки. Пришлось честно активировать 30-дневную Pro версию Unity3d, ведь в бесплатной не-Pro версии отсутствует возможность работы с сокетами под мобильными платформами. А сокеты как раз нам и были нужны – телефоны между собой связывались и общались по сети.

Кульминация


Техническая часть проекта представлялась нам простой. Но так всегда бывает, пока не приступишь непосредственно к ее реализации. Так получилось и в этот раз. Был момент ночью, когда все хотелось бросить. Ничего не работало. Точнее работало, но через раз. Между 2мя компами все ок: соединяются нормально, деньги передаются. А 2е мобилы (iPhone и Android) – ну никак. То видят друг друга, то нет. Мы и так, и эдак подходили к проблеме. Даже хотели найти стабильную последовательность действий (сначала тут включаем, потом здесь через 5 секунд...), при которой программа работала без сбоев – чтобы на демонстрации проектов не ударить в грязь лицом. И вроде ее нашли. А потом бац – и отработанная последовательность перестала работать…

Эта проблема и приближающийся дедлайн подбавляли адреналина. Тут никакие редбулы и бёрны не нужны, хотя на подобных мероприятиях они, наверное, являются самыми популярными напитками. Кто-то спал, храпя и нервируя неспящих участников. Кто-то мерно программил свой сервис для поиска банковских вкладов. А мы лихорадочно искали причину – «Почему, !#$@%, ничего не работает?!». И нашли ее!

Развязка


Причина всего этого безобразия нашлась спустя несколько часов после первых симптомов. Все дело было в установленном софте на Android телефоне – виновником была Opera Max. Это такая штука, которая должна сжимать мобильный (не wifi!) трафик, экономя пользователю деньги. Кому-то деньги, возможно, эта прога и экономит, но у нас она сожрала много нервов, сил и времени.

Почему-то wifi трафик шел через VPN, созданный Opera Max, и из-за этого терялись бродкаст пакеты – наш сервер не мог сообщить потенциальным клиентам, что он жив и находится на таком-то IP. Во всяком случае все резко заработало, как только я снес эту, безусловно, полезную (но не в нашем случае) прогу. А всего лишь нужно было захардкодить IP сервера в клиентскую часть Сундука и жить спокойно. Многие так и поступили бы, и были бы правы. Но «у нас свой путь» (с).

Зато счастья были полные штаны, когда телефоны наконец увидели друг друга и первые $50 передались с одного экрана на другой. Мы поняли, что не зря не спали эту ночь и пилили код. Задача была выполнена – проект сделан и работает, мы разобрались в новых для нас вещах, поняли, что нужно удалять весь beta-софт перед хакатоном. Но главное – мы бесплатно ели целых 2 дня!

Эпилог


А вот и Сундук, точнее его содержимое:
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама
Комментарии 17
  • +1
    Спасибо за статью
    у меня была проблема именно с коннектом в Unity3d
    долго возился так и не нашел в чем проблема.
    Скорее всего вы как раз и описали ее решение

    PS
    интересное поведение было
    девайс и комп коннектились нормально, а вот два девайса очень редко
    надо будет дома перепроверить
    • 0
      Даже если ваша проблема была и не в Opera Max (она относительно недавно появилась), то возможно в каких-то настройках VPN. Либо в чем-то таком, о чем пока мы не догадываемся. Если выясните причину — напишите в коментариях. Я хотя бы буду знать, какие еще грабли нужно обходить.
    • +1
      Еще вопрос а почему был выбран именно Unity3d?
      Заложенные идеи вроде как не совсем игровые
      • 0
        Unity3d друг когда-то показал, как пользоваться. Вот с тех пор не могу слезть с него (я про Unity3d). Мне нравится: C#, быстрая компиляция, простая визуальная IDE (после того как привыкнешь). Да и много других плюсов. Есть, конечно, и минусы. В професиональной жизни приходится пользоваться cocos2d-x — там С++, долгая компиляция, много телодвижений при портировании на другие платформы. В схватке между сокосом и юнити побеждает второй. С большим преимуществом.

        А на счет игровых или неигровых идей. Где-то тут на хабре вроде статья была о том, как на С++ писать вебсайты (или вебсервисы, не помню точно). Ну так вот и Юнити не только для игр применим. Как говорится «можно и микроскопом гвозди забивать».
        • 0
          хотелось бы спросить, как вы смотрите на MonoGame(правда ему нужен Xamarin для мобильной платформы)?
          • 0
            MonoGame пока не пробовал. Я так понимаю что это почти то же самое что и Юнити, но полностью опен-сорс?
            • 0
              нет, это скорее как кокос(вроде как), только на C#
              MonoGame является интерпретацией XNA и продолжает развиватся
              • 0
                Раньше я думал так «C# на мобилах?! Да он же тормозит!», но когда попробовал Юнити — все опасения как рукой сняло. Если не заниматься написанием движка, а делать только логику, то сишарпа хватает для большинства задач. Хотя пока я раскачивался и собрался программить под мобилы, сами мобильные девайсы ускорились на столько, что теперь не только сишарп переварят. У моего телефона разрешение экрана уже больше, чем у меня на монике…
                • 0
                  А мня не удивило, бегает же ява… и на топовых телефонах умудряется время от времени тормозить
      • +2
        Клёво выглядит. Не собираетесь никуда выкладывать проект?
        • 0
          Честно говоря, пока нечего выкладывать, это только прототип. С не очень хорошим качеством кода, так сказать. Разве что на Unity Asset Store можно выложить. Если возникнет или есть идея игры или приложения с использованием подобной технологии — пишите, подумаем, сделаем, выложим, станем богатыми :).
        • 0
          Поддерживаю выкладывайте
          • 0
            По-моему, гениально.
            Почему не заняли призовых мест?
            • 0
              Потому что Qiwi искала проекты, имеющие потенциал захвата мира. Ну или хотя бы явную модель монетизации. Явную для Qiwi. А вообще мне тоже интересно, почему мы не взяли хотя бы кружку в качестве приза?! :)
              • 0
                Может Вам нужно было прикрутить к купюрам Qiwi.Яйца и тогда бы взлетело?
                • 0
                  ч0рт! Где ж вы раньше были? :)

                  Подвязываться к Qiwi (как делали многие участники хакатона) как-то не хотелось. Фишка нашего проекта имено в прикольном способе обмена «чем-то» между телефонами. Деньги здесь всего-лишь как дань тематике хакатона.

                  В следующий раз сделаем «яичную» игру — 2 мобилы, на каждой по Qiwi яйцу нарисовано. Задача игроков — разбить яйцо противника. Разбивший получает содержимое разбитого им яйца. Игровая механика — можно через акселерометр отслеживать момент «удара» телефонов, ну или как-то подобным образом. Такая вот яичная идея.

                  P.S. Найти бы контору или человека, которая бы спонсировала поездки на хакатоны таких вот психов как я. Я первый в очереди!
            • 0
              Ох, если бы оно по координатам GPS и магнитному компасу само определяло бы сторону куда кидать…

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.