Мир в scroll-шутере.
От: HeaveN Россия  
Дата: 04.01.04 23:44
Оценка:
Появилась идея сделать скролл-шутер по типу Xenon или R-Type. И сразу столкнулся с интересным вопросом. Как можно задать мир в такой игре? Со всякипи FirstPersonShooter или ThirdPersonShooter все ясно. Там мир, объекты и камера — все располагается в некоторых мировых 3D-координатах, которые имеют прямую аналогию с реальным миром, поэтому все предельно понятно. Тут же немного не так. Что в данном случае есть камера? Каким образом можно задать расположение объектов (врагов, бонусов, себя), а также статических элементов мира (всякие элементы пролетаемых космических станций, причем как уничтожающие игрока, так и просто служащие для оформления)? При этом сделать достаточно простой расчет взаимодействия этих элементов мира (collision detection и иже с ним).

Просветите плз

Писать хочу на C++, OpenGL, так что объекты впринципе — трехмерные, а не спрайты.
... << RSDN@Home 1.1.2 beta 2 >>
Нет такого закона, что человеку летать нельзя...
Re: Мир в scroll-шутере.
От: WolfHound  
Дата: 05.01.04 06:31
Оценка: 6 (1) +1
Здравствуйте, HeaveN, Вы писали:

Хм. А в чем проблема? Создаешь несколько 2D плоскостей и все. В простейшем случае 3 жестко связаные друг с другом плоскости
1)Для задних декораций.
2)Для игрока, врагов, бонусов...
3)Для передних декораций.
А какие проблемы с камерой я вобще не понял.
Тк. у нас скролл-шутер то мир будет постоянно скролится и его текущий участок где и происходит действо будет показан.
Колижены в кролл-шутере это вобще смешная задача. Тут тебе придется выбрать между прямоугольниками и окружностями. Надеюсь проверить пересечение двух примоугольников или двух окружностей проверить сможешь сам.
... << RSDN@Home 1.1 beta 2 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: Мир в scroll-шутере.
От: Prond  
Дата: 05.01.04 11:38
Оценка: 12 (1)
Здравствуйте, HeaveN, Вы писали:

HN>Появилась идея сделать скролл-шутер по типу Xenon или R-Type. И сразу столкнулся с интересным вопросом. Как можно задать мир в такой игре? Со всякипи FirstPersonShooter или ThirdPersonShooter все ясно. Там мир, объекты и камера — все располагается в некоторых мировых 3D-координатах, которые имеют прямую аналогию с реальным миром, поэтому все предельно понятно. Тут же немного не так. Что в данном случае есть камера? Каким образом можно задать расположение объектов (врагов, бонусов, себя), а также статических элементов мира (всякие элементы пролетаемых космических станций, причем как уничтожающие игрока, так и просто служащие для оформления)? При этом сделать достаточно простой расчет взаимодействия этих элементов мира (collision detection и иже с ним).


HN>Просветите плз


HN>Писать хочу на C++, OpenGL, так что объекты впринципе — трехмерные, а не спрайты.


1. Будет у тебя один или несколько задних фонов (или не будет)
2. Будет передний фон — состоящий из активных — разрушаемых объектов и пассивных — элементы ландшафта и пр.
У всех этих объектов будут координаты, по ним и по размеру экрана отрисовываешь ланшафт. Если есть пункт 1., то его рисуешь на заднем плане как картинку и зацикливаешь скроллинг.

По идее если у тебя side-shooter то у камеры одна координата — смещение от начала уровня. От этой координаты и пляшешь — начинаешь выводить волны врагов и отрисовывать ландшафт. В некоторых играх новая волна не появляется, пока старая не прошла/уничтожена — это уже как ты запланируешь.

Ну подвижные элементы игры — вражеские корабли и пр. кодируются отдельно — т.е. для каждой есть тип поведения — каким образом она перемещается по экрану, как стреляет/врезается/взрывается и пр.

В классике — zybex к примеру волны идут последовательно. Т.е. закодирован скролируемый фон, закодировона последовательность появления волн — в простейшем случае массив с индексами волн. Берешь первую волну из массива — отслеживаешь ее проход/уничтожение — выводишь следующую волну.

Ну вот в простейшем случае и все. В игровом цикле отслеживаешь состояние жизни/боекомплекта/брони и пр.
Re: Мир в scroll-шутере.
От: e-Xecutor Россия  
Дата: 06.01.04 05:17
Оценка: 16 (2)
Здравствуйте, HeaveN, Вы писали:


HN>Просветите плз

