Разработка игрового приложения на Android

Общая характеристика и внутренняя структура, компоненты и основные требования, предъявляемые к разрабатываемому приложению. Выбор языка программирования, среды разработки, редактора трехмерной графики. Процедуры, функции и алгоритмы работы приложения.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 24.06.2018
Размер файла 4,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

path[] temp = concatArrays (iStart, right.points);

float tlen = iStart.getLength () + right.length;

return new Route (temp, tlen);

}

}

Рисунок 29. Фрагмент исходного кода модуля Navigator (продолжение)

// Иначе проверяем, найден ли маршрут где-нибудь:

if (leftFound) {

found = leftFound;

path[] temp = concatArrays (iStart, left.points);

float tlen = iStart.getLength () + left.length;

return new Route (temp, tlen);

}

if (rightFound) {

found = rightFound;

path[] temp = concatArrays (iStart, right.points);

float tlen = iStart.getLength () + right.length;

return new Route (temp, tlen);

}

found = false;

return new Route ();

}

Рисунок 30. Фрагмент исходного кода модуля Navigator (конец)

Всего в ходе работы над проектом было написано 30 основных и вспомогательных модулей, общий объем программной части проекта - 4655 строк кода. Фрагменты некоторых модулей приведены в приложении.

6. Тестирование приложения

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

1. Тестирование слаженной работы разных модулей - трудоемкая работа, но при этом именно их взаимодействие друг с другом необходимо для корректного выполнения игровых сценариев.

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

3. Количество вариантов развития событий стремится к бесконечности. В игре используется физическая симуляция, которая влияет на передвижение грузовиков. У грузовиков меняется вес в зависимости от тяжести груза, что определяется случайным образом. Трафик на дорогах возникает также случайным образом, что вкупе с различными вариантами поведения «автоматических водителей» (которые могут обгонять или не обгонять трафик, останавливаться или не останавливаться на красный сигнал светофора, развивать или не развивать полную скорость) и совершенно непредсказуемым поведением самого игрока создает бесконечное количество гипотетических ситуаций на дорогах.

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

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

Исходя из этих фактов, при тестировании было решено придерживаться следующего:

1. Проводить тестирование отдельных модулей, выводя их переменные в окно «Inspector» движка Unity, и вручную изменяя их значения.

2. Выводить итоговые и промежуточные значения в окно «Debug», отслеживая работу всех модулей.

3. Оставлять в коде модулей фрагменты для отладки.

4. Выводить в окно «Scene» вспомогательные линии и контуры для ясности работы некоторых алгоритмов.

5. Оценивать субъективные критерии, основываясь на собственном опыте и вкусе.

6. Привлечь к тестированию аудиторию фанатов оригинальной игры и организовать сбор отзывов.

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

В качестве примера такой функции приведена функция getOrientationInNode модуля path. Этот модуль превращает игровой объект, к которому он применен - в игровой путь, а все его дочерние игровые объекты - в точки («ноды») этого пути. В качестве входного параметра функция использует порядковый номер точки, а выходными данными являются координаты (тип данных Quaternion), в соответствии с которыми нужно ориентировать автомобиль, который должен быть загружен в эту точку.

public Quaternion getOrientationInNode (int nodeIndex) {

if (nodes. Count == 0)

findNodes ();

try {

if (nodeIndex == -1)

return new Quaternion ();

if (nodeIndex!= nodes. Count-1) {

Vector3 relativePos = nodes [nodeIndex + 1].position - nodes [nodeIndex].position;

Quaternion q = Quaternion. LookRotation (relativePos);

return q;

} else if (nodeIndex!= 0) {

Vector3 relativePos = nodes [nodeIndex].position - nodes [nodeIndex-1].position;

Quaternion q = Quaternion. LookRotation (relativePos);

return q;

} else

return new Quaternion ();

} catch {

return new Quaternion ();

}

}

Рисунок 31. Исходный код функции getOrientationInNode модуля path

Таблица 3. Результаты тестирования функции getOrientationInNode модуля path

Критерий

nodeIndex

Ожидаемый результат

Результат

Любая некрайняя точка

3

Любая ненулевая ориентация

