¡¡Nuestro compañero Chema no está quieto!!

Avatar de Usuario
Chema
Mensajes: 1538
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 445 veces
Agradecimiento recibido: 187 veces
Contactar:

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor Chema » 20 Ene 2014 11:50

Último mensaje de la página anterior:

Bueno, vamos con algunos aspectos de más alto nivel que, creo, son interesantes.

-bRick

Generación Procedural de la Nave Enemiga

Ya tenemos el motor funcionando y el siguiente paso que vamos a ver es el diseño de las naves nodriza enemigas para cada nivel. Es algo así como el fondo donde se mueve el jugador y el resto de elementos del juego.

El "mapa" del nivel ocupa 5K (256 celdas y 20 filas). Podríamos pensar en diseñar varias naves enemigas para el fondo y luego comprimir los datos. En cada nivel extraemos los datos correspondientes en la memoria y listo. Hay multitud de técnicas para guardar los datos comprimidos, y se pueden conseguir compresiones muy altas para guardar muchas pantallas o diseños.

Normalmente para poder comprimir mucho, necesitamos elementos que se repitan, así que a mayor compresión, menos variedad. Supongamos que conseguimos comprimir cada nave nodriza en... yo qué se, pongamos 1K. ¿Cuántos niveles podemos poner? Depende de la memoria libre, pero ya vemos que 10 niveles serían 10K, lo que es bastante. ¿Y si queremos tener 50 niveles? o ¿70?... Nos quedamos rápidamente sin memoria.

Pero hay una alternativa: la generación procedural (ver artículo en Wikipedia). La cosa es generar el contenido algorítmicamente en lugar de manualmente. La cosa es simple (y complicada a la vez). Necesitamos un generador de secuencias a partir de una semilla. Por ejemplo una implementación de la serie de Fibonacci o un generador de pseudo-aleatorios. La cosa es que, para una semilla determinada se genere siempre la misma secuencia de números cada vez que llamemos a la función.

Ahora podemos usar algoritmos que usen los datos generados por la función para ir construyendo el contenido. Cosas como llamar a la función y dependiendo de ciertos bits del resultado generar un bloque de un tamaño determinado, con esquinas cuadradas o en chaflán, con determinados elementos en su superficie, etc. Podemos ir llamando a la función cada vez que tengamos que decidir el tipo de contenido o su localización. Hacemos lo mismo para generar espacios entre bloques (o no), para elegir cómo los conectamos entre sí, etc.

Son todo reglas que operan en base a los datos que se van generando. Como son siempre los mismos para una semilla dada, pues siempre sale la misma nave. La mayor dificultad está en ajustar el generador para que el contenido sea correcto y suficientemente variado.

Las semillas de cada nivel se generan a partir de la inicial del nivel anterior. Así podemos ir a un nivel determinado sin más que llamar a una función las veces que haga falta y luego llamar al generador.

Esta misma técnica la usaba Elite (y se importó para 1337) para generar todo el universo del juego. Ahí sí que era complicado, porque el contenido era muy rico y complejo. Aquí es algo más simple, pero suficiente para dar dolor de cabeza al programador.

Aquí vemos un ejemplo de cómo el generador va construyendo la base de la nave. Fue un primer intento que implementé en Matlab para probar, pero está bien para ver cómo funciona la cosa (sólo una parte, porque el completo ocupaba mucho):

creacion2b.gif
Creación
creacion2b.gif (969.28 KiB) Visto 2609 veces


El generador implementado en el juego es ligeramente diferente y ocupa ahora mismo 2559 bytes. Tiene algún fallo menor, pero está casi completo al 100%. No está mal. Con menos de 3K tenemos para generar, en principio, infinitos niveles, aunque no puedo asegurar que la secuencia no se acabe repitiendo. Probablemente el juego se quede en un número de niveles máximo del orden de 100.

Además es bastante rápido, así que el usuario no nota ningún retardo entre niveles por su causa.

Dejamos aquí este tema. Si alguien quiere más detalles técnicos o aclaraciones en algún punto, que lo pida. Yo encantado.

En la próxima edición a ver si empezamos a hablar de los enemigos y la IA.

dancresp
Mensajes: 4993
Registrado: 13 Nov 2010 02:08
Agradecido : 14 veces
Agradecimiento recibido: 83 veces

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor dancresp » 20 Ene 2014 15:27

Yo ya llevo un Word de 15 páginas...

Y puestos a preguntar, no siendo la primera vez pero no recordando la respuesta... que entorno de programación utilizas?

Avatar de Usuario
Chema
Mensajes: 1538
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 445 veces
Agradecimiento recibido: 187 veces
Contactar:

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor Chema » 20 Ene 2014 19:22

