# Fenix Project

Fenix is een vrij te gebruiken programmeertaal speciaal gericht op het programmeren van computerspellen. Het Fenix Project is gestart door Jose Luis Cebrián in 2000 en oorspronkelijk gebaseerd op DIV Games Studio. De huidige versie is 0.93.

## Karakteristieken

Fenix is een geïnterpreteerde, semi-parallelle programmeertaal met een syntaxis die doet denken aan een kruising tussen Pascal en C++. De programmeertaal is semi-parallel omdat ze werkt met "processen" die 'tegelijkertijd' worden uitgevoerd. Procedurele functies zijn tevens mogelijk, maar de parallelliteit geeft over het algemeen zo'n ongelooflijk groot voordeel bij het programmeren van spellen dat er constant gebruik van wordt gemaakt.
Fenix is niet hoofdlettergevoelig, wat erg fijn werkt en tevens beginners het een stuk makkelijker maakt. Fenix is gebaseerd op Simple Directmedia Library (SDL), wat ervoor zorgt dat je meteen aan de slag kan en niet eerst op zoek hoeft te gaan naar bijvoorbeeld een goede grafische library zoals bij talen zoals C++ en Java. Tevens heeft het ingebouwde functies voor geluid, tekst, rekenen, etc. Ondanks dat het niet benodigd is, heeft Fenix wel de mogelijkheid uitgebreid worden met DLL's, die door gebruikers in C++ geschreven kunnen worden.
Andere belangrijke eigenschappen van Fenix zijn volledig 2D support (schalen, transparantie, blendops...), 16 bit kleuren, geluidsondersteuning (.ogg, .mod, .it, .s3m, .wav), joystickondersteuning, en mode7.
Naast de taal zelf zijn er ook heel veel mensen die voor Fenix hun eigen DLL's hebben uitgebracht, zo zijn er bijvoorbeeld 3D libraries uitgebracht en meerdere netwerk libraries (die ook over internet werken). Dit brengt Fenix op een hoogte dat bijna alles mogelijk is, vooral nu netwerkspellen en 3D spellen ook tot de mogelijkheden behoren.

## Platformen waar Fenix op draait

Fenix werkt onder andere op Windows (alle versies vanaf Windows 95 tot en met Windows Vista), Linux, Mac OS, BeOS, BSD, de Dreamcast (console), PS (console), de GP32 (handheld console) en de GP2X (handheld console). Dit maakt het ook voor Linux-programmeurs heel aantrekkelijk om in Fenix te ontwikkelen, en Fenix is tevens populair in de GP2X-scene.

## Fenix gebruiken

Fenix is, in tegenstelling tot DIV, een commandline compiler en heeft dus geen grafische ontwikkelomgeving, ingebouwd tekenprogramma, sprite generator zoals DIV had. Het enige dat Fenix doet is code compileren en interpreteren. Uiteindelijk is dit voor Fenix gebruikers juist een voordeel – het geeft hun de mogelijkheid om in Windows een eigen IDE/editor te kiezen, en snel te wisselen tussen Windows tools (zoals grafische programma's, geluidseditors, etc.) en de gebruikte Fenix-editor.
Er zijn een aantal IDE's speciaal voor Fenix ontwikkeld, die onder meer Fenix code highlighting bevatten, ingebouwde hotkeys en bijvoorbeeld de mogelijkheid om snel tussen processen te navigeren door het indexeren van alle processen in een lijstje. Firebird is de bekendste IDE speciaal voor Fenix. Tevens kunnen universele programmeereditors gebruikt worden zoals Context, waar ook Fenix highlighting voor bestaat en waar men zelf hotkeys in kan stellen.

## Geschiedenis en status

Fenix is een in 2000 begonnen project met het doel een gratis DIV Games Studio compiler te maken die zowel op Linux als Windows werkt. Fenix heette oorspronkelijk "DIVC", maar dat werd al snel in "Fenix" veranderd. Fenix is gestart door Jose Luis Cebrián, en oorspronkelijk was het de bedoeling om alle DIV 1 commando's ook in Fenix te implementeren. Dat lukte, de compiler werd volop ontwikkeld door Cebrián en naast het feit dat alle DIV 1 functies geïmplementeerd werden, werd er ook begonnen met het implementeren van DIV 2 functies.
Toen Fenix bij versie 0.7 was aangeland, kreeg Cebrián het heel druk en liet hij voor lange tijd niets van zich horen omtrent de ontwikkelingen van Fenix. Het project werd toen door meerdere mensen opgepakt en er werd in verschillende richtingen mee verdergegaan, ieder voor zich. Uiteindelijk is de versie van Slainte, Fenix Project 1.0, de versie die het gehaald heeft en nog steeds in ontwikkeling is. Slainte heeft het project ontwikkeld tot versie 0.84b, met in het achterhoofd het doel om een versie 1.0 te bereiken.
Fenix was inmiddels al uitgebreid met allerhande dingen die niet in DIV Games Studio 1 of 2 voorkwamen. Naast dat Fenix natuurlijk 16 bit kleuren ondersteunde en in Windows werkte, waren allerlei commando's uitgebreid met extra parameters, waren er nieuwe commando's en lokale variabelen toegevoegd en bleek Fenix torenshoog boven DIV 2 uit te steken. Tevens was Fenix veel sneller dan DIV ooit was daar het op SDL gebaseerd was, wat ook de mobiliteit van Fenix vergrootte.
Toen Fenix op versie 0.84b was aangekomen, rond 2004, bleef het een aantal jaren stil rondom de ontwikkeling. De oorspronkelijke ontwikkelaars van Fenix waren met een Fenix 2.0 project begonnen, waar ze bepaalde interne zaken anders wilden regelen, zodat de taal makkelijker uit te breiden was. Tevens was het plan om met Fenix Project 1.0 zo veel mogelijk te breken met de oorspronkelijke DIV compatibiliteit, omdat de Fenix ontwikkelaars vreesden dat ze zouden worden aangeklaagd door Fasttrak (uitgever van DIV Games Studio). Dat is ook wel een logische gedachte, omdat Fenix inmiddels meer was dan dat DIV ooit zou worden, op de IDE na dan. Er werden allerlei nieuwe fileformaten bedacht voor Fenix die niets meer met de oorspronkelijke fileformaten te maken hadden, en in de nieuwste versie Fenix-versie bestaan deze formaten naast de oude DIV formaten.
In 2007 heeft Juan, een Argentijnse ontwikkelaar, Fenix Project 1.0 op zich genomen (onder goedkeuring van Slainte) en is aan het werk geslagen om alle bugs eruit te halen en het naar een versie 1.0 te leiden. Fenix 0.84b was zeer onstabiel waardoor veel mensen op Fenix 0.84a waren blijven hangen, en deze instabiliteit heeft Juan er helemaal uitgewerkt. Juan heeft Fenix tot versie 0.93 ontwikkeld, waarna hij is verdergegaan met een afsplitsing ('fork') van Fenix, genaamd BennuGD. Juan heeft onder meer meerdere commando's, een nieuwe variabelesoort ('public variabelen') en meerdere functies voor de debug console toegevoegd aan de taal.