Hace 3 años | Por NubisMusic a genbeta.com
Publicado hace 3 años por NubisMusic a genbeta.com

Los que nos dedicamos al desarrollo de videojuegos sabemos que la programación orientada a objetos es la paradigma dominante en la programación de los mismos ya que es la que mejor se adapta, pero últimamente está surgiendo cada vez más el diseño basado en entidades y componentes.

Comentarios

p

#0 Soy un completo neófito en el tema, pero me gusta mucho el desarrollo y los videojuegos, ¿me podríais recomendar un libro que hable de ECS?

NubisMusic

#7 Soy tan neófito como tú, lo siento Comparto estos enlaces para complementar con los comentarios información de los artículos y similar que busco por Internet. Estoy aprendiendo programación de cero, y por el momento el libro que más veo recomendado es Código Limpio de Robert C. Martin.

D

#7 Hay en internet una charla sobre ECS con las transparencias y todo, creo que eran de algún empleado de THQ, no te puedo decir mucho más sobre cómo encontrarlas.

También tienes un capítulo dedicado a ECS en el libro "Game Programming Patterns", de Bob Nystrom. Libro indispensable por cierto para todo el que quiera programar videojuegos.
cc #8

D

"pero últimamente está surgiendo cada vez más el diseño basado en entidades y componentes."

Si por "últimamente" te refieres a hace 15 años, de acuerdo. El primer ECS es de 2002 o 2003 si no recuerdo mal, creo que lo implementaban en uno de los Tony Hawk.

editado:
2001, pero hay juegos de antes. http://entity-systems.wikidot.com/games-using-an-entity-system

Punisher92

Muy interesante tema 😁

musg0

La idea tiene buena pinta pero no me queda claro qué pasa con el RenderSystem si tienes un componente espada en personajes humanos y quieres hacer un personaje con tentáculos que lleve también Espada ¿Como haces que encaje con otro personaje diferente? ¿Haces un caso especial en el RenderSystem? ¿Haces varios RenderSystems con diferentes variantes?
Me da la sensación de que, como siempre, cuando el código es simple todo encaja a la perfección, pero cuando te pongas a hacer un sistema complejo vas a tener problemas similares a la programación orientada a objetos. RenderSystems con muchos casos especiales, o componentes diferentes con ligeras variantes tal que EspadaHumanoComponent, EspadaTentaculoComponent, etc

S

#1 Sacas la POO de ejemplos tan simples que rozan lo irreal (como con la herencia y el eterno rectángulo es un figura) y las complejidades se multiplican como setas cuando llueve con una facilidad enfermiza. Este video siempre me pareció muy interesante.

musg0

#2 Yo creo que pasa con todos los paradigmas de programación. Hace tiempo hice un curso básico de programación funcional y molaba un huevo. Luego hice uno un poco más complejo y le das ese código a otro y no sabe ni por donde le da el aire con tanta función recursiva enlazada a otra. Eso parecía una Matrioska o una caja puzzle japonesa. Muy chulo para jugar solo pero bastante inviable en un proyecto con más de 2 personas.

C

#1 En realidad todos esos problemas son los mismos que te encuentras cuando implementas cosas con programación orientada a objetos. Hago un objeto base y heredo para el humano y para el bicho con tentáculos? hago un caso especial en el renderer?
Puedes ver esto como coger un objeto clásico y poner los miembros que son datos en componentes y los miembros que son métodos o funciones en sistemas. Entonces el objeto original se queda vacio. No es más que un identificador que une esos componentes y es lo que llaman entidad en este diseño.
El mayor problema es que razonar sobre como deberían funcionar las cosas no es muy intuitivo. Hay que cambiar la forma de pensar de lo que la mayoría estamos acostumbrados y eso cuesta.