(25.2, 36.1, 0.04, 12.0)

Крайняя точка

0

Любая ненулевая ориентация

(25.2, 66.2, -0.81, 13.9)

Крайняя точка

25

Любая ненулевая ориентация

(84.1, 44.2, -0,05, 35.0)

Предпоследняя точка

24

Ориентация, совпадающая с крайней точкой

(84.1, 44.2, -0,05, 35.0)

Отрицательный индекс

-1

Пустой кватернион

(0.0, 0.0, 0.0, 0.0)

Отрицательный индекс

-2

Пустой кватернион

(0.0, 0.0, 0.0, 0.0)

Индекс больше количества точек в пути

26

Пустой кватернион

(0.0, 0.0, 0.0, 0.0)

Очень большой индекс

1e22

Пустой кватернион

(0.0, 0.0, 0.0, 0.0)

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

В качестве примера приведены функция Steer модуля AIDrive и функция steer модуля carScript, совместная работа которых заключалась в направлении автоматически управляемой машины к точке (рисунки 32, 33 и 34, таблица 4).

 // -

void Steer() {

Vector3 relativeVector = carTransform. InverseTransformPoint (nodePosition);

if (steeringTimePart > steeringTime) {

steering = (relativeVector.x / relativeVector.magnitude) * 90f;

prevSteering = steering;

} else {

steeringTimePart += Time.deltaTime;

steering = ((relativeVector.x / relativeVector.magnitude) * 90f) * (steeringTimePart / steeringTime)

+ prevSteering * ((steeringTime - steeringTimePart) / steeringTime);

}

carScript.steer (steering);

}

Рисунок 32. Исходный код функции Steer модуля AIDrive

public void steer (float input) {

if (overrideSteering)

steering = input;

}

Рисунок 33. Исходный код функции steer модуля carScript

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

После пробного запуска приложение было выложено для скачивания на открытые ресурсы, и была создана виртуальная анкета с вопросами и формами для отзывов. В социальной сети «Вконтакте», в сообществе[31], посвященном оригинальной игре «Дальнобойщики-2», была сделана запись со ссылками на приложение и приглашение заполнить анкету после игры.

Таблица 4. Результаты тестирования автоматического поворота автомобиля

Критерий

Ожидаемый результат

Результат

Цель близко, спереди и сбоку от грузовика, дальше радиуса поворота

Грузовик доезжает до цели

Верно

Цель близко, спереди и сбоку от грузовика, ближе радиуса поворота

Грузовик не может достать до цели

Верно, грузовик едет по кругу, не в силах достать цель

Цель близко, сзади и сбоку от грузовика, дальше радиуса поворота

Грузовик делает круг и достигает цели

Верно

Цель близко, сзади и сбоку от грузовика, ближе радиуса поворота

Грузовик не может достать до цели

Верно, грузовик делает круг и едет дальше по кругу

Цель очень далеко, спереди от грузовика

Грузовик едет к цели

Верно

Цель в пределах габарита грузовика

Грузовик не может достать до цели

Верно, грузовик едет по кругу, не в силах достать цель

Цель спереди и выше грузовика

Грузовик едет прямо

Верно

Цель сзади грузовика, дальше радиуса поворота

Грузовик разворачивается и достигает цели

Верно

Рисунок 34. Визуальная оценка работы механизма поворота

По итогам тестирования была составлена таблица наиболее критических ошибок, выявленных пользователями (таблица 5).

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

Таблица 5. Выявленные ошибки и их субъективная критичность

Ошибка

Критичность, %

1

В городе Шахты можно провалиться под асфальт

100

2

Грузовики иногда сходят с пути

80

3

Машина не останавливается при максимальных повреждениях или без топлива

80

4

При запуске кнопка «сохранить» активна, что дает возможность перезаписать начальное состояние игры поверх сохраненного

70

5

Аварийная сигнализация не отключается при ремонте

70

6

Замедление работы приложения возле города Южный

40

7

Может поворачиваться камера при нажатии на кнопки

30

8

Маленькая скорость грузовика

30

9

Грузовик иногда буксует

20

10

Возле моста возможно пробраться сквозь деревья и попасть в непредусмотренное место

20

11

