Як створити програму для ios. Як створити успішну програму для iOS

Чи замислювалися ви про те, як створюються програми для iOS та OS X, якими мільйони власників iPhone, iPad та Mac користуються щодня? Знаємо, що багатьом спадало на думку зайнятися розробкою програм для Apple-пристроїв, проте новачки, як правило, лякаються складнощів у процесі навчання та самостійного штудування підручників.

Сама професія «розробник додатків для iOS та Mac» є універсальною: вона поєднує знання двох мов програмування — Objective C і Swift. Перший являє собою основну мову, побудований на базі мови C і має простий синтаксис. Без цієї мови не візьмуть працювати у студії мобільних додатків. А ось Swift відносно свіжа мова: Apple представила його в 2014 році, він інтегрований з C і працює швидше за Objective C і Python, дозволяючи створювати будь-які програми — як ігри, так і корисні програми.

Наразі фахівців, які знають Swift, одиниці, тому вони дуже потрібні на ринку. Достатньо зайти на будь-який HR-майданчик, щоб переглянути середню зарплату iOS-розробників — 100 тисяч рублів. Досвідчені програмісти мають заробітну плату кілька сотень тисяч рублів + різні бонуси від компанії.

Щоб отримати найкращий результат за невеликий час та гарантоване стажування, можна скористатися сервісом GeekBrains. Він включає і Objective C, і Swift, тобто по суті на виході ви отримуєте дві спеціальності замість однієї. Тлумачних iOS-програмістів компанії розбирають як гарячі пиріжки, тому без роботи вони не сидять і одного тижня.

Процес навчання є онлайн-трансляцією уроків, тому ви можете навчатися з будь-якої точки світу. Спеціально розроблена унікальна технологія дозволяє зробити дистанційне навчання ще зручнішим, ніж очне. Виконуєте домашні завдання, а якщо не змогли бути на уроці, переглядаєте його у записі. Ось як виглядає звичайний урок у GeekBrains:

Чому саме онлайн-курси? Вони мають очевидну перевагу в порівнянні з вишами за витраченим часом і при цьому дають можливість заробити практичний досвід та отримати гарантію результату. 7 із 10 студентів сервісу знаходять роботу ще в процесі навчання, оскільки GeekBrains надає гарантоване стажування. Крім того, студенти набувають безцінного досвіду командної розробки та кейс для портфоліо. Без останнього зараз майже влаштуватися на роботу.

Так, наприклад, може виглядати ваше резюме після навчання.

Наприкінці минулого місяця розробник Річард Фелікс опублікував цікаву , в якій постарався максимально доступно і лаконічно пояснити, як створити успішну програму для iOS. Зокрема, він поділився корисними порадами для розробників-початківців, власними спостереженнями в плані проектування програм та останніх тенденцій в App Store.

Річард на особистому досвіді знає всі тонкощі розробки, оскільки за останні кілька років створив низку популярних додатків для сучасних мобільних платформ та веб (Are My Sites Up, Stunning, Dispatch та інші).

Отже, в якийсь момент свого життя ви вирішили стати розробником та спробувати свої сили у створенні власної програми для iOS. Ви боїтеся, що витратите досить багато часу (і грошей) на розробку програми, якою ніхто не користуватиметься. Ви мрієте створити програму, яка активно продаватиметься через рік після релізу, але поняття не маєте, як це зробити. Наведені нижче поради допоможуть досягти поставлених цілей.

Знайдіть оригінальну ідею

