LevelBuilder
| Status: | alpha 1 version 0.40 |
| Expected release: | August 2009 |
| Type of project: | application / tool |
| Platforms: | Java 6 or higher, using the ToolKit library |
LevelBuilder is an application to draw maps or levels, for documentation purposes or for use in an actual game.
It is a continuation of the MapMaker project. Where MapMaker maps were based on a grid,
LevelBuilder goes much further and allows for objects to be placed anywhere. New editing options have been
included that are far more powerful than those in MapMaker.
LevelBuilder is first and foremost designed as a "sandbox" application - all its components are implemented
such that they can be taken in any direction for any type of game project (or even simple image map creation
for your favorite RPG game). Although still a lot of work needs to be done, the basic tools are there.
For screenshots of the application, see the tutorials.
A list of changes from MapMaker so far:
-
More logical terminology. A map is now a level, a workspace is a project,
an icon is a graphic, an iconset is a graphics library.
-
Graphics can be selected by either clicking them, or dragging a selection rectangle around them.
The selection rectangle can be resized and moved as you see fit by dragging either the edges, or
clicking inside the rectangle and dragging it around. Because the grid data structure is gone,
the confusing use of units is also gone; levels and graphics are now measured in good old
fashioned pixels.
-
Selected graphics can be moved around by dragging them (click selection mode only, but it is possible
to switch to click selection from rectangle selection). Also the old 'delete mode' in MapMaker is
removed because you can now simply delete items by selecting them first and then pressing CTRL + X.
-
The application now supports zooming. You can zoom in predefined steps, either 2, 3 or 4 times the
original size.
-
Optionally a grid can be activated which is drawn on screen. You have full control over the size of the
grid cells, and you can activate a snap to grid option. Rectangle selections will also snap to
the grid.
-
Plugin usage has been severely reduced down to manual export formats only. Other functions have been
built into the application.
-
One such plugin feature was spritesheet importing, which is now a wizard inside the application.
The wizard contains features such as color picking and three different ways of doing the import,
one of them is manual extraction using rectangle selections (with zooming support to make it a lot
easier). The other two options are automated and taken directly from the MapMaker plugins.
-
Addition of button toolbars to contain the most common functions. This should make the user interface
a lot more readable. Most buttons have an equal in the menu, as well as a keyboard shortcut.
-
New paint tools, such as guided painting, allowing you to
draw a horizontal or vertical line to which the cursor will stick,
and area fill, allowing you to drag a rectangle which will
be filled with as many instances of the selected graphic as will
fit inside it.
-
Spritesheet exporting. From the graphics browser you have the ability
to export it as one or more spritesheets (depending on the maximum size
of the spritesheets and the number of graphics being exported).
Along with the spritesheets you can optionally have an XML index generated
that contains detailed information that makes using the spritesheets
in a game as easy as humanly possible. Spritesheet exporting will also
be available in the LevelBuilder Binary format, the built in file
format used for exporting projects into a format that can be used in
games.
- Template support. A template is a graphic composed of multiple
smaller graphics. This template can then be painted as any other graphic,
only after painting the template is gone and you just painted all the
smaller graphics at once, which you can afterwards alter seperately as
you see fit. You create or edit a template just like you would a level,
with the exact same editing features.
-
The sidepanel has been changed from a tabbed layout to a "split panel"
layout. The project and changes are now shown in the same panel as
resizable blocks, along with a panel that shows the current graphic
that you are painting.
-
Ability to input properties for painted graphics. See
tutorial 3 for
more information.
-
Project workspace export/import. This allows you to easily create backups of your
project, but also to share your project with other people so they can easily
start making levels for your game. You have the choice of locking a project,
meaning such things as forms and graphics libraries are "locked down"; they cannot
be changed anymore. Also an export can contain the levels, but it is not necessary.
Because of the more open structure and editing possibilities, it is in theory possible to create
levels for any kind of 2D game, or even semi-3D game. With the inclusion of the grid the simplicity
of MapMaker can be retained for grid based games. Platformers, horizontal or vertical shooters,
2D RPGs, puzzle games; all should be possible now. With the flexibility of the used
ToolKit library, it is also possible to add different types of editing
views to the editor, including an isometric one.
Currently being developed (or "wish list" to be more precise)
-
The "manual" spritesheet importer is being rebuilt - in stead of doing a
a selection, extraction, selection, extraction, etc. you can select all
graphics you want to extract at once by drawing multiple selection
boxes. (Rating: easy, lots of work)
-
Built in graphic editor so that you can touch up graphics easily, even when
they are already used in levels/templates. This will not be photoshop,
but more a sprite or tile editor allowing you to manipulate the pixels
and the palette. (Rating: easy, lots of work)
-
The ability to offset the grid so that it doesn't have to start in the
exact upperleft corner of the document. By being able to position the
grid location manually you can very precisely draw tiles in specific
locations. (Rating: moderate)
-
Right now the "snap to grid" snaps to the topleft corner of a grid cell.
This should be configurable to any corner or the center of a cell.
(Rating: fecking harder than you would think)
-
When you select an icon in the gfx browser for painting, it should be
configurable that the main editing window automatically comes into
focus so you can instantly paint. (right now you can quickly switch
by pressing CTRL+B). (Rating: easy, but hard to implement in gui)
-
Different "views" The current view is flat 2D - graphics cannot overlap
unless you put them in separate layers. The program will at least also
have an "isometric 2d" view, which allows objects to overlap. The
basic rule will be that an object is "in front" of another if its
bottom line is below the other. In this view you can still put objects
on top of each other using separate layers. Also, the simplistic
MapMaker grid will be present again as one of the views, and possibly
a pure isometric view. (Rating: hard, looooots of work)
-
Level importing from a PNG image. If you have the tiles and an image
that is composed of the tiles, LevelBuilder will be able to import
it by comparing the tiles against the image. (Rating: moderate, lots of work)
-
More source code documentation. Always the lowest priority while it should have
the highest :) (Rating: too easy, boring, lots of work)
-
The start page and all the help functions in the program should be integrated. The start page
should be "dockable", so at choice you can have it as a document in the application, or as
a separate window. This will turn the start page into the central documentation system for
the application, as it was intended to evolve into. (Rating: impossible in current gui setup)
-
All dialogs should have a uniform size. Right now some dialogs are too small for example to
contain a full error message. (Rating: moderate)
-
Add an option to remove an entire project. (Rating: easy)
-
Couple properties to a single template - all graphics part of the template have the exact
same properties sheet. (Rating: moderate)
-
Ability to re-order fields, possibly by simply adding buttons to move them up and down to
the Edit form dialog. (Rating: easy)
-
Changes sidepanel widget: visibility changes should automatically merge into edit changes;
keeping them as separate changes is annoying at best and not very intuitive. (Rating: easy)
Known issues
-
Repeatedly painting templates is a little slow, need to find a way to make that more efficient.
-
There are still a few graphical quirks (minor repaint issues rarely). They are not damaging and
quite hard to trace. I will squish all of them eventually. Resizing the window usually fixes
any glitches.
-
The changes sidepanel widget can now potentially show an endless list of changes; need to compact that.
-
When too many changes are added to the changes widget and it gets a scrollbar, the
"document" should stick to the bottom, now it sticks to the top.
-
Snap to grid only works when the grid is visible - it should be possible to activate snap to
grid without having it actually shown on screen.
Changelog
Version 0.40:
-
Export/import project option, allowing you to export a project optionally
including its levels. Through this option you can create an initial setup
for your game and allow other people to use the same setup without having
to configure a single thing.
-
Adding graphics to the graphics browser without doing a spritesheet import
is now a far easier dialog.
-
To input properties you now need to select the proper selection mode. The
sidepanel will only show up in that selection mode. In this mode you can
only select one property at a time.
-
Levels can now be grouped, making it possible to define worlds or level
subsections. This is entirely optional; if you mark a project as not
using level groups, the editor will not show any reference to it. Also
when you are using groups, levels can still have no group if you need
both grouped and ungrouped levels for some reason.
-
Ability to create property references. A graphic can be tagged as being
an "object"; you can create references to objects through a reference
property. When you have such a property, when you change it you only
have to click the property you want to reference in the level and it
will be filled in.
-
Ability to set the level background. This will also alter the background
color in the editor.
-
Enforce a maximum name length so that the length of the names cannot screw up the user
interface.
-
Ability to provide default values for specific property fields. Not all field types
can have default values at the moment, only checkboxes, select boxes and number
fields. The color field will also have a default value in the future.
-
Fixed bug where you could paint outside of the left or top borders of the level into
negative space by drag painting there.
-
Implemented far more efficient storage datastructure for levels, taking care of some
performance issues here and there as well as some repaint issues.
Version 0.27:
-
Properties support. It is now possible to bind values to
graphics you painted. What values you can bind you define yourself through the creation of
forms. You are able to input values through text fields, number fields, text areas,
selection boxes, checkboxes and color choosers. The property editor is shown in a newly
added sidepanel, which you can manually show or hide.
-
Fixed a bug in the graphics browser; when importing a spritesheet, the newly created group
would not automatically appear in the browser.
-
The sidepanel(s) are now shown in a single panel, as widgets with dragable edges so you can
resize them.
-
The sidepanel widgets, the toolbar and the favorites popup now all have a uniform look,
with a gray header. First step in the cleanup of the overall appearance of the application.
-
The graphic widget, showing the graphic currently being drawn, has returned. It was
present in MapMaker, but was removed in earlier versions of LevelBuilder because it didn't
fit anywhere anymore. Now it is part of the widget-based sidepanel.
-
Delete graphics keyboard shortcut changed from DELETE to CTRL+X. The delete key was giving
problems in combination with the property editor; pressing delete to remove characters in
a textfield for example would remove the selected graphic.
Version 0.25:
- Fixed so that the app saves which documents were open and in which order - previously only levels
could be reopened when a project was loaded.
- The app now saves the zoom and grid states of each opened document and sets them back when
a project is loaded again.
-
In the graphics browser, when the window is too small the "click right mousebutton for selection
options" text (when you have made a selection) collapsed below the help button. This has been
fixed so the text stays to the right of the help button.
-
Fixed a naming issue. When a name only consisted of numbers, it was rejected.
-
When adding a new graphics library manually, it wasn't saved immediately, which when you would
close the application without making any changes to the library, would cause important files
to not be created. This has been corrected.
-
Closing a project manually would cause an error to be logged.
-
Implemented that when adding graphics to a library and there is no currently selected graphic,
a default one is automatically selected. Also fixed issues with removing either graphics or
a group that contains the currently selected graphic - it wouldn't be changed so you would be
drawing a non-existing graphic.
-
Changed the selection color from 25% transparent blue to 50% transparent white. This makes
selections a lot more clear and the risk of the selection color matching the graphics is
far less as (nearly) white graphics are rare.
-
Removed the tabbed sidepanel and replaced it with a "split panel", where the tabs of the
old panel are now shown as resizable blocks inside a single panel. It is no longer
possible to deactivate any of the views, so the matching menu options have been
removed.
-
Added a block to the sidepanel that shows the current graphic that you are drawing.
-
Added a titlebar to the favorites popup and made its graphical style match that of the
split sidepanel.
-
Added "add level" and "add graphics library" options to the application menu
-
Added "zoom" menu to the right-click menu of documents.
Version 0.20: