PDA

View Full Version : ZGameEditor: Freeware tool for creating 64 kb games



VilleK
13-03-2007, 06:28 PM
My niche game developer tool "ZGameEditor" is now finished and
released in 1.0 version.

It is a little tool for making 64 kilobyte games and screen savers
for Windows.

Some of the key features include:
* OpenGL graphics
* Real time audio synthesizer
* Scripting language

The tool is written in Delphi.

http://www.emix8.org/images/zge_shot1_mini.png http://www.emix8.org/images/zge_shot2_mini.png

http://www.zgameeditor.org/images/filedemo_mini.jpg http://www.emix8.org/images/Particles_small_5.jpg

Here is the website: www.zgameeditor.org (http://www.zgameeditor.org)

savage
13-03-2007, 07:13 PM
Looks great!

Now a news item.

pstudio
13-03-2007, 08:57 PM
It's pretty cool :D

However the executable filesize is more like 92KB than 64KB :P

And what's up with the c scripting? I thought this was a Pascal forum :P

But seriously this a quite good program. It's easy to work with and your tutorials on the website are excellent.

FNX
14-03-2007, 11:50 AM
Wow!!! I'll surely give it a try tonite! :D 8)

Great job!

VilleK
14-03-2007, 04:28 PM
savage: Thanks for making it news!

pstudio: When you run a game from inside the tool (using F9), they are uncompressed. The size is about 100kb before compression. When you select "Build release" from the menu you will get a small exe-file (thanks to upx-compressor tool).

VilleK
02-05-2007, 12:12 PM
ZGameEditor is now updated to version 1.2.1 with improved support for importing bitmaps.

Here is a short google video showing the new included demo project "CleanseCube":

<embed type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=5472364584921276490&hl=en" id="VideoPlayback" align="middle" quality="best" bgcolor="#ffffff" scale="noScale" salign="TL" FlashVars="playerMode=embedded"></embed>

http://www.zgameeditor.org/images/cleanse_small1.jpg http://www.zgameeditor.org/images/cleanse_small2.jpg

http://www.zgameeditor.org

cragwolf
02-05-2007, 12:30 PM
Well done. I hope that plenty of people try out this software. Maybe PGD could run a competition: create a 64K demo with ZGameEditor? Good luck.

VilleK
04-02-2008, 11:12 AM
The source code for ZGameEditor is now available. It is written in Delphi and can also be compiled with Free Pascal.

Parts of the code that can possibly be reused for other projects include:

* Directsound/SDL-based realtime audio synthesizer
* Expression/script parser and runtime
* MIDI file parser
* 3DS file parser
* Steering
* Implicit surfaces
* Component model with support for deep cloning and stream from/to XML or compact binary format
* GLSL integration
* Linux/Mac/Win32 cross platform runtime

Download here: http://www.zgameeditor.org/index.php/Main/Download

noeska
04-02-2008, 05:23 PM
Wow impressive.

Does your realtime audio synthesizer work without directsound? Do you have an OpenAL version planned?

I see you use coco for creating your scripting language. Could you explain how you go from coco to something that actually works inside an delphi application? My experiments with coco never lead me further then parsing a script into an treeview using an delphi application. What coco editor are you using?

arthurprs
04-02-2008, 08:58 PM
im your fan, i loved the app :shock:

harrypitfall
05-02-2008, 01:52 AM
I'm going to a same approach, using DelphiX as a root... and i'm really want to use OpenGL.
I use javascript as script...

VilleK
05-02-2008, 08:57 AM
Thanks for the supportive comments :)


Does your realtime audio synthesizer work without directsound?

Yes it also works with SDL-audio. So when the runtime is compiled with the define ZZDC_SDL it uses the platform-independant unit ZPlatform_SDL.inc which use SDL. This is tested and the audio works on Mac and Linux.

About Coco I use this version: http://www.tetzel.com/CocoR/
This is a command line tool which I call from a batch-file (m.bat).
So I edit my definition file Zc.atg with a texteditor and then run the batchfile that generates the delphi-files I can link to my program.
See the files in ZzDC\tools\ZDesigner\expr-folder in my source.
Coco is a very good tool, however compiler/parser writing is difficult and I had to do a lot of reading before using the tool.

arthurprs
05-02-2008, 06:33 PM
I'm going to a same approach, using DelphiX as a root... and i'm really want to use OpenGL.
I use javascript as script...

what are you using for javascript? windows script engine?

wodzu
11-02-2008, 09:37 AM
Well done. I hope that plenty of people try out this software. Maybe PGD could run a competition: create a 64K demo with ZGameEditor? Good luck.

I second that!

VilleK
08-03-2010, 02:46 PM
I'm bumping this old thread to announce the release of ZGameEditor version 1.9.9!

ZGameEditor is a free game authoring tool that generates native high-performance stand-alone compact executables for Win32, Linux x86 and OS X. Now 3 years after initial release ZGameEditor has reached version 1.9.9 and it's the most feature packed update yet!