@dancresp, uso el OSDK y como editor el Notepad++

¿15 páginas ya? Madre mía... menudo rollo tengo.

Avatar de Usuario
Chema
Mensajes: 1538
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 445 veces
Agradecimiento recibido: 187 veces
Contactar:

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor Chema » 19 Mar 2014 21:16

Bueno, al final y tras un montón de lío en el campo personal, puedo mostraros algo más de cómo va este proyecto.

El video muestra una demo del juego en el primer nivel de la fase de Tutorial. El objetivo del juego es usar los interruptores que hay repartidos por la nave para encender los cuatro leds del panel superior. Parece sencillo, y lo es para los primeros niveles, pero se complica rápidamente, porque desaparece la correspondencia directa de cada interruptor con un led. Además no es deseable destruir la nave demasiado rápido porque puedes perder de recoger puntos y extras que luego vas a necesitar.

Destruir enemigos da puntos y, además, a veces sueltan items que puedes recoger. Algunos te dan cosas como vidas extra, el resto incrementan el retr-o-meter (la barra inferior a la derecha del panel). Cuando se llena consigues una vida extra.

Tus hitpoints aparecen en la otra barra (la superior) y puedes recargarlos recogiendo las bolas de enrgía que hay sobre la nave.

Destruir objetivos en la nave nodriza te da bonus al terminar el nivel (Slicebit, igual te suena el contador de bonus :) ).

Tengo planes para añadir algunos niveles de bonus y muchos otros detalles. Tengo que meter música y algo de acción para el menu principal, pero creo que el video da una Buena idea de cómo va la cosa.

Mi motor de música, por cierto, es el mismo para los efectos de sonido y es muy compacto (menos de 1K) y las canciones ocupan también muy poco. De hecho ya he metido unos cuantos temas cortos para cuando destruyes la nave (con una media de 200-250 bytes por tema).

Bueno, como siempre se agradecen comentarios y sugerencias.

http://youtu.be/Z4IbvcG0_jM

Avatar de Usuario
ron
Mensajes: 17180
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 508 veces
Agradecimiento recibido: 532 veces

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor ron » 19 Mar 2014 21:46

Sr. Chema , te sales tío !!!

Yo me pregunto .... ¿ cómo es posible que en los 80, con los medios, los fondos y todo lo que tenían a mano no fueran capaces de hacer algo que se parezca un poco al juego de Chema ?. Ahí lo dejo.

Avatar de Usuario
Silicebit
Mensajes: 1325
Registrado: 16 May 2011 21:13
Ubicación: La buhardilla del silicio.
Agradecido : 30 veces
Agradecimiento recibido: 78 veces
Contactar:

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor Silicebit » 19 Mar 2014 23:08

¡¡Pero que guapo te está quedando, Chema!! El contador del bonus me suena de algo, no sé, no sé. -507

ron escribió:Yo me pregunto .... ¿ cómo es posible que en los 80, con los medios, los fondos y todo lo que tenían a mano no fueran capaces de hacer algo que se parezca un poco al juego de Chema ?. Ahí lo dejo.

Bueno, yo creo que más bien era debido a que el esfuerzo que implicaba hacer un juego de este tipo no era compensado por las ventas que pudiera tener. Las casas de software de la época sacaban más dinero haciendo juegos para Spectrum y Commodore que haciendolos para otros ordenadores minoritarios.
El 6809 es el Rolls-Royce de los 8bits, el 6502 es el Mercedes, y el Z80 el SEAT 850. Sorry, but... I think different. :-P -0r1c -m3s3x -t4nd1 -cbmja YouTube

Avatar de Usuario
Chema
Mensajes: 1538
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 445 veces
Agradecimiento recibido: 187 veces
Contactar:

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor Chema » 19 Mar 2014 23:23

Gracias por los comentarios, a ver si lo acabo un año de estos :)

Igual ya os distéis cuenta de que todo el juego es un poco de coña con guiños a rollos ochenteros y retro por todas partes. Algunos menos evidentes que otros, eso si.

Y que me decis de los ítems para recoger? Qué mejor que retro-ítems? Hay un Mac tostadora, un Spectrum, un Joystick...

dancresp
Mensajes: 4993
Registrado: 13 Nov 2010 02:08
Agradecido : 14 veces
Agradecimiento recibido: 83 veces

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor dancresp » 20 Mar 2014 10:21

Chema escribió:Gracias por los comentarios, a ver si lo acabo un año de estos :)

Pero si casi lo tienes !!!

Uno de estos años no. Este !!! -drinks


