Войти
ПрограммированиеФорумОбщее

Концепция сцены

#0
21:16, 20 дек. 2019

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

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

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

С этим вроде все ясно.

Проблема у меня вот какая: как их правильно отрисовывать, когда одновременно видны на экране две сцены? Ну, например, полэкрана трава, полэкрана пустыня, это две разные сцены. Камера одной сцены расположена внизу относительно нее, а камера другой - вверху. Соответственно, каждая камера отдает нам кусок экрана со своей частью сцены, а потом они просто отрисовываются.

Вроде несложно, но проблема с координатами. Стоит их сделать локальными для каждой сцены или глобальными?

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

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


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


#1
21:39, 20 дек. 2019

Robotex
>По-идее, каждая сцена должна содержать свой список используемых ресурсов, свои пулы объектов, физики, анимации и т.п., свой отрисовщик бекграунда.
Имхо лучше ресурсы отдельно, сцена отдельно.

>Проблема у меня вот какая: как их правильно отрисовывать, когда одновременно видны на экране две сцены? Ну, например, полэкрана трава, полэкрана пустыня, это две разные сцены. Камера одной сцены расположена внизу относительно нее, а камера другой - вверху. >Соответственно, каждая камера отдает нам кусок экрана со своей частью сцены, а потом они просто отрисовываются.
Погляди в сторону quad tree.

>Вроде несложно, но проблема с координатами. Стоит их сделать локальными для каждой сцены или глобальными?
Как удобнее, так и делай, можно какой-нибудь вектор из даблов, тогда хватит на все сцены, если у тебя не космический симулятор, конечно.

>Если локальные, то проблем с этим быть недолжно, но тогда не понятно, а как же расположены сцены относительно друг друга и как транслировать их координаты в глобальные (чтобы определить в какую сцену перешел игрок или какая сцена в данный момент видна на экране).
Сцена должна где-то хранить информацию о соседних сценах, отсюда и пляши.

>При обновлении состояния сцены нужно обновлять только те, что видны в данный момент, только те, что загружены или же вообще все, что есть в игре?
Quad tree.

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

#2
(Правка: 8:42) 8:41, 21 дек. 2019
Сначала обычно Гримёрку пишут

Если в Гримёрке слишком много человек, должна создаваться фабрика Парикмахеров

#3
13:41, 21 дек. 2019

Robotex
смотри ue для начала

#4
19:23, 21 дек. 2019

innuendo
> смотри ue для начала
этого монстра он будет ковырять несколько лет

#5
19:40, 21 дек. 2019

/A\
> этого монстра он будет ковырять несколько лет

я имел ввиду доки - код да пару лет

ПрограммированиеФорумОбщее