RealmSmith 3D world editor

Community Forums/Developer Stations/RealmSmith 3D world editor

Zethrax(Posted 2008) [#1]
Hi, I'm happy to announce after several years of on and off development, I'm releasing a freeware beta version of my Realmsmith 3D world editor.

A bare workspace

A scene with models, paths, and a textured plane

The item properties window with the 'Displayed user data' panel open

This is an early beta, so documentation is still fairly sparse, and many features are still experimental. Some functionality is in need of further development, and is still a bit clunky. There are also, no doubt, many bugs still lurking.

The fully functional freeware beta version can be downloaded from:

The product website is at:

-- Features --

The standard Windows graphical user interface (GUI) is used for GUI components, rather than a custom GUI. This provides a familiar and easy to use interface.

The editor can operate in either GUI or 3D modes, and can be toggled between these modes by pressing the escape key, or the middle mouse button (in 3D mode). In GUI mode, you can switch to 3D mode just by clicking on the 3D viewport.

The editor is heavily hotkey driven, for fast editing while in 3D mode. Alternative GUI controls are also provided for most editing functions.

In 3D mode, you can fly around using the default W,A,S,D and F,C keys, combined with mouselooking. You can adjust the flight speed using the mousewheel. Eight speed settings are available, with each setting being 2X the speed of the previous setting. You can also use hotkeys to teleport to the world center, or to the grid cursor.

The hotkeys, and most other options, can be customized to suit the preferences of the user.

The editor is event driven, and is designed to play nice with the operating system, rather than hogging CPU cycles it doesn't need. If no actions are being carried out, then the editor will usually show in the Task Manager as using 0% of the CPU.

Multiple projects can be open in the editor at the same time.

Each project has 21 workspaces available. Each workspace is a separate world, with its own grid, camera, item and path lists, etc.

The editor uses item instancing, where possible, to keep memory usage to a minimum. This also applies in cases where multiple models are loaded from the same file.

The editor uses absolute sizing, rather than relative scaling, when adjusting item sizes. If you wanted a desk model to be 80 centimetres high, for example, you would simply set its size on the Y axis to be 0.8 (assuming a one metre base scale is used, and the option to preserve the aspect ratio is enabled).

The editor's sizing capabilities include the option to preserve the aspect ratio of an item when changing its size.

Each item, path, workspace, and project can have multiple user data fields which can be used to store whatever values you wish. These are in the form of name and value string pairs. You can create, remove, and change the order of the user data fields. Several different types of user data are available, depending on their usage. These are:-

1/ Single-line user data.

2/ Displayed single-line user data. The name and value data is displayed on mouseover of an item.

3/ Multi-line user data.

4/ External user data. The value field holds the path to a file. The provided 'Browse' button can be used to browse to, and set, that filepath. The provided 'Open' button will shell execute the file pointed to by the filepath. This can be useful for editing associated files in their native editing programs.

The editor's grid system allows switching between one dimensional and two dimensional grids; and beween grids on the X, Y, and Z axiis. Grid scale can be increased and decreased. Grids can be hidden, if required. Each grid includes a grid cursor, with optional snap-to-grid movement. The settings for each grid are local to the workspace that the grid is in.

A powerful item selection system is included. Multiple items can be selected. The last selected item is also known as the 'chosen' item, and is marked in a different color than the normal selected items. Some operations are performed on all the selected items, including the chosen item; some operations are only performed on the chosen item; and some operations are performed between the normal selected items, and the chosen item. Items are visibly numbered in the order that they were selected, and some operations make use of this order numbering.

A clipboard system is available for items. Multiple items can be cut, copied, and pasted. When an item is cut or copied, a copy of that item is kept on the item clipboard until it is overwritten. This allows items to be pasted multiple times. The item clipboard is shared between all workspaces and projects, so it can be used to cut/copy and paste items from one workspace to another, or from one project to another.

Paths can be created between any two items. An item can have any number of paths linking to, or from, it. Paths have a direction, but this can be ignored if you don't need it. Paths can be created between any number of selected items, in the order of selection.

Items can be snapped together at their centerpoints or mesh vertex points. The grid cursor can be moved to an item centerpoint, or mesh vertex point. These operations can also be set so the item/cursor is only moved on the current grid axis.

Items with visible properties have a brush object, which allows those properties to be modified. Brush objects can have up to 8 texture objects applied in layers. Texture objects have a variety of editable data, including user data elements.

Hierarchial parent-child relationships can be created between items.

The Realmsmith project file format is fully documented, and can be easily parsed to extract the information required to convert a Realmsmith project file to a native map file for your project. In future versions of the editor, export and import will be handled via scripting, with ready-made scripts provided for common formats.

TaskMaster(Posted 2008) [#2]
You should put some screenshots on your website.

puki(Posted 2008) [#3]

Hotshot2005(Posted 2008) [#4]
Yep that right...if you put screenshot on your website then you will have quite lots of people looking at it :)

P.S. People would Download your software if you have the screenshot to show for it :)

t3K|Mac(Posted 2008) [#5]
no screenshot no download. easy.

Xzider(Posted 2008) [#6]
I'd have to agree, I went there not reading the above posts, saying where are all the screenshots! You will get alot more downloads if you put up some screens!

Zethrax(Posted 2008) [#7]
I've added some basic screenshots to the post above, and to the website. I'll add more in future.

I forgot to mention that items with visible properties have a brush object which allows those properties to be modified. Brush objects can have up to 8 texture objects applied in layers. Texture objects have a variety of editable data, including user data elements.


When the editor first starts up, there is an issue with menu (and possibly other) events not being carried out until the mouse is moved. This is particularly noticeable with the 'Open last project' option, which doesn't work the first time it is clicked.

Snap-to-grid needs to allow for the fact that some operations need to change the centerpoint of the grid. Check that snap-to-grid operates in the grid's local space. Possibly change the move-cursor-to-vertex operation so that it moves the grid's world center rather than the cursor.

Changes to UV scale for textures don't take effect until the project is reloaded.

If an item is selected and the move-cursor-to-vertex operation is used, the selected item is moved by an incorrect amount.

The user data area in the texture properties window has a horizontal scrollbar showing. Presumably it is wider than it should be.

IPete2(Posted 2008) [#8]
To be honest,

just knowing that Bill has created this I'd think it should be fabtastic.


Ross C(Posted 2008) [#9]
Yeah, i was going to say that Pete. I've always held his name together with quality stuff. Can it export to .b3d?

If so, sign my up. Gile[s] still doesn't 100% cut it for me, as the old version (i don't like the new version at all) can't load .dds textures, and i'm having to put custom properties in, just to textures these in my engine, upon loading.

And, any plans to add lightmapping?

Zethrax(Posted 2008) [#10]
Thanks guys!

Export is currently fairly limited, unfortunately. It's necessary to extract the data you need from the project file. Documentation is provided for the project file format. Export will eventually be done via scripting, however I've held off on making this available untill I can test and document it more thouroughly. I'll be providing a few different export scripts, and hopefully other people will also make a variety of export scripts available.

I'm planning on adding the YAL lightmapper in future.

Currently I'm concentrating on fixing the existing bugs, and on providing better item positioning functionality.

John Blackledge(Posted 2008) [#11]
Bill, beware - YAL is nice but will only lightmap single meshes.
Any children it ignores.
I tried to mod the code, but the complexity of it defeated me.

Zethrax(Posted 2008) [#12]
It should be possible to do it by merging all the meshes to be lightmapped into a single mesh first though, shouldn't it? I haven't had much to do with YAL as yet, so I'm not sure about all its quirks.

Realmsmith uses entity instancing as much as possible to conserve memory, so merging all those instanced entites is likely going to be a fun time. I'll probably need to create a mesh copy of the base mesh for each instanced entity (without re-using any previous meshes to prevent floating point drift issues), transform it to match the instanced entity's transformation state, use AddMesh to merge it with the destination mesh, rinse and repeat until all the lightmappable items have been added.

Zethrax(Posted 2008) [#13]
The beta version of this product is now freeware. It can be downloaded from:

If you use this product, I'd appreciate it if you would register on the product's forum and provide feedback on any issues you find. The forum is at:

Something to bear in mind is that when you first start the program, it will start with a small window. You can change the startup window settings at: MAIN MENU > Files > Editor properties... > Window preferences