Proyecto juego Churrera. Dudas

For all things Churrera. ¿Estás haciendo un juego? ¿quieres proponer un cambio? ¿tienes alguna duda? ¡Cuéntanoslo!

Moderador: na_th_an

Avatar de Usuario
elborra
Mensajes: 209
Registrado: Dom, 12 Ene 2014, 14:37

Proyecto juego Churrera. Dudas

Mensajepor elborra » Sab, 18 Ene 2014, 18:19

Muy buenas, hace apenas unos días descubrí a la Churrera y me decidí a intentar hacer alguna cosilla con él.

Antes de nada me gustaría destacar que en el poco tiempo que llevo "desarrollando" con ella cabe destacar la facilidad y lo poderosa que es. Estoy flipando en colores, ¡¡¡y en más de 15 os lo aseguro!! (quizás un día pueda decir que estoy en el nirvana...para el que me quiera entender... ejem ejem ¬¬UUU)

Al lio, primero decir que estamos (mi hermano se encargará de los gráficos y yo de la parte lógica+extras) creando un juego estilo dungeon zelda,aunque no tenemos muy claro si los enemigos serán matables y por tanto meter disparos, o no... o quizás alguna otra idea endiablada para acabar con ellos; ya que a priori un "disparo" tipo espada no es viable en la Churrera si no me equivoco.

Estoy trabajando ahora mismo con la 3.99.3 y para 48K y seguramente me iré moviendo a la última versión que vayais liberando porque cada versión que sacais es más alucinante que la anterior.

Ahora bien, hay un par de cosas que no consigo hacer funcionar por más vueltas que le de:

En primer lugar no consigo echar a andar los tiles animados. Si no me equivoco la única directiva para activarla es la de ENABLE_TILANIMS n (config.h), pues bien por más que pongo el primer tile del par a mi no se me animan. El tile en concreto es para el agua (como el efecto del "hombre que susurraba a las balas"). Aparte de definir por ejemplo: ENABLE_TILANIMS 46 ( el par 46-47 seránlos tiles a animar), a través de script pongo el tile 46 en una zona de juego y....nada ocurre, el tile 46 aparece pero no se van alernando con el 47. ¿Los tiles animados requieren de alguna otra condición?

En segundo lugar, no acabo de entender como funciona TEXT en el script, como se construye?
$this->bbcode_second_pass_code('', 'TEXT HOLA QUE HAY
TEXT "HOLA QUE HAY"
TEXT ("HOLA QUE TAL")')..... y que conste que ninguna de ellas parece funcionarme... El texto se corta siempre al primer espacio que pongo, o si es un símbolo seguido de texto (sin espacios) sólo imprime el símbolo. De todas formas mi objetivo es poner textos sobre la pantalla de juego como si se leyera un cartel o una nota, he hecho pruebas desde extern.h y print_str(tilex,tiley,attrib,cadena) ... pero no se como conseguir hacer una pausa depues de mostrar el texto, borrar el texto (o redibujar la pantalla) y continuar. Creo que hay funciones en mainloop y/o engine que pueda usar para tal menester, pero no doy con ellas. También le he echado un vistazo a lo de los textos en la 3.9.3b pero no me enterado ni un pijo :oops:

Me guardo otras dudas más técnicas de como funciona la churrera porque estoy haciendo alguna papachurrada que no se si está muy bien hecha o no, pero como digo lo dejaré para más adelante.

PD: Si hiciera falta podría hacer un "test" de 1 pantalla con lo de los tiles animados con la 3.99.3 base y subirlo (en su momento lo hice pero ya está borrado) y ver que puede estar pasando.
Avatar de Usuario
Jarlaxe
Mensajes: 212
Registrado: Jue, 09 Ene 2014, 13:44

Re: Proyecto juego Churrera. Dudas

Mensajepor Jarlaxe » Sab, 18 Ene 2014, 18:53

Hola y bienvenido a Mojonia, elborra!

Verás que por aquí todos son muy majos y de seguro que te ayudan con tus consultas.

Yo llevo también muy poco tiempo por aquí, pero la verdad es que todos se han portado genial y me están resolviendo las dudas del jueguecillo con el que estoy enfrascado.

Por cierto, en el post del mismo, creo que se responde a estas consultas que haces, o eso creo.

En la pregunta de los tiles animados, lee en este hilo

viewtopic.php?f=9&t=1481&start=50

Y para los textos en pantalla

viewtopic.php?f=9&t=1481&start=80

Espero te pueda ser de utilidad, hasta que se pasen por aquí Nathan y compañia ;)
Avatar de Usuario
na_th_an
Mensajes: 26413
Registrado: Vie, 09 Ene 2009, 12:18

