[Desarrollo] MyInvaders

[Desarrollo] MyInvaders

Notapor rebach » Jue Oct 16, 2008 6:58 pm

Trasteando por alli vi como mover una nave por el fondo me gusto tanto que he ido ampliando eso hasta ahora, tengo bastante cosas hechas del juego empieza a verse jugable, y por ser mi primer juego me esta quedando bien, jeje.

Todo el mundo conoce el tipico Invaders antiguo... pues es como ese de momento me gustaria ponerle una historia y añadirle mas opociones como ir canviando de navee enemigos masa potentes misiones "diferentes", como proteger otra nave, etc.

Estoy un poco verde con esto la idea es hacer el juego con C y SDL, que es lo que empiezo a "dominar". Por otro lado si alguien le interesa el codigo lo subire aunque de momento le faltan un par de cosas que creo que son escenciales.

Segui el ejemplo de esta pagina web para hacer el bucle del juego y es util para ver en que parte el programa.. se "atasca". Vereis he hecho a partir de una estructura de naves enemigas una funcion random para que vayan disparando cuando quieran, si alguien sabe otra forma para que no disparen "todo" el rato, weno el kit de la question es que cuando el juego maneja las naves y los disparos de la pantalla va a 20fps mientras cuando no hay disparos a mas de 30fps y cuando solo queda una nave va a 45fps asi que ya os podeis imaginar en el momento de jugarlo.. que varie tanto la velocidad no queda bien.

He pensado en hacerlo por tiempo, creeis que solucionara el problema? Como veis el proyecto? :)


:idea:
rebach
 
Mensajes: 7
Registrado: Jue Oct 16, 2008 2:08 pm

Notapor endaramiz » Jue Oct 16, 2008 7:55 pm

Una solución sería limitar los FPS al mínimo que alcanza. En tu caso a 20 FPS (Cuando tengas bastante completado el juego puedes intentar optimizarlo).

El proyecto está bien si empiezas. Pero mi consejo es que vayas paso por paso. Primero lo básico y luego ya intentarás hacer lo de las misiones y eso.
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona

Notapor rebach » Sab Oct 18, 2008 1:21 am

Gracias dvd ya se ve mas claro el juego, dentro de poco "acabare" la parte funcional del juego, se crean varias naves, dispara las mata se añade puntuacion si se acaban vienen mas falta depurar recibir los disparos de las naves enemigas.

Otra duda que tengo es al compilar en windows al sar la libreria SDL_ttf no me lo coge el mingw32 alguien sabe como podria compilarlo?

:idea:
rebach
 
Mensajes: 7
Registrado: Jue Oct 16, 2008 2:08 pm

Notapor lucesita » Mar Nov 04, 2008 4:03 pm

Y no has pensado en usar C++?

a mi me interesa ver el codigo... si lo puedes subir :P

Exitos....


Saludos Lucesita
lucesita
 
Mensajes: 57
Registrado: Mié Mar 12, 2008 2:49 pm

Notapor rebach » Mié Nov 05, 2008 4:54 pm

Hola lucesita

Escogi C para hacerlo porque daba bastante versatilidad en llebarlo a muchas plataformas y luego no puedo compilarlo por la libreria SDL_ttf en win :lol: . Ya tengo bastante hecho ya pensare en canviarme en C++ en futuros proyectos.

Te paso el codigo, si tienes cualquier duda, pregunta. Y si me ayudas arreglar la velocidad del juego te lo agradecere mucho hahha 8)

http://rapidshare.com/files/160925762/MyInvaders_0-01b.rar




:idea:
rebach
 
Mensajes: 7
Registrado: Jue Oct 16, 2008 2:08 pm

Notapor lucesita » Jue Nov 06, 2008 5:16 pm

BAsicamente, a mi la libreria SDL_ttf me la toma el mingw32, yo toy usando windos

lo que m genera problema es la estructura que hiciste vos :$
y honestamente nu se por que me genera problema, jajajja


EDIT: lo anterior lo escribi apurado.

basicamente con lo que tuve problema fue con el dimencionamiento de las estructuras, tu las haces dinamicas, y yo mas bien de malloc conozco nada y nada :P

vamos pude correr el juego modificando poca cosa... y a mi me mantiene todo a 33 FPS
no tengo el prblema que tu mencionas mas arriba

EDIT 2:

Por cierto me gusta tu estilo de porgramar :P eres muy prolijo
lucesita
 
Mensajes: 57
Registrado: Mié Mar 12, 2008 2:49 pm

Notapor rebach » Jue Nov 06, 2008 10:04 pm

Haha prolijo? Que significa. :lol: jeje

Tienes que decirme como has podido compilarlo en windows, que librerias le has puesto al mingw32 y un par de ideas para ir mejorando el juego si tienes correo o msn dimelo y lo hablamos mucho mas rapido.



:idea:
rebach
 
Mensajes: 7
Registrado: Jue Oct 16, 2008 2:08 pm

Notapor lucesita » Vie Nov 07, 2008 4:20 pm

como decirtelo te lo digo

lucastisera@gmail.com
es mi MSN y Correo

pero creo que es mejor que se hable por aqui ya que siempre a alguien le puede ser de utilidad.

las unicas librerias que utilize para compilarlo bajo win fue, SDL y SDL_ttf esas 2, el ide que use para compilar fue el CODEBLOCK, sin embargo para que me compile tuve que modificar
Código: Seleccionar todo
prot = malloc(sizeof(Prot));

por esto
Código: Seleccionar todo
prot = malloc(16);


