/DIV

Reconstrucción y posible fork de DIV Games Studio 2.0

Primary LanguageC++GNU General Public License v3.0GPL-3.0

DIV Games Studio 2

Build Status

Repositorio original: https://github.com/DIVGAMES/DIV-Games-Studio

¿Qué es esto?
¿Qué es DIV Games Studio?
Cómo compilar DIV
Problemas conocidos
Descripción de archivos y carpetas

¿Qué es esto?

Este proyecto pretende retomar el desarrollo de DIV Games Studio 2.0, tomando como punto de partida la versión comercial original para MS-DOS, y de paso también reordenar, limpiar, comentar y documentar el código para que todo el mundo pueda estudiarlo y aprender cómo funciona DIV por dentro.

DIV 2 funciona correctamente en el emulador DOSBox/DOSBox-X y probablemente aún mejor en una máquina DOS real siempre que tenga al menos un procesador 486 (recomendado Pentium), 16 MB de RAM, ratón y tarjeta gráfica SVGA. Este proyecto se centra en MS-DOS y posiblemente otros sistemas retro como AMIGA. Si quieres DIV2 portado a plataformas modernas, te recomiendamos la versión de MikeDX, que no sólo funciona nativamente en Windows/Mac/Linux sino que te permite compilar tus juegos para consolas, móviles e incluso HTML5.

Hoja de ruta

  • Versión 2.01: El primer objetivo es conseguir reproducir lo más fielmente posible el DIV 2 en su versión 2.01 tal como salió a la venta en 1999.

  • Versión 2.02: Arreglaremos bugs conocidos (algunos desde hace décadas) y posiblemente puliremos algunos detalles menores que ayuden a DIV a ser más usable para los humanos del siglo XXI.

  • Después: introduciremos mejoras y seguiremos puliendo, reorganizando y documentando el código.

¿Qué es DIV Games Studio?

En 1998, el estudio español Hammer Technologies publicó DIV Games Studio, un programa muy completo para desarrollar videojuegos. Integraba casi todas las herramientas necesarias: editor gráfico, editor de código, compilador, depurador, etc. Disponía de un entorno gráfico muy amigable y su propio lenguaje de programación, el lenguaje DIV. En 1999 salió la versión 2, que incluía muchas mejoras, tanto en las herramientas como en el lenguaje. La empresa británica FastTrak licenció DIV para su distribución en varios países de Europa y Latinoamérica.

Poco después de lanzar DIV 2 al mercado, Hammer Technologies cerró, por lo que el desarrollo de DIV nunca continuó, aunque la comunidad llegó a desarrollar diversas alternativas. El interés por DIV fue decreciendo con la aparición de nuevos sistemas operativos, tecnologías y lenguajes.

En 2015, MikeDX, antiguo miembro de FastTrak, anunció que había retomado el código original de DIV Games Studio para modernizarlo y portarlo a diversas plataformas actuales, junto con varias demos portadas a HTML5. Unos meses después, ya en 2016, publicó la primera beta de su proyecto, bautizado como DIV DX, y más tarde ese mismo año hizo público el código fuente bajo una licencia GPL v3. Se puede seguir el progreso y descargar la última beta en su web, div-arena.co.uk.

Saber más (Wikipedia)

Cómo compilar DIV

Nota: Alternativamente al proceso explicado a continuación, puedes compilar DIV usando Vagrant.

Requisitos previos

  • Sistema operativo Linux, MS-DOS o Windows (cualquier versión, nueva o antigua).
  • OpenWatcom 1.9 instalado y funcionando. Posiblemente también funcione Watcom 10 o superior, pero no lo hemos probado. OJO: necesitas instalar los compiladores para DOS 16 bits, DOS 32 bits y también para la plataforma desde la que estés compilando (ya que algunas herramientas, como PMWLITE, se compilan y ejecutan durante el proceso de compilación de DIV). Actualmente hay incompatibilidades en el código con OpenWatcom 2.
  • Si usas Linux, Windows NT o cualquier versión moderna de Windows, para ejecutar DIV necesitarás un emulador de DOS como DOSBox o DOSBox-X.
  • OPCIONAL: Instala Turbo Assembler. Sólo es necesario si quieres recompilar las librerías de terceros (se encuentran ya compiladas en este repositorio). Consulta la wiki para más información.

Compilación

  • Clona el repositorio con git clone https://github.com/vii1/DIV.git
  • En DOS:
    • Asegúrate de haber inicializado el entorno de Watcom ejecutando OWSETENV.BAT.
  • En Windows:
    • Abre una consola usando el icono Build Environment que encontrarás en el grupo de programas de Open Watcom en el menú de Windows.
  • En Linux:
    • Asegúrate de lanzar source owsetenv.sh desde una consola ejecutando bash para inicializar el entorno.
  • Desde el directorio raíz del proyecto, ejecuta wmake. El proceso puede durar varios minutos, especialmente en DOS. Verás muchísimos warnings. No tengas miedo.

Instalación

  • Para instalar tu DIV recién compilado, ejecuta wmake install INSTALL_DIR=<ruta>, donde <ruta> es la ruta donde quieres instalar DIV 2. Si vas a usar DOSBox, puedes instalarlo directamente en una subcarpeta que vayas a montar desde el emulador.
  • Para arrancar DIV, desde DOS (o DOSBox) ve a la carpeta donde lo has instalado y ejecuta D.EXE.

Problemas conocidos

Aún existen algunos bugs y diferencias respecto a la versión comercial de DIV 2. Mira en la sección de issues para verlos.

Descripción de archivos y carpetas

  • 3rdparty: Librerías de terceros y su código fuente.
  • dll: El SDK y los ejemplos.
  • formats: Descripción de los formatos de archivo propios de DIV, en formato Kaitai Struct. Más información en la wiki.
  • pmwlite: Extensor de 32 bits para DOS alternativo a DOS/4GW, que se usa para la DIV32RUN.DLL y el instalador.
  • src: Carpeta principal de código fuente. Aquí hay algunos archivos compartidos entre módulos.
    • div: Código fuente del IDE (D.EXE). Algunos archivos destacables:
      • div.cpp: fichero principal del Sistema Operativo DIV™.
      • global.h: cabecera principal
      • divc.cpp: el compilador de lenguaje DIV. Con unas pocas modificaciones se puede convertir en un EXE independiente ;)
      • diveffec.cpp: el generador de explosiones :D
      • divpaint.cpp: ¡el programa de dibujo! :D :D
      • divwindo.cpp: todas las funciones de la GUI
      • visor: Código del generador de sprites.
    • div32run: Código fuente del intérprete (DIV32RUN.DLL). Algunos archivos destacables:
      • inter.h: cabecera principal
      • i.cpp: código principal del intérprete
      • kernel.cpp: se incluye dentro de i.cpp y es el cuerpo de un gigantesco switch, con un case por cada bytecode, que conforma la máquina virtual de DIV.
      • f.cpp: muchas de las funciones accesibles desde DIV.
      • s.cpp: gráficos, sprites, scroll, modo-7...
      • v.cpp: funciones de vídeo de bajo nivel
      • d.cpp: el debugger de DIV2, incluyendo toda la GUI (!)
    • div_stub: El programa que hace de "cabecera" para los EXE de DIV2. A éste se le concatena el bytecode del programa compilado y algunos datos para el intérprete. Lo único que hace el EXE en sí es ejecutar DIV32RUN.DLL, pasándose a sí mismo como parámetro.
    • netlib: Rutinas de red (originalmente era una DLL)
    • vpe: Librería de Modo-8 (una versión modificada de Virtual Presence Engine)
    • install: El programa de instalación que DIV incluye cuando usas la opción Crear instalación.
  • tools: Código fuente de algunas herramientas accesorias que sólo se usan en ciertas fases de la compilación, en tests, o para depurar.