Попытаюсь, хотя мне кажется тут всё довольно таки очевидно.
По крайней мере я делал так, и вроде работает
Сцена это список объектов на ней находящихся.
Главным тут является сценарий уровня.
Он создаёт по мере необходимости элементы фона и статические объекты,
а так же рулит их скоростью, он же создаёт врагов и назначает
им контролленры движения. Основной engine нотифицирует
сценарий о всяких событиях (в основном смерть вражин),
а он соответствующим образом реагирует.
Если на время битвы с полубоссом движение приостанавливалось,
оно возобновляется, если просто циклился какой-то фрагмент
фона, цикл прерывается. Ну там выпадение всяких бонусов
В общем-то написание собственно игрового движка для
scrolling shooter-а дело не сложное.
Самое "интересное" это арт. Вещи которые хорошо смотрятся в граф редакторе,
в игре почему-то выглядят убого. Со звуками еще хуже.
Ну и редактор уровней... Еще та засада.

HN>Писать хочу на C++, OpenGL, так что объекты впринципе — трехмерные, а не спрайты.

А ты пробовал что-то на эту тему нарисовать/намоделировать и посмореть
как это смотрится? Спец эффекты там всякие...
Оно конечно со временем всё получися, но если у тебя
нет художественных данных, будь готов убить кучу времени
на приведение арта в более-менее приемлемое состояние...
Re: Мир в scroll-шутере.
От: EyeGem Россия https://vk.com/enginya
Дата: 08.01.04 14:39
Оценка: 14 (1)
Самый простой путь задать мир в скролл-шутере это:
1) задавать координаты объектов относительно экрана
(для упрощения расчетов и задания сценария)
2) составить сценарий полета, в котором есть:
а) скроллинг(t) — смещение координат объектов
игры на определенный вектор
б) генерирование объектов(t) — враги появляются
еще "за экраном" и т.п.
3) задать поведение и критерии исчезнования для
объектов игры

Это саиый простой случай для игр, где камера —
"на рельсах" — т.е. всегда движется по некоторому
заданному пути, а не "свободная", когда игрок сам
выбирает направление. Что нам дает это упрощение?

А то, что объекты появляются и исчезают динамически,
соответственно своему алгоритму (изначально заданы
только в сценарии, который исполняется последовательно),
что в разы ускоряет просчет коллизий (без использования
специализированных методов разбиения пространства) т.к.
одновременно "существуют" только активные игровые объекты,
остальные либо еще не появились, либо уже исчезли,
"посчитав", что они больше не нужны (улетели и пр.).

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

Еще примеры задников — планеты, деревья и др.

Заметь также, что генерирование объектов подразумевает не
только простейшие "создай врага в (x,y)", но вызов одного
генератора может порождать целые россыпи объектов "впереди"
полета.

Ждем твоей игрушшки!
Удачи!
... << RSDN@Home 1.1 beta 2 >>
^__^
Re[2]: Мир в scroll-шутере.
От: HeaveN Россия  
Дата: 08.01.04 17:33
Оценка:
Здравствуйте, EyeGem, Вы писали:

EG>Ждем твоей игрушшки!


Ща, немножко сессию разгребу

EG>Удачи!


Спасибо.
... << RSDN@Home 1.1.2 beta 2 >>
Нет такого закона, что человеку летать нельзя...
Re[3]: Мир в scroll-шутере.
От: DEMON HOOD  
Дата: 26.02.05 16:57
Оценка:
Здравствуйте, HeaveN, Вы писали:

EG>>Ждем твоей игрушшки!

HN>Ща, немножко сессию разгребу

Готова?
... <<silent RSDN@Home 1.1.4 beta 4 [303] Windows XP 5.1.2600.0 >>
Re[4]: Мир в scroll-шутере.
От: Аноним  
Дата: 26.02.05 19:30
Оценка: :)))
Здравствуйте, DEMON HOOD, Вы писали:

DH>Здравствуйте, HeaveN, Вы писали:


EG>>>Ждем твоей игрушшки!

HN>>Ща, немножко сессию разгребу

DH>Готова?


Видимо, военкомат опередил
Re[5]: Мир в scroll-шутере.
От: DEMON HOOD  
Дата: 06.04.05 20:20
Оценка:
Здравствуйте, <Аноним>, Вы писали:

DH>>Готова?

А>Видимо, военкомат опередил
вот так всегда!
... <<Rammstein — Seemann RSDN@Home 1.1.4 beta 4 [303] Windows XP 5.1.2600.0 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.