[Devlog] Vircon32: Creando mi propia consola

carra

#90 Así es. He estado mirando también como alternativa TDM-GCC, pero primero que no es muy fiable para el futuro (lo lleva un solo tío y ha habido 1 update en 5 años). Y segundo no entiendo cómo se compilan las librerías con este entorno, ya que no hay consola de comandos tipo shell como en MSYS.

El problema de MSYS es que si no tienes mucho cuidado, hasta en herramientas de linea de comando te cuela dependencias de las 3 DLLs principales. Y en programas con más cosas como el emulador mínimo habrá 5.

1 respuesta
r2d2rigo

#91 no vas a tener suerte en lo que intentas hacer, en Windows todos los compiladores tienen el runtime/stdlib de C en una DLL.

1 respuesta
carra

#92 Así es, pero lo quería intentar porque en versiones anteriores sí se podía conseguir. Al menos en 32bits.

Por lo que he visto el problema parece existir sólo cuando se tienen que mezclar librerías estáticas y dinámicas. En mi caso esto pasa en el emulador porque OpenAL necesita enlazarse como DLL. En el resto de programas he conseguido que no dependan de ninguna DLL, sólo el ejecutable.

En fin, no es la solución ideal pero es aceptable. Problema arreglado por ahora.

carra

En el juego de las burbujas ya se va a empezar a usar más de un botón. Manejarlo así con el teclado ya no se hace tan bien, y por eso andaba yo metido en el tema de los joysticks. Ahora estoy haciendo un primer intento para que el emulador ya nos deje configurar los controles.

El problema de cómo hacer esto es interesante, hay muchas soluciones posibles. SDL permite varias maneras de identificar joysticks, y cada una puede tener sus ventajas e inconvenientes:

  • Existen "IDs de instancia", que son siempre únicos (incluso para joysticks iguales), pero que pueden cambiar para un mismo joystick según cuándo se haya conectado.
  • Existen "IDs únicos globales" (GUID), que identifican cada joystick siempre con el mismo número (incluso en sesiones distintas). Pero tienen el inconveniente de que dependen sólo del tipo de joystick y no pueden distinguir entre 2 joysticks iguales como el pack que yo me compré. Además parece ser que también hay marcas baratas que usan las mismas placas de otros joysticks y aunque para nosotros serán diferentes a SDL le parecerán el mismo.
  • Existen los nombres que da cada joystick. Es un buen indicador para el jugador si los nombres son buenos (por ejemplo: "XBox 360 gamepad"). Pero hay muchos mandos barateros que no se molestan y sólo vienen nombres muy genéricos como "USB gamepad".

Mi solución va a ser que para cada tipo de joystick se pueda crear un perfil que asocie esos controles a los del mando de Vircon32. Cada perfil podrá tener nombre puesto por nosotros (que por defecto será el del joystick), pero identificará el joystick usando el GUID. Todo esto se guardará en un archivo de configuración para recordarlo entre sesiones. Después, a cada mando de Vircon (Player 1 a Player 4) se le podrá asociar alguno de estos perfiles para controlarlo.

Por otro lado está el teclado, que también tiene que poderse mapear al mando de Vircon. Y de hecho este caso es especial: es muy normal que si alguien no tiene joysticks, o está en un portátil, quiera usar 2 perfiles en el mismo teclado para jugar a dobles (lo típico: uno juega con las flechas y el otro con WASD).

Estoy en proceso de programar todo esto, y luego quedará ver cómo hacer la interfaz gráfica para ello.

11 días después
carra

Actualizo de nuevo, aunque sea sólo para confirmar que no he abandonado el proyecto. No estoy en mi mejor momento en mi vida personal, y me está costando bastante encontrar motivación. Para ponerme con esto y en general. Así que aún puede pasar algún tiempo hasta que tenga algún avance. Aún así, si alguno estáis programando y necesitáis ayuda, por aquí estaré. Seguiremos informando.

1 1 respuesta
thenanox

#95 espero que vaya todo bien. estos proyectos lo dificil suele ser a largo plazo, pero si te ayuda, desde fuera, me parece super interesante y lo he estado siguiendo de cerca. admito que me molaria darle caña pero ando tambien con poco tiempo, pero confio en que salga todo bien, y puedas volver a darle cera

3 1 respuesta
Encofrado

