На прошлом занятии мы разобрались с тем, что хотим сделать, и создали стартовый проект. Теперь самое время разобраться, что же нам предлагает Apple, в качестве старта для игры:
1. DiceX - сам файл проекта, который содержит в себе кучу настроек, большинство из которых, никогда не пригодятся в работе. Мы не будем трогать этот файл без необходимости.
2. AppDelegate.swift - стартовая точка, откуда начнет выполняться приложение. В файле AppDelegate мы можем отследить изменение состояния приложения: запуск, завершение, переход в фоновый режим, выход из фонового режима и другие.
3. art.scnassets - это каталог 3д моделей, сцен и текстур. Именно в нём мы будем хранить вообще всё, что связано с 3д и используется в 3д сцене (ну и сами сцены тоже). Наличие scn assets отличает обычный генерируемый проект, от игрового. По умолчанию в этом каталоге хранится модель космического корабля (ship.scn) и текстура (texture.png) для него же.
4. GameViewController.swift - первый экран авто-созданного проекта. Если кому интересно там подгружается сцена с кораблём, ему задаётся постоянное вращение и отлавливаются клики по кораблю, чтобы подсветить его. Этот файл мы вскоре удалим и создадим свой с чистого листа.
5. Main.storyboard - здесь показывается визуальная сетка всех экранов проекта и переходы между ними. У нас будет всего один экран, поэтому смотреть там особо нечего.
6. Assets.xcassets - здесь хранятся картинки, которые мы будем использовать в интерфейсе (не для 3д сцены).
7. LaunchScreen.storyboard - отдельный storyboard всего для одного экрана - стартового, который показывается при запуске. Этот механизм ввели не так давно, с целью уменьшения размера приложений. Раньше разработчикам приложений нужно было прикреплять картинки разных размеров для каждого устройства, чтобы показать их при старте. Это могло занять до 10-15мб места. Сейчас же достаточно одной картинки, которая будет использоваться везде.
8. Info.plist - файл с некоторыми важными настройками проекта. Позже и их разберём, там есть такие важные пункты как: название приложения, язык, поддерживаемые ориентации устройств и многие другие.
Подготовка
Сегодня мы добавим сцену для кубиков и сами кубики. И стандартную физику для расчёта столкновений и падения костей. Для этого нам потребуются вспомогательные материалы: текстура пола, текстура и модель кубика. Скачать их можно архивом по ссылке: https://yadi.sk/d/FIhZBD3U36SS9n.
У меня появилась проблема...
Однажды, собравшись большой шумной компанией, состоялся неразрешимый спор. Мы решили присудить победу случайным образом одному из участников спора. Но как выбрать независимо и беспристрастно выигравшую сторону? Можно вытягивать спички, можно сыграть на камень-ножницы-бумага, а можно, например, бросить кости. Именно этот вариант и оказался в нашем случае предпочтительным, но увы - игральных костей ни у кого с собой не оказалось :) И вот она идея: было бы неплохо сделать приложение, которое имитирует бросок игральных костей. Далее, в ходе обсуждения выяснилось, что такое решение может быть интересно и любителям настольных игр. Зачем носить с собой пачку игральных костей, если можно запустить приложение и всё готово? Звучит удобно! И мы начали думать, как можно реализовать данную идею, в виде приложения для смартфона.
С чего начинается разработка любого проекта?
Появляется идея - а что если сделать решение для проблемы Х, ведь наверное, с такой ситуацией могли столкнуться и другие люди, и могут сталкиваться в будущем? Для начала, проверяем идею на наличие уже готовых приложений в AppStore/Google Play и просто в поиске. Это хорошая практика - сначала провести анализ имеющихся решений, далее определить почему ни одно из них мне не подходит, и наконец выявить ряд или хотя бы одно ключевое отличие нашего сверхнового решения, от уже имеющихся. Если же варианты не были найдены, увы, скорее всего это невыгодно или технически не реализуемо, шансы что это полезно и круто и до сих пор никто не сделал - очень близки к 0. В данный момент нам не интересно есть ли конкуренты, мы просто хотим научиться чему-то новому, и поэтому не думаем о том, как заработать на данном проекте или как выделиться среди аналогов - эти вопросы весьма важные в реальном проекте, но выходят за пределы данной серии уроков.
Проектирование проектирования
Кто бы что не говорил про разработку приложений, но самый сложный и ответственный этап - это проектирование. Его сложность возрастает экспоненциально, с ростом сложности проекта. В некоторых случаях, даже нецелесообразно проектировать всю систему целиком, потому что на планирование тогда уйдет неоправданно много времени, а в ходе разработки и тестирования может всё поменяться, что означает много времени может пропасть в пустую. Именно из-за качественного проектирования, большие компании выделяют ну очень много времени на разработку казалось бы банальных проектов. Именно из-за некачественного проектирования возникает 90% проблем в процессе разработки. Короче, это очень важный этап. В нашем случае, приложение довольно простое и мы быстро всё спроектируем.
Это и есть основа для будущего проекта. Пока не очень похоже на симулятор костей, да? Но это не страшно, в следующей части я покажу как быстро добиться первых результатов и уже совершать броски костей!
На сегодня всё, всего хорошего и спасибо за чтение :)
Подписаться на продолжение курса
comments powered by HyperComments
Made on
Tilda