Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Clonico de Konquest

Iniciado por Hechelion, 30 de Agosto de 2007, 04:48:50 AM

« anterior - próximo »

Hechelion

Este es mi primir proyecto con la libreria de EX3, de hecho es un proyecto que inicie para ir aprendiendo a usar la libreria.

El juego es un clonico del juego Konquest para KDE, programado en VB con la libreria dx_lib32.DLL de EX3.
Aca hay un enlace al juego original para que tengan una idea:
http://en.wikipedia.org/wiki/Konquest

Actualmente el juego tiene el modo Menú para personalizar y aceptar el mapa del universo a jugar y el mapa de juego propiamente tal. Para subir el código de la versión beta deseo tener lista la IA y resolver algunos detalles en desarrollo de los turnos, pero creo que dentro de los proximos días estara listo para que lo puedan probar y dar sus opiniones.
Por mientras les dejo 2 capturas de pantallas de lo que tengo funcionando:


Aca esta el modo menú para personalizar las propiedades del juego. (debo admitir que he hecho trampa, ya que los controloes deslizantes son 2 HScrollBar de VB)


Y ahora una imagen del tablero de juego:

Hechelion

Luego de darle algunas vueltas a la IA, aún no logro tener una partida con un contrincante decente. Pero por lo menos si no sabes jugar te puede ganar la IA.

Aca les dejo el enlace al código fuente para VB y al archivo compilado, como esta es una Beta no incluye ninguna libreria, así que necesitan tener instalada y registrada la dx_lib32.dll de Ex3.

http://www.badongo.com/file/5067010

Cuando tenga más tiempo para pulir los detalles faltantes, creare un instalable con las librerias y lo colocare en general, pero de momento agrdesco sus criticas.

Saludos.

Hechelion

Ex3.
Si quieres, puedes colocar el juego en tu página como ejemplo, de ser así me avisas para mandarte el último código.

[EX3]

No te preocupes, cuando tenga que subir la ultima revision de la libreria os pedire a toda la gente que habeis desarrollado con ella y publicado por los foros que documenteis minimamente el codigo y recompileis vuestros proyectos con la ultima version para despues subirlos a la web para descarga. Ya dejare aviso por el foro y en la web llegado el momento :)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Hechelion

#4
A un paso de terminar.

Luego de tener el juego listo, decidí hacerle una serié de cambios y mejoras, algunas de código y otras visuales.
El principal cambio y el que me tomo mayor cantidad de tiempo fue implementar algunas clases para controles básicos, como textbox, lista de mensajes ,etc.
también agregué la capacidad de comprar mejoras a los planetas.
.
ya con eso detengo el proyecto y me voy a dedicar algunos días a buscar errores (incluido los ortográficos) antes de subirlo junto con el código de las clases por si le llegan a ser de utilidad a alguien.
Les dejo un par de capturas de las pantallas del juego.




[EX3]

Mola!  ^_^

Ya me pensaba que no veria proyectos aprovechando la ultima actualizacion de la libreria :D

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Hechelion

Código fuente con los recursos pero sin la música de fondo ni las librerías (para ejecutarlo se requieren las librerías DX32 de ex3 y las librerias de VB6, para Vista se requiere la liberia Dx8vb.dll y para reproducir la música de fondo se requiere el juego de librerias de ogg)
http://www.filesavr.com/konquista

Archivo auto instalable que incluye librerías y música de fondo:
http://www.filesavr.com/setup

[EX3]

Enhorabuena :D A ver si saco un ratejo y lo pruebo. Igualmente lo publicare en la web como noticia ;)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

LucifersAngel

Lo estuve probando , creo que hay un par de fallas en el tiempo de ejecucion , ya que al intentar poner por ej el numero de naves a enviar hay que apretar como 20 veces el numero para que te lo tome, quizas sea mi pc lenta (2 Ghz Celeron) , pero si pide mas que eso jajaj nose, creo que deberias revisar eso , despues te felicito muy buen emprendimiento !!  ;)

Hechelion

Se agradece LucifersAngel.

Lo que comentas me llama bastante la atención, ya que a mi en un inicio me pasaba exactamente lo contrario, el loop del ciclo input era tan alto que al pulsar una tecla me la reconocía como 4 pulsaciones, así que metí todo el ciclo de input en un timer de 20 ms para que funcionara y en los PC que lo he corrido funciona bien, pero mi PC es un intel 2 core de 6300+ con 3 Gb RAM.

Por desgracia el único PC antiguo que tengo no me corre la librería por incompatibilidad con la tarjeta gráfica, pero voy a ver si me consigo algún celeron par hacer las pruebas.

Si te has bajado el código fuente te puedo pedir que el timer que tiene el formulario le pases su enable a False y en código del formulario en el procedimiento "graficar" actives la línea TimerInput_Timer y me comentes como te funciona así por favor.

Código (vb) [Seleccionar]

Private Sub Graficar()


Do While MainLoop

    'Llamar rutina de input del teclado
    [b]TimerInput_Timer[/b]

LucifersAngel

Hola hechelion, disculpame no entendi bien lo que me quisiste decir , que llame a la funcion graficar?? en el do loop, no importa mira
lo que hice fue cambiarle el intervalo del timer a 1ms , y anda perfecto !! veo que el problema esta en la frecuencia de nuestros micros, veo que el tuyo es bastante poderoso y con esa memoria jaja te envidio. Quizas puedas hacer una configuracion que se adapte al pc usado cambiando asi el intervalo del timer. Espero que te sirva la respuesta sino explicame de nuevo que hago y con gusto te ayudo , Saludos amigo  :)

