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

Как правильно структурировать игру?

Страницы: 1 2 3 4 5 Следующая »
#0
18:25, 4 ноя. 2019

Пишу игру на C++ и SFML, но не уверен, что делаю это правильно.
Например, у меня есть класс Location, который отвечает за загрузку локации. Перед загрузкой из контейнера удаляются все сущности, кроме первой в списке (первый элемент - всегда игрок). В зависимости от того, какая локация грузится, соответствующие сущности добавляются в контейнер.

Где размещать контейнер с сущностями и где размещать класс с локацией? Стоит ли для этого создать класс Game, где разместить и то, и другое?

Есть ли общие рекомендации по написанию игры без использования игровых движков по типу Unity, GameMaker и т.д., т.е. на чистом C++ с SFML?


#1
18:33, 4 ноя. 2019

cpprogger
>Где размещать контейнер с сущностями и где размещать класс с локацией?
Размещай в хипе.

>Стоит ли для этого создать класс Game, где разместить и то, и другое?

+ Показать

#2
(Правка: 19:17) 19:15, 4 ноя. 2019

cpprogger
Посмотри, как я сделал в своем движке:
https://bitbucket.org/nshatokhin/giantleap/src/master/
https://bitbucket.org/nshatokhin/crimsonfork/src/master/

В Crimsonfork есть класс GameInstance.

В GiantLeap их аж три

#3
14:43, 5 ноя. 2019

cpprogger

Отвечу псевдокодом:
class World {
vector<GameObject*> objects;
};
class GameObject {
vector<Component*> components;
GameObject * parent;
vector<GameObject*> childs;
};

#4
17:48, 5 ноя. 2019

0xc0de
немного не правильно, надо так
class Universe {
    vector <World*> worlds;
}

зы. смотри как сделано в серьезных движках UE/Unity

#5
18:11, 5 ноя. 2019

forwhile
немного не правильно, надо так

class Multiuniverse
{
    vector <Universe*> universes;
}
#6
18:43, 5 ноя. 2019

nes
Ты же сишник теперь!

typedef struct multiuniverse_t {
    universe_t *universes;
    size_t universesCount;
} multiuniverse_t;

cpprogger
Почитай про SceneGraph, про ECS(Entity Component System)

#7
18:45, 5 ноя. 2019

Vlad2001_MFS
суфикс "_t" можно не ставить, это уродство какое то. Визуальный мусор.

#8
19:08, 5 ноя. 2019

forwhile
> суфикс "_t" можно не ставить, это уродство какое то. Визуальный мусор.

да, помню один проект на C++ с _t :)

#9
19:14, 5 ноя. 2019

innuendo
> помню один проект на C++ с _t
STL назывался?)

#10
19:14, 5 ноя. 2019

maks242
> STL назывался?)

игровой проект

#11
19:48, 5 ноя. 2019

forwhile
>суфикс "_t" можно не ставить, это уродство какое то. Визуальный мусор.
Это единственный способ четко отделить тип от переменной в этом кривом ЯП.

#12
(Правка: 20:50) 20:49, 5 ноя. 2019

nes
> Это единственный способ четко отделить тип от переменной в этом кривом ЯП.
кривой - это мозг программиста
ты же не пытаешься создать переменную с именем int, char, BYTE, DWORD

определяй тогда свои типы в верхнем регистре, если проблемы такие.

#13
21:10, 5 ноя. 2019

forwhile
Игра с регистром букв - еще более тупая вещь.

#14
21:25, 5 ноя. 2019

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

Страницы: 1 2 3 4 5 Следующая »
ПрограммированиеФорумОбщее