World Editor

World Editor - is FxDK personality allowing you to create your own worlds by modify game’s map (with some limitations, see patches section), and adding new objects.

Please note, that World Editor is still in it’s early stage.

World Editor follows what you see is what you get paradigm of editing, providing 3D gizmo control essential properties of objects on a map, such as positioning, rotation and scale, both in global cooradinates space and local.

There’re two distinct primitives:

Patches

Pathes are your modifications to existing map objects, such as traffic lights, trash bins and so on.

Current major limitation is that you can only patch objects that have embedded collisions. Technically, it is already possible to move even buildings, but as their collisions are part of global collision mesh and as we’re still unable to modify that, patches are limited to objects with embedded collision meshes.

Another limitation is that you can not delete existing map objects, however, you can hide them.

Additions

Additions are objects that you add on a map manually from the objects browser.

Map assets

World Editor operates on map file assets, these are single files containing your map info.

Map files, before server can use them, are compiled to normal resource with optimized runtime for managing map additions.

Why not compile them to normal map files that game uses? Reason is that while it is possible, normal map files don’t allow for script bindings.

Usually, you don’t have to manually compile map assets via context menu Recompile option because it should autocompile when leaving World Editor. This option is available for edge cases such as that if computer shut down unexpectedly and FxDK had no opportunity to autocompile.

Script binding

This is very basic currently, but will be expanded further in the future.

Addition events

For map addition you can specify arbitrary event names that will be triggered when it is created and/or deleted, allowing you to use them in code.

Both created and deleted events will be triggered with object’s handle, which you can use to invoke entity natives.

Do note that both kinds of events will be triggered after the fact, meaning that, for example, invoking natives with object’s handle in deleted event handler will result in error.

These events are emitted on client and are not available on server.

Using World Editor

We won’t dive deep into details here because we have extensive intro tour built into World Editor itself, however, there’re few things worth mentioning here.

Play test

You can test your creation right away without leaving World Editor by pressing F5 hotkey or clicking on play button in UI, this will place a controlable player ped where your camera is currently.

You can configure World Editor like so that you’ll spawn in vehicle instead, see settings panel in UI.

There’re two options to leave play test mode:

  • ESC hotkey, camera returns where it was when you entered play test.
  • Shift+ESC hotkey, camera stays where you are.

Environment

You can control what time is it in game, freeze time and change weather, these options live in environment panel in UI.

Positioning additions

In addition to all normal controls like position, rotation and scale, exclusively for additions, you can ask game to try to position them “correctly” on ground.

Undo/Redo

World Editor fully supports undo/redo functionality, it behaves like you’d expect: Ctrl+Z to undo, Ctrl+Shift+Z to redo.

Contributing

If you have any suggestions, bug reports or questions, please file an issue on our GitHub.

For all existing World Editor related issues see world-editor labelled issues.

As always, pull-requests are very much welcome!

Last modified December 8, 2021: add(fxdk): initial FxDK docs (bfec0b2)