PDA

Ver la versión completa : [Programación] Programación "secuencial" para HTML5



OscarBraindeaD
01/12/2013, 11:56
Hola a todos,
estoy viendo varias posibilidades para programar juegos para html5 (usando javascript, monkey, etc) pero todas ellas usan un sistema onupdate(), onrender() y tienes que controlar el estado del juego en el que estás, etc... Supongo que es lo que se lleva, que es lo más adecuado para temas de OOP y demás, pero es un sistema que, personalmente, no me gusta.
La pregunta es... hay algún lenguaje, no gamemakers, que permita exportar/generar código/etc a javascript y que se programe de forma "secuencial" (típica forma en la que el programador controla cuándo se pinta en pantalla, se detectan las pulsaciones de teclas... vamos, como en BASIC, C, etc)...

Graaacias!

otto_xd
01/12/2013, 12:14
Creo que nada te impidide hacer un bucle para actualizar la pantalla (aunque es ineficiente, JS es eventual por algo), lo que ya no se es si se puede leer el estado de las teclas, la verdad, si no es de forma eventual.

hardyx
01/12/2013, 12:37
Tienes 123Basic, es un conversor de GLBasic (un BASIC comercial orientado a juegos) a javascript + HTML 5, y es gratuito.

http://www.glbasic.com/forum/index.php?topic=8087.0

OscarBraindeaD
01/12/2013, 17:42
Gracias por las respuestas a los dos.


Creo que nada te impidide hacer un bucle para actualizar la pantalla (aunque es ineficiente, JS es eventual por algo), lo que ya no se es si se puede leer el estado de las teclas, la verdad, si no es de forma eventual.

Si llamo a la función con el bucle principal con una llamada normal (ni con timeOut ni con interval) y desde ahí lo hagp todo (como si fuese un main() de C o la entrada a un programa BASIC normal), la lógica funciona, pero no el pintado con drawImage.
Para que funcione el drawImage tengo que llamar a la función principal con interval y entonces sí funciona. Pero esto me obliga a mantener gameStates, etc...

-----Actualizado-----


Tienes 123Basic, es un conversor de GLBasic (un BASIC comercial orientado a juegos) a javascript + HTML 5, y es gratuito.

http://www.glbasic.com/forum/index.php?topic=8087.0

Me lo comentó MentalThink, del foro de GLBasic, pero no andaba muy fino aún... lo probé hace un par de semanas y fallaba bastante. Según me dijo MentalThink, algo habían arrglado, pero no sé si todo o casi todo. Lo que no sé es si es capaz de interpretar un programa en GLBasic "tal cual" o hay que mantener una estructura especial, similar a la que comento arriba...

hardyx
01/12/2013, 18:22
Me lo comentó MentalThink, del foro de GLBasic, pero no andaba muy fino aún... lo probé hace un par de semanas y fallaba bastante. Según me dijo MentalThink, algo habían arrglado, pero no sé si todo o casi todo. Lo que no sé es si es capaz de interpretar un programa en GLBasic "tal cual" o hay que mantener una estructura especial, similar a la que comento arriba...

Hay una función ON_LOOP o algo parecido donde se pinta, pero el resto de código es secuencial y no tienes por qué usar objetos (o types) si no quieres.

OscarBraindeaD
01/12/2013, 18:49
Gracias por la info, Hardyx lo volveré a mirar.
Los objetos o types extendidos, no son problema, lo que pasa es que me fastidia que me """"obliguen""" a usar una pasada a los objetos para actualizarlos y otra para pintarlos... manías mías!

^MiSaTo^
01/12/2013, 21:39
Pero esque cualquier juego se hace así. Vamos, es el principio básico.
Tienes un bucle principal "infinito" (o similar), y dentro de él los distintos updates y finalmente render. Y todo ello se ejecuta en cada frame.
Si no lo haces así, ¿cómo pretendes hacerlo?

swapd0
01/12/2013, 22:31
Pero esque cualquier juego se hace así. Vamos, es el principio básico.
Tienes un bucle principal "infinito" (o similar), y dentro de él los distintos updates y finalmente render. Y todo ello se ejecuta en cada frame.
Si no lo haces así, ¿cómo pretendes hacerlo?
Supongo que quiere meter en cada función para cada tipo de enemigo la parte de la IA/logica y la de dibujado, pero es mejor tenerlo separado.

OscarBraindeaD
02/12/2013, 05:11
Supongo que quiere meter en cada función para cada tipo de enemigo la parte de la IA/logica y la de dibujado, pero es mejor tenerlo separado.

En efecto, es exactamente eso. Sé que quizá no es lo óptimo de cara al rendimiento, pero quiero llamar yo a dibujar -incluso varias veces- donde quiera, no tener que hacerlo en un punto determinado.
Aunque estoy acostumbrado al tema de gameStates, momento de update y momento de render, quería ver si es posible hacerlo en plan "manual"... pero me da que no...

Gracias!

swapd0
02/12/2013, 10:24
En efecto, es exactamente eso. Sé que quizá no es lo óptimo de cara al rendimiento, pero quiero llamar yo a dibujar -incluso varias veces- donde quiera, no tener que hacerlo en un punto determinado.
Aunque estoy acostumbrado al tema de gameStates, momento de update y momento de render, quería ver si es posible hacerlo en plan "manual"... pero me da que no...

Gracias!
No es cuestión de rendimiento, es cuestión de tener las cosas ordenadas. La lógica del juego/programa es una cosa y el dibujado es otra, por lo tanto es mejor tenerlo por separado.