Acabo de descubrir este hilo, pero no veo nada de malo que te tomes tú tiempo para volver, las cosas a desgana nunca salen bien, mucho ánimo y espero que te recuperes pronto de tu bache y puedas seguir deleitándonos con esta maravilla de proyecto 😉.

1 1 respuesta
carra

#96 #97 Gracias! Me alegra un montón ver el interés. No os preocupeis que continuar, continúa. Yo de todas formas ya me lo planteé como un proyecto a largo plazo, así que esto tampoco le debería afectar mucho :thumbsup:

3
1 mes después
carra

Vuelvo por aquí. Ha pasado un mes pero creo que he podido poner mis asuntos más en orden. Aprovecharé este momento de motivación para tratar de retomar ya este proyecto.

He estado trabajando un poco en el audio para el juego de las burbujas. He creado unos cuantos efectos de sonido usando jfxr, y estoy intentando componer una música sencilla para el gameplay en sí. De todas formas veo que componer me cuesta bastante trabajo, así que puede que en algún momento pida ayuda por aquí o bien me vaya a fiverr a que me compongan algunos temas.

Por otro lado he empezado a definir un esqueleto básico para empezar, por fin, a escribir las especificaciones de la consola. El producto final serán documentos PDF, al estilo de las guías que ya os puse pero más extensas y elaboradas.

8
carra

Aunque no sea un gran avance, "el juego de las burbujas" ya tiene nombre:

Voy a hacer una pequeña animación para la pantalla de título, algo sencillo (todavía sin menús ni nada), sólo para que no empiece el juego directamente que queda muy cutre jeje

2 1 respuesta
Jastro

#100 Aparte de ti, hay alguien desarrollando juegos para vircon?

1 1 respuesta
carra

#101 De momento creo que no. @vago_21 estuvo haciendo algunas pruebas pero no creo que esté haciendo juegos aún. Así que salvo sorpresa, los primeros juegos serán míos.

1 respuesta
B

#102 yo sigo con ello, ahora menos porque tengo muchas práctias de la uni que entregar, pero me es muy entretenido, gracias a que está el código de los otros juegos puedo copypastear jajaja porque soy un inútil

Pero no me he bajado del barco aún

1 1 respuesta
carra

#103 Jeje genial! No hay ninguna prisa, así que tú atiende a lo importante. Además de los juegos que vaya haciendo pondré también el código, así tendrás más para copy paste jeje

Jastro

yo ando liado con mchas cosas, desde que saque tiempo hago alguna cosilla

2
carra

A la vez que voy avanzando Triple Bubble estoy también traduciendo al inglés las 3 guías que ya creé en español (la guía de la consola, la de cómo crear juegos y la del compilador de C). Lo hago porque me he decidido a crear también un hilo de Vircon al estilo de éste en otro foro que frecuento (game developers refuge), de habla inglesa.

Lástima que fui tonto en su día y algunas de las figuras las inserté como imagen sin guardar el PowerPoint original. Ahora estoy teniendo que reconstruirlas, pero al menos ya he aprendido para otras veces... :weary:

5
carra

Os pongo un primer video con gameplay del juego, para ir abriendo boca. Aún faltan detalles importantes del gameplay como por ejemplo poder morir o terminar el nivel. Pero se va pudiendo apreciar cómo es el juego.

Ahora mi siguiente meta será completarlo más hasta que os pueda subir una primera demo. Y aparte también tengo que seguir escribiendo las especificaciones, que creo que me va a llevar bastante tiempo.

EDIT: Recomiendo bastante verlo a 60fps, aquí parece salir a 30 por defecto.

8 1 respuesta
B

#107 :clap: :clap: :clap: :clap: :clap: Muy bueno. Vaya currazo lo de la consola, el compilador...mucho nivel.

1 1 respuesta
carra

#108 Gracias, sí que es curro la verdad. Pero cuando vas viendo resultados te alegra el día :relaxed:

carra

He subido una nueva versión de las herramientas de desarrollo (enlace en el primer post del hilo). Ya incluye la documentación en inglés. He actualizado las versiones en español con un par de pequeñas correcciones que he visto durante la traducción.

El compilador y las herramientas en sí no cambian, pero las actuales ya son las que porté para compilar con MSYS2, así que se podrían considerar "nuevas".

1
carra