es sobre el fichero main en la linea 50

Realmente no se que tiene, ni como trabaja el malloc pero a mi entender solo te reserva 4 bytes el malloc (sizeof(prot));
cuando en realidad te tendria que almacenar 4*4 (ATENCION ESTO ES LO QUE ME PARECE A MI, Tomenlo como leyenda urbana y si es posible comenten que es lo correcto)

bueno haciendo esto que te dije y unas modificas pequenias, compila perfecto.

las modificas que te digo, son sobre el puntero "destino" directamente los anule, por que me tiraban error :P yo creo que deberias verlo vos, por que no me puse 100% con el codigo
lucesita
 
Mensajes: 57
Registrado: Mié Mar 12, 2008 2:49 pm

Notapor rebach » Sab Nov 08, 2008 3:13 pm

merci lucesita ya he podido compilar en windows me hice un lio con las librerias sdl_ttf ademas por google vi un post sobre que con mingw32 no se podia y eso me hizo desistir, al final era un problema de colocar en sdl_ttf.h en la carpeta correcta y renombrar la SDL_ttf.lib -> SDL_ttf.a

Eso si lo compile tal qual del codigo que he subido no he cambiado nada, no me ha dado ningun error de estructuras, que parametros has puesto para compilarlo?

Tambien podemos ir mirando como mejorarlo, en win parece que se mantiene mas los 33fps aunque a lo mejor con dirty rectangles consiguiriamos mas fps. Miramos de mejorar los fps o los ataques y el movimiento de la nave?



:idea:
rebach
 
Mensajes: 7
Registrado: Jue Oct 16, 2008 2:08 pm

Notapor lucesita » Lun Nov 10, 2008 5:30 pm

otra pregunta... dime, cuando llegas a los 1000 puntos te tira algun error?
lucesita
 
Mensajes: 57
Registrado: Mié Mar 12, 2008 2:49 pm

Notapor rebach » Lun Nov 10, 2008 10:34 pm

Si sale un error sera por la linia:
Código: Seleccionar todo
if((lista == NULL) && (contador < 1000))
         crearListaEnemis(&lista);


La idea es que no llegue a esa puntuacion porque antes se habra pasado de nivell, luchara contra enemigos mas fuertes o se canviara la nave, varias posibilidades para cuando el juego no ande tan verde.

Has probado de correr el juego en otro pc de win, hoy he hecho unas pruebas con otro ordenador, el tipico que no ha compilado nada en su vida :lol: , al principio me he encontrado con algunos problemas de la libreria sdl vale las coloco todas pero despues me habria una ventana y se quedava en negro :cry: . Ire probando pero no lo entiendo si tenia todas las librerias y ficheros..


:idea:
rebach
 
Mensajes: 7
Registrado: Jue Oct 16, 2008 2:08 pm

Notapor lucesita » Mié Nov 12, 2008 4:59 pm

es raro que se te quede solo negra y no te tire errores...

lo probe en 2 ordenadores bajo win, sin embargo nunca tuve el problema de la pantalla negra.
lucesita
 
Mensajes: 57
Registrado: Mié Mar 12, 2008 2:49 pm

usar fps fijos

Notapor carlostex » Mar Jul 14, 2009 4:48 pm

Hola, estoy aciendo un juego de unos tanques, tiene enemigos los cuales disparan cada determinado tiempo, asi que aver si te sirve el metodo que use, te cuento.
Tengo declarada una variable global que define cuantos fps corren, y uso un contador de tiempo, son dos funciones una resetea el tiempo en una varible a la que le llamo tiempo de inicio, y otra funcion que me debuelve cuanto tiempo transcurrio a partir de que resetee el tiempo, el codigo es el sig.
Código: Seleccionar todo

void reset_time(){
   
   time_inicio=SDL_GetTicks();
}

Uint32 current_time(){
   time_actual=SDL_GetTicks();
   return time_actual-time_inicio;
   
   }


el mecanismo es muy cencillo tomar el tiempo transcurrido desde que se inicio sdl en dos tiempos disintos, el ultimo valor tiempo sera mayor al primero si restar el ultimo al anterior vas a obtener el tiempo que transcurrio.
pues en mi bucle llamo a reset_time al inicio, y al final llamo a current_time, y lo sigo llamando dentro de un while, hasta que no trancurra determinado tiempo, en este caso, divido 1000/fps para obtener cuanto tiempo requiero esperar.
tambien manejo una variable llamda ciclos, cada siclo aumenta en cada vuelta del bucle, y por ejemplo, mis enemigos disparan cada 20 ciclos, y creo obtienes mas control del tiempo en el juegos, espero te sirva
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico

Notapor Juanxo » Mar Jul 14, 2009 5:09 pm

carlostex, no lo digo por nada en particular, pero creo que no conviene "revivir" post tan viejos. Fijate que la fecha de la última respuesta es de hace 8 meses. Yo creo que si los post son tan viejos, es mejor que le mandes un mensaje privado, y en caso de que te conteste, pues entonces lo publicas o lo compartes con los demás. Más que nada porque yo creo, que a lo mejor me equivoco, que no va a haber respuesta del autor del tema.
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Notapor rebach » Jue Ago 27, 2009 11:03 pm

@ carlostex gracias por la idea cuando pase los examenes tengo interes en volver a mirarmelo un poco, sino lo entiendo mucho ya me pondre a preguntarte alguna duda jejeje

Saludos
rebach
 
Mensajes: 7
Registrado: Jue Oct 16, 2008 2:08 pm


Volver a Videojuegos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron