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).

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().

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