¿Qué es el diseño basado en datos? [cerrado]

11

He estado leyendo muchos artículos que cubren el diseño basado en datos para juegos. Parece que se reduce a:

  • Sin codificación dura
  • No hay código específico del juego en el motor
  • Secuencias de comandos para IA, escenas, etc.
  • Código de generalización para reutilización
  • Diseño de componentes
  • Modularidad
  • Bajo acoplamiento
  • Editores (para datos, mapas, guiones)
  • Recuperación de datos externos.
  • Constantes mantenidas en archivos de texto ( .inio de otra manera)
  • Exponer datos a través de editores para scripting y manipulación por diseñadores

Ahora, mi pregunta es, ¿es correcto este entendimiento?

OmniOwl
fuente
3
Bienvenido al sitio. Tiene dos preguntas aquí (en general, debe hacer solo una pregunta por publicación), y la segunda pregunta sobre "cómo comenzar" se considera fuera de tema, por lo que la he editado y reducido la pregunta. Si quieres tener discusiones sobre cómo comenzar con algo, considera visitar el Chat de desarrollo de juegos .
@JoshPetrie Pero esa fue la más importante, ya que he estado en muchos sitios ahora y no obtuve respuesta alguna. Ni siquiera un golpe en una dirección. Debe haber ALGUNAS personas que obtuvieron un poco de información sobre estos temas.
OmniOwl
1
Tal vez sea lo más importante para usted, pero está fuera de tema aquí (vea las preguntas frecuentes ). También podría haber cerrado la pregunta. Visite el Chat de desarrollo de juegos o un foro de discusión real como GDNet si desea hacer preguntas sobre cómo comenzar.
1
@Vipar Ingrese al chat si desea ayuda con la pregunta fuera de tema. No garantizamos que obtendrás ayuda, pero muchas personas inteligentes andan por ahí.
ClassicThunder

Respuestas:

10

Yo diría que esto no es correcto. Creo que la idea más importante en el diseño basado en datos es separar sus datos de lo que modifica (o actualiza) los datos .

Entonces, desde una jerarquía profunda OO estándar como esta:

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

a un estado y sistema separados

class CreatureState{
    vector postion;
}

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

Uno de los paradigmas DDD más influyentes en este momento son los sistemas de entidades. Algunos buenos recursos para buscar son:

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

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

Por supuesto, como con todos los paradigmas / ideas, no existe una definición exacta y no todos entienden la misma idea cuando hablan DDD, pero esto es lo que creo que es lo más importante.

Roy T.
fuente
Sí, olvidé mencionar la parte de separación. Y este es exactamente el tipo de cosas que me gustaría ver. Solo puedo leer tanta teoría. Necesito ver algunos ejemplos concretos. Gracias. ¡También echaremos un vistazo a los artículos!
OmniOwl
Oh, espera, finalmente encontré la mejor explicación que leí hace un tiempo. Resultó que era una respuesta a una pregunta que hice aquí gamedev.stackexchange.com/questions/48971/… : D
Roy T.
4

Creo que estás complicando demasiado la definición. Ciertamente, muchos de los principios contenidos en su lista de puntos con viñetas son buenos desde una perspectiva de ingeniería de software, pero no todos son necesariamente parte de la definición de "basado en datos". Muchos de ellos tienen cierta superposición, o se implementan mejor utilizando un enfoque basado en datos, pero no constituyen el acto de impulsar algo.

La definición real de desarrollo de software basado en datos es generalmente bastante simple: un programa realiza acciones principalmente basadas en información externa (datos de nivel, datos de script, etc.) en lugar de tener una serie de pasos predefinidos y fijos dentro del código en sí mismo que determinan el flujo de control.


fuente
Es muy probable que tengas razón en que yo complico demasiado las cosas. Es algo que tiendo a hacer. Pero no puedo entender cómo comenzar a codificar esto.
OmniOwl
1
Publiqué una respuesta a su pregunta en GDNet . El quid de la cuestión es: deja de esforzarte tanto, elige un aspecto simple de lo que finalmente quieres y crea un pequeño juego con él.
Vi y también respondí. Gracias por tomarse el tiempo de hablarme sobre esto.
OmniOwl