Сто строчек кода для любимой

Я бы мог читать ей поэзию. Я бы мог забронировать столик в ресторане, устроить ужин при свечах: хорошее вино, услужливый официант, приличные люди вокруг. Нежно касаюсь её руки и шепчу:
— Любимая…


Но когда ко мне подошел коллега и сказал:
— Смотри, что я закодил для своей женщины.…
Я понял, что это — любовь. Это — навеки.
Я тоже хочу так.

Клон


В мобильном приложении девушке предлагалось выбрать из двух совместных фотографий ту, что была снята раньше.
Расчёт был прост:

  • Девушки любят вспоминать счастливые моменты вместе;
  • Девушки любят, когда мы помним все даты;
  • Девушки любят сюрпризы.

Игра точно попадала в целевую аудиторию, и мне, как профессиональному геймдизайнеру, было очевидно — эту идею необходимо склонировать. Но прежде стоило оценить риски.
Мой вопрос Его ответ Мои мысли
Сколько времени ушло? Часов пять ночью. Отлично! Одну ночку посидеть.
На чем кодил? Unity3D. У меня за плечами — 12 лет в Game Maker.
С ним управлюсь и того быстрее!
Ей понравилось? Ты что, она была в восторге!
Не думала, что такое возможно.
Она со своим Андройдом на «Вы».
В игры не играет.
Только смски пишет и ВКонтакте сидит.
F*ck Yeah!

Последний ответ развеял все сомнения: игра стоила свеч, ещё как стоила! Остались технические нюансы.
Тэп по фотографии выводил текст прямо поверх неё. Если выбрано правильное фото, похвала и воспоминания. Если девушка не угадала, текст в духе: «Солнышко, неужели ты не помнишь?» И, опять же, приятные воспоминания. Никакого негатива. Реиграбельность (интересно ведь, что сказано о других снимках). Интуитивно понятный интерфейс.
Всего двадцать фотографий. По две на экране. Нажал — выбранное фото масштабируется и улетает вниз. Второе фото тут же исчезает. Появляются ещё два. И так далее.

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


— Стоп, а как ты сделал переворот?
— Просто меняю скейл карточки по иксу.
— Фуф… Отлегло.

Первая кровь


Я принялся за подарок в первую мрачную ночь. Притворился, что есть срочная работа.
Меня ждала адская прорва анимации. Но раз коллега смог, и я смогу. Помнится, он подключал библиотеку LeanTween для Unity3D. Я решил ответить на это TweenGMS в GameMaker: Studio.

Тут меня, жалкого эпигона, ждал первый подвох: раньше я никогда не анимировал через эту библиотеку. Она подключилась легко, но на изучение нюансов ушло какое-то время. Этой же ночью мне почему-то вспомнилось, что приложение коллеги автоматически адаптировалось под любые размеры экранов.

У моей девушки есть iPhone и iPad mini, а значит, нужно во что бы то ни стало подогнать игру под все разрешения вообще. Вы спросите, где логика? Три ночи. Я ухожу в дебри скейлинга, сажусь на крючок анкоров, привязываюсь к DPI. Впору заревновать. Светает… Первая ошибка Тони Вендиса.

Настоящий детектив


Рабочим днём, да простит меня коллектив, я попытался осознать, что пошло не так, покаялся программисту, поведал о планах. Клон мой он благословил и наставил на путь истинный.

Следующей ночью было уже не до шуток: девушка заподозрила что-то неладное. Близились выходные, а я отчаянно не успевал. Оказалось, что подобрать двадцать фотографии за три года нашей совместной жизни не так-то просто: они разбросаны не только по папкам, но и по устройствам. Ещё сложнее узнать, какая была снята раньше. EXIF-данные отчаянно свистят. «И лампа не горит, и врут календари…» Приходится восстанавливать ход событий по её Инстаграму: нахожу посты в тех же локациях, выписываю даты, сверяюсь. Готово. Я МакКонахи, блин, я — True Detective.


Выходные. Скрывать сюрприз всё опаснее. Девушка поглядывает на меня, негодуя. Нужно срочно что-то решать. Я решаю, что нельзя просто так взять и добавить фотографии, нужно делать дизайн, чтобы каждый снимок под полароид. Ищу шаблоны Polaroid для Фотошопа, качаю плагин для чтения PSD в Paint.NET, обновляю Paint.NET. Спокойной ночи, любимая!

