Proxecto Fenix

**Fenix**, ou o **proxecto Fenix**, é o nome dun proxecto multiplataforma de software libre para crear un compilador alternativo á linguaxe DIV parte fundamental da suite para o desenvolvemento de videoxogos *Div Games Studio*. Con todo, co paso do tempo fóronse engadindo novas características que entre outras cousas, derivou nunha versión ata certo punto incompatible coa linguaxe DIV orixinal e nun novo proxecto máis ambicioso.

## Características 
* Linguaxe interpretada, mestura de C e Pascal: moi sinxelo e potente.
* Multiplataforma extrema: O intérprete funciona en Windows, as versións de 32 bits de Windows, GNU/Linux, Mac VOS X, BeOS, BSD, GP32, Dreamcast, PSP, GP2X e, en xeral, en case calquera plataforma que soporte SDL e GCC. Os programas compilados poden ser intercambiados entre calquera desas plataformas sen necesidade de recompilación.
* Procesos (programación multihilo).
* Motor de render 2D por software.
* Modos gráficos 8 e 16 bits, entre outras cousas permite rotación de *sprites*, escalado, *alpha blending*, *blendops*, blit aditivo e sustractivo etc.
* Soporte (incompleto) para Modo 7.
* Reprodución de sons en formato WAV, PCM e Ogg Vorbis.
* Reprodución de módulos de música en formato IT, MOD e XM.
* Soporte de librerías DLL nas plataformas que así o permiten.

## Historia 
Na década dos 90 Daniel Navarro Medrano creou unha ferramenta orientada á creación de videoxogos de 32 bits baixo MS-DOS. A nova linguaxe, de nome **DIV Games Studio**, combinaba características de C e Pascal cunha contorna completa que permitía a creación e edición de todos os aspectos dos proxectos: programación, edición gráfica e sonora e un longo etc.

Fenix, inicialmente baixo o nome **DIVC** e de natureza GNU, apareceu da man de José Luís Cebrián como unha ferramenta capaz de compilar e executar eses xogos en Linux. O nome foi cambiado na versión 0.6 do compilador, que ademais introducía outras melloras, como a aparición dun ficheiro intermedio entre a contorna de compilación e a contorna de execución. Xa non era necesario distribuír o código fonte dun xogo para poder xogar aos xogos. A vantaxe principal desa práctica (similar en concepto a Java) era clara, compilar nunha plataforma e executar en moitas.

Na versión 0.71 o proxecto quedou parado, o que deu lugar a múltiples versións derivadas que corrixían fallos ou engadían novas características.

A versión oficial de Fenix foi retomada por Slàinte no ano 2002, vello coñecido da comunidade DIV por ser o *webmaster* dunha das páxinas web máis importantes para a comunidade, quen continuou o proxecto baixo o nome de **Fenix - Proxecto 1.0** ao que pronto se reincorporaría o seu creador e cuxo primeiro obxectivo era limpar o compilador de erros e estabilizalo. Dende entón o compilador sufriu numerosos cambios e melloras, deixando dun lado a compatibilidade coa linguaxe DIV.

Após dun longo tempo sen modificacións, no ano 2006, Fenix foi retomado por SplinterGU, o mesmo que implemento o primeiro sistema de dlls.

Debido á base do proxecto, a biblioteca SDL, foi posible portar Fenix a un gran número de plataformas, como o propio Linux, Windows, MacOS X, BSD, BeOS, PlayStation, GP32, GP2X, Dreamcast e outras, aínda que as únicas oficialmente soportadas hoxe día son Linux, Windows, Mac OS X e BSD. Outras, como GP32 e GP2X gozan de grande aceptación das súas respectivas comunidades e mantéñense grazas á dedicación dos seus usuarios.

## Críticas 
Fenix foi ou é criticado por varios motivos.

O primeiro é a **falta de documentación actualizada**. A pesar de que existe un extenso manual, este está orientado a versións ata a 0.71 e só está dispoñible en español. A linguaxe cambiou dende entón, deixando certas partes do mesmo obsoleto. Para liquidar isto, púxose a disposición dos usuarios unha documentación das funcións que incorpora a versión do CVS. Con todo, estase traballando en actualizar o sistema e o novo sistema (que pretende ser moito máis versátil que o antigo) aínda non está completo.

O proxecto **carece dunha boa base multilingüe**, o cal provoca nos usuarios non hispanohablantes un certo receo no seu uso. Esta dificultade está sendo traballada nas últimas versións CVS, aínda por completar.

Moitos usuarios quéixanse da **lentitude** do intérprete xa que todas as rutinas gráficas execútanse por software. Aínda que se falou de posibles versións aceleradas a través de arquitecturas OpenGL e parece que esta vai ser a vía que se siga nun futuro, aínda non hai nada que poida ser mostrado.

Para rematar, **non existen IDEs completos para plataformas non-Windows**, o que leva certa dificultade no seu uso para o resto de plataformas. Recentemente apareceu unha contorna escrita en Gambas que pretende facilitar o traballo aos usuarios de Linux. Con todo, aínda non é máis que un editor simple con soporte para resaltado de sintaxe.

## Versións actuais (0.85 e seguintes) 
As versións de Fenix posteriores á 0.84b foron desenvolvidas por SplinterGU e o seu obxectivo é limpar de fallos Fenix e optimizalo para unha execución máis rápida, deixando de lado en principio a inclusión de novas características cuxo obxectivo non vaia nesa liña.

Ademais, cambiouse o sistema de compilación a un baseado en GNU toolchain para todas as plataformas soportadas. Ademais esta serie de versións inclúe as melloras necesarias para ofrecer soporte para Windows Vista, ata con UAC activado.

Outro resultado desta serie de melloras é que o rendemento, en determinados casos chega a ser 3 veces maior que na versión 0.84.

Unha vez estabilícese por completo a rama actual o obxectivo é modularizar Fenix, separando toda a funcionalidade non esencial do núcleo do motor e ofrecéndoa como librerías externas. Está previsto que estes cambios realícense no que se deu en chamar Proxecto 2.0.

## Fenix 2.0 
O proxecto Fenix vai ser reformulado e reescrito nunha nova versión 2.0. Pénsase reescribir totalmente de novo, cunha nova filosofía de traballo, nova estrutura interna e outros moi importantes cambios, entre outros:

* Fenix vaise a transformar nunha linguaxe de *scripting* independente, incorporando como módulos de extensibilidad bibliotecas adicionais, como a biblioteca gráfica, a de son etc.
* Cambia tamén a súa forma e licenza de distribución, será un arquivo en formato DLL e baixo a LGPL.
* Cambios na biblioteca de tipos: Fenix a partir de agora traballará con só 2 bloques de tipos de datos, os datos de tipo básico e os datos de tipo composto.
* A compatibilidade cara a atrás, co código realizado para Fenix 1.0 será posiblemente nula ou moi baixa.
* A idea principal é desenvolver un novo Fenix sen biblioteca gráfica nin outras bibliotecas ou desenvolvementos extra, é dicir un Fenix pequeno, modular, documentado e limpo.

As primeiras versións do motor de Fenix deberían de saír a mediados do 2007.

## Véxase tamén 
### Outros artigos 
* Software libre
### Ligazóns externas 
* Karnak's Amorne  de Alawar Entertainment, como primeiro xogo comercial realizado con Fenix. 
* Páxina oficial do proxecto Fenix