Flexlay - A Generic 2D Game Editor
**Notice!**
Current discussion of Flexlay's development and upcoming
features (especially regarding FlexlayPaint) is occuring at the
Flexlay Wiki. We'll
have moved most of the content from here to the Wiki soon
enough.
Flexlay is a generic 2d editor, with focus on games. It
currently supports multi layered tile- and object maps, full
undo/redo, support for tile-brushes, easy copy/paste, multiple
buffers, minimap support, a metadata editor, drawing/sketch
layers and some other stuff usefull for creating levels for 2d
games. Flexlay uses ClanLib
and Ruby.
Supported games are at the moment:
Flexlay can't be run on its own, but instead of you have to start it
via wrapper scripts (supertux-editor, windstille-editor,
netpanzer-editor).
Flexlay is covered under the GNU GPL, which means that you can
copy and even modify it pretty much as you like, as long as
you keep the copyright headers in place and distribute the
source too if you distribute binaries, see the file COPYING
for details.
Documentation
Flexlay itself is basically just a collection of GUI components
that you can plug yourself together via Ruby scripts, it however
comes with an example scripts that should get you started,
called basic.rb. The script provides you with a full
editor for a simple 2d game, all you have to add is code for
loading you game data and for saving it again.
Screenshots
FlexlayPaint (working title)
FlexlayPaint aka. SketchLayer is a special layer in Flexlay that
allows drawing. Its meant as both a development help for game
levels, ie. you can sketch not-yet-developed object types or
graphics directly ontop of a level for later reference, but it
is also meant for use in a standalone graphic application. It is
compared to normal paint programms relativly uniq in that it
combines pixel and vector graphics unlike applications like The Gimp which are strictle pixel
based or Inkscape which
is strictly vector based.
In FlexlayPaint every stroke you make is saved and recorded, its
not simply drawn to some pixelbuffer, but storted as a series of
coordinates and parameters (brushsize, pressure). This leads to
the following benefits. (Warning: The following is
'marketing speech', not all of these features might be
implemented or fully working at this point in time, however the
features listed here should all be implementable with the
current codebase in not to much time)
Advantages of FlexlayPaint over other Applications
- unlimited drawing area, you can paint where you want and you
are not restricted to some fixed pixel-sized canvas
- unlimited zoom, you won't reach a pixel-barrier when you
zoom-in, you can simply add as much detail at whatever scale
you like
- unlimited undo/redo, since only strokes are saved which are
memory wise pretty cheap as compared to a pixelbuffer the number
of undo/redo is pretty much unlimited
- the undo/redo stack will be saveable, meaning you can go
back to all your older revisions of your work if necessary,
named checkpoints inside your work will be available as well
(might be useful for writing tutorials or such)
- Flexlay will dump all your actions directly to disk directly
after you performed them, this should allow to recover savely
from crashes or otherwise fatal errors
- brush size and properties are changable even after
the image was drawn
- some vector graphic primitves will be provided and be
editable as they would be in a vector graphics application
- you can 'render' the image into a pixelbased format at
whatever resolution you want
- real shaped brushes, not just polygons, circles and
rectangles as in a classic vector application
- the application itself is written in Ruby and thus fully
customizable and scriptable, new tools, brushes and effects
can be added with relativly little work
- native OpenGL support, meaning very large brushes are no
problem, HDR based images and GLSL based effects should be
doable as well
- network support, in theory it should be possible to link two
Flexlays together and work together on an image, havn't
thought to much about this, but shouldn't be all that
difficult, just need to sync the undo/redo stack and replay
the actions
Disadvantages of Flexlay
Beside from all the advantages Flexlay has, it has of course
some disadvantages too.
- lack of support for indexed images, Flexlay will be able to
load them, however it will convert them to RGBA on the import,
so palette information will be lost
pixel based plugins (Disorts/Video, Noise/Spread) won't work
that good due to the lack of pixels, however either locking
down the resolution of the filters result or simply letting
the filter work on the current screen resolution might be good
enough for most of them
- images might not look 100% the same on all OpenGL drivers,
how much of an issue that will be and how good that can be
worked around isn't clear yet, having a reliable software
renderer based on Mesa might help.
Ideas
- gradient editor: allow it to 'grab' gradients from images/photos, etc
Download
Subversion
The latest development version is hosted in a Subversion repository:
svn checkout svn://svn.berlios.de/flexlay/trunk/
Copyright © 2003-2004 Ingo Ruhnke, <grumbel@gmx.de>