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?


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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.