Comunidad de diseño web y desarrollo en internet online

Rendimiento y buenas practicas

Citar            
MensajeEscrito el 15 Sep 2011 02:09 pm
Me gustaría que me orientaran con unas dudas con respecto a rendimiento de AS3

Estoy desarrollando un juego de disparos en flash, consta de un robot que gira en su propio eje, tengo los siguientes archivos

game.as
robot.as
mira.as
municion.as

game.as se encarga de controlar el juego, agregar los elementos, stop, continue, etc…
robot.as tiene las acciones de disparar y rotar
mira.as controla el movimiento de la mira del arma
municion.as es la clase que va atada a cada bala, la mueve y comprueba colisiones

Ahora bien, podría hacer los "loops y eventos" de 2 formas diferentes

1. hacerlos todos en game.as

Código :

addEventListener(Event.ENTER_FRAME, loopGame);
addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);


De esta primera forma tendría 1 solo ENTER_FRAME, MOUSE_MOVE y MOUSE_DOWN, y en cada uno colocaría todas las callbacks que disparan esos eventos, ejemplo.

Código :

private function mouseMoveHandler(e:MouseEvent) {
   this.myMira.move(e);
   this.myRobot.rotate(e);
}   


Código :

private function loopGame(e:Event):void {
   this.updateMuniciones();  //recorre todas las municiones, actualiza su posición y comprueba colisiones
}



2. Hacerlo dentro de cada objeto
De esta forma tendría los listeners dentro de cada objeto del juego, por ejemplo

Robot.as tendría un MOUSE_MOVE propio para rotar

Código :

stage.addEventListener(MouseEvent.MOUSE_MOVE, rotate);


mira.as, tendría un MOUSE_MOVE propio para mover su posición

Código :

stage.addEventListener(MouseEvent.MOUSE_MOVE, mover);


dentro de cada bala tendría un ENTER_FRAME propio que cambiaría su posición actual y comprobaría colisiones

Código :

this.addEventListener(Event.ENTER_FRAME, updateBala);


A nivel de practicidad y rendimiento ¿Cuál de los 2 métodos es el correcto y porque?

Si alguien conoce un manual o libro de buenas practicas en o patrones de diseño AS le agradeceria el dato :)

Espero haberme explicado bien, gracias

Por docma

12 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 15 Sep 2011 06:07 pm
Las practicas standard OOP no siempre aplican a los juegos, que tienen una forma mas procedural. El que citaste es un buen ejemplo. Una buena arquitectura encapsula los objetos, de lo cual deduciríamos que cada objeto debe tener su ENTER_FRAME, sin embargo en terminos de rendimiento, conviene atar todo a un solo ENTER_FRAME que marca la evolución de las acciones. Allí dentro pones todos los checks y los updates de personajes, quedando generalmente un bloque de código que a la vista de las buenas practicas no es lo mas adecuado ... pero en los juegos, la performance es el rey

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Sep 2011 10:05 pm
Muchas gracias @solisarg :)

Por docma

12 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.