В белых домашних тапочках, шаркающей кавалерийской походкой мешая любимой спать, поздней ночью третьего дня разработки я вышел на кухню с ноутом: впопыхах делать подписи к фотографиям. Хочется добавить, что «закат догорал на галёрке китайским веером», но догорали нервы, а сроки сгорели дотла, когда я дописал, наконец, последнюю строчку кода, запустил приложение на своём андройде FNF iFive mini с экраном iPad mini и… 10 из 10, Господи! 10 из 10!


Доброй ночи и удачи


Осталась малость: незаметно установить приложение на её айпад. VMware, настало твоё время. Виртуальный мак ругается на сертификаты. iPad лежит в её сумке, сумка — рядом с кроватью. Ночь. Тьма. Я пытаюсь достать его, пальцы дрожат, сердце вот-вот выскочит из груди, она вздрогнула, я замер, она повернулась на другой бок. iPad у меня в руках! Я собираю приложение и валюсь с ног.

С утра, когда она собирается на работу, я передаю ей iPad и с гордостью сообщаю, что вот он — её сюрприз. Чтобы хоть как-то оправдаться, добавляю, что именно над ним я корпел последние два дня и три ночи. Милая иконка с сердечком:


Приложение запускается. Звучит наша песня. Сейчас вылетят карточки, такие красивые, совсем как мы. Сейчас… Сейчас… Можно, я покажу на своём планшете?

Перед рассветом

Его вопрос Мой ответ Мои мысли
Сколько времени ушло? Два дня и три ночи. Больше никогда!
На чем кодил? Game Maker: Studio. Никогда.
Ей понравилось? Она посмотрела и поблагодарила. Никогда…
Через два дня я услышу, как она говорит сестре:

— Куда ходили? Никуда… Он все выходные просидел за компом, со мной не общался. Что подарил? Ну, он сделал мне игру…

Наши отношения становятся напряженнее. Я не хочу больше думать об этом подарке.
Через неделю, переписав часть кода, я найду, почему игра работала на Android и не работала на iOS (TweenGMS не успевал инициализироваться).

И открою главную причину провала клона: оригинал создавался, исходя из возможностей. Мой коллега правильно оценил сроки, потому что видел в голове не результат и реакцию, но процесс от и до. Все фотографии были в телефоне и легко сортировались по дате. Он использовал LeanTween много раз. Unity UI автоматически адаптирует картинку под любое разрешение. У девушки телефон на Android. Он помнил, что времени мало, и не зацикливался на дизайне. Она знала, что он — программист, но не знала, что он ТАК может. Он не тратил их совместное время на разработку. Они часто выбираются вместе куда-то, а этот подарок был чем-то принципиально новым. Уникальность, момент, маркетинг, аудитория. Всего этого я, конечно, не учёл.

И тут меня осенило! Это и есть разработка игр, совсем как в индустрии. Ты играешь в Clash of Clans, читаешь о трёх месяцах на прототип, считаешь чужую выручку, и кажется, что клон — это лучшая идея. Спустя год разработки, когда момент выхода упущен, ты понимаешь, что потратил кучу времени и денег, и всё должно было быть по-другому.

Когда я, в конце концов, закинул рабочую версию на iPad девушки, она окинула меня, уставшего, понимающим, ласковым взглядом:

— Мне понравилось… Правда. Так приятно, что ты всё помнишь!

