Как сделать игру на свифт

Добавил пользователь Skiper
Обновлено: 19.09.2024

Библиотека программиста

Библиотека программиста

Библиотека программиста запись закреплена

Создание игры с помощью Xcode на Swift

1. Введение
2. MVC Design Pattern
3. Настройка проекта
4. Пользовательские классы
5. Protocol & Delegates
6. Отображение карт
7. Игровая логика
8. Организация Xcode проекта
9. Отладка и устранение ошибок в Xcode
10. Окончание игры. Состояние выигрыша
11. Звук

Платформа Apple пользуется огромной популярностью – это привлекает начинающих разработчиков мобильных игр. Разбираемся, какие инструменты придется изучить новичку, чтобы создать очередной хит для AppStore.

🍏 Разработка мобильных игр для iOS: с чего начать, что изучать и какие инструменты использовать

iOS – одна из самых популярных операционных систем в мире. Устанавливаемая только на устройствах Apple, она практически лишена проблем с совместимостью. Магазином AppStore пользуется более 100 млн. пользователей в сутки – такая посещаемость дает начинающему разработчику игр серьезную мотивацию для создания приложения. В небольшом обзоре мы разберемся с основами разработки игр для этой операционной системой. Поехали.

Что изучать, если ничего не знаешь?

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

Objective-C был создан в начале 80-х годов в компании NeXT, основанной одним из учредителей Apple – Стивом Джобсом. Язык первоначально использовался для операционной системы NeXTSTEP, от которой, впоследствии, произошли OS X и iOS.

Его применяли для разработки всех программных продуктов Apple, пока не появился Swift, имеющий ряд преимуществ, выводящих его на лидирующие позиции в программировании для iOS.

Вот самые важные из них:

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

Тем не менее, Objective-C до сих пор используют многие ИТ-компании. В приложения на этом языке вложено немало средств, поэтому нет смысла прекращать его поддержку. Если вы только начинаете, уделите больше внимание Swift – для новых проектов он более перспективен.

Xcode

🍏 Разработка мобильных игр для iOS: с чего начать, что изучать и какие инструменты использовать

IDE от Apple используется для написания iOS-приложений. Xcode – это среда разработки с удобным графическим интерфейсом, заточенная под языки программирования Objective-C и Swift. Она включает отладчик, систему контроля версий и управлением устройствами, iPhone Simulator, инструменты профилирования, Interface Builder и многое другое.

Минимальные системные требования для Xcode:

  • Mac с macOS 11 и выше.
  • ОЗУ от 4 ГБ.
  • Не менее 8 ГБ свободного места на диске.
  • Mac, MacBook, iMac или Mac mini 2013-2015 или новее.

Политика Apple в отношении загрузки приложений в App Store

Жесткие требования корпорации неоднократно заставляли разработчиков менять подход к созданию продуктов. Чтобы не потратить время напрасно, ознакомьтесь с рекомендациями Apple в отношении загружаемых на App Store приложений. Также стоит изучить список распространенных причин, по которым приложения отклоняются модераторами. Туда входят сбои, неработающие ссылки, недобросовестная реклама и неполная информация для пользователя. Также может блокироваться политический контент и контент для взрослых.

Разработчики часто ругают Apple за отсутствие гибкости. Бесконечные списки требований создают им проблемы, зато пользователи получают более качественные и более безопасные приложения. Не абсолютно безопасные (единичные случаи попадания вредоносного кода в AppStore известны) конечно, но в магазине Apple нет такого количества зловредов как в Google Play. Самое главное – аудитория AppStore гораздо охотнее расстается с деньгами, поэтому приложение для iOS намного проще монетизировать.

Помимо требований к техническим деталям есть набор рекомендаций по внешнему виду. Конечно, соответствие приложений одному стандарту не всегда означает хороший дизайн, но тут ничего не попишешь. Чтобы научиться грамотно проектировать интерфейс, посетите страницу Apple Human Interface Guidelines . Чтобы немного упростить это массивное руководство, из него выделили базовый набор правил (что можно, а что нельзя).

