Ver la versión completa : sugerencias para el control de un juego
namikata
26/01/2006, 20:21
bueno, pues tengo un proyecto entre manos (ya aviso que va para largo) y ahora mismo estoy enfrascado con el control del juego, y viendo la cantidad de jugones (yo el primero) que se mueven por aqui, me parece buena idea preguntar un poco a ver que ideas tiene la gente.
los datos: es un juego de naves, muchos disparos y tal, pero con un toque "quake" si ya se que suena raro, para acabar rapido pensad en un quake 3 visto desde arriba , pues eso pero con naves. El problema que tengo es que hay muchos movimientos y "pocos" botones xD asi que si alguien tiene alguna idea para hacer el manejo mas sencillo prometo pornerle en los creditos xDDD (por una modica suma de zennys claro...)
los movimientos/botones son estos:
- desplazamiento de la nave -> stick 16 direcciones
- rotacion de la nave Izq. Dech. -> L y R
- disparo principal -> X
- disparo secundario -> B
- disparo especial (solo ciertas armas) -> X+B
- cambiar arma -> A
- cambiar habilidad -> Y
- utilizar habilidad -> presionar stick
- fijar/liberar objetivo -> select
- menu/pausa -> start
bueno, algunas cosas como fijar/liberar objetivo no estan decididas del todo y ademas afectan a otros botones, ej: fijar objetivo hace que la rotacion sea automatica, y los botones L y R cambian de objetivos.
no se si al final, para facilitar un poco el manejo tendre que elminar algunas cosas. En especial, me preocupan los movimientos de cambiar armas y habilidades, pulsar el boton de cambiar arma hace que automaticamente dispares con otro arma, mientras que mi intencion principal era que pudieses tener elegida otro arma, mientras disparas con la que tienes y en un momento determinado activarla, por el tema de combinaciones de armas. Lo mismo con las habilidades, pero no tengo botones suficientes [wei6]
repito que esto proyecto va para largo, no es que sea excesivamente complicado, pero si juntamos que no conozco el lenguaje (estoy haciendolo en python y no lo conozco muy bien) y que por diversos motivos apenas puedo dedicar un par de ratos a la semana programando, pues como que va a tardar :P
bueno, pues si por favor alguien puede iluminarme con los controles se lo agradeceria muchisimo, vamos, que hasta le pongo en los creditos sin cobrarle nada!!!! jejeje
Molondro
26/01/2006, 20:38
No podrías hacer el control de la nave con arriba/abajo para mover hacia delante/detrás e izquierda y derecha para rotar la nave? así te quedarían llibres L y R?
Ya tienes los sprites para las naves? si vas a hacer varias naves seleccionables yo te podría enseñar alguna que tengo...
namikata
26/01/2006, 21:01
No podrías hacer el control de la nave con arriba/abajo para mover hacia delante/detrás e izquierda y derecha para rotar la nave? así te quedarían llibres L y R?
en este caso no me vale, yo puedo estar mirando hacia tu nave, pero moviendome hacia la izquierda, bueno la idea es que mires en la direccion que mires te puedas mover hacia cualquier parte, tienes que poder disparar a un enemigo mientras esquivas los disparos de los otros, como en un quake
Ya tienes los sprites para las naves? si vas a hacer varias naves seleccionables yo te podría enseñar alguna que tengo...
no tengo nada para los graficos, soy un zote para esas cosas y tenia pensado pedir ayuda con ese tema asi que te tomo la palabra, lo malo es que hasta que no tenga algo minimamente jugable voy a tirar con cuadrados de colores xD
y ya puestos a ponerse exigentes, si me permites, esas naves de las que hablas, podrian ser dos imagenes cada una, por una parte la nave, y por otra la cabina del piloto?? es por ir quitando dudas, por lo demas mientras se mantengan dentro de un tamaño me sirve todo (aunque pensaba seguir la tradicion y usar a pacman para la nave, fantasmas para los malos y ojos para los disparos xDD
de momento ni te preocupes que voy lentisimo y ademas en 1 mes tendre que dejarlo por un tiempo asi que te mandare un privado cuando ya te hayas olvidado de esto
gracias!!!
namikata
27/01/2006, 20:05
:arriba: :arriba: :arriba:
hago un pequeño up a ver si alguien tiene alguna idea para simplificar los controles, sino tendre que tirar con los que he puesto al principio
gracias!!!
- desplazamiento de la nave -> stick 16 direcciones
- rotacion de la nave Izq. Dech. -> L y R
- disparo principal -> X
- disparo secundario -> B
- disparo especial (solo ciertas armas) -> X+B
- cambiar arma -> A
- cambiar habilidad -> Y
- utilizar habilidad -> presionar stick
- fijar/liberar objetivo -> select
- menu/pausa -> start
Lo de presionar el stick no sé si funcionará muy bien porque creo que es demasiado fácil pulsarlo sin querer al moverlo en una dirección. ¿Qué tal L+R?
Respecto al desplazamiento de la nave, por si no lo has tenido en cuenta aún, échale un vistazo a este documento del Wiki (http://wiki.gp32spain.com/index.php/Mapeo_del_joystick_en_SDL#Configuraciones_del_Joys tick_recomendadas) (yo creo que tendrás que implementar el caso 2) y haz pruebas con este programa (http://www.gp32spain.com/foros/downloads.php?do=file&id=255) (no sé por qué no está el código fuente, ya que creo que en su día lo adjunte, pero lo puedes encontrar aquí (http://archive.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,46,1095)).
namikata
28/01/2006, 00:35
estaba pensando en usar el modo1 pero hare unas pruebas a ver que tal
alguna razon especial para usar el 2?
Hola namikata. ¿Te refieres a algo como Subspace (http://en.wikipedia.org/wiki/SubSpace_(computer_game))?
La verdad es que lo pones difícil, o quitas opciones o... Una opción podría ser limitar el número de armas y habilidades, de tal manera que no sean necesarios los botones para cambiar, lo cual podría ayudar a combatir el típico fenómeno de las naves que tienen más armas que motores :rolleyes:
namikata
28/01/2006, 05:29
Hola namikata. ¿Te refieres a algo como Subspace (http://en.wikipedia.org/wiki/SubSpace_(computer_game))?
La verdad es que lo pones difícil, o quitas opciones o... Una opción podría ser limitar el número de armas y habilidades, de tal manera que no sean necesarios los botones para cambiar, lo cual podría ayudar a combatir el típico fenómeno de las naves que tienen más armas que motores :rolleyes:
***** que ******!!!
siento el lenguaje pero llevo preparando este juego unos 5 meses y ahora me entero de que hay otro casi identico... desde 1996!! :llorosa: :llorosa: :llorosa:
y yo creia que estaba siendo original... snif
si es que hasta lo de la energia usada para disparar se parece, aunque en el mio es algo diferente, es un rollo raro
jo que bajon :mad:
esta noche toca gaupasa, pepes cocacola y lastblade 2 hasta que se me caigan los ojos
en fin, pezezin gracias por el link, voy a enchufar mi negrita
Suele ocurrir, el mundo de los videojuegos es tan amplio que es difícil crear algo nuevo :(
Por lo menoste puede servir de fuente de inspiración. Y si necesitas alguien que te eche una mano con el código o lo que sea, dímelo, que me aburro :D
namikata
28/01/2006, 07:10
que se le va a hacer, la verdad es que me da igual, fastidia, pero me da igual, me hacia ilusion hacer un juego de este estilo asi que habra que tirar "palante" xD
gracias por el ofrecimiento ue tal llevas python? ;D
aparte de ayuda programando necesito aclarar ideas, algun algoritmo para gestionar los disparos de las entidades? soy nuevo con esto de los juegos (he hecho unos cuantos pero nunca veran la luz :D son malisimos) y ando un poco liado
cuando una de mis entidades dispara, se generan un numero determinado de proyectiles 2, 5, 10, etc. los que sean, pero no lo hacen todos a la vez, sino en rafagas, puede haber una separacion de x frames entre cada uno, ejemplo: tu pulsas disparo una vez, y la nave hace "ta ta ta ta ta ta" 6 disparos consecutivos
habia pensado utilizar una lista en cada entidad que almacenase todos los proyectiles pendientes de generar, con la informacion necesaria para crear la instancia del proyectil y el numero de frames pendientes para generarlo pero no se si es la mejor manera...
se aceptan consejos y sugerencias [wei4] [wei4] [wei4]
estaba pensando en usar el modo1 pero hare unas pruebas a ver que tal
alguna razon especial para usar el 2?
En el modo 1 cuanto pulses por ejemplo arriba-izquierda y izquierda simultáneamente el sprite no se moverá, y el problema es que con el stick que tenemos esa situación puede darse bastante a menudo. Prueba con JoyTest y verás que hay zonas muertas. A no ser que lo tengas clarísimo, no creo que sea buena idea usarlo. El caso 2 es como el 1 pero evita lo de las zonas muertas.
que se le va a hacer, la verdad es que me da igual, fastidia, pero me da igual, me hacia ilusion hacer un juego de este estilo asi que habra que tirar "palante" xD
¿Y quéeeee? Que ya haya algo parecido a tu idea era previsible, ¡pero no lo dejes hombre! Que con tu actitud tendríamos Wolfenstein, pero no Doom ni Quake ni F.E.A.R. ni Splinter Cell ni..., y tendríamos Space Invaders, pero no Gradius, ni R-Type, ni Thunderforce, ni... :) Además, del estilo de ese juego no hay nada ahora mismo para GP2X (como mucho, hay algo ligeramente parecido: uno de naves portado de Linux que no recuerdo como se llama), así que no te desanimes.
cuando una de mis entidades dispara, se generan un numero determinado de proyectiles 2, 5, 10, etc. los que sean, pero no lo hacen todos a la vez, sino en rafagas, puede haber una separacion de x frames entre cada uno, ejemplo: tu pulsas disparo una vez, y la nave hace "ta ta ta ta ta ta" 6 disparos consecutivos
habia pensado utilizar una lista en cada entidad que almacenase todos los proyectiles pendientes de generar, con la informacion necesaria para crear la instancia del proyectil y el numero de frames pendientes para generarlo pero no se si es la mejor manera...
¿Usas Pygame? Es que no tengo casi ni idea de Python. Pero bueno, así en general, yo lo que haría sería tener una entidad (como se llame en Python) "Proyectil" que almacenaría la posición (y la velocidad si hace falta) y cada vez que se pulsara el botón de disparo activaría un temporizador de manera que generara un objeto del tipo "Proyectil" cada X milisegundos, según la frecuencia que quieras.
namikata
28/01/2006, 08:34
En el modo 1 cuanto pulses por ejemplo arriba-izquierda y izquierda simultáneamente el sprite no se moverá, y el problema es que con el stick que tenemos esa situación puede darse bastante a menudo.
por que es una zona muerta? yo pensaba que era la forma de tener 16 direcciones en el stick, en el dibujo que me pasaste el modo uno no tiene zonas muertas, tiene 8 direcciones fisicas y 8 logicas, mi intencion afinar mas el movimiento para poder maniobrar entre los disparos cuanto mas parecido a un stick analogico mejor.
¿Y quéeeee? Que ya haya algo parecido a tu idea era previsible, ¡pero no lo dejes hombre! Que con tu actitud tendríamos Wolfenstein, pero no Doom ni Quake ni F.E.A.R. ni Splinter Cell ni..., y tendríamos Space Invaders, pero no Gradius, ni R-Type, ni Thunderforce, ni... :) Además, del estilo de ese juego no hay nada ahora mismo para GP2X (como mucho, hay algo ligeramente parecido: uno de naves portado de Linux que no recuerdo como se llama), así que no te desanimes.
no, si llevas razon, pero ha sido el shock, hay cosas que no tienen en comun y de todas formas para mi sigue siendo un proyecto importante, no tengo intencion de dejarlo tirado, mas que nada por que me gustaria mucho poder jugar a el, por eso lo hago [wei5]
¿Usas Pygame? Es que no tengo casi ni idea de Python. Pero bueno, así en general, yo lo que haría sería tener una entidad (como se llame en Python) "Proyectil" que almacenaría la posición (y la velocidad si hace falta) y cada vez que se pulsara el botón de disparo activaría un temporizador de manera que generara un objeto del tipo "Proyectil" cada X milisegundos, según la frecuencia que quieras.
uso pygame pero yo tampoco tengo ni idea de python, en realidad programo(cuando me dejan) en C# pero llevaba tiempo detras de python asi que esta es una buena oportunidad
me da que esa entidad va a ser la propia nave, pondre una lista de proyectiles pendientes, y como emporizador podria usar los frames por segundo
lo malo de este proyecto es que solo puedo dedicarle un par d momentos a la semana y la verdad es que en lo que me pongo a ver por donde estaba se me pasa la mitad del tiempo asi que no se cuando estar a listo pero tranquilos que llegará xD
ademas hay gente que se ha ofrecido a echarme una mano con el tema de graficos asi que no les puedo hacer el feo de dejarles colgados
gracias por los animos, ha sido un momento de debilidad [wei4]
namikata
28/01/2006, 08:35
por cierto estoy en los foros unas 18 horas al dia asi que si necesitas cualquier cosa solo dilo y seguro que lo leo [wei5]
por que es una zona muerta? yo pensaba que era la forma de tener 16 direcciones en el stick, en el dibujo que me pasaste el modo uno no tiene zonas muertas, tiene 8 direcciones fisicas y 8 logicas, mi intencion afinar mas el movimiento para poder maniobrar entre los disparos cuanto mas parecido a un stick analogico mejor.
Uy, tienes razón. No tenía el dibujo delante y lo he confundido con el caso 4. Igualmente, cuidadín que como ves (aunque en el dibujo es más bien orientativo) el arco de cada posición no tiene la misma medida. Es decir, en teoría, es más fácil activar sw1 que sw1+sw2. Bueno, y en la práctica también. :)
lo malo de este proyecto es que solo puedo dedicarle un par d momentos a la semana y la verdad es que en lo que me pongo a ver por donde estaba se me pasa la mitad del tiempo asi que no se cuando estar a listo pero tranquilos que llegará xD
ademas hay gente que se ha ofrecido a echarme una mano con el tema de graficos asi que no les puedo hacer el feo de dejarles colgados
gracias por los animos, ha sido un momento de debilidad [wei4]
No tienes tiempo, ¿y luego dices que estás 18 horas en el foro? :)
namikata
28/01/2006, 09:06
No tienes tiempo, ¿y luego dices que estás 18 horas en el foro? :)
es que estoy 24 horas en la cama y puedo escribir con el teclado "hacia arriba-2 pero no soporto programar asi, por eso solo programo un par de veces a la semana cuando me levanto, cosas de la salud (pero lo llevo muy bien eh [wei6] ), y como me aburro mucho estoy todo el dia con los foros abiertos y mientras trasteando con los emus de ls gp2x [wei5]
es que estoy 24 horas en la cama y puedo escribir con el teclado "hacia arriba-2 pero no soporto programar asi, por eso solo programo un par de veces a la semana cuando me levanto, cosas de la salud (pero lo llevo muy bien eh [wei6] ), y como me aburro mucho estoy todo el dia con los foros abiertos y mientras trasteando con los emus de ls gp2x [wei5]
Ahora lo entiendo. Pues nada, sea lo que sea que te mejores y sobre todo a seguir llevándolo bien.
namikata
28/01/2006, 09:11
gracias, lo peor es que tengo mono de programacion asi que cuando me recupere me ventilo el emulador de n64 en 2 semanas xDDD
Bueno, el uso de las habilidades, en lugar de el botón del stick (me parece que es de 8 posiciones y no de 16...) usa la combinación Y+B, creo que sería la combinación más lógica. Por otra parte, todo esto son temas que se pueden pulir una vez haya una demo (aunque sea en wireframe) de movimiento, mas que nada para probar que tal funciona en la práctica.
namikata
28/01/2006, 20:51
lo tendre en cuenta, a lo mejor asi es mas sencillo
en cuanto al mando, tiene 8 direcciones fisicas, y haciendo AND se consiguen 8 mas logicas, 16 en total :)
Buenas namikata. Yo de Python no soy un experto, pero es un lenguaje que me gusta mucho, y se podría decir que controlo PyGame :D
En cuanto a lo de las balas...
Una opción podría ser tener una lista global de entidades. En cada frame la recorres, actualizando su estado, borrando las que ya no sean necesarias, y dibujando las demás. O si lo prefieres, varias listas, una para cada tipo de entidad: naves, disparos, power-ups, etc.
Luego, en cada nave podrías tener dos contadores, uno de disparos (llamemosle D) y otro de tiempo (T). Al disparar pones D al número de disparos que quieres que haga la nave, y T al intervalo que quieres que haya entre cada uno, y añades una bala a la lista de entidades. Después, en cada frame decrementas T, y cuando llegue a 0, decrementas D, reinicias el valor de T, y añades otra bala a la lista. Cuando D llegue a 0, dejas de disparar.
namikata
28/01/2006, 22:39
Buenas namikata. Yo de Python no soy un experto, pero es un lenguaje que me gusta mucho, y se podría decir que controlo PyGame :D
En cuanto a lo de las balas...
Una opción podría ser tener una lista global de entidades. En cada frame la recorres, actualizando su estado, borrando las que ya no sean necesarias, y dibujando las demás. O si lo prefieres, varias listas, una para cada tipo de entidad: naves, disparos, power-ups, etc.
Luego, en cada nave podrías tener dos contadores, uno de disparos (llamemosle D) y otro de tiempo (T). Al disparar pones D al número de disparos que quieres que haga la nave, y T al intervalo que quieres que haya entre cada uno, y añades una bala a la lista de entidades. Después, en cada frame decrementas T, y cuando llegue a 0, decrementas D, reinicias el valor de T, y añades otra bala a la lista. Cuando D llegue a 0, dejas de disparar.
mm no pinta mal, lo de las listas precisamente estaba mirando los grupos de sprites en pygames que me permiten compartir entidades entre grupos y no parece consumir muchos recursos, en cuanto a lo de los disparos, pues es bastante mas complicado, el caso de la rafaga que explique antes era el mas sencillo, hay proyectiles con trayectorias, que absorben otros proyectiles, algunos con comportamientos caoticos, y un disparo en realidad es el conjunto de esos proyectiles, la idea me serviria si una vez creados los proyectiles fuesen independientes pero no es el caso.
tengo el documento antiguo (cuando el juego era para win) y ahi detallo todos los disparos asi como su comportamiento y el sistema de armas/habilidades/energia, quizas asi podeis ver un poco mas claro como funciona el tema de proyectiles, mañana me devuelven un mini hd en el que lo tengo guardado y os lo cuelgo
de momento, la idea que tengo gracias a todos vuestros comentarios :D es la de crear entidades sin representacion grafica (disparos) asociadas a los jugadores, un jugador tendra x entidades disparos activas en todo momento, hasta que todos los proyectiles del disparo no desaparezcan la entidad sigue funcionando, al principio puedo usar listas en la entidad para proyectiles pendientes de crear, indicando el tipo de proyectil y el tiempo restante (milisegundos o frames no lo he decidido todavia), al crear la entidad se le puede dar la informacion necesaria para controlar los efectos adicionales de los proyectiles como absorcion, disminucion de energia, autodestruccion de proyectiles, control de trayectoria etc... y una vez que estan creados los proyectiles, la entidad disparo puede controlar las colisiones, el reparto de energia y vida, asi como la asignacion de puntos
:D no si al final va a quedar un juego chulo y todo
muchas gracias por toda vuestra colaboracion!!!
Bueno... yo de programación no se nada, asi que te doy la razón en todo... xD
namikata
29/01/2006, 01:32
asi me gusta, captando incautos para la causa, si es que uno tiene carisma :rolleyes:
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.