Buenas, he estado pensando una forma de encapsular en pocos objetos toda la funcionalidad de un juego ( espero que sea entendible termino al que me refiero), por ejemplo, indicarle a todos los objetos que tienen un sprite, el nombre del sprite a mostrar, pero sin que se muestre este en el propio objeto y tener un objeto draw, que dibuje todos los sprites de todos los objetos, no se si esto seria viable para cuestiones de rendimiento y por lo menos tendria todo el renderizado en una sola parte.

alguien me entendio?, es decir que los sprites se muestren solo en un evento draw de 1 objeto en general, y no tener que ponerle sprites a cada objeto que se define, lo mismo seria con las colisiones, en un solo script del evento step, checar toda la logica de movimientos y colisiones de dichos objetos.

como ver?
Es Mejor No Saber Porque Funciona, Que Saber El Porque No Funciona...
Tienes alguna duda con "Game Design" o de videojuegos en general, contactamente mas facil en twitter @pavulzavala

piensa que al poner un sprite en un objeto, este se selecciona una vez al crearse y el evento draw, se ejecuta a cada step, por lo tanto... creo que si que bajaría el rendimiento :/
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Yo no creo que cambie en algo el rendimiento porque en realidad se están ejecutando las mismas acciones. Pero sí se haría más difícil organizar el código, pues el propósito de los objetos es dividir las mecánicas del juego en partes más pequeñas.

A veces sí es necesario hacer que un objeto dibuje a otros objetos (o haga una llamada al evento Draw de esos objetos) para dibujar en diferentes capas y hacer efectos visuales, pero para colisiones siento que sería complicado, sólo sería útil si los objetos a colisionar fueran partículas y las colisiones fueran de una forma más estadística que física.

En vez de colocar varios objetos que sólo proporcionen sus variables para que otro objeto las maneje, sería mejor usar un sólo objeto que tenga esas variables almacenadas en arrays, y así no tener tantas instancias que no hacen nada.

Yo siempre intento usar la menor cantidad de objetos posible, ahora estoy trabajando en un proyecto que usa un sólo objeto para todo y sus acciones están guardadas en scripts, pero no es algo tan complicado, se trata de un simple editor de escenarios para mi juego.

Cita de: kostra en Noviembre 19, 2014, 06:13:52 PM
piensa que al poner un sprite en un objeto, este se selecciona una vez al crearse y el evento draw, se ejecuta a cada step, por lo tanto... creo que si que bajaría el rendimiento :/

me parece que no me entendiste, a ningun objeto le asignare sprites, solamente un string con su nombre y el objeto draw se encargara de mostrarlo ejemplo:

OBJETO NAVE
ev. create
sprite=sp_nave;


OBJETO DRAW GENERAL
ev. draw
draw_sprite(nave.sprite,nave.x,nave.y);

y asi para los demas objetos






Es Mejor No Saber Porque Funciona, Que Saber El Porque No Funciona...
Tienes alguna duda con "Game Design" o de videojuegos en general, contactamente mas facil en twitter @pavulzavala

Cita de: Clamud en Noviembre 19, 2014, 06:36:51 PM
Yo no creo que cambie en algo el rendimiento porque en realidad se están ejecutando las mismas acciones. Pero sí se haría más difícil organizar el código, pues el propósito de los objetos es dividir las mecánicas del juego en partes más pequeñas.

A veces sí es necesario hacer que un objeto dibuje a otros objetos (o haga una llamada al evento Draw de esos objetos) para dibujar en diferentes capas y hacer efectos visuales, pero para colisiones siento que sería complicado, sólo sería útil si los objetos a colisionar fueran partículas y las colisiones fueran de una forma más estadística que física.

En vez de colocar varios objetos que sólo proporcionen sus variables para que otro objeto las maneje, sería mejor usar un sólo objeto que tenga esas variables almacenadas en arrays, y así no tener tantas instancias que no hacen nada.

Yo siempre intento usar la menor cantidad de objetos posible, ahora estoy trabajando en un proyecto que usa un sólo objeto para todo y sus acciones están guardadas en scripts, pero no es algo tan complicado, se trata de un simple editor de escenarios para mi juego.


pero supongamos que todos los draws los tienes en un solo objeto, no seria mas facil de manejar,

se supone que el enfoque de fraccionar el codigo es para no modificar tanto, pero pues, imagina que tienes muchos objetos y tendras que meterte a cada uno de ellos despues para modificarlos, a mi me ha parecido poco practico, por eso estoy buscando una manera de acomodar mi contenido y tratar de tener una metodologia la cual me permita, a la larga, mejorar la forma en que puedo encontrar mi contenido y cambiarlo de una manera rapida, sencilla y entendible.


en un loop de un juego a puro codigo crudo es algo asi

//draw loop
for x in enemies
{
enemies
  • .draw(c); // c es el objeto canvas que pinta todo en pantalla, asi como en android
    }



    for x bloks
    {
    enemies
  • .draw(c); // c es el objeto canvas que pinta todo en pantalla, asi como en android
    }

    etc.etc,

    es una idea de codigo, no esta en la sintaxis correcta, pero espero darme a entender



Es Mejor No Saber Porque Funciona, Que Saber El Porque No Funciona...
Tienes alguna duda con "Game Design" o de videojuegos en general, contactamente mas facil en twitter @pavulzavala

sí lo he entendido, y lo dicho, usas el draw, poniendo el sprite directo al objeto no lees el código de ningún draw constantemente para eso xd
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]