Форум программистов, компьютерный форум, киберфорум
Программирование игр
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
11 / 10 / 1
Регистрация: 05.02.2012
Сообщений: 106

Архитектура игры под Android

03.08.2013, 12:42. Показов 3045. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Я новичок в создании игр, но хотелось бы сделать что-то приличное, с возможностью повторного использования кода и т.д. Игра будет с использованием графического движка AndEngine. Погуглив, я нашел несколько вариантов, но хочу пока предложить один пример (картинка во вложении). Игра будет не сетевая, поэтому с виду все подходит. Как вы думаете, стоит ли её использовать? или у этого примера есть какие-то явные проблемы, которые я пока не вижу?
Миниатюры
Архитектура игры под Android  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.08.2013, 12:42
Ответы с готовыми решениями:

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

Разработка игры для Android
Всем доброго времени суток! Недавно (придумал) 2D игру , но реализовать её не могу т.к нооб :). Нужен какой-нибуть бесплатный движок для...

Как писать игры под Android на движок unity?
какие есть хорошие книги или уроки как писать игры на андроид? изучение движка unity и тп. как вообще работать с unity его нужно скачать...

7
 Аватар для XAHOK
273 / 266 / 20
Регистрация: 27.02.2009
Сообщений: 694
Записей в блоге: 7
05.08.2013, 15:46
Классическая архитектура на MVC с менеджером ресурсов. Проблемы могут быть только от ее реализации Вами (особенно внимательно нужно подойти к реализации AI части). Если жесткие связи между типами закладывать не будете, то большинства проблем избежите. При желании такая архитектура легко расширяется и для сетевой игры.
1
11 / 10 / 1
Регистрация: 05.02.2012
Сообщений: 106
11.08.2013, 14:11  [ТС]
Меня смущает только очередь сообщений, не совсем понятно, как в одной очереди могут уживаться сообщения для различных частей программы, ведь выполнение каких-то действий может занять больше времени, если со всем будет возиться один поток(так уже есть и двух и четырех ядерные коммуникаторы). Или лучше несколько очередей? но если их будет обрабатывать несколько потоков, то может получиться так, что один из них выполнит задачу быстрее, и другой поток может уже столкнуться с проблемами ... Как лучше?
0
 Аватар для XAHOK
273 / 266 / 20
Регистрация: 27.02.2009
Сообщений: 694
Записей в блоге: 7
11.08.2013, 23:46
Если вы с асинхронным программированием раньше не сталкивались, то лучше и не заморачивайтесь с многопоточностью. А вообще оцените сначала целевую аудиторию и используемую ими аппаратуру. И затачивайте игру под самый слабый аппарат. Если все таки хотите многопоточный вариант, то посмотрите в сторону синхронизации потоков, а так же на хранение зависимостей между подпрограммами, на основе которых определяется порядок выполнения.
0
14 / 9 / 0
Регистрация: 12.07.2012
Сообщений: 82
13.08.2013, 16:50
А зачем разделять PlayerView и PlayerModel, CreatureView и CreatureModel и т.д.?
Ведь проще создать такой класс, который будет обрабатывать и рендер,и игра.
0
 Аватар для XAHOK
273 / 266 / 20
Регистрация: 27.02.2009
Сообщений: 694
Записей в блоге: 7
13.08.2013, 18:16
Почитайте про паттерн MVC. Фактически вы получите три условно независимых подсистемы: модель, представление и контроллер. Особенно это актуально для мультиплатформенных приложений. Если у вас каждый клас будет отвечать за все, то для портирования игры с ведроида на яблоид потребует изменения этих классов и в результате у вас будет два проекта. Поддерживать их актуальность будет весьма геморойно, т.к. любое изменение нужно будет вносить под каждую платформу (например исправления ошибок логики AI и т.п.). Но если вы вынесите рендер в отдельную подсистему (представление) с доступом через интерфейс, то заменить один рендер на другой будет намного легче, а внутренняя логика приложения будет полностью изолирована.

Так же такую разделенную систему намного легче покрыть автоматическими тестами.
0
14 / 9 / 0
Регистрация: 12.07.2012
Сообщений: 82
13.08.2013, 21:08
Про паттерн MVC я читал, и даже реализовывал. Но я не делал по 2 класса на один объект.
Т.е. я делал базовые классы контроллер, модель и представление.
Контроллер вызывал из модели функцию Draw, и в качестве аргумента передавал представление.
В функции Draw модель в цикле отрисовывала кубики с текстурами функциями, вызванными из представление.
А для создания нового типа объекта(к примеру дерево) нужно было создать один класс. Потом я ещё хотел сделать для каждого типа объекта свою функцию отрисовки, принимающую представлениев качестве аргумента.
0
 Аватар для XAHOK
273 / 266 / 20
Регистрация: 27.02.2009
Сообщений: 694
Записей в блоге: 7
14.08.2013, 06:31
Цитата Сообщение от Nomadd Посмотреть сообщение
Про паттерн MVC я читал, и даже реализовывал. Но я не делал по 2 класса на один объект.
Т.е. я делал базовые классы контроллер, модель и представление.
Контроллер вызывал из модели функцию Draw, и в качестве аргумента передавал представление.
В функции Draw модель в цикле отрисовывала кубики с текстурами функциями, вызванными из представление.
А для создания нового типа объекта(к примеру дерево) нужно было создать один класс. Потом я ещё хотел сделать для каждого типа объекта свою функцию отрисовки, принимающую представлениев качестве аргумента.
У вас ошибочное понятие представления. Представление - это ваш реализованный вами метод Draw. Если говорить простым языком, то представление отвечает на вопрос - как отображать. В целом у вас должно получаться не 2 класса на объект, а 3 класса. Один класс отвечает за рендер объекта, второй за внутреннюю логику и взаимодействие объекта со сценой, и третий - модель данных объекта (причем этот класс будет корневой). Рендер и логика (представление и контроллер) являются независимыми и любой из них можно независимо заменять и/или изменять. Да и найти нужное место в узко-специализированном классе намного проще, чем в одной портянке, в которой и рендер, и логика и модель данных.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.08.2013, 06:31
Помогаю со студенческими работами здесь

Перспективное ли направление - программирование под Android?
Может кто не знает, но мобильные приложения, в частности Clash of clans (1,315 млрд $ в год), Game of War (799 млн $ в год), Puzzle &...

Запуск игры mr.Nom через Android Studio (по книге марио цехнер программирование игр под android)
Привет всем! Для тех кто читал книгу - в конце 6ой главы мы закончили писать код игры. В книге написано что - игра готова. Но в самих...

С чего начать написание игры под Android?
Добрый день. Хочу научится писать игры на андроид, но не знаю с чего начать. %-) Может кто-то посоветовать с чего надо начать изучать,...

Поиск движка для создания 2D игры под Android
Доброго времени суток, уважаемые форумчане! Не так давно (недели две назад) появилась идея о создании игры для Android'a (ну для начала)....

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru