Novedades del lenguaje en la versión 2.0

Más lenguaje. Se ha ampliado el lenguaje de programación, incluyendo múltiples características nuevas y funciones internas, a continuación se detallan las principales novedades del lenguaje DIV en su versión 2.0.


Las opciones de compilación son una nueva característica de esta versión, de esta forma se permite adaptar el proceso de compilación a las necesidades de cada proyecto (ver Compiler_options).


Al margen de los datos ya conocidos de la primera versión (que ahora se conocen como INT), existen datos de los tipos STRING (cadenas de texto), WORD (enteros positivos de 16 bit), BYTE (enteros positivos de 8 bit) y POINTER (punteros, de todos estos tipos).


Además se pueden definir tablas y estructuras (también de cualquiera de estos tipos) de 2 o 3 dimensiones (ver la declaración de una tabla), y las estructuras se pueden inicializar globalmente (ver la declaración de una estructura).


Los nuevos bloques FUNCTION se comportan de forma análoga a las funciones de otros lenguajes de programación, se ejecutan de forma secuencial (y no en paralelo como los procesos), no retornando hasta que no han terminado.


Se ha mejorado varios aspectos del trazador de programas, con nuevas funciones y soporte para los nuevos tipos de datos. Destacan entre estas novedades los perfiles de tiempo, que pueden accederse con F11 desde el trazador, donde se puede observar el tiempo consumido por la ejecución y pintado de cada proceso.


Se ha mejorado el sistema de control de errores de los programas, con lo que se crean ejecutables más sólidos y estables, existiendo ahora además la posibilidad de anular ciertos errores de ejecución (ver la función ignore_error().


Se han añadido una gran cantidad de nuevas funciones de gestión de archivos, mucho más flexibles y potentes; véase por ejemplo fopen(), fseek(), get_dirinfo(), chdir(), remove()) o disk_free().


Al margen del soporte de música CD-Audio y los efectos digitales, existen ahora varias funciones para la reproducción de módulos musicales MOD, S3M y XM (ver load_song(), song() o set_song_pos()).


Generador de código optimizado. El código generado para los programas es mejor y más rápido (un mínimo de un 60%) respecto a la versión anterior. Además los programas EXE creados son mucho más pequeños.


Funciones para juegos en red. Ahora es posible crear con DIV Games Studio juegos para jugar por cable serie, módem y red local IPX. Con un sistema muy simple controlado por las funciones net_join_game() y net_get_games().


Otra de las novedades es la integración en el lenguaje de un potente manejo de cadenas de texto, con los datos de tipo STRING, múltiples funciones (como por ejemplo strcat(), strchr(), upper() o strdel()) y una sintaxis adaptada para trabajar con expresiones de cadenas directamente en el lenguaje.


Soporte para memoria dinámica. Es posible pedir y liberar memoria dinámicamente en los programas, gracias a las funciones malloc() y free() (lo que se ve complementado con los nuevos datos de tipo POINTER). Además la función memory_free() permite determinar la memoria libre disponible en el sistema.


También se ha añadido la posibilidad de ordenación y desordenación, con una simple pero potente función denominada qsort() que permite ordenar y desordenar estructuras de datos, tomando cualquier campo como índice de la misma.


Otra de las novedades muy solicitada es la búsqueda de caminos. Se trata de varias funciones (ver path_find()) que permiten localizar rutas libres (llamadas por algunos "rutinas de inteligencia artificial").


Compresión de datos. Todo es más compacto; los ejecutables y los datos instalados (se pueden crear instalaciones compactadas y protegidas). Además se incluyen funciones de compresión en el lenguaje (ver compress_file()).


Nuevo modo 8. Un nuevo modo con hasta 10 regiones de pantalla, que permite visualizar mapas de sectores tridimensionales. Con un editor integrado en el entorno y múltiples funciones (ver por ejemplo start_mode8(), set_sector_height(), o set_fog()).



Y un largo etcétera. Las novedades del lenguaje no acaban aquí, existen muchas otras mejoras y funciones (además de los errores de la primera versión que se han corregido). A continuación se detallan brevemente otras novedades del lenguaje DIV.


- Una nueva función, denominada force_pal(), permite que todos los gráficos cargados en un programa se adapten automáticamente a una paleta en tiempo de ejecución.

- Existen funciones de encriptación de datos, tanto en memoria como de archivos, estas son encode(), encode_file() y decode_file().

- La declaración de librerías se realiza ahora en la cabecera del programa, tras la sentencia PROGRAM (ver IMPORT).

- Ahora es posible crear programas en muchos más modos de vídeo, ya que se pueden detectar los modos vesa disponibles (ver video_modes).

- En esta nueva versión se prohiben inicialmente las asignaciones dentro de una condición, para facilitar la programación a usuarios no experimentados. No obstante esto puede cambiarse (ver _extended_conditions y _simple_conditions).

- Ahora es posible definir el número máximo de procesos que pueden haber en el programa en tiempo de ejecución (ver _max_process).

- Es posible definir literales en varias líneas, para ello símplemente deberá dividirse el texto en varios, y ponerse estos seguidos (ver los símbolos delimitadores de literales).

- El sistema de sonido es totalmente nuevo, y ahora se permite la reproducción de archivos WAV de mucha más calidad en los programas (ver load_wav() y los nuevos campos de la estructura setup). También se han añadido funciones de sonido como change_channel() o is_playing_sound().

- También se permite ahora utilizar directamente imágenes en formato PCX en los programas (ver load_pcx()), así como grabar estos archivos (ver save_map/pcx()).

- Existen funciones para fijar un color de la paleta (set_color()) y también para localizar colores (find_color()).

- Varias funciones matemáticas como sin(), cos(), tan(), asin(), ...

- También se han incluido primitivas para dibujar distintas gráficas en pantalla: líneas, rectángulos y cajas, círculos, ... (ver draw()).

- Se han añadido otras funciones diversas que amplian las posibilidades existentes en la creación de programas, como screen_copy(), write_in_map(), calculate(), load_screen(), xadvance(), new_map(), ...

- También se puede contar lás imágenes por segundo (ver fps), obtener los parámetros del programa (ver argv[]), esperar el retrazo vertical (ver vsync), controlar mejor el ratón en los programas (ver mouse.cursor y mouse.speed), etc.


Y además, todas las funciones, datos y posibilidades que ya brindaba la primera versión de DIV Games Studio, ¡que siguen aquí! :)


Ver también: Novedades del entorno gráfico