Basic ThreadSpace: Hyperbol map editor usage.

The editor can be started by clicking your start menu. Its in programs -> Iocaine Studios.

In your hyperbol folder (which is in your steam folder, under steam\steamapps\common\tshb) there's a subfolder called HBMEToolkit

There's lots of tools in there, and an example map that you can load up to see how its done.

Anyways, lets get started: Start the editor, (HBME.EXE) and you will be presented with a blank map.

To make a minimal complete map we will have to do the following tasks:

  1. Make start points so that players have somewhere to start!
  2. Make a glowing blue floor for the action to take place on
  3. Make geometry and decoration around the map
  4. Compile the map and test it out
  5. Create a minimap for the map and finalize it (optimize-compile it)

Remember to save often. If you mess up with the camera, you can exit the editor, reload the map. Camera position always defaults to a normal view.

Basic Camera controls

Basic Manipulation Controls

Making a basic map walkthrough

First things first, we need a folder for this map to live in!

  1. Start with a blank map.
  2. The map name must equal the folder name. So after starting the editor, choose ‘file->save as’.

  3. Browse to your hyperbol data folder, and make a ‘maps’ folder if one does not exist.
  4. In that folder, create a new folder for your map. For example, if your map name will be ‘attacker’ and it’s an arena map, call the folder ‘a_attacker’
  5. save the map as ‘a_attacker.xml’ in that folder.
  6. You should end up with (for example) hyperbol\data\maps\a_attacker\a_attacker.xml If your map is not named the same as its folder it will not work and it will not package correctly.
  7. Now that we have the map ready to work on, lets put a player start point down to get a scope for the scale of the map.

Placing a Start Point

  1. Click new->entity or use the toolbar button. You will be shown the Entity Browser, with the many, many entities that the game can use.

  2. Click the ‘Group’ drop down list and change it to ‘Gamelogic’. This will list only game logic entities. One of the entities is ‘playerstart’
  3. Select the Player Start Point and click ‘create’. A player start (looking like the old school ship model) will appear. This gives you an idea of how big the map will be.
  4. We will configure the player starts later, for now, we’ll just use it as a start point.
  5. You can copy and paste entities. Click on any of them and use CTRL+C and CTRL+V as you'd expect to. You can drag multiple entities around at once.

Now we define the floor area

  1. A floor area, is a good way to quickly get something going.
  2. Click menu->new->floor

  3. Press P until the mode listed in the toolbar (“Mode: Selection Mode”) changes to "Mode: Get Point Mode". This is the floor point creating mode. Whenever you click in this mode, a new floor point will be created, and then the mode will be reset back to Selection Mode.
  4. Click anywhere to create a point
  5. Press P again to get back into Point Mode.
  6. Click anywhere to create a point again.
  7. Repeat from step 4 until you’re happy with your floor. Remember, you can delete points, and you can move them using basic manipulation controls, and the Undo works just fine here.
  8. Note: To successfully enter point mode (P) you must already have a floor, or a floor point selected. Click to select an existing floor point. If your floor has no points, you can use the object list (windows->Object List) to click on the floor or any of its points to select them.

Making The Geometry

Most map geometry is constructed from ‘prefabs’. Prefabs come in matching sets. Most of the prefabs in a set share a common texture, making them very fast to render. Mixing sets with each other will increase texture usage and slow down rendering, but is generally ok – as long as you don’t use –too- many different sets.

  1. Click ‘New->Prefab’ (or use the new prefab button) to see a list of prefabs. This will open the prefab browser and let you choose which prefab you want. Most prefabs in sets are plug-into-each-other and you will need several to make a single structure. You can connect them together in many ways to make unique geometry

  2. Once you have selected a prefab, click the ‘create’ button. It will appear in the center of the map. (If you’d rather it appear at the location of the selected object, use the ‘create at’ button).
  3. Manipulate your prefab as you wish, and add more to it by repeating from step 1.
  4. You can mirror prefabs and make a lot of fine tuning by editing its properties.
    1. Click ‘Windows->Properties’ (not map properties)

    2. An important option there is ‘Mirror’
    3. Change Mirror to ‘true’ to mirror the prefab d. It is not recommended that you alter the Scale value

