Структура игры
|
|
Saitei | Дата: Суббота, 01 Февраля 2014, 01:07 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Здравствуйте! Я программист С++, уже какой день пытаюсь разработать игру. И в какой раз я сталкиваюсь с тем, что надо разрабатывать какие-то менеджеры и т.п. Пожалуйста, помогите. Запутался =( Сам я пишу простенький платформер (движение вправо\влево + прыжок + выстрел (ничего вроде необычного)). Единственная странность (которая реализована ) - динамическая генерация текущей локации. При переходе вправо она меняется (вернуться назад (влево) нельзя).
Хм. Что-то я заболтался. Так вот - что со всякими менеджерами этими делать? Где можно полистать примеры каких-нибудь игрушек с понятным кодом на С++? Пока что мне более или менее ясно стало что такое менеджер состояний...
Вроде как (как мне в начале разработки казалось) всё легко и жизнь - сладкая штука.... Но нет... Обманчиво мнение =( Захотелось удалить определенный объект (а сам я объявлял массив объектов) - не поолучится. Менеджер объектов нужен......
Ещё начитался что лучше и корректнее создать какой-то менеджер окна.... Ещё и менеджер анимации....
Люди добрые, просвятите меня пожалуйста! Укажите на верный путь, что ли... И, если можно, опишите простейшую структуру игры... Хотя бы буду знать с чем возиться... Второй день на месте топчусь
То, что есть:
Сообщение отредактировал Saitei - Суббота, 01 Февраля 2014, 01:08 |
|
| |
Tiendil | Дата: Суббота, 01 Февраля 2014, 12:28 | Сообщение # 2 |
участник
Сейчас нет на сайте
| Если появляются вопросы по реализации менеджеров, то не стоит их делать.
Пиши игру, а не движок, а всякие высокоуровневые абстрактные сущности выделяй когда увидишь, что они действительно нужны.
Участвовал в разработке Order of War (C++ UI & логика) и WoT (Python портал worldoftanks.ru почти всё :-) )
Текущий проект: the-tale.org - indie mmozpg
|
|
| |
Saitei | Дата: Суббота, 01 Февраля 2014, 15:00 | Сообщение # 3 |
старожил
Сейчас нет на сайте
| Tiendil, но я даже не представляю какие менеджеры вообще существуют...
|
|
| |
-l33t-h4xx- | Дата: Суббота, 01 Февраля 2014, 15:15 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Так можно до посинения менеджеры творить. И это зачастую совершенно бесполезно. Одного менеджера состояний для простой игры обычно достаточно. К тому же никаких стандартов "какие менеджеры должны быть" не существует, каждый решает вопрос по-своему. Хранить игровые объекты в массиве и обрабатывать их в цикле вовсе не зазорно, а уж если тебе хочется иметь произвольное число объектов - используй динамический массив. Если ты боишься накосячить в структуре так, что потом проект придётся забросить - не бойся, просто не делай глупостей, и ничего ужасного не произойдёт.
Как правильно задавать вопросы
|
|
| |
Tiendil | Дата: Суббота, 01 Февраля 2014, 15:15 | Сообщение # 5 |
участник
Сейчас нет на сайте
| Цитата Saitei ( ) Tiendil, но я даже не представляю какие менеджеры вообще существуют... И замечательно, узнаешь по ходу. Менеджеры существуют любые, можно сделать менеджер чего угодно и этот менеджер будет бесполезен. Поэтому сначала сделай так, чтобы было чем управлять, а потом сам увидишь как для этого сделать менеджер, если он потребуется.
Участвовал в разработке Order of War (C++ UI & логика) и WoT (Python портал worldoftanks.ru почти всё :-) )
Текущий проект: the-tale.org - indie mmozpg
|
|
| |
goldsphere | Дата: Суббота, 01 Февраля 2014, 15:49 | Сообщение # 6 |
заслуженный участник
Сейчас нет на сайте
| ну или вот https://www.youtube.com/watch?v=T6o5OlgsCew Добавлено (01.02.2014, 15:49) --------------------------------------------- Мне например хватает одного менеджера экранов, для удобного переключения между ними.
FinderX - Android Аркада
|
|
| |
maxxC | Дата: Суббота, 01 Февраля 2014, 18:56 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| У себя использую менеджер для игровых сущностей (объекты хранятся в одном контейнере и достаются оттуда по их идентификационному номеру если нужно выполнить какую-то операцию с ними.) Правильно говорят выше, ты сам поймешь когда тебе потребуется менеджер, но для начала тебе нужно набраться опыта. Предлагаю скооперироваться где-нибудь в скайпике.
|
|
| |
vasua99 | Дата: Суббота, 01 Февраля 2014, 19:45 | Сообщение # 8 |
GNU follower
Сейчас нет на сайте
| Я сделал бы так. Создал мап, где в качестве ключа идентификационный номер, а в качестве данных - указатели на обьекты, наследуемые от одного, который включает несколько методов, например такие, как получение свойств обьекта и список поддерживаемых операций, а также изменение свойства, и выполнение операции. А также пул, в котором будут хранится структуры с именем обьекта и именем операции(а также аргументы для нее). В свою очередь каждый кадр будет просматриваться пул и последовательно выполнятся команды. Фуф. Что-то я загнул помоему(в крайнем случае написал бред ).
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
Ranger | Дата: Суббота, 01 Февраля 2014, 20:51 | Сообщение # 9 |
почти ветеран
Сейчас нет на сайте
| Цитата Saitei ( ) Tiendil, но я даже не представляю какие менеджеры вообще существуют... От Вас сильно зависит, какие менеджеры делать. В общем случае я себе представляю, что необходимы менеджеры ресурсов, сети, общей игровой статистики и ГУИ. Дальше уже по желанию.
|
|
| |
Sanoraag | Дата: Суббота, 01 Февраля 2014, 22:19 | Сообщение # 10 |
почетный гость
Сейчас нет на сайте
| http://www.youtube.com/watch?v=6OHMFwQK44k-1 урок 2урок-http://www.youtube.com/watch?v=T6o5OlgsCew
|
|
| |
ApuoH | Дата: Вторник, 25 Марта 2014, 18:11 | Сообщение # 11 |
почетный гость
Сейчас нет на сайте
| интересная темка. и вот что интересно почему нельзя вернуться герою назад, если как я понимаю карта формируется динамически. т.е. если герой принимает значения по координатам близкой области if hero.x>100 and hero.x<99 то загружаем карту в массив. а карту слева выгружаем. либо лучше мы будем хранить полную карту уровня. занимая какую-то часть памяти но на экран выдавать нужную часть карты.
возникает конечно вопрос куда добавляется в массив новый эллемент. Ну да наверное лучше пусть будет менеджер карты уровня. который будет грузить и выгружать нужную нам карту взависимости от нашего расположения на карте. сам массив с картой будет расположен в каком-то файле и с помощью менеджера мы будем вытаскивать нужную нам часть этой карты. Либо по умолчанию хранить в памяти 5 частей карт: слева, справа, вверх, вниз и текущее состояние. Где переходе например на карту справа она станет текущей. А в массив добавиться инфа о карте по данным координатам с помощью менеджера или нет если карта завершена.
|
|
| |
Storm54 | Дата: Среда, 26 Марта 2014, 18:53 | Сообщение # 12 |
постоянный участник
Сейчас нет на сайте
| Ну лично меня в любой игре всегда есть минимум 1 менеджер: Менеджер состояний, который определяет, что сейчас происходит в игре: игрок находится в главном меню, происходит загрузка игры, игрок непосредственно в игре. Для твоего платформера 3 этих состояния будет достаточно.
Что касается хранения карты: Лучше всего создать базовый класс "блок", в котором будет храниться позиция блока и подобные общие данные, присущие всем блокам, а потом создавать новые блоки путем наследования от этого класса. И хранить все эти блоки в каком-нибудь контейнере, например, List. И этот лист засунуть в самописный класс, в котором будут реализованы методы: создать блок, удалить блок и т.д. По своему опыту знаю, что хранить в двумерном массиве очень неудобно, т.к. например реализовать возможность установки двух разных блоков в одно место изначально отсутствует, так же невозможно нормальное динамическое расширение карты.
Сообщение отредактировал Storm54 - Среда, 26 Марта 2014, 18:56 |
|
| |