ZGameEditor is an ideal tool for experimenting with procedural content generation techniques and developing OpenGL-applications. Make games, demos and screen savers using advanced graphics features such as multiple render passes, render targets and shaders. Instant GUI feedback of your changes. No waiting for build times!

ZGameEditor is 100% Free Open Source software. Full Delphi/Freepascal source code available.

New features in 1.9.9 include:


render to texture
multiple render passes
web-connectivity
string support in scripting language
calling external libraries


And also many other improvements and changes!

Download ZGameEditor here:

http://www.zgameeditor.org/

http://www.zgameeditor.org/images/frontpage/zge_recursive_mesh_jph.jpg

http://www.zgameeditor.org/images/frontpage/zge_raybox_diki.jpg

http://www.zgameeditor.org/images/frontpage/zge_recursive_mesh_ville.jpg

JSoftware
08-03-2010, 03:04 PM
Quite impressive! Have you thought of using Crinkler or other compressing linkers to make the executables even smaller?

Colin
08-03-2010, 03:51 PM
wow - is all i can say..... that last post with screenshots, it looks very professional, do you have any experience with directx? if so at some point i may contact you, i would be interested in paying you todo some work for me.

VilleK
08-03-2010, 08:51 PM
Thanks!

JSoftware: I don't know if Crinkler works with Delphi object files but an compressing linker would definitely make a difference. Currently ZGameEditor uses Upx-compression by default and this generates somewhere around 30kb executable for a minimum ZGE-project.

Colin: Sure I have some DirectX experience too! Let me know if you need anything done, but I'm quite busy so I can't promise I can take on another project.

JSoftware
08-03-2010, 10:44 PM
The only thing that's a little special about crinkler is that you need to use import libraries, which freepascal at least doesn't support out of the box.

I had to hack the rtl a bit, but when that's done I generate a 1kb executable instead of a 24kb(with upx) :)

If delphi generates normal PE COFF 32bit objects, then it might be possible

VilleK
09-03-2010, 12:03 PM
Good work generating a 1kb exe from Freepascal :) I'm using Freepascal to compile the ZGameEditor runtime-module for Linux and Mac platforms, but I've used Delphi for Windows because it generates a more compact binary. Perhaps I should try Freespascal on Windows as well.

I'm using a preprocessing step before compression where I remove parts of the runtime that I know is not used for the current project. For instance if a user has made a project in ZGameEditor that doesn't use Web-connectivity then I know that the class TWebOpen will not be needed in the runtime. I then use the Delphi generated map-file to zero out the area in the runtime that the class occupies. This does not modify the runtime size but increase compression ratio because of added redundancy.

With Freepascal and Crinkler I could instead distribute the obj-files of the runtime and when generating an exe from ZGameEditor I would create a list of the object files needed based on the current project and use Crinkler to link and compress.

If you have an example on how to use Crinkler with Freepascal then please post here or PM me, thanks!

epiece
10-03-2010, 03:55 AM
I Want to Try This .... :) ... very impressive :yes:

JSoftware
10-03-2010, 05:08 PM
Hey

I put an example up here: http://j-software.dk/crink.zip

The code is based around this example http://in4k.untergrund.net/index.php?title=About_Flow2

You can try and look around in it, and see what I had to hack in order of making it work

VilleK
10-03-2010, 06:14 PM
Thanks, your example works great! I can experiment from this and see how far I can get with the ZGameEditor source.

VilleK
14-03-2010, 01:24 PM
Regarding Crinkler compression, I did some testing based on your example JDarling:

The problem is that when using Crinkler you cannot seem to be able to use functions from external libraries using the standard "external dllname" style syntax that Delphi and FPC uses.

Instead you need to link to the name-mangled name in a lib-file like this:


//Link to import library User32.lib
procedure ExitProcess(uExitCode:UINT);stdcall; external name '_ExitProcess@4';

If your source code has many imports (like ZGameEditor does) then it will involve lots of work to IFDEF your code so that it will both compile in Delphi and also in Fpc using Crinkler as a linker. And you need to find the name-mangled name of all the functions you use from OpenGL and WinAPI.

Delphi can compile to obj-files but they are in OMF-format while Crinkler requires COFF. I found a very powerful tool called ObjConv (http://www.agner.org/optimize/#objconv) that can convert OMF to COFF format and tried that, but it fails to convert the Delphi files because they have "communal sections".

Another thing I tried to follow was to create import libraries where the names are not mangled so that they will be easier to import from Freepascal. A tool called ImpLib (http://implib.sourceforge.net/EN.HTM) creates LIB-files but I could not make it generate the output I want.

So I'm not sure what to try next. One way would be to load libraries at runtime instead using LoadLibrary, so I might try that if it doesn't seem like to much work or else I'll let this side-project wait for a while and come back to it later with more energy :)