Não consigo encontrar uma boa explicação do Design Orientado a Dados para um jogo genérico de zumbi (é apenas um exemplo, um exemplo bastante comum).
Você poderia fazer um exemplo do Design Orientado a Dados para criar uma classe zumbi genérica? O seguinte é bom?
Classe da lista de zumbis:
class ZombieList {
GLuint vbo; // generic zombie vertex model
std::vector<color>; // object default color
std::vector<texture>; // objects textures
std::vector<vector3D>; // objects positions
public:
unsigned int create(); // return object id
void move(unsigned int objId, vector3D offset);
void rotate(unsigned int objId, float angle);
void setColor(unsigned int objId, color c);
void setPosition(unsigned int objId, color c);
void setTexture(unsigned int, unsigned int);
...
void update(Player*); // move towards player, attack if near
}
Exemplo:
Player p;
Zombielist zl;
unsigned int first = zl.create();
zl.setPosition(first, vector3D(50, 50));
zl.setTexture(first, texture("zombie1.png"));
...
while (running) { // main loop
...
zl.update(&p);
zl.draw(); // draw every zombie
}
Ou seria a criação de um recipiente Mundial genérico que contém todas as ações de bite(zombieId, playerId)
para moveTo(playerId, vector)
para createPlayer()
para shoot(playerId, vector)
para face(radians)/face(vector)
; e contém:
std::vector<zombie>
std::vector<player>
...
std::vector<mapchunk>
...
std::vector<vbobufferid> player_run_animation;
...
ser um bom exemplo?
Qual é a maneira correta de organizar um jogo com o DOD?
fonte
Eu tenho procurado um bom exemplo disso também, mas com recursos limitados na rede e ninguém para me dizer como fazê-lo corretamente, eu fiz isso com a seguinte implementação. (pode não ser o melhor, mas segue a ideia básica)
Portanto, a implementação é mais ou menos assim: você tem uma classe de objeto base, que contém todos os dados comuns. Quando sua classe de carro é construída, você especifica a quantidade de dados que deseja agrupar e, portanto, possui memória suficiente para todos os objetos.
a partir daí, você pode adicionar identificadores fora do curso ou o que for necessário para sua implementação. mas tentei isso em um jogo mais simples, e funcionou bem legal.
Também não está muito longe do seu design e, francamente, não conheço nenhuma maneira mais eficaz de fazer isso.
fonte