O que é design orientado a dados? [fechadas]

11

Eu tenho lido muitos artigos sobre design orientado a dados para jogos. Parece se resumir a:

  • Sem codificação física
  • Nenhum código específico do jogo no mecanismo
  • Script para AI, cenas, etc.
  • Generalizando código para reutilização
  • Design de componentes
  • Modularidade
  • Baixo acoplamento
  • Editores (para dados, mapas, scripts)
  • Recuperação de dados externos
  • Constantes mantidas em arquivos de texto ( .iniou não)
  • Expor dados através de editores para scripts e manipulação por designers

Agora, minha pergunta é: esse entendimento está correto?

OmniOwl
fonte
3
Bem vindo ao site. Você tem duas perguntas aqui (geralmente você deve fazer apenas uma pergunta por postagem), e a segunda pergunta sobre "como começar" é considerada fora de tópico, então eu a editei e reduzi a questão. Se você quiser discutir sobre como começar, considere visitar o Chat de desenvolvimento de jogos .
@ JoshPetrie Mas esse foi o mais importante que eu já estive em muitos sites agora e não tenho resposta nenhuma. Nem mesmo uma cutucada em uma direção. Deve haver ALGUMAS pessoas que tiveram um pouco de insight sobre esses assuntos.
OmniOwl
1
Talvez seja o mais importante para você, mas está fora de tópico aqui (consulte as perguntas frequentes ). Eu também poderia ter encerrado a pergunta. Visite o Chat de desenvolvimento de jogos ou um fórum de discussão real, como o GDNet, se você quiser fazer perguntas sobre como começar.
1
@Vipar Entre no bate-papo se quiser ajuda com a pergunta fora de tópico. Não garantimos que você receberá ajuda, mas muitas pessoas inteligentes ficam por aqui.
precisa

Respostas:

10

Eu diria que isso não está correto. Acredito que a idéia mais importante no design orientado a dados é separar seus dados do que modifica (ou atualiza) os dados .

Então, partindo de uma hierarquia profunda OO padrão como esta:

class MyCreature{
     vector position;
     void update(){ position += 1; }
}

para um estado e sistema separados

class CreatureState{
    vector postion;
}

class MovementSystem{
    list<CreatureState> states;
    void update() {
        for each CreatureState state in states {
            state.position += 1;
        }
}

Um dos paradigmas DDD mais influentes no momento são os sistemas de entidades. Alguns recursos interessantes para procurar são:

http://gamedevrubberduck.wordpress.com/2012/12/26/a-hybrid-entity-system-component-architecture/

http://entity-systems.wikidot.com/

É claro que, como em todos os paradigmas / idéias, não existe uma definição exata e nem todo mundo entende a mesma idéia ao falar DDD, mas é nisso que eu acredito que é a coisa mais importante.

Roy T.
fonte
Sim, eu esqueci de mencionar a parte da separação. E este é exatamente o tipo de coisa que eu gostaria de ver. Só posso ler muita teoria. Eu preciso ver alguns exemplos concretos. Obrigado. Também vai dar uma olhada nos artigos!
OmniOwl
Oh, espere finalmente encontrei a melhor explicação que li há um tempo atrás. Descobri que era uma resposta para uma pergunta que eu fiz aqui : gamedev.stackexchange.com/questions/48971/… : D
Roy T.
4

Eu acho que você está complicando demais a definição. Certamente, muitos dos princípios contidos em sua lista com marcadores são bons do ponto de vista da engenharia de software, mas nem todos são necessariamente parte da definição de "orientado a dados". Muitos deles têm alguma sobreposição ou são melhor implementados usando uma abordagem orientada a dados, mas não constituem o ato de direcionar algo.

A definição real de desenvolvimento de software orientado a dados é geralmente bastante simples: um programa executa ações principalmente com base em algumas informações externas (uma parte dos dados de nível, dados de script etc.) em vez de ter uma série de etapas predefinidas e fixas no código si que determinam o fluxo de controle.


fonte
Você provavelmente está certo de que eu complico demais as coisas. É algo que eu costumo fazer. Mas não consigo entender como começar a codificar isso.
OmniOwl
1
Publiquei uma resposta para sua pergunta no GDNet . O cerne da questão é: pare de tentar tanto, escolha um aspecto simples e simples daquilo que você deseja e construa um pequeno jogo com ele.
Eu vi e também respondi de volta. Obrigado por reservar um tempo para conversar comigo sobre isso.
OmniOwl