Al final cedí y me busqué a alguien para que haga la música del juego. Hoy me ha mandado la primera canción y estoy contento, creo que ha captado bien el estilo de un juego tipo Puzzle Bobble. Desde luego me parece mejor que la mía (la música provisional que sonaba en el video de gameplay).

Y del juego en sí, ahora estoy reorganizando el código. Necesito hacer el gameplay más configurable porque lo estoy preparando para los diferentes modos de juego que van a existir. En algunos de ellos se va a poder jugar hasta 3 jugadores a la vez.

1 1 respuesta
thenanox

#111 como lo has hecho para buscar a alguien para la musica?

1 respuesta
carra

#112 Pues estuve buscando gente en Fiverr. Ya usé esta página para alguna otra cosa hace tiempo, aunque no era para gamedev.

2
14 días después
Jastro

Como va esto #1

¿Sigue adelante? :D

2 1 respuesta
carra

#114 Sigue, sigue :thumbsup:. Aunque estas semanas he tenido lío, y no avanzo todo lo rápido que me gustaría.

Al final he encargado también en Fiverr unos fondos para los niveles, podría hacerlos yo pero voy a quitarme trabajo para centrarme en continuar el propio juego. También, cuando se vaya a lanzar el juego, el emulador tendrá que tener algún soporte aunque sea básico para mapear controles. Ahora mismo lo tengo en un punto intermedio, la configuración va a estar en un XML y me faltará la interfaz para editar los controles. Pero por lo menos ese XML ya se podría editar a mano para jugar como uno quiera.

Me estoy planteando que los controles se editen desde un segundo programa, que guarde ese XML, para simplificar el emulador. Pero esto está en el aire.

1 respuesta
thenanox

#115 manque me pesen los XMLs, en este caso no me centraria en crear una herramienta para mapear controles, cuando con un XML y documentacion es suficiente. no se exactamente que cosas tienes pendientes, pero es verdad que desde fuera me parece menos prioritario

1 respuesta
carra

#116 Pues la verdad es que del emulador tampoco hay mucho pendiente, poder cambiar los controles es lo principal. También quiero incluir unas pequeñas opciones del audio: control de volumen y mute. Lo he echado en falta en muchos emuladores (y otros programas). Tampoco estaría mal añadir una tecla para guardar screenshots.

En cuanto a los XML, si la estructura está bien diseñada van a ser fáciles de editar a mano. Para haceros una idea, en el XML actual de configuración que estoy usando esta es la configuración de los mandos (sólo tengo activos los 2 primeros):

<gamepad-1 connected="yes">
    <device name="keyboard" />
    <left key="left" />
    <right key="right" />
    <up key="up" />
    <down key="down" />
    <button-a key="x" />
    <button-b key="z" />
    <button-x key="s" />
    <button-y key="a" />
    <button-l key="q" />
    <button-r key="w" />
    <button-start key="return" />
</gamepad-1>
<gamepad-2 connected="yes">
    <device name="USB Gamepad" />
    <left axis="0" direction="minus" />
    <right axis="0" direction="plus" />
    <up axis="1" direction="minus" />
    <down axis="1" direction="plus" />
    <button-a button="1" />
    <button-b button="2" />
    <button-x button="0" />
    <button-y button="3" />
    <button-l button="4" />
    <button-r button="5" />
    <button-start button="9" />
</gamepad-2>
<gamepad-3 connected="no">
    <device name="none" />
</gamepad-3>
<gamepad-4 connected="no">
    <device name="none" />
</gamepad-4>

Lo único un poco más complicado para rellenarlo a mano en el caso del mando es saber qué botón es cual, o qué eje es cual. Pero esto se puede ver en la ventana de test del mando que trae Windows así que no es tan preocupante.

Edit: ¿Hay alguna manera de hacer resalte de color en la sintaxis al poner código?

carra

He hecho algunas mejoras en los gráficos, sobre todo añadir sombreados. Ya tengo el primero de los fondos que encargué, lo he dividido en capas para hacer un scroll con más profundidad. Os pongo este GIF de muestra:

El resto de elementos del escenario se han simplificado un poco. Como los fondos son vistosos creo que al resto le va bien un estilo más minimalista.

9 1 respuesta
Jastro

#118 como mola :O

2 1 respuesta
B

hostia, pues está quedando muy bien

1 1 respuesta

Usuarios habituales