Chema escribió:Y que me decis de los ítems para recoger? Qué mejor que retro-ítems? Hay un Mac tostadora, un Spectrum, un Joystick...

Yo aquí permíteme que discrepe.

No se exactamente que hacen estos items, como el del joystick, pero personalmente con un aspecto tan profesional yo lo haría más "serio". Es mi humilde opinión.


Y ya para terminar... ¿Hay alguna opción de conectar un joystick al ORIC?

Lo digo porque lo suyo sería jugar a estos juegos con un buen joystick.

Pues nada más, mis más sinceras felicitaciones.
Te está quedando increible... -shock

Avatar de Usuario
Nandove
Mensajes: 676
Registrado: 10 Ene 2011 12:16
Agradecido : 94 veces
Agradecimiento recibido: 75 veces

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor Nandove » 20 Mar 2014 11:27

Creo que la opcion mas rapida y ñapera para conectar un joy al Oric seria cogerte un conector y basandote en la norma atari, tirar cables del conector a los cursores y la barra espaciadora, en los programas tirarias de mapero por teclado pero como las pulsaciones del joy se verian reflejadas como pulsaciones de telcado, ya lo tenddrias...

La pega es donde coño rompes con la dremel para meterle un conector db9 al oric :S por no mencionar que me da pena horadar la carcasa de un micro tan poco comun :(

Avatar de Usuario
Chema
Mensajes: 1538
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 445 veces
Agradecimiento recibido: 187 veces
Contactar:

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor Chema » 20 Mar 2014 11:47

dancresp escribió:Yo aquí permíteme que discrepe.

No se exactamente que hacen estos items, como el del joystick, pero personalmente con un aspecto tan profesional yo lo haría más "serio". Es mi humilde opinión.


Que conste que he ido en esta dirección y vuelto atrás varias veces. "Más seriedad Chema, más seriedad" y luego "qué narices, a desfasar se ha dicho" -grin

En fin que al final muy poquita gente juega a estas cosas más que para probarlas un rato y no sé si me apetece andar poniéndome serio :)

Se agradece (mucho) el comentario porque son ese tipo de cosas y aquello que pudiera generar dudas sobre si funciona en el juego, lo que me interesa. Además de comentarios positivos, que ayudan a la moral, claro :)

Y ya para terminar... ¿Hay alguna opción de conectar un joystick al ORIC?

Lo digo porque lo suyo sería jugar a estos juegos con un buen joystick.


También @Nandove

Sí que hay opciones, mira por ejemplo aquí. Es posible soportar varios a la vez y detectarlos simplemente pidiendo al usuario que pulse el botón de disparo. Es posible, no tengo del todo claro cómo.

Mi problema con los joysticks es siempre el mismo: poca gente los tiene y en los del Atmos/1 sólo hay un botón de disparo. Aquí hace falta además "saltar". Supongo que siempre hay maneras de hacerlo (dos pulsaciones rápidas del disparo, o disparo+atrás o algo así), pero no se a priori cuál es la mejor.

En 1337 mucha gente me pidió que soportara joystick, pero no sé cómo solucionar el que el jugador puede moverse en 3D y disparar. Harían falta dos joysticks o, al menos, dos botones.

Pues nada más, mis más sinceras felicitaciones.
Te está quedando increible... -shock


Muchas gracias :) Ahora me doy cuenta de que he dejado de escribir acerca de cómo está hecho... He estado un montón de tiempo dedicado a la música con el AY y se me pasó por completo. A ver si lo retomo.

dancresp
Mensajes: 4993
Registrado: 13 Nov 2010 02:08
Agradecido : 14 veces
Agradecimiento recibido: 83 veces

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor dancresp » 20 Mar 2014 12:26

Nandove escribió:Creo que la opcion mas rapida y ñapera para conectar un joy al Oric seria cogerte un conector y basandote en la norma atari, tirar cables del conector a los cursores y la barra espaciadora...

Hombre, yo no perforo mi ORIC ni loco.

Por la red he visto esquemas de interfaces bastante simples de hacer, y que se conectan a uno de los conectores traseros.
Después solo tocaría adaptar algunos de los programas más nuevos para que lo reconozcan.

Sería un buen proyecto... -grin

Por el resto, acábalo como quieras, que es tu proyecto, pero sobretodo... ACÁBALO !!!

Esto merece ser jugado en la máquina real.

Avatar de Usuario
Nandove
Mensajes: 676
Registrado: 10 Ene 2011 12:16
Agradecido : 94 veces
Agradecimiento recibido: 75 veces

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor Nandove » 20 Mar 2014 12:49

Chema escribió:También @Nandove