Корпорация Apple довольно консервативна в процессе проверки приложений, так что если вы сделаете что-то рискованное – это будет отклонено. Еще Apple не позволит вам интегрировать сторонние библиотеки в игру – учитесь пользоваться существующими средствами разработки.

Одна из проблем в iOS-разработке – медленная загрузка программы и потеря производительности. Чтобы сэкономить ресурс, избегайте чрезмерного использования функции загрузки png-файлов в GLSprite Demo, а при рисовании обрезайте спрайты более точно и плотно. Ограничивайте себя и не раздувайте приложение. Помните о том, что пользователи не любят долго ждать.

Удобные игровые платформы и инструменты для создания мобильных игр

🍏 Разработка мобильных игр для iOS: с чего начать, что изучать и какие инструменты использовать

Помимо двух наиболее популярных движков ( Unity и Unreal engine 4 ) существует ряд неплохих платформ для разработки игр для iOS:

ios_Deep_28.4-5020-79b081.jpg

Осваивать программирование лучше всего на практике. В этой статье мы пошагово создадим простую игру с игральными костями, а также оптимизируем её под любые диагонали экранов. Для работы вам потребуется iMac или Macbook с предустановленным Xcode. Писать приложение для iOS будем на Swift.

Создание проекта

1_1_1-20219-ec6cb8.jpg

Далее просто вводим желаемые значения:

2_1_1-20219-c7992b.jpg

3_1_e1499895131746_1-20219-407853.jpg

Теперь можно переходить к следующему этапу.

Интерфейс пользователя

4_1_1-20219-012d23.jpg

Далее находим элемент Label, а потом перетаскиваем его на Main.Storyboard. В результате соданный вами проект должен выглядеть приблизительно следующим образом:

5_1_e1499895226692_1024x719_1-20219-2692e7.jpg

6_2_1-20219-1cf381.jpg

Далее добавим в Main.Storyboard два элемента из Object, а конкретнее, Image View. После того, как добавим их на главный экран, их нужно будет сделать квадратными. В результате получим:

7_1_1-20219-7d371f.jpg

Останется добавить кнопку. Чтобы это сделать, найдём элемент Button в правом нижнем углу и перетянем его на главный экран.

8_2_1-20219-a220fa.jpg

9_1_1-20219-f5316f.jpg

Используем функцию Auto Layout

10_1_1-20219-19e2b1.jpg

11_1_1-20219-b3b541.jpg

12_1_1024x346_1-20219-6aa8d9.jpg

13_1_1-20219-79f818.jpg

Осталось выбрать Stackview для всех элементов, а потом в поле Spacing установить значение 50.

Разумеется, это ещё не всё, ведь для работы приложения потребуется написать код.

Подключаем элементы к коду

14_1_1024x544_1-20219-084f37.jpg

Добавляем графику

Теперь пришёл черёд для графики. Давайте скачаем архив с изображениями и добавим их в Assets.xcassets. Откроем архив и перетянем все элементы в проект за исключением папки icon.

15_1_1-20219-1a784b.jpg

По итогу Assets.xcassets должен выглядеть следующим образом:

16_2_1024x563_1-20219-f791ba.jpg

Вернёмся к экрану Main.Storyboard и выберем для каждого ImageView любое изображение игральных костей. Это следует делать в Attributes Inspector:

17_1_1024x501_1-20219-0ed940.jpg

Для добавления фонового изображения вставляем дополнительный ImageView и устанавливаем параметры, которые указаны на скриншоте:

18_1_1-20219-1f4ebe.jpg

19_1_1-20219-cc85c1.jpg

Дабы сделать текст читабельнее, изменим цвет и увеличим шрифт. Давайте выберем надпись, установим белый цвет и увеличим шрифт.

20_2_1-20219-da1aa1.jpg

Кроме того, стоит выбрать изображение для кнопки.

21_1_1-20219-0a29f0.jpg

Пишем код

Вот мы и дошли до кода. Откроем файл ViewController.swift и вставим в функцию кнопки следующее:

В результате мы программно поменяем значения элементов. Если мы запустим проект и нажмём на кнопки, то увидим эти значения на экране:

22_1-20219-a50f20.jpg

