Workflow

1. Authoring editor

"Design is not just what it looks like and feels like. Design is how it works."

Steve Jobs

Creating interactive virtual worlds and real-time 3d applications

You can start right off creating interactive virtual worlds and real-time 3d applications by combining assets and defining behavior, interactions and logic in the authoring editor.

Designed for demanding projects

Designed to support also large and complex projects, the editor is based on prefabs, templates and nodes from the bottom up.

Customizable

And in case you have special needs which go beyond the built-in features of the authoring editor, then just customize or extend the editor and the run-time, or create a new tool.

2. Live nested adaptable prefabs and templates

Live prefabs and templates

Most projects have recurrent elements. For example, the same character is placed many times in a scene or in multiple levels. Just copy-pasting the character definition has the disadvantage that modifying the character definition later would require to adjust also each copy you have made in the meanwhile. This is no option for any sophisticated project.

Shark 3D provides you prefabs and templates as solution. You can combine any scene elements and nodes into a prefab or template. Then you can use that prefab multiple times within our project. If you change the prefab later, all usages of the prefab will change accordingly live.

For example, you can define a character type containing geometry, animations, physics, sensor volumes and behavior defined in scripts. Then you can place that character multiple times in your scene. If you move a sensor volume within the character prefab later, then the sensor volume will move live for every instance of that character in the level.

Nesting live prefabs and templates

Typically just simple single-level prefabs are not sufficient. For example, you might need different kinds of characters, each instantiated multiple times in your scene. You can do this by defining a prefab for each character kind. The different character kinds may have common characteristics, for example the same sensor volumes connected with the same basic behavior script. So for creating a new character kind you could just copy paste an existing character kind and make some adjustments. However, this again would have the disadvantage that modifying a shared feature later would require to modify it in each character prefab again.

As solution, in Shark 3D live prefabs and templates may contain other live prefabs and templates. You can nest prefabs and templates as often as desired. Any change in any prefab or template will be used live.

For example, you may create a template containing shared features like some basic sensor volumes, some standard animations, and a script defining basic behavior. Then each character prefab may use that basic template, but also add special features for that particular character kind. For example, a character kind may have additional animations, additional sensors, or an additional script for custom behavior. Then you can instantiate each of these character prefabs at multiple places in your scenes. As result, if you for example move a sensor volume in the basic template, then it will move live for all characters in the scene which are indirectly based on that template.

All this can be done graphically without any scripting or programming.

Live adaption of prefabs and templates

Often it is too restrictive to use prefabs and templates just as they are. For example, a character template may contain a sensor sending a command to a script, but the script should be not defined within the same template, but the user of the template wants to define which script to use.

In Shark 3D you can easily adapt prefab and template by using slots. For example, the character template may just define and use a slot as placeholder for a script. The user of that template can define which script should be used for that slot.

Slots can be used for any kind of nodes, including for example geometry, animations, scripts, sensors, or shaders.

Also slots can be used graphically without any scripting or programming. Slots are also live and can be changed afterwards.

Internally optimized for run-time performance

Internally, to get optimal run-time performance without bothering the user, prefabs and templates are automatically resolved on the fly into optimized run-time representations.

3. Shader editor

You can use the node-based graphical shader editor to create advanced materials and rendering effects. This includes for example sophisticated per-pixel lighting, hard and soft shadowing using area lighting, reflections and refractions, shader animations and much more.

Any change in the shader editor can be seen live in the authoring editor and on all target consoles.

For example, as soon as you connect two nodes, the resulting surfaces change immediately in the game running on the consoles.

You can also inspect the intermediate result of each node by connecting its output pin to the result pin temporarily without releasing the mouse button.

4. Live editing

Live editing in the authoring editor

Any changes in the authoring editor can be seen and tested live in the run-time window.

This includes also indirect changes. For example, if you move a sensor volume within a character template, then the sensor volume will move in all characters which directly or indirectly use that template.

Updating changes into consoles

Since the live editing mechanism works also over TCP, you can work on one computer and see the changes in your application running on a console.

For example, you are running your game on a console. At the same time you are editing the game on your development computer. You can update your changes directly into the running game and can see how your changes look like on the console.

Updating changes into other computers

Another situation is the following. You are running your game full-screen on a less powerful PC which is typically used by persons who are going to play your game. At the same time you are editing the game on your powerful development computer. Also in this situation you can update your changes directly into the running game and can see how your changes look like on the running target system.

Updating changes into your proprietary application

Live editing does not only work with the standard Shark 3D player. If you create your own run-time player based on Shark 3D components, then you can still use live editing.

Updating out of third-party tools

This works not only for specialized tools, but also for third-party tools like Photoshop™ or 3D Studio Max™.

For example, the designer can play the game scene for testing. He might find out that, for example, some mesh, some bone animation or some texture bitmap should be modified. Then the designer can perform this change for example in Photoshop™ or 3D Studio Max™. With clicking on the "Save" respectively "Update" button, these changes are updated into the running Shark 3D based application. The designer can continue playing the modified scene in Shark 3D.

Editing the game logic

Live editing also includes game logic objects, for example animation objects, command flow objects or sensor object parameters. You can change an animation control object, and Shark 3D can re-load the animation component in-place. You also may change the command flow defined by some command dispatcher objects, and Shark 3D can adopt this new command flow configuration.

In addition, live editing also works for Perch scripts. For example, during test playing your game, you find out that your Perch script has a logical error. A simple case may be that health points are calculated in a wrong way. Now you can modify the script and press the compile button on top of the script editor, and Shark 3D will use the new script code. The update preserves the values of the script variables. So you can continue playing your game in exactly the same situation.

Live editing various kinds of resources

The live editing features allows you to edit and update for example the following resources in the running game:

  • Shaders
  • Vertex and pixel/fragment programs
  • Lights
  • Texture bitmaps
  • Meshes
  • Texturing and mapping coordinates
  • Particle systems
  • Object positions
  • Skin information
  • Skeleton animations
  • Object path animations
  • Sound files
  • Perch scripts
  • Custom C++ objects and its parameters
  • Various other resources

5. Dynamic help

You can browse and search the whole Shark 3D documentation inside the editor or in a separate browser window.

When clicking a node, the context help will automatically show you information about that node.

When typing Perch script code to send a command to a node, the auto-completion function will offer you all available commands for that particular node. Additionally the context help will automatically provide you further information about the chosen node command.