Re: Proyecto juego Churrera. Dudas

Mensajepor na_th_an » Sab, 18 Ene 2014, 18:59

Buenas, me alegro que te hayas animado :)

En primer lugar, el tema de los tiles animados es demasiado cutre y funciona mal. De todos modos (y ahora no recuerdo bien) creo que hay que tocar algunos valores más como la frecuencia de animación y cosas así, pero es algo que tengo que mirar porque ni siquiera me acuerdo de como funcionaba. Quizá Radas te pueda ayudar más que yo ;)

Los textos en el script van así:

$this->bbcode_second_pass_code('', 'TEXT ESTO_ES_UN_TEXTO')

Pueden llevar hasta 30 caracteres y deben escribirse sin comillas y con "_" en lugar del espacio. Ya sé, es muy cutre :lol:

Para hacer un delay puedes llamar a "espera_activa" pasándole el número de vueltas que quieres que espere. En modo 128K cada "vuelta" equivale a 20ms, pero en el modo 48K es "cierto valor de tiempo", así que mejor que experimentes. Es posible que al compilar te de un warning porque la función espera_activa aún no está definida cuando el compilador llama al código del extern, así que para solucionarlo escribe un "void espera_activa (int c);" al final de definitions.h y se arreglará.

Para redibujar la pantalla, lo que yo suelo hacer es escribir un REENTER después de la llamada a EXTERN en el script. También puedes hacer una llamada a draw_scr (); al final de la función C, que es lo mismo.

Los textos que hemos puesto como "extra" en /spare de la 3.99.3b están explicados en el hilo de Dogmole, esta mañana mismo lo escribí :)
Como diría Rorshach: "Urm..."
Avatar de Usuario
elborra
Mensajes: 209
Registrado: Dom, 12 Ene 2014, 14:37

Re: Proyecto juego Churrera. Dudas

Mensajepor elborra » Sab, 18 Ene 2014, 20:02

Jus! que velocidad :D

$this->bbcode_second_pass_quote('Jarlaxe', '
')En la pregunta de los tiles animados, lee en este hilo
viewtopic.php?f=9&t=1481&start=50
Para un hilo que no estaba siguiendo al día resulta que mis primeras dudas se responden en el (arrrrg y mira que siempre uso el buscador, se ve que no estos días..) Yo seguía el de redastan y el "hombre que susurraba a las balas" que fué el comienzo del ENABLE_TILANIMS

$this->bbcode_second_pass_quote('na_th_an', 'B')uenas, me alegro que te hayas animado :)
En primer lugar, el tema de los tiles animados es demasiado cutre y funciona mal. De todos modos (y ahora no recuerdo bien) creo que hay que tocar algunos valores más como la frecuencia de animación y cosas así, pero es algo que tengo que mirar porque ni siquiera me acuerdo de como funcionaba. Quizá Radas te pueda ayudar más que yo ;)
Yap, eso ya lo vi, la cuestión es que a mi ni se movian, independientemente del valor de la frecuencia. Creo que es por lo de packed, como explicaré más adelante.

