Download

OK here it is, finally:

Quantum Engine‚Ѣ is a cross-language 32bit native code compiler with an advanced 2D game engine for PC's running Microsoft Windows¬Ć and uses Direct3D¬Ć for hardware accelerated rendering. It's robust, designed for easy use and suitable for making all types of 2D games and other graphic simulations. Your code can compile to a stand-alone EXE and/or to dynamic loadable compiled units (runtime packages). The core game engine consists of a high-level object oriented game application framework with a plethora of classes and routines to allow you to rapidly and efficiently develop your graphics simulations. There is support for surfaces, textures, sprites, audio, streams, archives, configuration files, render targets, swap chains, databases and much more.

I've managed to make the entire QE feature set available to the compiler. If you look in the examples folder you can see some javascript samples too. There is much more work to do but wanted to at this point make sure it works on other configurations and OSes.

Ok so far there is only a command-line compiler (IDE hopefully later). To compile anything you need a default project, which is a simple INI file. To help with this if you go:

qecc -mp"projectfile[.pas|.bas|.js] -pc it will create a default project file for you or even easier is to run makeprj.bat which will ask for the name of the project source file. It will also create a .project.bat file that you can click on to build the project for you.

Looking at the .project.ini file you tweak various settings, such as the icon file, version info, if you want to inc the build number, generate compiled unit files or use runtime packages.

if you use runtime packages all units compiled will be saved out to .pcu files and those will be dynamically loaded when the main exe runs, thus making the the main exe smaller and your project can be modular.

In your source you can directly access exported routines from DLLs or .PCU files:

[code=delphi]// pascal unit
unit myunit

interface

procedure myroutine;

interface

procedure myroutine;
begin
end;

end.

// main program
program mymain;

procedure myroutine; external 'myunit.pcu'; // or can be myunit.dll

begin
myroutine;
end.[/code]

if you compile myunit to a myunit.pcu file any routine in the interface section you have access to just like you would do in with an exported unit from a dll.

You can do:

[code=javascript]// javascript main
uses Forms, MyPascalUnit in "MyPascalUnit.pas"
[/code]
when the javascript module compiles it will load in and compile the pascal unit and the declarations are then visible from JavaScript and vise verse. The same is true for all supported languages.

If you see the scroll, viewport and polypoint demos they use a lot of QE features including high level actors and entities.

Play around an see if it works well on your configuration.

Thanks