Среда, 24 Апреля 2024, 21:40

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Общие обсуждения программистов » Структура игры
Структура игры
SaiteiДата: Суббота, 01 Февраля 2014, 01:07 | Сообщение # 1
старожил
Сейчас нет на сайте
Здравствуйте!
Я программист С++, уже какой день пытаюсь разработать игру. И в какой раз я сталкиваюсь с тем, что надо разрабатывать какие-то менеджеры и т.п.
Пожалуйста, помогите. Запутался =(
Сам я пишу простенький платформер (движение вправо\влево + прыжок + выстрел (ничего вроде необычного)).
Единственная странность (которая реализована smile ) - динамическая генерация текущей локации. При переходе вправо она меняется (вернуться назад (влево) нельзя).

Хм. Что-то я заболтался. Так вот - что со всякими менеджерами этими делать? Где можно полистать примеры каких-нибудь игрушек с понятным кодом на С++?
Пока что мне более или менее ясно стало что такое менеджер состояний...

Вроде как (как мне в начале разработки казалось) всё легко и жизнь - сладкая штука.... Но нет... Обманчиво мнение =(
Захотелось удалить определенный объект (а сам я объявлял массив объектов) - не поолучится. Менеджер объектов нужен......

Ещё начитался что лучше и корректнее создать какой-то менеджер окна.... Ещё и менеджер анимации....

Люди добрые, просвятите меня пожалуйста! Укажите на верный путь, что ли...
И, если можно, опишите простейшую структуру игры... Хотя бы буду знать с чем возиться... Второй день на месте топчусь sad

То, что есть:


Сообщение отредактировал 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
Сейчас нет на сайте
Я сделал бы так. Создал мап, где в качестве ключа идентификационный номер, а в качестве данных - указатели на обьекты, наследуемые от одного, который включает несколько методов, например такие, как получение свойств обьекта и список поддерживаемых операций, а также изменение свойства, и выполнение операции. А также пул, в котором будут хранится структуры с именем обьекта и именем операции(а также аргументы для нее). В свою очередь каждый кадр будет просматриваться пул и последовательно выполнятся команды.
Фуф. Что-то я загнул помоему(в крайнем случае написал бред biggrin ).


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
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
Форум игроделов » Программирование » Общие обсуждения программистов » Структура игры
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг