Comunidad de diseño web y desarrollo en internet online

Teoria de juegos

Citar            
MensajeEscrito el 30 Jul 2011 10:42 am
Buenas! sigo aprendiendo as3 para aplicarlo en juegos, y me asalta la siguiente duda:

Como hacer para, por ejemplo en un juego de naves, vayan saliendo los enemigos cuando tu le digas. Oseq me gustaria saber la teoria, no como hacerlo. He pensado hacerlo con un Timer, que mire cada 100 m por ejemplo, i entonces un swich, increiblemente largo para decirle que si Timer = 500 por ejemplo sake tal navem y asi sucesivamente. La otra manera que pense es moviedo el fondo i segun sea su posicion, crear igual los monstruos...

Si me ayudais, hos lo agradeceria.. No me gustaria pasarme muchas horas para que me digais anda tontolculo, que eso es mas facil hacerlo!! ;)

Por Phyronx

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Jul 2011 11:37 am
Usualmente hay un toque de random en eso, dependiendo del nivel. Entonces en el tick del juego si el random da X sale monstruom sino no. A medida que aumenta el nivel, las posibilidades del random son cada vez mayores, con lo cual la densidad de monstruos también

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Jul 2011 12:43 pm
Ya te entiendo, pero eso seria para que salgan "aleatoriamente", segun dificultad, pero yo quiero hacer por ejemplo que primero salga un grupo de 3 del tipo monstruo1, i al cabo de tanto 5 del monstruo2.. etc... eso es com un swich, que mire en cada tick el tiempo i disparar case's...

Por Phyronx

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Jul 2011 12:46 pm
Claro, a lo mismo le agregas un contador para variar el monstruo que sale

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Jul 2011 12:57 pm
Muchas graicias salisarg!

Otra pegunta de teoria:

Para crear las pantallas o levels, he pensado en hacer una clase, que controle todo, el menu, la pantalla game over y los levels, es asi la mejor manera? Entonces cada level en una clase, y el timer, dentro de cada clase level,no? Ahora una cosa, el control d teclado, lo pongo en el la clase control, o en cada level? O creo una clase levels, donde creo lo que esta en todos los levels "puntuacion, vida, etc" y dentro de esta clase cargo el level1 o el k sea??

Esque se alguna manera de hacerlo, pero no se la manera de hacerlo bien ;)

Por Phyronx

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Jul 2011 01:28 pm
Si miras cualquier framework de juegos, por ejemplo PushButtom, http://pushbuttonengine.com/ , y lees los features de su diseño tienes todas las respuestas. Pero rápidamente, si, el manejo de pantallas es un Stack, el control de input un Singleton, todos los elementos comparten un simple Tick al que se subscribe todo el juego.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos



Ultima edición por solisarg el 30 Jul 2011 02:57 pm, editado 1 vez

Argentina

firefox
Citar            
MensajeEscrito el 30 Jul 2011 02:55 pm
OStia. eeeesto buscaba! bueno,imagino.. :) voy a verlo, muchas gracias de nuevo1!!!

Por Phyronx

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 31 Jul 2011 10:45 pm
Buenas de nuevo!

He estado buscando mucho sobre stack i Singleton, ya que aunque he seguido varios tutoriales de como crear juegos, en ninguno habla sobre ellos. Sobre singleton he encontrado para que sirve, pero no entiendo como usarlo, y, es solo para acceder al stage desde todas las classes? Me podrias poner un ejemplo de uso para un juego? No el codigo, sino ejemplo de teoria..
Sobre Stack, no e tenido suerrte, no encontre ni que es ni como usarlo.. Si me ayudaras un poco...

Y lo de que todos los elementos usan el mismo tick.. Antes no sabia como acceder a el desde otra classe, peor imagino que es con el singleton,no?

Entonces por lo general:

Una clase controlara, desde las teclas, en nivel a cargar, la vida, si muere el personaje, y la pantalla del menu principal. Entonces, una classe por cada nivel, una para el gmae over, otra para el menu principal, una para el juegador, i una para cada monstruo,no? (haciendo un juego simple). Creo tambien una clase Levels y otra Monstruos para cargarlas i que ellas carguen el nivel, o lo hago directamente desde la control?