В городе Залесск можно переехать через блоки

20

12

Слишком чувствительный руль

20

13

До верхних кнопок неудобно тянуться

20

14

Слишком сильные тормоза

10

15

Слишком мягкая подвеска

10

16

Слишком устойчивый грузовик при поворотах

10

17

Машина мало едет накатом

10

18

Слишком большая скорость при реверсе

10

Всего на данный момент было проделано две итерации разработки (не считая процесса прототипирования), и версия с исправлениями наиболее критичных ошибок от первой итерации была выложена на дополнительное тестирование. Добровольно игру протестировали 184 игрока. Всего с ошибками в процессе игры (версии от первой и от второй итераций) столкнулись 15,2% игроков.

Заключение

Оригинальная игра «Дальнобойщики-2» 2001 года обладала большой популярностью, и при этом до сих пор сохраняет клуб поклонников. В свое время она произвела впечатление и на автора, это и стало одной из причин выбора ее в качестве объекта достаточно подробного функционального анализа. Второй же причиной стало то, что функционал оригинальной игры хоть и сложен, но обозрим, и его адаптация под имеющиеся ресурсы - время и знания автора в области построения алгоритмов и программирования - должны были дать хороший опыт для профессионального роста.

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

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

Главными требованиями к приложению были:

1. Работа на ОС Android версии не ниже 4.4.2. Требование выполнено путем выбора определенного «сборочного пакета» при компиляции приложения в среде Unity.

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

3. Среднее количество кадров в секунду - 12. Согласно анкете среднее количество кадров в секунду составило 15,3, что удовлетворяет требованию.

Кроме того, в анкете было предложено ответить на некоторые вопросы, которые предполагают субъективный ответ на основе игрового опыта опрашиваемого. Ниже приведена статистика ответов на некоторые из них:

1. «Играли ли вы в оригинальные Дальнобойщики-2 на ПК (в любую версию)?»

184 ответа.

Да: 97,8%

Нет: 2,2%

2. «Какое значение среднего fps у вас было после нескольких минут игры? (Значение «av» в правом верхнем углу экрана)»

184 ответа, среднее значение - 15,3 кадров в секунду.

3. «Как бы вы оценили похожесть демо-версии на оригинальную игру на ПК? (Пропустите, если не играли в оригинальную)»

181 ответ.

Рисунок 35. «Как бы вы оценили похожесть демо-версии на оригинальную игру на ПК?», статистика ответов

4. «Насколько вам был понятен процесс игры, и что от вас требовалось?»

184 ответа.

Рисунок 36. «Насколько вам был понятен процесс игры, и что от вас требовалось?», статистика ответов

5. «Как бы вы оценили удобство интерфейса и управления?»

184 ответа.

Рисунок 37. «Как бы вы оценили удобство интерфейса и управления?», статистика ответов

6. «Сталкивались ли вы с багами (ошибками) в процессе игры?»

184 ответа.

Да: 15,2%

Нет: 84,8%.

Статистика позволяет подвести некоторые итоги работы:

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

2. Приложение похоже на оригинальную игру «Дальнобойщики-2», что, впрочем, не столько заслуга автора, сколько использованные в приложении готовые графические ресурсы.

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

4. Количество ошибок все еще не вполне удовлетворяет уровню профессионального продукта.

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

Список использованных источников

1. Top 10 Store Ranks Don't Change Often - When They Do, New Apps Last An Average of 3 Days [Электронный ресурс]: аналитическая статья. - Режим доступа: https://blog.apptopia.com/top-10-store-ranks-movement

2. App Annie Mobile App Forecast: The Path to $100 Billion [Электронный ресурс]: аналитическая статья. - Режим доступа: http://files.appannie.com.

s3.amazonaws.com/reports/App-Annie-02-2016-Forecast-EN.pdf? aliId=66010007

3. Android [Электронный ресурс]: информационный ресурс. - Режим доступа: https://ru.wikipedia.org/wiki/Android

4. Unity (игровой движок) [Электронный ресурс]: информационный ресурс. - Режим доступа: https://ru.wikipedia.org/wiki/Unity_(%D0% B8%

