Tamaño zona de juego Churrera
Publicado: Jue, 23 Ene 2014, 19:34
Buenas again,
Como creo que esta propuesta/consulta es genérica la saco de mi hilo
Hay veces que quearmos que la zona de juego (cada pantalla) sea de un tamaño menor a la definida en la churrera (sobre todo para juegos en vista "genital" de los que se estan cociendo por aquà tipo mazmorra), ya que nuestros mapas serán de menos tiles por pantalla.
El caso es que yo he estado modificando del engine lo justo para poder definir cualquier otro tamaño en lugar del 15x10. Probando con otros tamaños me gustaba la combinación 13x9 que a priori no reduce mucho la pantalla pero son 33 tiles menos por cada pantalla que no son nada despreciables
La cuestión es que esto me ha llevado a darme cuenta que tanto la utilidad de mapcnv como las rutinas del motor no estan preparadas para los casos donde el mapa sea packed y el ancho*alto de la pantalla sea un número inpar de tiles (13x9=117). El problema de hacer el mapa packed es que cada byte representa 2 tiles esto implica que una pantalla formada por un número impar de tiles compartirÃa el último byte para el último tile de esa pantalla y el primero de la siguiente; o quizás despreciar el medio byte sobrante. Pero ninguno de los dos casos se contempla en la aplicación mapcnv (a pesar de que si acepta cualquier valor de entrada, aunque ya se que no fué pensada para encontrarse con un garrulo como yo); independientemente también habrÃa que cambiar parte del motor para gestionarlo. Teniendo en cuenta que podemos generar un mapa.h con alguna de estas dos caracterÃsticas (yo lo estoy haciendo en php que es lo que tenÃa más a mano , pero he acabado generando el mismo mapa que me crearÃa mapcnv ). Respecto a la marte de motor no me queda muy claro como gestionarlo en el juego, creo que no habrÃa que cambiar nada o meterle muy poca mano.
El lÃo de monte PÃo esta aqui:$this->bbcode_second_pass_code('', '// Mapa tipo PACKED
if (!(gpit & 1)) {
gpc = *map_pointer ++;
gpd = gpc >> 4;
} else {
gpd = gpc & 15;
}')Pero tengo que decir que me pierdo un poco...más que nada en compresión entre tanto código y tanto nombre de variable (no sólo por el trocito este) al final acabo hacÃendome un lio, podriaÃs decirme que quereis decir con gpit, gpc y gpd (y no me digas que son variables jajaja, lo que me refiero es que representan)... Ej: gpit: "gráfico para individuos tontunos", ya me entendeÃs (ya tengo una idea pero saber exactamente la nomenclatura me ayudará para otras partes del código. Respecto a este trozo entiendo que compueba si es un número par o impar de tile para tomar el valor alto o bajo del byte apuntado por map_pointer y calcular su valor según su "peso". Por cierto:$this->bbcode_second_pass_code('', 'gpc = *map_pointer ++;')es simplemente que gpc es igual al valor apuntado por map_pointer+1 y map_pointer sale incrementado, ¿no?
En cualquier caso ya me decis que opinais o si los maestros me dicen de alguna aproximación mejor al problema.
Por si alguién se anima también encontré a posteriori (sino se si hay versión más nueva) las fuentes de las utilidades de la churrera en un hilo del foro aquÃ.
Seguiré a ello cuanto saque un poquito de tiempo y sino al finde que llevo una semana. En cuanto saque algo semi-definitivo pasaré por aquà el engine.h y config.h modificados para tamaños de zona de juego genéricos para testearlo (yo no me fio de mi ni un pelo) y hagais lo que os venga en gana con él.
Como creo que esta propuesta/consulta es genérica la saco de mi hilo
Hay veces que quearmos que la zona de juego (cada pantalla) sea de un tamaño menor a la definida en la churrera (sobre todo para juegos en vista "genital" de los que se estan cociendo por aquà tipo mazmorra), ya que nuestros mapas serán de menos tiles por pantalla.
El caso es que yo he estado modificando del engine lo justo para poder definir cualquier otro tamaño en lugar del 15x10. Probando con otros tamaños me gustaba la combinación 13x9 que a priori no reduce mucho la pantalla pero son 33 tiles menos por cada pantalla que no son nada despreciables
La cuestión es que esto me ha llevado a darme cuenta que tanto la utilidad de mapcnv como las rutinas del motor no estan preparadas para los casos donde el mapa sea packed y el ancho*alto de la pantalla sea un número inpar de tiles (13x9=117). El problema de hacer el mapa packed es que cada byte representa 2 tiles esto implica que una pantalla formada por un número impar de tiles compartirÃa el último byte para el último tile de esa pantalla y el primero de la siguiente; o quizás despreciar el medio byte sobrante. Pero ninguno de los dos casos se contempla en la aplicación mapcnv (a pesar de que si acepta cualquier valor de entrada, aunque ya se que no fué pensada para encontrarse con un garrulo como yo); independientemente también habrÃa que cambiar parte del motor para gestionarlo. Teniendo en cuenta que podemos generar un mapa.h con alguna de estas dos caracterÃsticas (yo lo estoy haciendo en php que es lo que tenÃa más a mano , pero he acabado generando el mismo mapa que me crearÃa mapcnv ). Respecto a la marte de motor no me queda muy claro como gestionarlo en el juego, creo que no habrÃa que cambiar nada o meterle muy poca mano.
El lÃo de monte PÃo esta aqui:$this->bbcode_second_pass_code('', '// Mapa tipo PACKED
if (!(gpit & 1)) {
gpc = *map_pointer ++;
gpd = gpc >> 4;
} else {
gpd = gpc & 15;
}')Pero tengo que decir que me pierdo un poco...más que nada en compresión entre tanto código y tanto nombre de variable (no sólo por el trocito este) al final acabo hacÃendome un lio, podriaÃs decirme que quereis decir con gpit, gpc y gpd (y no me digas que son variables jajaja, lo que me refiero es que representan)... Ej: gpit: "gráfico para individuos tontunos", ya me entendeÃs (ya tengo una idea pero saber exactamente la nomenclatura me ayudará para otras partes del código. Respecto a este trozo entiendo que compueba si es un número par o impar de tile para tomar el valor alto o bajo del byte apuntado por map_pointer y calcular su valor según su "peso". Por cierto:$this->bbcode_second_pass_code('', 'gpc = *map_pointer ++;')es simplemente que gpc es igual al valor apuntado por map_pointer+1 y map_pointer sale incrementado, ¿no?
En cualquier caso ya me decis que opinais o si los maestros me dicen de alguna aproximación mejor al problema.
Por si alguién se anima también encontré a posteriori (sino se si hay versión más nueva) las fuentes de las utilidades de la churrera en un hilo del foro aquÃ.
Seguiré a ello cuanto saque un poquito de tiempo y sino al finde que llevo una semana. En cuanto saque algo semi-definitivo pasaré por aquà el engine.h y config.h modificados para tamaños de zona de juego genéricos para testearlo (yo no me fio de mi ni un pelo) y hagais lo que os venga en gana con él.