Завтра 8 марта. Я больше не буду учитывать. Стихотворение написано. Столик забронирован. Я ещё не знаю, что подарю ей, но знаю точно: мы заснём этой ночью вдвоём, друг у друга в руках, там, где раньше были планшеты.
Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 24

    +2
    Ну что ж, как в разработке игр, одним проваленным стартапом больше, а венчурный фонд снова даёт посевные инвестиции.
      +79
      Открою секрет успеха подобных подарков. Его надо готовить ко дню святого Валентина. И тогда к 8 марта по-любэ успеваешь.
        +6
        … к следующему 8 марта.
        +7
        Очень милая история и очень красиво написана:)
          0
          Извините за минус. Случайно тапнулось на планшете :(

          upd: вроде все вернулось взад
          +10
          Видеть в ключевых словах любовь и багфикс рядом — это пять :)
            +1
            к любому планируемому сроку нужно добавлять 2 недели
              +12
              Самые современные исследования говорят о том, что время разработки нужно умножить на два а затем уже добавить 2 недели.
                +23
                Опытные руководители с техническим образованием умножают на pi и прибавляют e недель.
                +13
                Закон Хофштадтера: «Любое дело всегда длится дольше, чем ожидается, даже если учесть закон Хофштадтера.»
                +2
                А вы не хотите модернизировать ваше приложение так, чтобы каждый мог сам добавлять свои фотографии и даты. У вас хорошая идея, полагаю её можно двинуть в массы
                  –8
                  Это отвратительно! Уверен, что ни одна девушка не была действительно рада такому чесанию эго у дарителя вместо заботы о том, что подошло бы одариваемой. Ремесленники возомнили себя художниками и вылавливают из себя поделия на правах того, что стоило бы ценить.
                    0
                    Ещё менее приятно читать это потенциальным творцам-конкурентам. Спасает текст лишь то, что у персонажа ничего не получилось, но даже за попытку персонажа проявить себя, текст про него огрёб изрядную долю минусов. Зато плюсы — за то, что не получилось! И на этом чувстве конкуренции работает и сюжет, и его обсуждение. Началось с чего? Коллега сообщил о своём достижении! ("Но когда ко мне подошел коллега и сказал: — Смотри, что я закодил для своей женщины.") И понеслось — я лучше, я смогу. Далее — поучительная история, что не смог. И далее на это же покупаются читатели.
                  • UFO just landed and posted this here
                      +6
                      Я, конечно, понимаю, что лучший подарок — это подарок, сделанный своими руками, но не проще было взять у коллеги исходники проекта, потратить около часа на скачивание Unity3d (возможно, намного меньше времени) и, разобравшись со структурой проекта и кода (а в юнити это на раз-два, учитывая «масштабность» проекта), за час-два, вспомнив все события и детали, собрать свой клон?

                      Намного проще и эффективнее, учитывая, что сроки и вправду поджимали. Уложились бы в те же 3-4 часа
                        +5
                        Это мысль в интересном направлении. Действительно получается эффективнее, но и значимость падает почти до нуля — подарок опускается до уровня вставки фотокарточки в готовую рамку.
                        Умозрительный поиск предела, после которого прелесть авторского подарка утрачена, приводит нас к тому, что такой предел пройден с самого начала: потому что сама идея уже неоригинальная.
                          +4
                          Но ведь девушка не знает, что рамка для фотокарточки на самом деле украдена, нежели сделана самостоятельно. Да и автору по силам в случае чего сделать такое, поэтому здесь ценность подарка в её глазах не теряется. Другой вопрос — не замучает ли совесть автора?
                        +5
                        Как то заместо настоящей ёлочки на новый год — я закодил красивейшую анимированную елочку, и выставил ее на монитор.
                        Не помогло — с большим скандалом всё равно был отправлен за настоящей :-)
                          +18
                          Я похожим образом жене предложение делал на Новый год: написал Android приложение в виде ребуса с видео обращением, стихотворением, азбукой Морзе и другими этапами, которые требуют некоторое время на разгадку. Последняя загадка приводила к месту, где было спрятано кольцо. Приложение самому ставить не пришлось — я просто, в качестве подарка, вручил открытку, в которой был qr код, содержащий ссылку на приложение. Жена (QA по профессии) была в восторге.
                            +1
                            Браво! Вот это я понимаю — предложение))
                              +8
                              And the winner is… человек с женой-технарем.
                              +1
                              Мне кажется, что такие сюрпризы появляются из «а что было бы приятно мне, будь я девушкой» :)) Но это все равно очень мило, правда.
                                +1
                                Делал подобные подарки несколько раз, тратил не больше часа, и все вызывало восторг.
                                Зачем над такими вещами заморачиваться? Это даже из ватмана и клея можно сделать, не думаю, что результат будет хуже. Заморвчиваться тут надо над чувствами, а не над тем, как оно будет переворачиваться и какие библиотеки использовать.

                                Only users with full accounts can post comments. Log in, please.