Como ves ando perdido, ya que todos los tutoriales de juegos que he revisado, en ninguno crea mas de 1 nivel, ni mas de una arma, ni mas de un monstruo...
Si me ayudaras con la organizacion de las classes...

Gracias una vez mas ,

Por Phyronx

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 01 Ago 2011 01:40 am
Un Singleton es una clase de la que existe una sola instancia, entonces por ejemplo el input de teclado es uno solo. Tick se refiere a una pulsación, típicamente un onEnterFrame que sirve para todo el juego. En general vas bien orientado, es preferible que lo vayas haciendo y que postees tus problemas, has leído muchos tutoriales y dices que ninguno te sirve, prefiero no escribir otro mas como respuesta porque ciertos conceptos necesitan de base en OOP y cierta experiencia, ambas cosas que recién empiezas a construir. Tu dale para adelante, después de tu primer juego ya podras discutir teoria

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Ago 2011 11:08 am
EI, si que me sirvieron, y mucho. :)

Lo que no trata sobre niveles, y no toca el singleton..

Lo que hace la classe control, o classe de documento, es algo lioso, y alguien por aqui me dijo que porque hacia esto asi.. Te pongo el codigo para explicarme mejor:

La classe del documento:

Código ActionScript :

public function DocumentClass() 
{
        playScreen = new AvoiderGame();
        playScreen.addEventListener( AvatarEvent.DEAD, onAvatarDeath );
        addChild( playScreen );
}
public function onAvatarDeath( avatarEvent:AvatarEvent ):void
{
        var gameOverScreen:GameOverScreen = new GameOverScreen();
        gameOverScreen.x = 0;
        gameOverScreen.y = 0;
        addChild( gameOverScreen );

        playScreen = null;
}


Otra classe:

Código ActionScript :

public class AvatarEvent extends Event 
        {
               public static const DEAD:String = "dead";

               public function AvatarEvent( type:String )
               {
                       super( type );
               }
        }


Y por ultimo, en la classe del nivel 1 vamos a llamarla, al morir el personaje realiza esto:

Código ActionScript :

if ( avatar.hitTestObject( enemy ) ) 
{
        gameTimer.stop();
        dispatchEvent( new AvatarEvent( AvatarEvent.DEAD ) );
}


Y asi con todo, con el boton del menu dispara NavigationEvent.PLAY, (en la classe NavigationEvent). Los niveles imagino que tb los pondria disparandolos asi. Aunque no creo que sea la forma,no?

No se puede hacer desde una sola classe? Osea envez de tanta historia, esto:

Código ActionScript :

if ( avatar.hitTestObject( enemy ) ) 
{
        gameTimer.stop();
      var gameOverScreen:GameOverScreen = new GameOverScreen();
        gameOverScreen.x = 0;
        gameOverScreen.y = 0;
        addChild( gameOverScreen );

        playScreen = null;
}

Por Phyronx

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Ago 2011 11:10 am
Siento volver a postear, pero te pongo el link a la parte esta del tutorial:

http://inzomnia-bsas.blogspot.com/2009/10/aprender-as-30-desarrollando-un-juego_25.html

Por Phyronx

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Ago 2011 01:27 pm
Usualmente por temas de rendimiento, no se usa el modelo de eventos en juegos, sino mas bien una metodología mas procedural, sea llamadas directas o flags que cambian en las funciones por defecto, por decir la rutina de muerte se llama en el tick, si hay alguien marcado como muerto se ejecuta la animación correspondiente. Si miras frameworks de juegos, verás que hay una serie de funciones que se llaman constantemente donde puedes ejecutar acciones, basarse en eventos disminuye el rendimiento cuando hay muchos.
Por otro lado, aunque es interesante planear la estructura, debes evitar un error muy común cuando se parte de este enfoque, que es el "overarchitecturing", es decir complejizar lo simple

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Ago 2011 03:27 pm
Muchas gracias solIsarg! Voy a bajar algun framework, y a mirar de descifraro para entender ya de una vez la estructura ;)

Por Phyronx

41 de clabLevel



 

chrome

 

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