Imported contents: kraptor_final_apr_03_2004.tar.gz
[kraptor.git] / extras / doc / es / general.txt
blob943421d2a4e7a4480ab1d458b9b32c5055b6706e
1 Kraptor\r
2 -------\r
3 Por Kronoman - \r
4 Comenzado en Agosto 2002\r
5 En memoria de mi querido padre\r
6 \r
7 Engine de juego de aviones/naves\r
8 Hecho en C, con Allegro y DUMB\r
9 \r
10 Kraptor: especificaciones tecnicas\r
11 ----------------------------------\r
13 Fondos:\r
14 600x4000 [grilla de 40x40]\r
15 Matriz de 15x100 indica si explota o no el fondo, un numero > 0 indica\r
16 que esa area es explosiva, al tocar un disparo esa area, descuenta del mapa\r
17 y finalmente explota, junto con los adyacentes.\r
19 Matriz de 15x100 tiene un numero, > 0 indica que debe aparecer un enemigo\r
20 de esa clase-1, 0 = neutro. O sea, por ejemplo: el numero 1 indica que\r
21 debe aparecer un enemigo de clase 0, 2 de clase 1, etc (o sea, n-1, siendo 0 neutro)\r
23 NOTA: usar siempre compresion individual de objetos en los datos, no global,\r
24       ya que ralentiza mucho el tiempo de carga.\r
26 Archivos DATAFILES:\r
27 -------------------------------------------------------\r
29 Datos principales del programa\r
30 --> krapmain.dat\r
32     Contiene los datos principales del juego, tales como enemigos,\r
33     jugador, armamento, sonido, pirotecnia, premios y secuencia de niveles.\r
34     Ademas, debe contener los datos opcionales mencioados\r
35     en los scripts (tales como sprites, sonidos, etc).\r
36     NO contiene los archivos de cada nivel independiente.\r
38     Contenido:\r
39     =========\r
40     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r
41     Objetos sueltos necesarios:\r
42     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r
43     hud_font\r
45         Font para dibujar el 'hud', es decir la informacion\r
46         de puntaje y cantidad de balas.\r
47         Si no existe, se usa el font de la BIOS\r
48     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r
49     pal_game\r
51         Paleta de 256 colores usada durante TODO el juego\r
52         Los enemigos, explosiones, particulas, fondos, etc DEBEN ajustarse\r
53         a esta paleta. Esto NO afecta las cinematicas o los menues.\r
54         SI afecta a la imagen de fondo del shopping\r
55         RESPETAR LAS MINUSCULAS EN EL NOMBRE, pal_game!\r
56     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r
57     shop_bmp\r
59         Imagen de fondo del shopping\r
60     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r
61     burn_0\r
62     burn_1\r
63     burn_2\r
64         Sprites de 40x40 para quemar el fondo.\r
65         Deben representar un hoyo de quemazon, en escala de grises\r
66         inversa, el color negro sera transparente, y los tonos\r
67         de blanco indican profundidad de quemado, siendo 255,255,255(RGB)\r
68         el mas profundo.\r
69         Deben estar hechos para poder ser rotados arbitrariamente\r
70         al azar (para dar mas variedad)\r
71     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r
72     humo\r
73         Sprite de unos 100x100 que sera usado para generar el efecto de humo.\r
74         Esto es _opcional_, ya que todavia no funciona muy bien el efecto.\r
75     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r
76     explo_bmp_0\r
77     explo_bmp_1\r
78     explo_bmp_2\r
79     \r
80         Sprites de explosiones, todas del MISMO tama~o, usadas para renderear\r
81         explosiones.\r
82     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r
83     explo_snd_0\r
84     explo_snd_1\r
85     explo_snd_2\r
87         Sonido de explosiones.\r
88     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r
89     chispa_0\r
90     chispa_1\r
91     chispa_2\r
93         Chispas que las naves arrojan al explotar (bolitas de fuego peque~as).\r
94     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r
95     gamescript\r
97         Objeto de texto que contiene un script que indica la sucesion de niveles\r
98         del juego de manera descriptiva como un archivo de configuracion de Allegro\r
99         Se van leyendo las secciones [NIVEL_x] hasta que no se encuentra la proxima,\r
100         con lo cual se asume que el juego termino (el jugador gano).\r
101         Las cinematicas se pueden suprimir colocando valor `null` (sin las `)\r
104         La seccion [GAME_INTRO] contiene la cinematica cuando el jugador inicia un juego nuevo.\r
105         La seccion [GAME_OVER] contiene la cinematica cuando el jugador pierde.\r
107         Comienza a contar de nivel 1\r
108         Todo lo que tiene # es comentario\r
110     Ejemplo (script de 2 niveles):\r
112         [GAME_INTRO]\r
113         cine = intro.dat\r
115         [GAME_OVER]\r
116         cine = gameover.dat\r
118         [NIVEL_1]\r
119         # Titulo del nivel\r
120         titulo = Primera Batalla\r
121     \r
122         # Explicacion, hasta 256 caracteres, usa word-wrap\r
123         texto = Te aproximas al primer combate, buena suerte!\r
124     \r
125         # Cinematica de comienzo de nivel\r
126         cine_in = intro01.dat\r
127     \r
128         # Esto especifica el nivel conteniendo datos de juego\r
129         level_dat = level1.dat\r
130     \r
131         # Cinematica de fin de nivel\r
132         cine_out = null\r
134         # Referente al efecto climatico, es opcional\r
135         # densidad del clima en particulas 0..300\r
136         clima_c = 100\r
137         # tipo de clima: 0 = lluvia, 1 = nieve\r
138         clima_t = 0\r
139         # direccion de caida: 0 = izq, 1 = der\r
140         clima_d = 0\r
142         [NIVEL_2]\r
143         # Titulo del nivel\r
144         titulo = Final\r
145     \r
146         # Explicacion, hasta 256 caracteres, usa word-wrap\r
147         texto = Este es el final, mi unico amigo!\r
148     \r
149         # Cinematica de comienzo de nivel\r
150         cine_in = null\r
151     \r
152         # Esto especifica el nivel conteniendo datos de juego\r
153         level_dat = level1.dat\r
154     \r
155         # Cinematica de fin de nivel\r
156         cine_out = fin.dat\r
157     \r
158         # Al buscar el 3er nivel, el juego finaliza, y va a la tabla de puntos.\r
160     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r
161     jugador\r
162            \r
163     Esto contiene una definicion de los sprites, armas y sonidos del jugador\r
164     Ejemplo:\r
166     # Configuracion del jugador\r
167     [JUGADOR]\r
168     # Sprites del jugador izq,med,der\r
169     # DEBEN ser del MISMO tama~o y contenidos en este mismo archivo DAT\r
170     spr_0 = jugador_0\r
171     spr_1 = jugador_1\r
172     spr_2 = jugador_2\r
174     # dinero inicial con que cuenta al comenzar a jugar\r
175     init_money = 500\r
177     # bombas iniciales con que cuenta al comenzar a jugar\r
178     init_bombas = 1\r
180     # Referente a la reparacion de la nave en el shopping\r
181     [JUGADOR_REPARAR]\r
182     # Cantidad de unidades que da cada reparacion\r
183     cantidad = 10\r
184     # Precio cada reparacion de la nave \r
185     precio = 100\r
186     # Descripcion\r
187     desc = Reparar el 10% de los desperfectos de la nave\r
188     # Bitmap que representa la reparacion, de 116x124 preferentemente (se estirara)\r
189     bmp = bitmap_reparar\r
191     # Referente a la bomba especial de la nave en el shopping\r
192     [JUGADOR_BOMBA_ESPECIAL]\r
193     # cantidad de bombas de cada compra\r
194     cantidad = 1\r
195     # precio de cada item de bomba especial\r
196     precio = 100\r
197     # descripcion\r
198     desc = Bomba de pulso de energia\r
199     # Bitmap que representa en el shopping,  de 116x124\r
200     bmp = bitmap_bomba\r
201     # sonido de lanzamiento de la bomba (OJO, cuando explota, toca sonido de explosion; esto deberia ser un speech, tipo "bomb fire" o algo asi!)\r
202     bomba_sonido = speech_bomb_fire\r
204     # cantidad maxima que se puede comprar\r
205     max_ammo = 5\r
207     # Armamento disponible para el jugador (el arma 0 esta siempre y nunca se acaba)\r
208     # Va de ARMA_0 hasta  ARMA_x [x es un numero]\r
209     [ARMA_0]\r
210     # Referente al modo 'shopping' del arma\r
211     # bitmap de 116x124 preferentemente (se estirara)\r
212     arma = dibujo_del_arma_en_el_shop_bitmap\r
213     # descripcion del arma para el shop: maximo 2048 caracteres\r
214     desc = Descripcion del arma\r
215     # descripcion corta para el HUD del juego: max 20 caracteres\r
216     desc_short = Wpn #0\r
217     # precio, cuidar que sea relativo a lo que 'gana' el jugador\r
218     precio = 12345\r
219     # cantidad de 'balas' por paquete de compra\r
220     cant_ammo = 100\r
221     # cantidad maxima de 'balas'\r
222     cant_ammo_max = 999\r
224     # Referente al disparo del arma en si\r
225     spr = sprite_del_disparo\r
226     snd_0 = sonido_al_disparar_o_null\r
227     snd_1 = sonido_al_impactar_o_null\r
228     vx = 0\r
229     vy = -0.5\r
230     vida = 480\r
231     punch = 3\r
232     firerate = 100\r
233     t = 0\r
235     # Estela del disparo, esto es opcional (si no aparece, no abra estela)\r
236     # Vida\r
237         est_vida_min = 1\r
238         est_vida_max = 10\r
239     # Cantidad\r
240         est_cant_min = 5\r
241         est_cant_max = 10\r
242     # color RGB\r
243         est_color_r_min = 128\r
244         est_color_r_max = 255\r
245         est_color_g_min = 0\r
246         est_color_g_max = 0\r
247         est_color_b_min = 0\r
248         est_color_b_max = 0\r
249     # escala aceleracion: 100 = 0.01 \r
250         est_dx_min = -100\r
251         est_dx_max = 100\r
252         est_dy_min = 100\r
253         est_dy_max = 300\r
254     # tipo de particula\r
255         est_tipo_min = 3\r
256         est_tipo_max = 3\r
257     # radio de la particula (si es aplicable)\r
258         est_rad_min = 1\r
259         est_rad_max = 3\r
260     # usar transparencia? (-1 = si, 0 = no)\r
261         est_transp = 0\r
263     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r
264     enemigos\r
266     Esto contiene una definicion de los enemigos asi como de sus\r
267     tipos de armamento, y la IA que utilizan (Ver ia.txt).\r
268     Ejemplo:\r
270     # clases de enemigos\r
271     [ENEMIGO_0]\r
272     # vida enemigo\r
273     vida = 100\r
274     # peso del enemigo (sirve para proporcion de explosion e impacto de colision)\r
275     peso = 50\r
277     # string de ID de programa en bytecodes de IA (ver ia.txt)\r
278     tipo_ia = ia_1\r
279     # la IA debe comenzar en un punto arbitrario del bytecode (al azar = -1, default: 0 = no)\r
280     ia_azar = 0\r
282     # este flag indica que el enemigo es un BOSS, de esa manera, el enemigo\r
283     # no se va NUNCA hacia abajo de 1/2  de pantalla (como hacen los boss)\r
284     # (default 0 = no;  -1 = si)\r
285     ia_boss = 0\r
287     # sprites de animacion,\r
288     # se pueden obviar; hay un maximo de 4 (0..3)\r
289     # si utiliza uno solo, se puede poner spr = dibujo y listo\r
290     spr_0 = enemigo0_0\r
291     spr_1 = enemigo0_1\r
292     spr_2 = enemigo0_2\r
293     spr_3 = enemigo0_3\r
295     # delay de animacion de los sprites (30 = 1 segundo)\r
296     spr_delay = 10\r
298     # dinero que paga matar a este enemigo\r
299     dinero = 50\r
301     # premio (indice del premio) que suelta este enemigo (-1 = ninguno)\r
302     premio_idx = 1\r
303     # probabilidad de soltar el premio al morir (0..100 %)\r
304     premio_prob = 95\r
306     # clases de armas\r
307     [ARMA_0]\r
308     # dibujo del disparo\r
309     spr = laser2\r
310     # sonido al disparar\r
311     snd_0 = sonido_al_disparar_o_null\r
312     # sonido al impactar\r
313     snd_1 = sonido_al_impactar_o_null\r
314     # velocidad x\r
315     vx = 0\r
316     # velocidad y\r
317     vy = 2\r
318     # duracion del disparo en tics (30 = 1 segundo)\r
319     vida = 400\r
320     # golpe del disparo\r
321     punch = 20\r
322     # tipo de arma\r
323     t = 2\r
325     # Estela del disparo, esto es opcional (si no aparece, no abra estela)\r
326     # Vida\r
327         est_vida_min = 1\r
328         est_vida_max = 10\r
329     # Cantidad\r
330         est_cant_min = 5\r
331         est_cant_max = 10\r
332     # color RGB\r
333         est_color_r_min = 128\r
334         est_color_r_max = 255\r
335         est_color_g_min = 0\r
336         est_color_g_max = 0\r
337         est_color_b_min = 0\r
338         est_color_b_max = 0\r
339     # ( escala aceleracion: 100 = 0.01)\r
340         est_dx_min = -100\r
341         est_dx_max = 100\r
342         est_dy_min = 100\r
343         est_dy_max = 300\r
344     # tipo de particula\r
345         est_tipo_min = 3\r
346         est_tipo_max = 3\r
347     # radio de la particula (si es aplicable)\r
348         est_rad_min = 1\r
349         est_rad_max = 3\r
350     # usar transparencia? (-1 = si, 0 = no)\r
351         est_transp = 0\r
353     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r
354     premios\r
356     Este script configura los premios.\r
357     Ver el archivo premio.txt para mas informacion.\r
359     -------------------------------------------------------------------------\r
360 Menues:\r
361 Nota: los archivos de texto para presentar en pantalla \r
362       (ej: help, about) deben estar codificados en UTF-8\r
363       para ello, usar el utilitario de Allegro "textconv.exe"\r
365 --> krapmnu.dat:\r
367     Esto contiene el fondo del menu y otros items utiles.\r
369     main_menu_bmp     <- bitmap de 640x480 que es el fondo del menu\r
370     main_menu_pal     <- paleta de 256 colores del menu\r
371     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r
372     help_txt\r
374         Es un archivo de texto guardado tal cual (modo binario)\r
375         para mostrar en el menu Ayuda / Ayuda...\r
376     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r
377     about_txt\r
379         Es un archivo de texto guardado tal cual (modo binario)\r
380         para mostrar en el menu Ayuda / Acerca de...\r
381     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r
382     about_bmp\r
384         Es una imagen de tipo BITMAP, que se mostrara en Ayuda / Acerca de...\r
385         ajustarse a main_menu_pal!\r
386         Tama~o:  144x168 pixels!\r
387     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r
389     -------------------------------------------------------------------------\r
391 Niveles:\r
392 --> level*.dat:\r
394     Esto contiene el fondo (bitmap) y su correspondiente matrices de mapas\r
395     para los diferentes niveles de dificultad.\r
396     Se van cargando dinamicamente a medida que avanza el juego.\r
398     Contenido:\r
399     =========\r
400     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r
401     mapa_fondo\r
403         Esto es la imagen del juego, de  600x4000 pixels.\r
404     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r
405     mapa_g\r
407         Informacion binaria (matriz) con los sectores explosivos del mapa.\r
408         0 indica sector no explosivo, > 0 indica energia de ese sector,\r
409         al llegar a 0, explota y queda 'quemada' el area.\r
410     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r
411     enem_g   -> opcional, dificultad unica\r
412     enem_g_0 -> dificultad FACIL\r
413     enem_g_1 -> dificultad MEDIA\r
414     enem_g_2 -> dificultad DIFICIL\r
416         Informacion binaria (matriz) con las posiciones de aparicion de enemigos.\r
417         Contiene 0 donde no aparecen enemigo, > 0 donde aparecen enemigos.\r
418         El numero indica el indice de clase de enemigo a aparecer, y se le\r
419         restara 1, asique enemigo 1 en enem_g representa ENEMIGO_0 en\r
420         las clases de enemigos.\r
421         Nota, el engine busca el enem_g_[dificultad]\r
422         Si no existe, intenta obtener enem_g, y si no existe, aborta el programa.\r
423     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r
424     musica\r
426         Musica IT, XM o S3M, opcional, se escucha de fondo durante el nivel. :^P\r
427         En formato IT, XM o S3M, para mas info, ver la documentacion de DUMB\r
428         (como cargar musica desde un DAT)\r
429         Debe ser un objeto binario de tipo "IT  ", "XM  " o "S3M "\r
430         Los espacios adicionales no son necesarios, el grabber los pone solo.\r
431         La musica debe durar aproximadamente 133 segundos (2 mins 13 segs)\r
432         porque es lo que dura un nivel aproximadamente (4000/30 pixels x segundo)\r
433     -------------------------------------------------------------------------\r
434 Cinematicas:\r
435 --> cine*.dat\r
437     Esto contiene las cinematicas del juego, se cargan dinamicamente a\r
438     medida que se necesitan.\r
440     NOTA: el 'lenguaje' usado en el script de cinematicas esta explicado\r
441           en el archivo cinemati.txt!!\r
443     Contenido:\r
444     =========\r
445     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r
446     El unico contenido obligatorio es el objeto de texto (TXT)\r
447     llamado 'guion_txt' que contiene los comandos\r
448     especificados en cinemati.txt para poder mover la cinematica\r
449     NOTA: se buscara el guion acorde al lenguaje actual primero,\r
450     por ejemplo, si es espa~ol, se buscara guion_txt_es primero,\r
451     y si no existe, se usara guion_txt, y si no existe,\r
452     se intentara cargar guion_txt_en, y si no existe, se ignorara\r
453     la animacion.\r
454     O sea, para internacionalizar el juego, crear un guion_txt_es (espa~ol)\r
455     y un guion_txt_en (ingles) y los demas que sean necesarios.\r
456     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \r
457     -------------------------------------------------------------------------\r