На кожній презентації Apple анонсує мільйонні продажі iOS-пристроїв та фантастичні рекорди App Store. Керуючись цим фактом, багато розробників-початківців помилково припускають, що створення чергового банального поштового клієнта або фоторедактора дозволить їм заробити мільйони доларів (на їхню думку, для цього зовсім необов'язково підніматися на верхні рядки чартів магазину додатків Apple).

Однак, незважаючи на поширеність платформи iOS, це велика помилка. Звичайно, у такому разі ви заробите трохи грошей і окупите процес розробки, але щоб досягти по-справжньому значущогоУспіху, ваша програма повинна не тільки виконувати заявлені функції, але й мати якусь оригінальну особливість, своєрідну родзинку, яка відрізняла б її від сотень конкурентів і привертала увагу на загальному тлі.

Вивчіть цільову аудиторію

App Store пропонує будь-якому бажаючий справжній скарб у вигляді чартів популярних додатків, на основі яких можна визначитися з категорією програми, помітити для себе якісь моменти та знайти ту саму оригінальну ідею.

На даний момент можна виділити наступні три категорії найпопулярніших програм у App Store:


  • Альтернативні програми для системних програм iOS (покращені калькулятори, календарі, поштові клієнти, фоторедактори, списки завдань тощо). Вони мають популярність, оскільки багато людей стикаються з обмеженнями стандартних інструментів iPhone/iPad і хочуть розширити функціональність своїх пристроїв. Apple створює програми для масового споживача (вони прості в управлінні та інтуїтивно зрозумілі), через що страждають більш просунуті користувачі (якщо вам потрібно більше функцій, доведеться скористатися програмою стороннього розробника – і це нам на руку).

  • Ігри, причому різні. Особливо ті, які змушують ділитися додатком з друзями та колегами, що набагато цінніше за будь-який рекламний банер.

  • Програми з мінімальною кількістю функцій, які на перший погляд здаються настількиелементарними, що багато розробників відкидають подібні ідеї ще на стадії обдумування проекту. Типовий приклад - програма під назвою Over, за допомогою якої можна додавати витончені підписи на свої фотографії. Для просунутого користувача Over може здатися досить обмеженим інструментом, проте багатьох новачків такий «фоторедактор» повністю влаштовує, що підтверджується непоганими продажами. Дивно, як правильна реалізація єдиної заявленої функції може призвести до успішної програми.


Не вигадуйте велосипед і частіше оновлюйтесь

Багато популярних програм для iOS досягли свого успіху завдяки наступній особливості - вони дозволяють користувачеві швидко виконати якусь дію (обробити фотографію, наприклад), але при цьому не навантажують його зайвими функціями та кнопками. Немає необхідності винаходити велосипед і створювати фоторедактор з функцією відтворення музики.

Поставте себе на місце користувача, спробуйте зосередитись на функціях, які будуть справдікорисні. Не обов'язково в першій же версії реалізовувати всі ваші задуми, залиште другорядні ідеї на майбутні оновлення програми. Після релізу програми в App Store у вас буде багато відгуків користувачів, на основі яких можна зробити висновки щодо необхідності впроваджувати ту чи іншу функцію.

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

Намалюйте барвисті значок

Красива іконка - запорука успіху будь-якої програми ( так вже й будь-кого? - Прим.ред.). Тримаючи у своїх руках iPhone або iPad, користувач завжди хоче бачити на своєму дисплеї якісну графіку та «соковитий» дизайн, який, як заведено говорити, тішить око. Люди частіше звертатимуть увагу на програму, якщо дизайнерський відділ витратить достатньо часу та зусиль на створення привабливої ​​піктограми бренду. Зрештою, це має допомогти вашому додатку досягти вершини чартів App Store.

На спеціалізованих сайтах начебто

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

Ми розберемо весь цей процес покроково, щоб кожен міг прочитати цей матеріал та самостійно виконати розробку.

Крок перший. Придумайте ідею та назву

Звичайно ж, із самого початку необхідно придумати гарну ідею, яка могла б користуватися популярністю. Додаток має бути простим, функціональним та потрібним користувачам. Ось кілька порад, які допоможуть вам знайти чудову ідею та втілити її в життя:

1 Зайдіть в AppStore і перегляньте представлені там програми.Можливо, вам щось спаде на думку.

2 Також подивіться на список своїх програм(Встановлених). Ймовірно, що не всі з них подобаються вам і хотілося б додати до деяких функцію. Це і буде ідея для вашого творіння!

3 Подивіться на програми своїх друзів з тією ж метою.

Важливо!Наприкінці роздумів над ідеєю у вас має бути чітке розуміння того, яку функцію виконуватиме ваша програма.

Щодо назви, то до цього питання також варто поставитися дуже серйозно. Для початку подивіться на самі та їхні назви. Зайдіть на apple.com/ru/itunes/ для цього. Обов'язково перегляньте розділ безкоштовних та платних.

Експерти виділяють кілька порад щодо того, якою має бути назва, а конкретно:

  • довжина близько 10 символів (не набагато більше, можна менше, але, знову ж таки, не надто);
  • бажано англійську мову (в інтерфейсі, до речі, вона теж має бути, щоб розширити споживчу аудиторію);
  • два слова у назві;
  • одне слово має повністю відбивати призначення;
  • друге слово має бути описом першого.

Крок четвертий. Розробка концепції

На першому кроці ви вже прийняли ідею та назву майбутньої програми. Тепер варто зробити те, що дозволить вам розпочати безпосередньо розробку. Йдеться про концепцію. В цьому поняття включається таке:

  • Цільова аудиторія.Обов'язково подумайте, хто буде вашим користувачем. Це може бути молода, цілеспрямована і знайома з сучасними гаджетами молода людина. З іншого боку, це може бути літній користувач, який далекий від технологій. Від цього залежатимуть решта двох складових концепції.

  • функціонал.Чітко перерахуйте всі функції, які виконуватиме програма.
  • Дизайн.Накидайте, нехай навіть на аркуш паперу, те, як виглядатиме програма. Причому ви повинні чітко розуміти, що буде являти собою стартовий екран, які на ньому будуть кнопки, і що буде на додаткових сторінках. Крім того, додайте кнопки згідно зі списком функцій. Також розробте дизайн всіх кнопок.

Коли всі нариси у вас є, можна приступати до кодингу!

Крок п'ятий. Кодінг

Ось тепер відкривайте Xcode та виконуйте наступні етапи створення ПЗ на iOS:

1 На стартовому екрані в меню зліва натисніть "Application"(відкрийте цей розділ) і виберіть «Empty Application». Натисніть "Next". Далі введіть свої дані, а у полі ідентифікатора розробника (дається Apple) вкажіть «example», а в полі префікса класу вкажіть "XYZ".

2 Далі оберете "File"і у списку, що випадає "New". Далі послідовно натисніть "User Interface", "Storyboard"та кнопку "Next". У меню пристроїв виберіть і введіть у полі імені «Main». Збережіть цей файл у тій самій папці, що й основний проект. Після цього у дереві проекту (ліворуч) з'явиться файл Main.storyboard. Це, як ви вже могли зрозуміти, візуальне подання всіх екранів вашої програми. Надалі ви редагуватимете саме його.

3 Тепер потрібно зробити так, щоб під час запуску програми відкривався саме той екран, який ви створите у Storyboard. Для цього в дереві папок зліва послідовно виберете свій проект, "Targets", "General", «Deployment Info». Потім біля напису "Main Interface"ви берете «Main»Як на малюнку 8, - саме так ми назвали наш екран на попередньому етапі.

Мал. 9. Призначення створеного екрану головним у Storyboard

4 Тепер, власне, потрібно створити цей головний екран, який відкриється першим при запуску. Для цього в дереві зліва натисніть на "storyboard" один раз.В основному вікні відкриється пусте вікно. Унизу праворуч натисніть на іконку у вигляді куба, це бібліотека об'єктів, які можна внести на екран. Тепер праворуч знайдіть "View Controller"і перетягніть курсором миші на порожнє поле. Відобразиться об'єкт прямокутного вигляду. Власне, туди можна додавати всі елементи.

5 Тепер ви можете додавати інші об'єкти з бібліотеки. Це можуть бути текстові поля, поля введення та інші елементи. Якщо натиснути на них двічі, з'явиться можливість змінювати їх атрибути та властивості.Власне, так само можна написати якийсь код для реакції на клік. Втім, якщо ви дивилися відеоуроки з Objective-C, то знаєте, які елементи вам потрібні і як їх додати.

6 Якщо вам потрібно додати ще екран, то зробіть це так само, як і раніше – перемістіть на порожнє місце об'єкт "View Controller". Далі можна буде також переміщати різні об'єкти на нього.

7 Тепер потрібно зробити так, щоб користувач міг переміщатися між цими екранами за допомогою свайпаабо шляхом натискання на відповідне посилання. Для цього існує об'єкт під назвою "Navigation Controller". Перемістіть його на головний екран. Далі натисніть на "Editor", потім Embed Inта на вищезгаданий об'єкт. На головному екрані з'явиться сіра панель. Це означає, що до нього додана так звана панель навігації.

8 Щоб додати кнопку переміщення екранами, існує об'єкт "Bar Button". Це кнопка, якщо сказати простіше. Перемістіть її на панель навігації та встановіть відповідні властивості.

Так само додайте й інші об'єкти, і навіть задайте їм необхідні характеристики.Сильно заглиблюватися в тому, як виконати кодинг програми, ми не будемо, оскільки це дуже велика тема. Тим більше, що якщо ви ознайомитеся з вищевказаним матеріалом, то знатимете про це необхідну інформацію. Але вищезазначені етапи кодингу є стартом подальших розробок.

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

Мене сильно підвело відсутність навичок програмування, що дозволило розробникам викручувати руки та наживатися на незнанні. Тому я вирішив, що треба освоїти кодинг самому, тому що займатися створенням додатків і не вміти програмувати це означає потрапляти в дуже серйозну залежність, про яку розробники знають і нерідко користуються.

Навчання

Загалом рішення було ухвалено і у січні 2016 року я розпочав роботу. За спеціальністю я прикладний інформатик, але за фактом, крім самих базових навичок роботи з Pascal, з університету я нічого так і не виніс, а справа була років п'ять-шість тому. У мене, так само був невеликий досвід роботи з HTML і CSS, при створенні простеньких сайтів, який втім не сильно допомагав у створенні додатків. Тому я почав із самих азів. З давнього та майже начисто забутого Pascal. Завантажив редактор "Free Pascal" http://freepascal.ru/ знайшов підручник, почав з простеньких програмок з додавання і віднімання. Загалом пішло близько двох тижнів занять, по дві – три години на день, щоб освіжити пам'ять.

Поглиблене вивчення Pascal передбачало більше практики, навіщо я знайшов задачник Абрамяна по Pascal з 1000 завдань (PDF).

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

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

Це навчальний сервіс, який сильно допоміг мені у освоєнні HTML та CSS. Передплата коштує від 25 $ на місяць. Але як на мене, це виправдано. На сервісі представлені навчальні матеріали з різних мов програмування включаючи Java, C#, Python, Swift та багато інших. Навчання відбувається поетапно, від відео до відео з різними вставками практичних завдань.

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

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

Так пройшов ще один місяць щоденних занять у середньому по 4-5 годин на день. З одного боку можливо логічніше було б рухатися поетапно, скажімо, спочатку розібратися з Pascal, потім з Cі і далі приступити до Objective-C, але за фактом, саме спроба охопити все, дозволила зекономити купу часу, так як я все більше став приділяти увагу не вирішенню завдань на Pascal і Cі, а безпосередньо створенню додатків із програми навчання Tree House. Це було куди цікавіше і по суті показувало, що завдання із задачника Абрамяна і матеріали з Книги Кернігана і Рітчі по Сі - хороші для розуміння основ, але в цілому досить далекі від реального процесу створення додатків. У результаті до кінця третього місяця мого навчання я перестав практикувати Pascal і Ci. Натомість я зосередився на практичних матеріалах 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». Після того як я прогнав свою гру через інструменти, то виявив близько трьох з половиною тисяч витоків.

По-третє, я зрозумів, що стандартний, для моєї гри, дозвіл текстури для персонажа в 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, на десятки вона працює з моторошними гальмами, і постійно весь час зникає звук. Я був у «захваті» від такого подарунка який несла в собі десятка, але подітися було нікуди і я продовжив пошук та усунення помилок. Мені вкотре довелося повністю переробити систему розміщення всіх текстур у додатку, повністю переробити систему відтворення всіх звуків та виправити чимало додаткових одвірків. Особливо теплі враження залишило необхідне при роботі з оновленим XCode конвертування коду з Swift 2.0 на Swift 2.3. Коротше кажучи, я вкотре витратив більше місяця на доопрацювання всього і лише 13 грудня, я зміг завантажити більш-менш робочу версію. Хоча зрозуміло, що це не останнє оновлення.

Без фінансових вкладень та спеціальних знань.

Ось найпростіша інструкція, як створити елементарний додаток iOS і випробувати його на своєму пристрої. Відштовхуючись від неї ви зможете далі заглибитись у тему та створювати реально корисні програми.

Примітка для користувачів Windows:Щоб створювати програми для iOS, вам необхідно встановити OS X на віртуальній машині (VirtualBox, VMware). Це аж ніяк не простий і для його здійснення потрібна окрема інструкція.

1. Ідемо в App Store і встановлюємо середовище розробки XCode:

Якщо у вас вже стоїть XCode, необхідно оновити його.

2. Запускаємо xCode та вибираємо пункт меню File -> New -> Project:

3. Вибираємо платформу та тип програми:

4. Вказуємо інформацію про проект. Зверніть увагу, що ми вибрали тип програми «Universal»:

5. Натискаємо на кнопку New Folderі вказуємо ім'я папки, в якій зберігатимемо файли програми:

6. Знімаємо галочку з чекбоксу Create Git Repository та натискаємо кнопку Create. В результаті ви повинні потрапити на стартовий екран роботи над програмою:

7. Натискаємо на пункт Main.storyboardу правому меню, перетягуємо на основне поле елемент Labelі додаємо до нього текст Hello_world:

8. Тепер потрібно зробити іконку для програми. Підбираємо картинку та завантажуємо її на mapappicon.com :

9. Чекаємо коли веб-додаток закінчить роботу та вказуємо свою адресу електронної пошти для отримання архіву з іконками:

10. Повертаємось у XCode і в лівому меню вибираємо розділ Assets.xassets:

11. Відкриваємо архів з пошти та перетягуємо іконки звідти на робочий простір XCode:

12. Вибираємо один із симуляторів пристроїв, натискаємо на кнопку запуску програми (чорний трикутник) і вмикаємо на своєму Mac Developer Mode:

13. Повторюємо спробу запуску. Чекаємо, коли на симуляторі завантажиться iOS:

14. Переконуємося, що програма працює:

Дивимося готовий додаток на пристрої

Тепер можна переглянути, як працює програма на пристрої. Перед виконанням інструкції переконайтеся, що у вас нові версії XCode та iOS.

1. Йдемо в xCode -> Preferencies -> Accountsі додаємо свій Apple ID:

2. Підключаємо iOS-пристрій до комп'ютера:

3. Вибираємо потрібний пристрій у списку та натискаємо на кнопку запуску. Чекаємо на деякий час.

4. Якщо вийшло повідомлення про проблеми з безпекою, то на iOS-пристрої йдемо в Налаштування -> Основні -> Управління пристроємі дозволяємо запуск програм від розробника з вашим Apple ID:

5. Йдемо на робочий стіл і знаходимо іконку нової програми:

6. Запускаємо:

7. Від'єднуємо пристрій від комп'ютера. Тепер програмою можна користуватися.

Що робити, якщо хочеш більше?

За допомогою методу наукового тику та Google можна розширити вищенаведену послідовність дій та створити більш функціональну програму. Але використовувати його можна лише на своїх пристроях.

Адже Apple висуває дуже високі вимоги до додатків. App Store Review Guidelines включає 29 пунктів і більше сотні підпунктів. Для того, щоб додаток їм відповідав та був прийнятий для публікації в магазині, розробнику потрібен великий обсяг технічних знань.

Якщо хочете створювати якісні програми для iOS, призначені для масового використання,