• Как самому создать приложение для ios. Создание приложений для iOS — разработка для начинающих

    Ну что-же, пришло время написать нам свою первую программу для нашего iPhone. Если вы еще не поставили себе XCode + iPhone SDK — то вам . И так, XCode у нас стоит и настроен, начнем?

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

    Создаем наш первый и надеюсь не последний проект:

    Далее нас спросит какой тип приложения создавать. Слева в панели выбираем iPhone OS -> Application а в центральном окне выбираем тип проекта View-based Application . Назовем нашу первую программу, допустим, FirstApp

    В результате у нас создается проект с уже созданным контроллером (первым окном нашей программы)

    Главное окно проекта выглядит вот так:

    Xcode создал для нас первый контроллер, это два файла c названиями FirstAppViewController.h и FirstAppViewController.m

    Файл FirstAppViewController.h выступает как-бы заголовком (оттуда и расширение файла.h от слова header) В нем мы будем оглашать переменные и методы которыми будем пользоваться в главном файле FirstAppViewController.m

    И так, открываем файл FirstAppViewController.h и создадим два указателя:

    IBOutlet UILabel *username;

    Первая переменная username — это текстовая метка, в которую мы будем записывать наше имя. nikField — это текстовое поле, откуда мы будем читать наше имя.

    Записывать это нужно в блоке @interface firstAppViewController: UIViewController { }

    Еще создадим метод, который будем вызывать при нажатии на кнопку, для того чтобы представиться. Назовем метод setNik:

    — (IBAction)setNik;

    В итоге, наш файл FirstAppViewController.h должен выглядеть так:

    #import @interface firstAppViewController: UIViewController { IBOutlet UILabel *username; IBOutlet UITextField *nikField; } - (IBAction)setNik; @end

    Теперь, перейдем в файл FirstAppViewController.m

    Добавим сюда наш метод setNik. Писать нужно после строчки @implementation firstAppViewController

    - (IBAction)setNik{ username.text = nikField.text; }

    Тут мы прописываем, что при выполнении этого метода в текстовую метку username будет записан текст из поля nikField

    Еще нам нужно освободить память от этих указателей после того как мы их используем. Делается это в методе под названием dealoc

    - (void)dealloc { ; ; ; }

    Просто добавляем все указатели, которые использовали, вот в таком формате: ;

    Теперь, открываем файл интерфейса FirstAppViewController.xib Он запускается в редакторе интерфейсов Interface Builder.


    Из библиотеки компонентов перетаскиваем нужные нам компоненты в окно нашей программы и расставляем так как удобно. Дальше в маленьком окне выбираем File’s Owner и нажимаем Command+2 что переносит нас в меню Connections inspector. Видим там список наших указателей, которые мы уже прописывали, а справа от них пустые кружечки. Клацаем на пустой кружочек возле указателя nikField и не отпуская тянем к текстовому полю. Когда мы подводим к ниму указатель мыши, он обводится прямоугольником и отпускаем. Таким образом, мы привязали это поле к указателю nikField. Теперь сделаем так же с указателем username и перетащим его на тот текст, где хотим видеть наш ник (у меня на картинке это текст %username%). Еще чуть ниже видим наш метод setNik и связываем его с нашей кнопкой. Но когда вы поднесете к кнопке и отпустите, то выпадет контекстное меню из которого выберите Touch Up Inside. Это означает, что этот метод сработает когда мы нажмем и отпустим кнопку. То что нам и нужно:)

    Ну что, сохраняем, переходим обратно в Xcode и нажимаем Build & Run. Урааа, наша первая программа запустилась:) Нажмем в текстовое поле, появляется клавиатура, пишем имя. Но в нашей программе еще не хватает одного маленького штриха. Это чтобы убиралась клавиатура по нажатию на кнопку Done, когда мы закончили вводить наше имя.

    Для этого опять включимся в конструктор интерфейсов, нажмем на нашу кнопку. Нажмем Command+1 и найдем там блок Text Input Traits. В нем есть несколько выпадающих списков, но нас интересует только самый нижний: Return Key. Выбираем со списка Done и в низу блока ставим галочку возле Auto-enable Return Key. Дальше мереходим в Command+2 Connections Inspector и видем там слово delegate . Жмем на кружек возле него и тяним к блоку File’s Owner

    Теперь возвращаемся в наш файл FirstAppViewController.m После нашего метода setNik добавляем еще такой код:

    - (BOOL)textFieldShouldReturn:(UITextField *)theTextField { ; return YES; }

    Сохраняем и пробуем запустить (можно использовать комбинацию Command+R) Пробуем написать наше имя в текстовом поле. При написании появляется кнопка Done по нажатию на какую закрывается клавиатура. Теперь жмем на нашу кнопку и вуа-ля, программа с нами здоровается:)

    Казалось бы какая мелоч, подумаешь написали такую мелоч. А я, когда много лет назад учил делфи, выучив один такой пример, чтобы по нажатию на кнопку что-то писалось на экране делал уже разные игрушки. Помните одну из самых первых браузерных игр Бойцовский клуб? Вот я делал себе ради забавы что-то похожее и там все было основано именно на таком принципе как мы только что с вами сделали. Так что играйтесь, экспериментируйте!

    Вот вам еще линк на архив проекта Можно скачать, включить посмотреть если у кого-то что не получилось. Ну а если есть вопросы — то пишите в комментариях.

    Все началось с того, что я огляделся по сторонам и, не увидев автомобиля своей мечты, решил сконструировать его сам
    Фердинанд Порше

    Привет, Хабр. Хочу рассказать, как создал свое первое iOS приложение и что из этого получилось.

    Идея

    Идея для приложения возникла сама собой: создай то, чем бы ты с удовольствием пользовался бы сам. Я постоянно пишу заметки. Ведь у каждого занятого человека существует определенный набор фактов, которые он получает в течение дня, и которые стоит запомнить. А так как все люди забывают (и это нормально!), то нет лучшего решения, чем просто записать. Я все время чувствовал какое-то неудобство при работе с представленными в AppStore приложениями-заметочниками. Излишняя сложность в управлении, наличие ненужных категорий, нагромождение дополнительной информации - все это мешает приложению выполнять его основную функцию. Плюс ко всему многие из этих вещей выглядят просто некрасиво.

    Поэтому, поставив все ставки на простоту и удобство, я приступил к созданию концепции. Модель приложения с единым списком заметок. Все в одном месте, что может быть проще? Если что–то имеет большую ценность или актуальность, совсем не обязательно вешать на него ярлык, ведь достаточно просто переместить более важную заметку в топ списка. Старые и ненужные записи постепенно будут опускаться вниз и в последствии будут удалены пользователем.

    Функционал

    После того, как концепция была придумана, я выписал основной функционал - те вещи, на которые я хотел бы сделать акцент в управлении:

    Довольно стандартный функционал для подобного рода приложений, согласитесь. Но это только верхушка айсберга, дьявол кроется в деталях.

    Инструментарий

    Перед тем, как писать код в Xcode, я полностью воссоздал внешний вид приложения в векторном редакторе Sketch. Эта программа отлично подходит для быстрого создания макетов. Для этого приложения доступна масса плагинов, среди них есть Sketch Preview - просмотр артборда сразу на устройстве через программу Skala Preview. Всего лишь нужно скачать бесплатные программы Skala Preview на компьютер и мобильное устройство и установить плагин. После этого выбрать нужный артборд, нажать комбинацию Command+P и уже через секунду внешний вид приложения транслируется на устройство.

    Кроме того, в приложении очень удобно создавать скриншоты для публикации в AppStore. Для каждого размера экрана создавался свой набор артбордов, вместе с использованием стилей, время потраченное на форматирование минимально. Но про публикацию чуть позже.

    Разработка

    В приложении я использовал всего два контроллера – один непосредственно для всех-всех-всех заметок, другой - для отображения небольшого туториала при первом запуске. Работу с базой данных я организовал с помощью фреймворка CoreData.

    После создания базового функционала (создание, удаление, редактирование заметок) я решил улучшить каждую из этих функций.

    Согласитесь, редактирование текста в iOS реализовано достаточно неудобно. При допущении ошибки в слове для перемещения курсора на нужную позицию необходимо сделать касание и не убирая пальца от экрана, попытаться попасть в выбранную область. К тому же после исправления ошибки нужно вернуть курсор назад в конец строки. В своем приложении я решил переработать механизм перемещения курсора: для того чтобы внести изменение в слово, нужно лишь сделать свайп в зоне между клавиатурой и набираемой фразой не загораживая при этом обзор текста.

    Анимации удаление и перемещения в топ я решил реализовать самостоятельно, а визуальное сопровождение максимально приблизить к реальной жизни. Что-то приобрело более высокий приоритет - свайп вправо и заметка перемещается в топ списка. Чтобы удалить - свайп влево и анимация зачеркивания покажет на сколько еще нужно продлить свайп чтоб завершить удаление. При случайном удалении - нужно просто потрясти устройство («Shake»), и заметка вернется на свое прежнее место.

    Для того, чтобы выделить заметку, я использовал LongTapGesture и три основных цвета приложения - белый, синий и красный, которые и сформировали главную палитру цветов.

    Переход между дневной и ночной темами я решил сделать автоматическим - почему никто еще не додумался менять внешний вид в зависимости от положения солнца на небе? Все очень просто - после наступления темноты и после восхода солнца тема меняется, при этом пользователю не нужно отвлекаться от создания заметок, ведь приложение всегда будет автоматически подстраиваться под окружающие условия.

    Нейминг

    Название приложения - самая важная часть при разработке, это первое что видит пользователь в магазине. На хабре есть по этому поводу. К подбору имени я решил подойти основательно: для начала я перебрал список 1000 самых популярных слов в английском языке и выписал всевозможные комбинации, которые подходили бы для названия мобильного приложения для заметок, к тому же хотелось уложиться в 8-10 символов. Но при этом не хотелось выбирать название SuperNotes или NotesPlus etc, хотелось чего-то нового. Мне понравилось сочетание mad note , на которое случайно наткнулся в Urban Dictionary:
    mad note - excellent, entertaining, surprising, unexpected or awe-inspiring

    Сразу же появился и слоган: MadNotes - Note your passion. Поскольку палитра основных цветов у меня уже была готова (белый, синий, красный), я решил сразу придумать подходящую иконку. Ситуация с логотипами для приложений подобного рода плачевная:

    Поскольку заметки на бумаге пишут карандашом или ручкой, я решил отобразить это на иконке - карандаш повернутый под углом 45 градусов. Получилось вот так:

    Результат

    Поскольку изначально проект задумывался как дизайнерский, я решил поучаствовать с моим приложением в всеукраинском конкурсе Ukrainian Design Awards: The Very Best Of в категории Digital Design. До конкурса оставалось несколько недель, за это время я успел сделать публикацию на Behance, где визуально показал все основные функции приложения, а также записал видео-превью.
    Поскольку победителей конкурса не разглашают до самого последнего момента, было невероятно приятно увидеть свою работу на выставке работ победителей - жюри увидели и оценили главную концепцию - минималистичное и, вместе с тем, функциональное приложение для ведения заметок.


    Приложение находится в AppStore уже несколько месяцев, за это время я сделал шесть обновлений и переписал код на Swift. В последней версии (1.2) добавлена синхронизация с iCloud, так что заметки уже успели перебраться в облако.

    Спасибо внимание.
    Note your passion

    Нил Фергюсон, разработчик Virus Strike считает, что любой человек может создать игру, в том числе и игру для iPhone. Он сам разработал аппликацию на iOS с нулевым бюджетом, не имея никакой практики программирования для айфонов. Это непросто, но создание будет успешным, если у Вас есть необходимые навыки.

    Конечно, Нил – специалист со стажем и его опыт помог сделать Virus Strike, но он считает, чтобы благополучно справиться с заданием, не обязательно быть компьютерщиком. Достаточно просто следовать следующим советам.

    1. Качественная идея и правильные инструменты

    Подумайте над оригинальным намерением, а потом проверьте AppStore на наличие подобных приложений. Это может занять от пары часов до нескольких дней.

    Если Вы не являетесь опытным программистом, специально для Вас существуют специальные виртуальные библиотеки (например, GameSalad), позволяющие создать задумку без знаний программирования и специально разработанные для iOS.

    Кроме того, Вы обнаружите, что разработка флэш намного легче, чем изучение Objective C (стандартный язык «яблочной» платформы). Для поклонников флэш-аппликаций представлено множество инструкций для новичков.

    Если же Вы все-таки решитесь развиваться в традиционном направлении, стоит применить готовые рамки, чтобы облегчить кодирование. Встроенный физический движок сэкономит много времени и усилий!

    2. Специфические особенности iOS и продуманная концепция

    Наиболее успешные iOS развлечения в AppStore – те, которые предназначены специально для iPhone и используют его особенности (например, сенсорный экран, акселерометр и т.п). Чтобы создать успешную игру или несколько игр, учтите, какие уникальные элементы управления айфона могут сыграть решающую роль в Вашем приложении. Делайте ставку на оригинальность!

    Кроме конкретизации основной механики (линейный рисунок, соответствие цветов и движок), следующим важным шагом является структурирование задуманной концепции в сложную, но доступную схему.

    Важно иметь представление о продолжительности и сложности каждого этапа забавы. Они должны получиться непростыми, но в то же время справедливыми – участники должны чувствовать прогресс, иначе они потеряют интерес. Хорошо оправдывают себя некие виртуальные вознаграждения за каждый пройденный тур.

    3. Звуковые эффекты

    Существует множество ресурсов (например, freesound.org), где Вы можете подобрать звуковые эффекты. Этот процесс довольно утомительный и лучше будет, если Вы поинтересуетесь мнением окружающих, поскольку субъективно можете подобрать раздражающие звуки. Для редактирования звукового сопровождения существуют бесплатные программы типа Audacity.

    4. Бесплатные мануалы и аутсорсинг

    Virus Strike – был первой пробой Фергюсона для iOS, до этого он никогда не сталкивался с Objective C. Очень сильно помогли онлайн-уроки, а также множество полезных мануалов. Создавая игру, вы также можете воспользоваться подобными ресурсами, например такими как developer.apple.com.


    Если, собственно, вы лично не являетесь программистом, можно поручить основную разработку кому-то более опытному. Можно создать заказ на бирже фрилансеров или обратиться к фирме, предлагающей аутсорсинг. Главное помните, что детально описанный ожидаемый результат, повысит вероятность получить желаемое.

    5. Видео, маркетинговая стратегия и отзывы

    Пользовательские тестирования подтверждают необходимость создания обучающего видео, которое помогает быстро освоиться и понять представленную игру, а также способствует пиару приложения. Журналистам проще посмотреть одноминутное видео, чем сидеть и разбираться что к чему непосредственно в аппликации.

    Независимо от того, насколько хорош Ваш проект, без продвижения вряд ли его кто-то найдет. Приготовьтесь потратить немало времени на обзоры для специализированных вебсайтов, чтобы прорекламировать вашу игру.

    Подготовьте качественный пресс-релиз (можно сделать самостоятельно или нанять копирайтера, разбирающегося в теме) и поместите его на популярных порталах. Даже если Вам придется заплатить за публикацию, такие расходы быстро окупятся, поскольку большие сервисы являются источником информации для сотен других ресурсов, перепечатывающих оттуда статьи (часто в полном объеме). Таким нехитрым образом, Вы получите неплохую рекламу.

    Даже если Вам кажется, что разработка закончена, без отзывов от других людей вы не сможете оценить реальную ситуацию касательно доступности пользовательского интерфейса и механизма в целом. Не полагайтесь на честный фидбек от друзей и не подсказывайте, что и где нажимать – уверьтесь, что им легко во всем разобраться. Наблюдайте за процессом – так Вы сможете быстрее определить все возможные недочеты.

    Как создать приложение для Android или iPhone? — таким вопросам все чаще задаются не только веб-разработчики, но и обычные владельцы небольших бизнес-сайтов, блоггеры.

    В данном обзоре предлагает рассмотреть , которые представляют собой конструкторы для быстрого и удобного создания Android и iPhone приложений . При этом не требуя от пользователя навыков программирования или других специальных ИТ-знаний. Такие приложения незаменимы для разного вида бизнеса — ведь это отличный способ расширить целевую аудиторию и привлечь клиентов.

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

    бесплатный веб-сервис, который позволяет сконвертировать контент вашего сайта в Android приложение и распространить его через Google Play. Кроме того, созданные приложения можно как продавать, так и размещать в них рекламу.
    Можно создать неограниченное количество Android приложений из трех типов контента: сайта, просто html-страницы и YouTube видео. Для создания Android приложения AppsGeyser использует простой и наглядный мастер шаблонов.

    Сайты AppsGeyser: http://www.appsgeyser.com, http://www.appsgeyser.ru

    бесплатный онлайн-сервис для быстрого создания мобильных приложений. TheAppBuilder создает приложения с помощью конструктора и типовых шаблонов — для бизнеса, событий, образования, музыки, спорта и др. Созадние приложения бесплатно, а за 5 у.е. в мес. можно отключить показ посторонней рекламы в созданном приложении. TheAppBuilder позволяет создавать Android приложение, и Windows Mobile.

    Сайт TheAppBuilder: http://www.theappbuilder.com

    — это онлайн-сервис, который позволяет пользователям создавать и публиковать свои собственные мобильные приложения в несколько кликов в интернете. Платформа Appsmakerstore создает мобильные приложения, поддерживаемые HTML5, iTunes, Android Market, Blackberry Marketplace, Windows Marketplace и Facebook без каких-либо глубоких технологических навыков. Это всего 1 приложение для 6 разных платформ . Appsmakerstore предлагается в 23 языках, в том числе на русском и украинском.

    Особенность Appsmakerstore в том, что он предлагает на выбор уже готовые шаблоны для определенных индустрий (например, юридические услуги, ночные клубы, рестораны и кафе, торговля, салоны красоты и пр.)

    • «Сделай сам» — $9.78 в месяц.
    • «Мы делаем приложение для Вас» — $249
    • «Reseller»- специальная цена, которую нужно узнавать на сайте отдельно.

    Всегда включено во все планы:

    • Неограниченное количество изменений контента и обновлений приложения.
    • Обновление контента приложения на iTunes и Google Play без необходимости повторной публикации.
    • Отправлять неограниченное количество push уведомлений пользователям.
    • Автоматически получать и пользоваться всеми обновлениями системы.
    • Безопасный хостинг на наших серверах.
    Сайт Appsmakerstore: http://appsmakerstore.com

    — платный онлайн-конструктор мобильных приложений (iPad, Android , HTML5) для небольшого бизнеса. Среди возможностей - геолокация, получение и отправка сообщений, корзина для товаров, уведомления, интеграция с соцсетями, размещение информации о меню, наборе услуг, предстоящих событиях и др. Есть шаблоны для ресторанов, риелторов, гимнастических залов и др.

    Данный сервис представлен такими планами:

    • «Мобильный сайт» — $29 в месяц.
    • «Мобильное приложение» — $59 в месяц
    • « White Label Partner» создание приложений для Ваших клиентов — специальная цена, которую нужно узнавать на сайте отдельно.
    Сайт Biznessapps: http://www.biznessapps.com

    5. AppGlobus

    AppGlobus — платный, один из российских онлайн конструкторов мобильных приложений, позволяющий пользователям самостоятельно создать и опубликовать своё приложение в App Store и Google Play.

    Использует новый дизайн и возможности Ionic Framework, что значительно улучшает качество разработки, и даёт возможность создавать мобильные приложения на HTML5, iOS, Android даже без навыков программирования.

    На данный момент AppGlobus предлагается на 8 языках, в том числе на русском.

    AppGlobus.com предлагает следующие пакеты:

    • STARTAP - 900 руб./мес.
      • Приложения: HTML5/Android, админ панель, магазин, нет ограничений на Push, нет ограничений на установки, нет рекламы.
    • BASIC - 1500 руб./мес
      • Приложения и для Android и для iOS, админ панель, магазин, нет ограничений на Push, нет ограничений на установки, нет рекламы.
    • STUDIO - 2000 руб./мес
      • Приложения: Windows/Android/ iOS, админ панель, магазин, нет ограничений на Push, нет ограничений на установки, нет рекламы.
    • PRO - 45000 руб./единоразово
      • Приложения: Windows/Android/ iOS, разработка на заказ, сами разместим в App Store и Google Play, отдадим исходный код
    Сайт AppGlobus: http://appglobus.com/

    — платный онлайн-сервис для создания своего мобильного приложение для бизнеса или личного пользования. Никаких специальных умений не требуется. Хорошо подходит для небольшого бизнеса, например, интернет-магазинов. Чтобы создать свое приложение, понадобится всего 5 минут – нужно всего лишь выбрать необходимые модули и дизайн. Есть английская и русская версии.

    My-apps.com предлагает такие пакеты:

    • Старт — 599 руб. /мес.
      • приложения только для Android, доступ к конструктору, бесплатные шаблоны и иконки приложений, обновления контента каждые 48 часов, обновления исходника приложения в сторах самостоятельно не чаще 1 раза в 2 месяца.
    • Лайт — 990 руб. /мес
      • приложения и для и для iOS, доступ к конструктору, бесплатные шаблоны и иконки приложений, базовые скриншоты приложения, Push уведомления — 1 в месяц, обновления контента каждые 24 часа, обновления исходника приложения в сторах 1 раза в 2 месяца.
    • Стандарт — 2490 руб. /мес
      • приложения и для Android и для iOS, доступ к конструктору, бесплатные шаблоны и иконки приложений, базовые скриншоты приложения, поддержка по Skype, Push уведомления — 10 в месяц, обновления контента каждые 12 часов, обновления исходника приложения в сторах 1 раза в месяц.
    • Бизнес — 9890 руб. /мес
      • приложения и для Android и для iOS, доступ к конструктору, бесплатные шаблоны и иконки приложений, базовые скриншоты приложения, поддержка по Skype и е-мейл, персональный менеджер, Push уведомления — 50 в месяц, обновления контента -мгновенно, обновления исходника приложения в сторах — без ограничений.
    • VIP — 3999 руб. /мес + 150 000 руб. инсталляционный платеж

      • приложения и для Android и для iOS, доступ к конструктору, бесплатные шаблоны и иконки приложений, базовые скриншоты приложения, поддержка по Skype и е-мейл, персональный менеджер, Push уведомления — неограничено, обновления контента -мгновенно, обновления исходника приложения в сторах — без ограничений.
    Сайт My-apps.com: http://my-apps.com

    предоставляет платформу “сделай сам ” для создания iPhone/ приложений , которая так же не требует навыков программирования. Данный сервис предоставляет для каждой организации простой способ создания мобильных (iPhone, iPad, Android) приложений и публикационных материалов. Клиенты могут создать собственные каталоги, флайеры, брошюры, отчеты, резюме и пр. и предоставлять их с помощью SaaS-решения. Есть английская и русская версии.

    iBuildApp предоставляется в таких пакетах:

    • Бизнес (2400 рублей в месяц) — 3000 установок, неограниченное количество просмотров мобильного сайта, отсутствие встроенной рекламы, публикация приложения на iTunes и Google Play.
    Сайт iBuildApp: http://ibuildapp.com

    — онлайн-сервис для разработки приложений (iPhone , iPad, Android). Позволяет создавать приложение на основе одного из множества шаблонов приложений. Элементы создаваемого пользовательского интерфейса приложения могут быть связаны с такими функциями, как отправка электронной почты, SMS-сообщения, отправка на сервисы Facebook и Twitter.

    • Developer — $33 в месяц . (можно создать только 1 приложение)
    • Professional — $79 в месяц .
    • Premiun- $129 в месяц .
    • Enterprise — Цену нужно узнавать отдельно .

    Все пакеты поддерживают такие платформы: IOS (iPhone/iPad) & Android (Phone/Tablet)

    Сайт Viziapps: http://www.viziapps.com

    - онлайн-редактор, позволяющий создавать приложения для iOS, Android и Windows Phone. Пользоваться ей очень просто: собственную программу можно собрать из уже готовый частей. Несмотря на то что AppsBuilder старается быть более простым и понятным для неопытных пользователей, в него добавлены и некоторые возможности для программистов: к примеру, можно дополнять созданные приложения собственными Java-скриптами.

    Есть три платных пакета, в которых есть везде 30 дней — бесплатная пробная версия:

    • Starter (49 евро в мес.) -1 приложение.
    • Regular (199 евро в мес.) -до 5 приложений.
    • Scalable (от 249 евро в мес.) — более 5 приложений.
    Сайт AppsBuilder: http://www.apps-builder.com

    Это мой второй опыт создания приложения. О первом я подробно рассказывал в – там речь шла о привлечении инвестиций, подбора разработчиков и пр. К сожалению первый блин вышел комом.

    Меня сильно подвело отсутствие навыков программирования, что позволило разработчикам выкручивать руки и наживаться на незнании. Поэтому я решил, что надо освоить кодинг самому, так как заниматься созданием приложений и не уметь программировать это значит попадать в очень серьезную зависимость о которой разработчики знают и нередко пользуются.

    Обучение

    В общем решение было принято и в январе 2016 года я начал работу. По специальности я прикладной информатик, но по факту кроме самых базовых навыков работы с Pascal, из университета я ничего так и не вынес, а дело было лет пять-шесть назад. У меня, так же был небольшой опыт работы с HTML и CSS, при создании простеньких сайтов который впрочем не сильно помогал в деле создания приложений. Поэтому я начал с самых азов. С древнего и почти начисто забытого Pascal. Скачал редактор «Free Pascal» http://freepascal.ru/ нашел учебник, начал с простеньких программок по сложению и вычитанию. В общей сложности ушло порядка двух недель занятий, по два – три часа в день, чтобы освежить память.

    Углубленное изучение Pascal предполагало больше практики, для чего я нашел задачник Абрамяна по Pascal с 1000 задач (PDF).

    Так как начать писать приложения хотелось, как можно скорей, я не дожидаясь окончания первого этапа обучения, параллельно с решением задач на Pascal, начал изучать Cи, по книги «Язык программирования Си» - Брайана Кернигана и Денниса Ритчи (PDF). Здесь отдельно скажу, что несмотря на то, что эта книга есть и на Русском языке, я изучал его на языке оригинала, так как в целом не плохо знаю английский, и это на мой взгляд достаточно важно для любого человека занимающегося программированием. Обучающих материалов и просто материалов по тому или иному языку программирования на английском, как правило, значительно больше чем на Русском. Работа с AppStore, загрузка приложения, условия использования и прочее, все это тоже в основном на английском. Так что можно сказать что английский на уровне чтения технической литературы это обязательный навык для программиста.

    Для программирования на Cи у меня был Mac еще с первого проекта. Задачки для Cи я решал в Xcode. Для того чтобы лучше усвоить разницу в синтаксисе Pascal и Cи я начал решать задачки из того же задачника Абрамяна, но уже на Cи. После двух недель ежедневных 4-5 часовых занятий я смог решить порядка 300 задач на Pascal и вдвое меньше на Cи а так же пройти порядка 100 страниц книги по Си. В это же время решил подключить к процессу обучения англоязычный сервис – Tree House .

    Это обучающий сервис который сильно помог мне в освоении HTML и CSS. Подписка стоит от 25 $ в месяц. Но как по мне, это оправдано. На сервисе представлены обучающие материалы по самым разным языкам программирования включая Java, C#, Python, Swift и многие другие. Обучение происходит поэтапно, от видео к видео, с различными вставками практических заданий.

    Все видео очень наглядны, интересны, постоянно обновляются и подробно разжевывают все ключевые моменты будь то сама суть Объектно-Ориентированного программирования или принципы работы в Xcode. Я естественно выбрал обучающие материалы по Cи и по созданию приложений IOS с Objective-C.

    Таким образом мое обучение напоминало попытку продвигаться сразу по все фронтам одновременно. Я практиковался в решении задач на Pascal, чтобы как можно прочнее, как мне казалось, заложить основы программирования, изучал Cи, для того чтобы лучше понимать Objective-C и наконец изучал Objective-C, чтобы как можно скорей начать писать под IOS.

    Так прошел еще один месяц каждодневных занятий в среднем по 4-5 часов в день. С одной стороны возможно логичней было бы двигаться поэтапно, скажем, вначале разобраться с Pascal, затем с Cи и далее приступить к Objective-C, но по факту, именно попытка охватить все, позволила в конечном итоге сэкономить кучу времени, так как я все больше стал уделять внимание не решению задач на Pascal и Cи а непосредственно созданию приложений из программы обучения Tree House. Это было куда интересней и по сути показывало, что задачи из задачника Абрамяна а так же материалы из Книги Кернигана и Ритчи по Си – хороши для понимания основ, но в целом довольно далеки от реального процесса создания приложений. В итоге к концу третьего месяца моего обучения я совсем перестал практиковать Pascal и Cи. Вместо этого я сосредоточился на практических материалах Tree House по Objeсtive-C и созданию приложений в Xcode.

    Создание игры. Идея

    После создания нескольких простеньких приложений из обучающей программы я решил, что наконец готов заняться чем-то более интересным. Открыв свой список идей, который я периодически пополняю когда на ум приходит что-то потенциально интересное, я остановил свой взгляд на идеи создания игры по теме «Борьбы с Коррупцией». Смысл идеи в том, что в качестве врагов выступают коррупционеры, их нужно нейтрализовать и тогда игровой мир становится лучше. Тут же и подтекст вроде того, что коррупция это плохо и что чем ее меньше тем лучше окружение. Учитывая, что тема актуальная для России, а приложений с подобной идеей мне найти не удалось я остановился на ней и стал думать, как лучше реализовать.

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

    После того как концепция была утверждена и бегло описана, надо было понять, как создаются игры. Погуглив видео я сразу наткнулся на то, в котором рассказывали, как создать игру на подобие Flappy Bird (Youtube).Тут возник важный вопрос. Не секрет что Apple в 2014 году выпустил новый язык программирования – Swift, который впитал в себя много хорошего от Objective-C и стал его логическим продолжением.

    Видео на которое я наткнулся рассказывало о создании Flappy Bird именно на Swift, а найти такое же простое и понятное для Objective-C я не смог. Не долго думая я решил, что все равно будущее за Swift и лучше я не буду отставать, тем более что на том же Tree House были отличные материалы по его изучению. В итоге я взял паузу чтобы изучить Swift, понять синтаксис и основные отличия от Objective-C. Прошла еще неделя занятий в среднем по 8 часов в день. Я бегло прошелся по основным обучающим материалам для Swift, и решил, что наконец готов осилить видео по созданию Flappy Bird. За пару дней я смог создать вот это:

    Получив общее представление о работе с движком Sprite Kit, я наконец смог перейти к работе над своим приложением.

    Концепция

    Вначале я запланировал сделать лишь самое простое – 3-х уровневый прокручивающийся фон, анимированного героя, оружие, возможность прыжков и возможность стрельбы. Это было необходимо так как кроме самых общих представлений о работе со Sprite Kit у меня не было никакого опыта, надо было начинать с чего-то совсем простого. Как фиксировать нажатия и осуществлять прыжки героя, как прокручивать фон, как создавать пули в момент выстрела и тд. Этих вопросов было десятки а то и сотни. И способ решения для каждого, всегда был один и тот же – Google. Благо в интернете есть большое количество различных материалов (к сожалению в основном на английском языке) по созданию игр на Swift, где приводятся примеры решения тех или иных возникавших у меня вопросов. Так же огромную и неоценимую помощь оказывает сервис вопросов/ответов Stack Overflow.

    Я думаю, что процентов 70% всех возникших у меня вопросов я смог разрешить с его помощью. К документации Apple я так же обращался но довольно редко. Может быть в 10% случаев максимум, и то когда других вариантов не было.

    После очередной напряженной недели, во время которой я отдавал программированию почти все свое время – по 8-10 часов в день я смог сотворить вот это:

    Оно могло дергать ногами (анимацию рисовал сам в фотошоп), прыгать и стрелять из дробовика с характерным звуком, в это же время на заднем плане прокручивался фон. Это было начало)

    Прототип

    Этот набросок позволил мне многое понять в механики моей будущей игры и убедившись в верности концепции, я решил следующим этапом добавить врагов умеющих стрелять а так же нормальный дизайн. Изначально я планировал заказать весь дизайн (фон, анимации героя и врагов, предметы и тд.) у фрилансера, так как это единственное, что я не мог сделать сам. Но потом я вспомнил про сайт Envato Market: http://market.envato.com/, на котором ранее приобретал музыку, шаблоны для сайтов, презентации и пр.

    Помимо перечисленного на сайте существует большой выбор всевозможных анимаций, текстур, звуков и прочих вещей чрезвычайно необходимых при создании приложений. Цены, на мой взгляд, так же весьма приемлемы. Например подобранный мной набор анимаций главного героя, помимо бонусов в виде различных объектов (монетки, алмазы и прочее), включает в себя 8 анимаций таких как – стреляет, бежит, прыгает, умирает и прочее.

    Такой набор я приобрел за 7$. Единственный момент заключается в том, что на приобретенные у них товары действуют разные лицензии. Одни например, разрешают использовать продукт только в одном изделие для неограниченного бесплатного распространения, другие разрешают его перепродажу третьим лицам у которых цель – такое же неограниченное бесплатное распространение, третьи, как для музыки например, разрешают распространение только ограниченному количеству слушателей и тд. Стоимость этих лицензий разная и зачастую может отличаться в 4-5 раз.

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

    В общем я приобрел героя, оружие, врагов и все что необходимо для фона. Сам фон в таком виде как он есть не продавался.

    Это результат моей работы в фотошоп созданный из пары десятков различных объектов – забор, асфальт, ямы, кучи мусора и тд. В целом на его создание ушло несколько дней. В дальнейшем я заглядывал на Envato раз 10, каждый раз докупая что-то необходимое.

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

    У меня был готовый уровень с 5-ю видами оружия, аптечками, объектами, врагами и много чем еще. Далее я решил провести тестирование среди знакомых и мозговой штурм чтобы понять, чего не хватает. Исправлений и добавлений набралось порядком. Столько, что по моим прикидкам я бы работал над игрой еще полгода точно. Пару дней я все осмысливал и в конечном счете набросал список того, что действительно необходимо, а все остальное вычеркнул и решил воспользоваться методом из космической отрасли о котором слышал как-то. Суть в том что с определенного момента, перед запуском, в ракету запрещалось вносить какие-либо изменения и улучшения. Иначе так можно улучшать вечно.

    Доработка игры

    Далее встал вопрос с дизайном врагов. Всего их у меня 6 видов – 5 простых врагов и босс + честный гражданин. Все эти спрайты я планировал заказать чтоб их отрисовали, так как хотелось, чтоб персонажи были более жизненными. Я пошел на Freelance.Ru и разместил объявление на создание 5 персонажей, с 18-ю анимаций (по 8- 25 кадров) для каждого. Анимаций было много, потому что кроме стандартных бежит, стреляет, арестован, стоит и тд, были еще анимации смерти от каждого вида оружия, в замедленном или не замедленном режиме. Самая дешевая стоимость, от внушающего доверие фрилансера, которую мне назвали была в районе 40 тысяч рублей и 1 месяца работы. Мне это показалось дороговатым и я опять таки обратился к Envato. К счастью на сайт как раз загрузили коллекцию различных спрайтов от одного и того же дизайнера.

    Спрайты из его коллекции вместе с набором анимаций стоят в среднем 15$. Самое главное, что в архиве со спрайтом идут файлы для программы Spriter.

    Открыв Спрайт в этой программе и немного в ней разобравшись (очень проста в освоении), можно самому делать абсолютно любые анимации для своих персонажей с разной раскадровкой. В общем я подумал и купил всех персонажей на Envato, после чего своими силами обработал, добавил необходимые анимации и загрузил в приложение. Работа с текстурами надо сказать чрезвычайно утомительна и монотонна. Мне было необходимо выгрузить созданную анимацию из программы Spriter, затем обработать в фотошоп (развернуть, выставить размеры), далее сжать, переименовать, сделать картинки 1x, 2х, 3х. На обработку всех анимаций у меня ушло наверное с месяц, не меньше. Целый месяц монотонной и однообразной работы, благо я смог подключить к этой работе помощника. Но зато я разобрался во всем процессе, сделал себе такие анимации которые хотел переделывая их столько раз, сколько было нужно.

    Параллельно с работой над текстурами я продолжал поэтапную разработку игры. Спустя два месяца продолжающейся работы я наконец видел свет в конце тоннеля. Но к сожалению сложилось так что почти на два месяца я был вынужден работу прекратить, так как навалились другие дела, плюс лето и в общем проект был поставлен на паузу. Позже в начале октября я вернулся к работе. Хотя я надеялся, что осталось совсем немного, по факту, передо мной стали появляться проблемы о которых до этого, по неопытности, я даже не подозревал.

    Во первых несмотря на то, что я сжал свои png текстуры с помощь этого онлайн сервиса: http://compresspng.com/ru/, это не привело к тому, что во время работы приложения они стали занимать меньше оперативки. Самое время для меня было узнать, что размер картинки не равен размеру требующейся для нее оперативной памяти.

    Во вторых я открыл чудесный мир утечек памяти, инструментов Xcode для их отслеживания и все «прелести» «strong reference cycle». После того как я прогнал свою игру через инструменты то обнаружил порядка 3-х с половиной тысяч утечек.

    В третьих я понял, что стандартное, для моей игры, разрешение текстуры для персонажа в 180×180 по сути дела избыточно велико и я вполне могу переделать все анимации на разрешение 117×117 без какого-либо ухудшения качества. Интересно что на момент создания анимаций я переживал, что не оставил исходников в разрешении 360×360. Так как размер картинки 2х у меня был 180х180 соответственно картинка 3х в моем понимании должна была быть 360х360, но по незнанию я их не сделал, и как оказалось слава Богу, так как в конечном итоге они не понадобились.

    В четвертых моя игра, когда были добавлены все анимации и объекты, стала ощутимо притормаживать. Тут требовалась большая работа по оптимизации и предзагрузки анимаций, звуков и прочего.

    В итоге я был вынужден полностью переделать созданные мной атласы анимаций (как оказалось не в последний раз), для того чтобы снизить потребление оперативной памяти. Сжать и обрезать все картинки уменьшив их в среднем на 30%. Отказаться за ненадобностью от картинок 3х ограничившись лишь 1х и 2х. Провести большую работу по оптимизации и устранению утечек памяти и пр. Плюсом ко всему требовалась большая работа по завершению самого игрового процесса, так как сначала все кажется готовым и нужно только последние штрихи добавить, но на добавление этих штрихов уходит масса времени. В общем и целом это потребовало еще более месяца, правда уже не очень плотной работы в среднем по 4-5 часов в день, так как возможности всецело заниматься проектом не было. И к началу ноября все было более-менее готово.

    Далее загрузка на App Store. Здесь, благодаря предыдущем опыту, никаких вопросов не было. За день я сделал скриншоты, простенькое описание, первую пришедшею в голову иконку (кстати как только у вас будет готовая иконка, ее лучше прогнать через этот сервис: https://makeappicon.com/, вы загружаете туда вашу иконку и он выдает вам ее обратно во всех необходимых размерах и разрешениях), и ключевые слова (их я подбирал с помощью сервиса https://sensortower.com/, сайт способен выдать вам тонны полезной информации о вашем либо о любом другом приложении, правда подписка стоит не дешево).

    И вот приложение доступно в AppStore. Ура, Ура, но не совсем.

    Ошибки, жуткие тормоза, пропавшие картинки, вылеты и пр. Вот что ждало меня при тестировании на разных Iphone-ах с разными версиями IOS. Тут же выяснилось, что несмотря на то что игра нормально работает на IOS 9, на 10-ки она работает с жуткими тормозами, и то и дело все время пропадает звук. Я был в «восторге» от такого подарка который несла в себе 10-ка, но деваться было некуда и я продолжил поиск и устранение ошибок. Мне в очередной раз пришлось полностью переделать систему размещения всех текстур в приложении, полностью переделать систему воспроизведения всех звуков и исправить немало дополнительных косяков. Особо теплые впечатления оставило необходимое, при работе с обновленным XCode, конвертирование кода со Swift 2.0 на Swift 2.3. Короче говоря я в очередной раз потратил больше месяца на доработку всего и только 13-го декабря, я смог загрузить более-менее рабочую версию. Хотя понятно, что это не последнее обновление.