|
Once you have connected the data API to your game data, you can pick and choose which of the Spielwerke components you want to use to write or improve your tools: Property Inspector The Property Inspector allows you to display all your data in one or more tree and/or list views. You can configure how the views are connected with each other - for example, you might want to have a list view with all your game entities and a tree view to show the properties of the currently selected entity. By tagging your data, you can customize the controls used for each property to display sliders, check boxes, drop-down lists or more complex controls - and of course you can write your own controls if your data needs to be displayed in a customized way. All of that comes with a multi-select & edit functionality which allows you to change the properties in several containers at once, e. g. to help you to change the colour of all selected lights. Furthermore you can customize not only the controls but also the context menu, so the user can execute specific commands for specific types of data. And to make it easy for you to find the data you are looking for, the Property Inspector comes with powerful filtering and seaching functionality and allows you to quickly switch between different ways of grouping your data. 3d/2d View The 3d/2d view gives you a visual representation of a game scene or game level. It can visualize all of your graphical data using either our default Managed DirectX renderer or your own renderer. Naturally the view does not only simply display the data - you can tag your data to be displayed with interactive graphical controls. Good examples for those graphics controls are bounding boxes or bounding sphere, view cones for your NPCs or more complex controls to adjust waypoints or AI pathfinding grids. All of those can be manipulated by the user with the mouse in the 3d/2d view - and they automatically get updated if the underlying data is changed by other means (e. g. the property inspector). Of course you can also write controls spezialised to your game, maybe you want to visualize triggers used in your engine between game entities. Or your engine has some other unique feature which your designers could leverage better if they would have a graphical editor for it. Blueprints Blueprints will help you organize your data around a set of predefined game objects - you can create for any property container a blueprint with preset property values and then create instances of this blueprint. Each instance can then overwrite the presets as necessary. You can also lock property values, so they cannot be overwritten by further instances, so you can make sure that all instances of your "Red Flickering Light" blueprint actually are red and flickering lights. This will allow you to change common parameters of your game objects (or indeed any property container used in your game) in a controlled and predictable way. Blueprints do not need any support of the game engine - you can choose to "instantiated" all game objects on export by copying the property values from the blueprint into the instance. Live Connection With the Live Connection component it is possible to remotely attach the editor to the live running game, and even edit game objects in place. All editor components are designed to display the live data values and immediately reflect the changed state of the live game on the editor side and vice versa. This means users have immediate feedback and a quick turn-around. Furthermore the Live Connection is invaluable for debugging your game logic. On the game side, the Live Connection component is a light-weight C++ library which makes publishing running game objects to the editor side a matter of minutes. Because we do not like to intrude into your game code, we have taken pains to design this connection layer such that it can be easily "tacked on" and taken out of your game code. Live connection components are designed to keep bandwidth at a minimum. Editing small levels or huge scenes, makes no difference because only data relevant to current editor’s context will be transferred. Full undo/redo Using the data API common to all components, we can offer "automatic" undo/redo in all components. That is: any component - even the ones you write yourself - can be easily written such that all changes done to the data can be reversed, offering to the user a multi-step undo/redo with an intuitive UI displaying a history of his recent changes.
|