Завершающий шаг — написание функции, которая будет случайно выбирать значения для наших игральных костей. Также код станет выводить сумму чисел на экране. Создадим функцию rollDice() , а потом поместим в неё код:

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


Тейлан Пинс, Python и iOS разработчик в hipolabs, написал в своем блоге о том, почему Swift Playgrounds не является идеальным приложением. Мы публикуем русский перевод его статьи.

taylan-pince-2

Apple на позапрошлой неделе выступила со своей большой конференцией и на ней они в самом конце презентации показали на первый взгляд простой, но очень мощный продукт — Swift Playgrounds. Это приложение для iPad, которое должно упростить для детей и подростков изучение программирования и основ Swift.

Как уже отметили многие эксперты, это может революционизировать изучение программирования детьми, и это прекрасно. Приложение Swift Playgrounds выглядит и ощущается фантастически, много мыслей и внимания уделено каждому уроку и шаблону. Оно будет иметь большое значение для зарождения искры в молодых умах. Тем не менее, я не могу не задаться вопросом – правильный ли путь акцентировать внимание на кодинге, а не на креативности. Чтобы правильно объяснить, что я имею в виду, мы должны совершить путешествие во времени на несколько десятилетий назад.

Давным-давно: Гипер карточки

Впервые я познакомился с моим первым Mac в 1991 году, когда мне было 8 лет. Это был Macintosh Classic, один из первых доступных Mac, предназначенных для простой обработки текстов и простого образовательного ПО. Моей маме он нужен был для завершения написания ее докторской диссертации, но я сразу же заимел на него собственные планы, такие как игра в Crystal Quest, например!

0

Первые пару лет меня полностью поглотили игры, такие как Prince of Persia, Dark Castle и Adventure. Отсутствие интернета значило, что получение новых игр было практически невозможным, так что вскоре я начал исследовать возможности создания собственных. Я помню зарисовки головоломной приключенческой игры на бумаге и руководство своими друзьями в прохождении этой аналоговой игры.

Потом я обнаружил HyperCard.

1

Созданные легендарным Биллом Аткинсоном в 1987 году, HyperCard были прото-инструментом разработки, которые объединяли базовые возможности рисования и создания пользовательского интерфейса с интерактивностью и хранением данных. На первый взгляд они не были очевидными, но на самом деле были очень мощными. Вы могли создавать игры, специально программное обеспечение, презентации или просто глупые демки. Для 10-летнего ребенка, одержимого создание приключенческих игр, это была золотая жила.

3

Творчество против Потребления

Итак, почему мы до сих пор говорим о программном обеспечении, которое было создано почти 30 лет назад? Для меня сила HyperCard была в нескольких вещах:

  • Пустой холст: HyperCard не пытались учить вас программированию. Они вообще не пытались ничего сделать. Они просто давали вам пустой холст, на котором вы могли сделать все, что хотите. У этого есть два преимущества: Вам нужно упорно трудиться, чтобы учиться, и вам надо использовать ваше воображение и креативность, чтобы искать решения и создавать вещи, которые вы хотите.
  • Обучение на примерах: Как в первые дни интернета, HyperCard позволяли вам изучить существующий стек, научиться у людей, которые сделали это до вас. В моем опыте это был лучший способ учебы, так как он заставлял вас деконструировать существующий софт и создавать новые вещи на его основе.
  • Просто поделиться: Вы могли поделиться HyperCard с любым человеком очень просто. Если у вас был Mac, вы могли запустить HyperCard. Не надо было ничего подписывать, настраивать.

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

Еще одна большая проблема в том, что Swift Playground не дает детям чистый холст. Он слишком сфокусирован на том, чтобы держать за руки и не пускать. Когда вы видите прекрасный отрендеренный плавающий остров с милыми персонажами, прыгающими по нему, то он становится вашим якорем. Вы немедленно ограничиваете себя тем, что представлено вам, вы потребляете вместо того, что бы придумывать новые пути, выдумывать новые миры.

Можете ли мы ожидать, что дети начнут создавать новые Monument Valley в приложении?

4

Можно ли научить творчеству?

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

Читайте также: