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í! :)