D0% B3% D1% 80% D0% BE % D0% B2% D0% BE % D0% B9_%D0% B4% D0% B2% D0% B8% D0% B6% D0% BE % D0% BA)

5. Физический движок [Электронный ресурс]: информационный ресурс. - Режим доступа: https://ru.wikipedia.org/wiki/%D0% A4% D0% B8% D0% B

7% D0% B8% D1% 87% D0% B5% D1% 81% D0% BA % D0% B8% D0% B9_%D0% B4% D0% B2% D0% B8% D0% B6% D0% BE % D0% BA

6. Mobile Analytics Demo [Электронный ресурс]: аналитическая статья. - Режим доступа: https://deviceatlas.com/mobile-analytics

7. Android overtakes Windows for first time [Электронный ресурс]: новостная сводка. - Режим доступа: http://gs.statcounter.com/press/android-overtakes-windows-for-first-time

8. Аналитика розничной сети МТС. Пресс-релизы - Москва и Подмосковье [Электронный ресурс]: пресс-релиз. - Режим доступа: http://www.company.

mts.ru/comp/press-centre/press_release/2018-02-22-6052011/

9. Silent Films: What Was the Right Speed? [Электронный ресурс]: офиц. сайт. - Режим доступа: https://web.archive.org/web/20110708155615/http://www. cinemaweb.com/ silentfilm/bookshelf/18_kb_2.htm

10. Computex 2014: ASUS Transformer Book V - гибрид Windows-ноутбука и Android-смартфона [Электронный ресурс]: новостная статья. - Режим доступа: https:// 3dnews.ru/821367

11. Unreal Engine vs Unity 3D Games Development: What to Choose? [Электронный ресурс]: аналитическая статья. - Режим доступа: https://www.valuecoders.com/blog/technology-and-apps/unreal-engine-vs-unity-3d-games-development/

12. Выбор между C++ и C# [Электронный ресурс]: форум. - Режим доступа: https://habr.com/post/262461/

13. Unreal Engine [Электронный ресурс]: информационный ресурс. - Режим доступа: https://en.wikipedia.org/wiki/Unreal_Engine

14. Blueprints Visual Scripting [Электронный ресурс]: справочный материал. - Режим доступа: https://docs.unrealengine.com/Engine/Blueprints

15. C# для Unreal Engine 4 [Электронный ресурс]: форум. - Режим доступа: http://uengine.ru/forum/viewtopic.php? p=984

16. C# vs. C++: Which Language is Right for Your Software Project? [Электронный ресурс]: аналитическая статья. - Режим доступа: https://www.upwork.

com/hiring/development/c-sharp-vs-c-plus-plus/

17. Comparing Game Engines: Unity vs Unreal vs Corona vs GameMaker [Электронный ресурс]: аналитическая статья. - Режим доступа: https://www.pubnub.com/blog/comparing-game-engines-unity-unreal-corona-gamemaker/

18. What is the best game engine for indie game development? Which one has the steepest learning curve? [Электронный ресурс]: аналитическая статья. - Режим доступа: https://www.quora.com/What-is-the-best-game-engine-for-indie-game-development-Which-one-has-the-steepest-learning-curve

19. Game Engine Analysis and Comparison [Электронный ресурс]: аналитическая статья. - Режим доступа: https://www.gamesparks.com/blog/game-engine-analysis-and-comparison/

20. The Best Game Engines For Beginners [Электронный ресурс]: аналитическая статья. - Режим доступа: https://www.websitetooltester.com/en/blog/best-game-engine/

21. Corona Labs Inc. [Электронный ресурс]: офиц. сайт. - Режим доступа: https://ru.coronalabs.com/

22. Семь этапов создания игры: от концепта до релиза [Электронный ресурс]: форум. - Режим доступа: https://habr.com/company/miip/blog/308286/

23. Autodesk 3ds Max [Электронный ресурс]: информационный ресурс. - Режим доступа: https://ru.wikipedia.org/wiki/Autodesk_3ds_Max

24. Подписка на 3ds Max | Купить 3ds Max 2019 | Autodesk [Электронный ресурс]: офиц. сайт. - Режим доступа: https://www.autodesk.ru/products/3ds-max/subscribe? plc=3DSMAX&term=1-YEAR&support=ADVANCED&quantity =1