[EX3]

Cita de: Hechelion en 09 de Febrero de 2009, 05:39:42 AM
Lo que comentas me llama bastante la atención, ya que a mi en un inicio me pasaba exactamente lo contrario, el loop del ciclo input era tan alto que al pulsar una tecla me la reconocía como 4 pulsaciones, así que metí todo el ciclo de input en un timer de 20 ms para que funcionara y en los PC que lo he corrido funciona bien, pero mi PC es un intel 2 core de 6300+ con 3 Gb RAM.
Para cosa que funciona a la perfeccion en dx_lib32 y no la sacais provecho >:D Lo que se hace en un juego para que vaya a la misma velocidad en todas las maquinas, o hasta un maximo mejor dicho, es limitar su numero de fotogramas por segundo. Para ello implemente hara un par de versiones o asi un nuevo parametro en la funcion Frame de dx_GFX que permite indicar un numero maximo de fotogramas por segundo que puede alcanzar el render grafico, que suele ser la parte mas critica de un juego en cierta manera. En vez de separar el codigo en un control Timer, donde te sera mas complicado sincronizarlo con el resto de la ejecucion del bucle principal del juego (practicamente lo que le sucenden a las funciones *_Hit de dx_lib32 como ya comente en el otro hilo...) limita el render grafico a 60 fps por ejemplo. De esta forma te dara igual tener un Intel Quad Core 3.6Ghz que un Intel Pentium II 400mhz ya que el programa correra a un maximo de 60 fps.

Yo el codigo de input recomiendo siempre ponerlo lo primero en la cola de ejecucion del juego, antes de los graficos y del audio.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Hechelion

Cita de: [EX3] en 09 de Febrero de 2009, 04:08:12 PM
Cita de: Hechelion en 09 de Febrero de 2009, 05:39:42 AM
Lo que comentas me llama bastante la atención, ya que a mi en un inicio me pasaba exactamente lo contrario, el loop del ciclo input era tan alto que al pulsar una tecla me la reconocía como 4 pulsaciones, así que metí todo el ciclo de input en un timer de 20 ms para que funcionara y en los PC que lo he corrido funciona bien, pero mi PC es un intel 2 core de 6300+ con 3 Gb RAM.
Para cosa que funciona a la perfeccion en dx_lib32 y no la sacais provecho >:D Lo que se hace en un juego para que vaya a la misma velocidad en todas las maquinas, o hasta un maximo mejor dicho, es limitar su numero de fotogramas por segundo. Para ello implemente hara un par de versiones o asi un nuevo parametro en la funcion Frame de dx_GFX que permite indicar un numero maximo de fotogramas por segundo que puede alcanzar el render grafico, que suele ser la parte mas critica de un juego en cierta manera. En vez de separar el codigo en un control Timer, donde te sera mas complicado sincronizarlo con el resto de la ejecucion del bucle principal del juego (practicamente lo que le sucenden a las funciones *_Hit de dx_lib32 como ya comente en el otro hilo...) limita el render grafico a 60 fps por ejemplo. De esta forma te dara igual tener un Intel Quad Core 3.6Ghz que un Intel Pentium II 400mhz ya que el programa correra a un maximo de 60 fps.

Yo el codigo de input recomiendo siempre ponerlo lo primero en la cola de ejecucion del juego, antes de los graficos y del audio.

Salu2...

no es ese el problema de fondo Exe, el problema fue el timer que le colocaste al HIT, antes de la versión 2.2 las funciones HIT funcionaban una delicia, con la actualización la función HIT empezó a dar problemas, todo el código nuevo ya no lo programo con HIT, lo programo con detección de flanco de subida de PRESS, pero como el juego ya se encontraba bastante desarrollado fue que opte por lo más fácil, limitar el ciclo del loop input con un timer (como mi juego es de turnos me podía dar el lujo de no tener sincronizada la rutina gráfica con la rutina input).

también probé lo de limitar los ciclos  y lamentablemente no funciona bien, a veces cuesta que reconozca el teclado, le subo un poco y empieza a detectarme  más de un pulsación así que en mi experiencia practica no funcionó.

Voy a probar la solución que propones con la clase o seguire con los flancos de subida de Press, pero como tal como dices, hay que reemplazar la función hit.

saludos

Hechelion

Cita de: LucifersAngel en 09 de Febrero de 2009, 02:25:58 PM
Hola hechelion, disculpame no entendi bien lo que me quisiste decir , que llame a la funcion graficar?? en el do loop, no importa mira
lo que hice fue cambiarle el intervalo del timer a 1ms , y anda perfecto !! veo que el problema esta en la frecuencia de nuestros micros, veo que el tuyo es bastante poderoso y con esa memoria jaja te envidio. Quizas puedas hacer una configuracion que se adapte al pc usado cambiando asi el intervalo del timer. Espero que te sirva la respuesta sino explicame de nuevo que hago y con gusto te ayudo , Saludos amigo  :)

me alegra que  te funcione, lo que te decía es que activaras la subrutina de input junto con la rutina loop principal, de momento las tengo separadas (sólo así logre que me funcionara en mi PC), con respecto a manejar el timer, creo que mejor me dare el trabaja de reemplazar todas las funciones HIT.

[EX3]

No decia que el limitar los fps solucionaran el tema de las funciones *.Hit de dx_lib32 dado que es un error de base por lo anteriormente comentado, pero si que si se quiere mantener una velocidad igual en cualquier maquina mejor limitar los fps a realizar retardos de x milisegundos ya que esto tampoco garantiza una velocidad igual en todas las maquinas.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.