Sí que hay opciones, mira por ejemplo aquí. Es posible soportar varios a la vez y detectarlos simplemente pidiendo al usuario que pulse el botón de disparo. Es posible, no tengo del todo claro cómo.

Mi problema con los joysticks es siempre el mismo: poca gente los tiene y en los del Atmos/1 sólo hay un botón de disparo. Aquí hace falta además "saltar". Supongo que siempre hay maneras de hacerlo (dos pulsaciones rápidas del disparo, o disparo+atrás o algo así), pero no se a priori cuál es la mejor.

En 1337 mucha gente me pidió que soportara joystick, pero no sé cómo solucionar el que el jugador puede moverse en 3D y disparar. Harían falta dos joysticks o, al menos, dos botones.


A ver la solución que he dado es simplemente atacar a la placa del teclado puedo poner dos y hasta 3 botones en una norma atari estandar, y lo que detectaría el Oric serian pulsaciones de teclado, y eso esta soportado de manera nativa por todos los juegos, por lo que tendrías un joystick valido para jugar a cualquier juego del oric, dentro del juego ya elegirías redefinir teclas y pulsarias con el joystick.

Así le he metido yo mandos con norma atari a algun Spectrum, y despues en el juego elijo teclas y juego con este joystick.

El tema es que a parte del sufrimiento de taladrar un Oric... es que es tan sumamente compacto que aun taladrando, no se donde se podría adaptar un DB9 -banghead

Avatar de Usuario
Chema
Mensajes: 1538
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 445 veces
Agradecimiento recibido: 187 veces
Contactar:

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor Chema » 20 Mar 2014 13:15

Si ya te había entendido Nandove. Yo me refería a lo de si existen joysticks y si hay por ahí esquemáticos. Lo que comentas es una idea excelente siempre que no te de mal rollo taladrar el Oric. Lo de dónde poner el DB9 sí que es un problema. Ahí no te puedo ayudar :/

Por otra parte la gran mayoría de los juegos, por alguna razón, no soportan redefinir las teclas que se usan. Y los míos están en esa categoría, me temo, hasta éste.

Avatar de Usuario
Silicebit
Mensajes: 1325
Registrado: 16 May 2011 21:13
Ubicación: La buhardilla del silicio.
Agradecido : 30 veces
Agradecimiento recibido: 78 veces
Contactar:

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor Silicebit » 20 Mar 2014 15:04

A mí me parecen muy simpáticos los retro-ítems, me gustan, y están muy conseguidos.

dancresp escribió:Hombre, yo no perforo mi ORIC ni loco.

¡¡Por supuesto que no!! ¡No hace ninguna falta! Visitad ESTO. Montado y comprobado. :-)

Pero estoy a la espera de acabar con las controladoras para ESTO OTRO. Que es mucho mejor. :-)
El 6809 es el Rolls-Royce de los 8bits, el 6502 es el Mercedes, y el Z80 el SEAT 850. Sorry, but... I think different. :-P -0r1c -m3s3x -t4nd1 -cbmja YouTube

dancresp
Mensajes: 4993
Registrado: 13 Nov 2010 02:08
Agradecido : 14 veces
Agradecimiento recibido: 83 veces

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor dancresp » 20 Mar 2014 16:10

El esquema del primer link es el que había visto yo, y parece muy simple.

El segundo no lo hhabía visto, y es bonito y la placa se ve simple.
Hasta yo me atrevo con el soldador.

Avatar de Usuario
Chema
Mensajes: 1538
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 445 veces
Agradecimiento recibido: 187 veces
Contactar:

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor Chema » 20 Mar 2014 16:39

El único problema que le veo al Protek es que usa el puerto de expansión. Los que tenemos cumulus lo tenemos ocupado :/

Por lo demás me gustaría ver como se las apaña para hacer su trabajo porque la interfaz son el teclado se las trae (se usa por un lado la VIA y por otro lado un puerto del AY). A ver si sólo va a funcionar si se usan las rutinas de teclado de la ROM...

Avatar de Usuario
ron
Mensajes: 17180
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 508 veces
Agradecimiento recibido: 532 veces

Re: ¡¡Nuestro compañero Chema no está quieto!!

Mensajepor ron » 20 Mar 2014 18:25

o bien el cumulus o la controladora puesta !, yo tengo un interfaz de joystick que en su día me pasó Silicebit que va conectado al puerto de la impresora.

http://www.48katmos.freeuk.com/joy.htm

PASE interfaces
O.P.E.L Interface
Altai interface
Dktronics interface
Protek programmable interface
Downsway Programmable Interface
IJK and MCP interfaces


Volver a “Oric”

¿Quién está conectado?

Usuarios navegando por este Foro: gflorez y 1 invitado