$this->bbcode_second_pass_quote('na_th_an', 'L')os textos en el script van así:
$this->bbcode_second_pass_code('', 'TEXT ESTO_ES_UN_TEXTO')
Pueden llevar hasta 30 caracteres y deben escribirse sin comillas y con "_" en lugar del espacio. Ya sé, es muy cutre :lol:
Ahhhhmmmm, pero de cutre nada! es lo que hay y muy bien que está, pero no daba con ello.

$this->bbcode_second_pass_quote('na_th_an', '
')Para hacer un delay puedes llamar a "espera_activa" pasándole el número de vueltas que quieres que espere. En modo 128K cada "vuelta" equivale a 20ms, pero en el modo 48K es "cierto valor de tiempo", así que mejor que experimentes. Es posible que al compilar te de un warning porque la función espera_activa aún no está definida cuando el compilador llama al código del extern, así que para solucionarlo escribe un "void espera_activa (int c);" al final de definitions.h y se arreglará.

Para redibujar la pantalla, lo que yo suelo hacer es escribir un REENTER después de la llamada a EXTERN en el script. También puedes hacer una llamada a draw_scr (); al final de la función C, que es lo mismo.
Mejor explicado imposible. Thanxs.


Total,...

...Entiendo entonces por lo que pone en el hilo que los tiles animados estan preparados para el tileset unpacked (no me habia coscado que lo de usar el tileset de 16 o el de 48 se referia a esto...yo estaba siempre haciendo packed como en los talleres), y por lo tanto a la hora de usar mappy dispongo de los 48 para mapear, el resultado es que el mapa.h que genere ocupará más y dependerá del uso de los tiles 16-47 en las pantallas para que compense o no.

Hablando del tema unpacked, como ya he mencionado la perspectiva de los graficos y en concreto de las paredes de las habitaciones hace, en mi caso, que el numero de tiles se dispare a 12 (variable según tengamos el tileset definitivo): 4 para las esquinas, 2 tiles para las horizontales (superior e inferior), otros 2 para las verticales (izquierda y derecha) y otros 2 para las aperturas (no se como definirlo)... el caso es que 12 tiles son muchos para "malgastarlos" en una sóla variante de "fondo" con lo cual empecé a pensar en maneras de reutilizar los tiles de alguna manera.

Lo primero que pense es probar a ver si modificando a pelo en estructura tileset la parte de los atributos de los tiles por otros podía hacer un cambio de "paleta". Así que en la parte scripting hago una llamada a extern.h donde piso la informacón de los atributos por otros y de vuelta en SCRIPT hago un REDRAW y ¡Bingo! . Ahora uso un flag para guardar el número de paleta virtual y cuando entro a una pantalla donde quiero cambiar de "zona", compruebo el flag y cambio la paleta si procede. Así tengo paredes azules, verdes, moradas o lo que quiera usando los mismos 12 tiles en lugar de 12*n creando un poco más de diversidad en el mapeado.

Esta misma idea la he usado para tener pares de puertas y llaves de distintos colores (y gestionar el dibujado de ambas y las aperturas por script) cambiando directamente los 4 atributos del tile llave.

Ahora me pondré a mirar cual es la estructura de un tileset generado cuando no este packed y ver si puedo hacer esto mismo. En cualquier caso, ¿¿¿ sería más rentable que modificara las rutinas pertinentes en mainloop.h o donde proceda para comprobar la flag y cambiar los atributos directamente que usando script+extern.h ???

Y por último y deseando poder petaros la Churrera, he intentado, la bellaca idea (no porque quiera usarla), con éxito de meter en tileset.h una estructura tileset2 con otro juego completo de 48 tiles (llamadme loco, pero lo hago por puro masoquismo) y remplazarlo ingame y recargar pantalla. :twisted: , como ya digo funciona correctamente y esto supone tener 96 tiles distintos... (48 a la vez)

Obviamente esto a la larga me dejaría con un espacio pequeño para hacer la lógica del juego completa, aunque por el momento no me ha petado :shock:
Tendré que empezar a hacer números porque ya he leido lo que ocupa los distintos usos de las llamadas en scripting.

Sorry por estos chorro-post pero es que suelen salirme así.