Prefab Properties

Open the properties panel (windows->properties) to see the various properties your currently selected object has. Prefabs have important properties. Make sure you have a prefab selected (not a floor point, and not an entity such as player start), and examine the properties.

Note that you can select any field, and ctrl-c, then select another, and ctrl+v to paste. This helps copy values across prefabs. This works for all fields, so be careful.

Other Properties and Script Pairs

Selecting other objects will also show you various properties for them. For example, select a floor point and view the properties window. Interesting.

  1. For example, select the player start entity.
  2. Since the player start is an ‘entity’ it doesn’t really have interesting properties. Instead, it has ‘script pairs’. Script pairs are special types of properties that communicate purpose and game logic to the game engine.
  3. Click windows->Script Pairs. You will be presented with a list of script pairs that the entity contains. This is where you set which team a player start belongs to. If you’re doing map scripting (game logic) you’ll spend a lot of time altering script pairs to make everything work. All sorts of complex behaviors and scripts can be created using this system.

  4. If your map is a deathmatch map, Make sure at least half of your player starts are assigned to team 1 instead of team 0, so that your map works in team play modes too.

Editing Map Properties

Testing and compiling the map

  1. Since you already made a folder for your map, and are saving it, compiling it is easy. You do not need a minimap to test your map. But you should definitely make a minimap before you distribute it to others.
  2. Choose file->compile map. Compiled maps have HBA file extensions.

  3. It will ask you what to compile your map to. Do not overwrite the XML file. Instead, type in your map name, with an HBA extension
  4. For example if the folder is a_attacker, (your map name), you’d use a_attacker.hba.
  5. Once the map is compiled you can either choose to ‘optimize’ it (by clicking file->optimize collision, Which can take a long time) or play the unoptimized version. Its recommend that you don’t optimize until you’re ready to distribute the map or test a final version.

  6. Once all is done you can start hyperbol and your map should appear in the list of maps to play! Note that the minimap needs to be made manually, since it’s a piece of artwork to be done. There is another document on how to do that.

Note also that there is another document on how to distribute your finished map to other players automatically. The menu option (file->package map for download) will do that for you.

Objective maps, single player (campaign maps, tutorials), etc Hyperbol has quite an advanced scripting system, capable of doing cinematics, dialogue, objectives, events. To make an objective based map, you will need to master the scripting system. There will be another document to handle this aspect. Most of it involves the script pairs. There will be other entries in this wiki to deal with scripting. You can make complex tutorials, multiplayer maps, and even single player campaign-type maps, using scripting.

Notes on "Optimize Map Collision" (Under File Menu)

This is an intense computation that optimizes the maps's collision map, as well as its renderable geometry. It can potentially take a very long time to perform. It generates the following files, all of them inside the map's folder:

Once you have optimized a map in this manner, it tends to run much smoother and faster, but the drawback is that it takes a long time to do this for some maps. On top of that,if you ever alter the geometry of your map, including the floor, or any prefabs, you must rerun this operation, or, alternatively, delete the above mentioned files. Failure to do so will cause strange problems. Optimization can take a long time. Be patient. wait for the optimizer window (dedicated server) to close. Do not alter the map or save it while it is being optimized. Seriously,don't do that.

Quick Overview (Script Pairs)

All entities have a ‘targetname’. This is any short name (you decide) that you want to refer to that entity as.Many entities can have the same target name. When a sensor fires (such as the radius sensor which detects things nearby), it fires its ‘targets’. This is a targetname. In other words, if you put a radius sensor down and tell it to fire ‘eat_at_joes’ then all entities with the target name of ‘eat_at_joes’ will activate when this occurs.

Vital entities

Important Models for Props and Destroyables

Basic Map Editor Usage (last edited 2007-07-13 17:06:28 by VekTuz)