25. Создание развертки для текстурирования с помощью Unwrap UVW | Санкт-Петербургский политехнический университет Петра Великого [Электронный ресурс]: лекция. - Режим доступа: http://www.avalon.ru/OpenLessons/ 3dsMax/Lessons/Unwrap-UVW/

26. § 168. О главном правиле экранных интерфейсов [Электронный ресурс]: офиц. сайт. - Режим доступа: https://www.artlebedev.ru/kovodstvo/sections/168/

27. iPhone Human Interface Guidelines [Электронный ресурс]: справочный материал. - Режим доступа: https://developer.apple.com/iphone/library/

documentation/UserExperience/Conceptual/MobileHIG/DesigningNativeApp/DesigningNativeApp.html# //apple_ref/doc/uid/TP40006556-CH4-SW1

28. Human Fingertips to investigate the Mechanics of Tactile Sense [Электронный ресурс]: Аналитическая статья. - Режим доступа: http://touchlab.mit.edu/publications/ 2003_009.pdf

29. Finger-Friendly Design: Ideal Mobile Touchscreen Target Sizes - Smashing Magazine [Электронный ресурс]: Аналитическая статья. - Режим доступа: https://www.smashingmagazine.com/2012/02/finger-friendly-design-ideal-mobile-touchscreen-target-sizes/

30. Особенности проектирования интерфейсов в мобильных играх [Электронный ресурс]: офиц. сайт. - Режим доступа: http://app2top.ru/game_development/osobennosti-proektirovaniya-interfejsov-v-mobil-ny-h-igrah-81668.html

31. Дальнобойщики 2 | Rig9Roll | Компьютерная игра [Электронный ресурс]: сообщество в социальной сети. - Режим доступа: https://vk.com/db_games

Размещено на Allbest.ru


Подобные документы

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

    дипломная работа [791,8 K], добавлен 10.07.2017

  • Общее описание разрабатываемого приложения, его актуальность и сферы практического применения. Выбор среды разработки и языка программирования, 3D-движка. Архитектура приложения, интерфейса и его главных элементов, взаимодействие с пользователем.

    дипломная работа [317,5 K], добавлен 10.07.2017

  • Создание, изучение и разработка приложение на Android. Среда разработки приложения DelphiXE5. Установка и настройка среды программирования. Этапы разработки приложения. Инструменты для упрощения конструирования графического интерфейса пользователя.

    курсовая работа [1,6 M], добавлен 19.04.2017

  • Характеристика работы операционной системы Android, используемой для мобильных телефонов. Создание Android проекта в среда разработки Eclipse. Общая структура и функции файла манифест. Компоненты Android приложения. Способы осуществления разметки.

    курсовая работа [1,0 M], добавлен 15.11.2012

  • Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.

    курсовая работа [167,8 K], добавлен 18.01.2017

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

    дипломная работа [3,4 M], добавлен 12.08.2017

  • Преимущества операционной системы Android. Проектирование интерфейса приложений. Визуальные редакторы и средства кроссплатформенной разработки. Оптимизация игрового процесса, выбор фреймворка и библиотек. Классификация и характеристика игр по жанрам.

    дипломная работа [2,6 M], добавлен 10.07.2017

  • Проектирование удобного приложения для комфортной навигации по файлам облачного хранилища в одном файловом менеджере. Выбор интегрированной среды разработки. Выбор инструментов для визуализации приложения. Выбор средств отслеживания HTTPзапросов.

    курсовая работа [3,6 M], добавлен 16.07.2016

  • Общая характеристика интерфейса языка программирования Delphi. Рассмотрение окна редактора кода, конструктора формы, инспектора объектов и расширения файлов. Ознакомление с основными этапами создания и сохранения простого приложения; проверка его работы.

    презентация [184,3 K], добавлен 18.03.2014

  • Общая схема работы приложения Android. Разработка обучающего приложения для операционной системы Android, назначение которого - развитие речи посредством произнесения скороговорок. Описание компонентов разработанного приложения, его тестирование.

    дипломная работа [1,2 M], добавлен 04.02.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.