Editing/Modding‎ > ‎

Basic 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

  • WASD
  • hold down RIGHT mouse button to look around
  • While holding down RIGHT mouse button, WASD zooms in and out and stuff.

Basic Manipulation Controls

  • To select something, click on it
  • To multi-select, hold down SHIFT and keep clicking on things to select them
  • To box select, press b (just once, do not hold it down). The ‘mode’ will change to ‘box selection mode’. Now drag a box around the objects you want to select.
  • With something selected, hold down ‘G’ and then drag it around to move it (‘grab’)
  • With something selected, hold down ‘R’ and then drag it around to rotate it
  • With something selected, hit the delete button to remove it
  • Copy and paste also works as expected (CTRL-C, CTRL-V)
  • Most of these keys need to be pressed while the mouse cursor is over the 3d world, not the menus.
  • You can copy and paste between maps. You can even load a map file, copy, undo the load, and paste. It might be worthwhile to build a few fragmentary maps with useful parts in them as your palette, and copy and paste from them, especially when using map script.

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.

  • Mexfile and prefabfile refer to which model and texture files to load that defines the prefab. Prefabfile is the geometry, mexfile is the texture definition. You deal with these when making custom prefabs in blender3d
  • Mirror will mirro the prefab. You can use this to make a prefab flipped over to connect the other way with others
  • Priority controls in what ‘detail levels’ the prefab appears.
    • Priority 0 will only appear in high detail mode
    • Priority 1 will appear in high and medium detail mode
    • Priority 2 will appear in all detail modes.
      • Priority 2 should be used for all crucial prefabs that collide with the map and are crucial to gameplay.
      • Priority 1 prefabs should be used for non-collidable geometry that’s still important for keeping some semblance of detail (medium detail).
      • Priority 0 prefabs are for long distance details that are unimportant but still add flavor in high detail mode (only)
  • The pulse values control the pulsing prefabs (only in shader 2 or 3 mode, so only when pixel shaders are available). Warning: Prefabs with differing pulse values will prevent them from being optimized into one single prefab for rendering (since their pulse values differ), when you optimize the map.
  • Pulse_floor is the minimum brightness (out of 1.0) that the pulsing parts pulse to.
  • Pulse_Freq_Mul is how fast that the object pulses. 1.0 is normal speed. 0.0 is never pulse. It can be a higher number than 1.0. 2.0 will pulse twice as fast as normal. 3.0 will pulse three times faster.
  • Pulse_Phase is a phase shift, if you want to make pulses travel along prefabs for example, or keep them out of phase
  • Pulse_Scale is how deep the pulse is. For example, a pulse scale of 0.25 and a floor of 0.5 means it pulses from 0.5 (the floor) to 0.75. (Floor + 0.25)
  • Position and rotation are standard transforms and can be typed in if you need to
  • Scale should not be altered

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

  • The map itself has properties. These are vital for your map to work correctly.
  • Click windows->map properties

  • Edit these various fields as you see fit.
  • Note that this is where you can alter the MINIMAP BOUNDS, which define the camera area and playable area. This is important when making a minimap(outlined in a different document).

  • It also defines the name of the map. This is vital. Make sure the name of the map here matches the folder it is in. So for ‘a_attacker’, make the map name a_Attacker. Do not fail to do this.

  • Description should be a short easy quick description of the map
  • Setting Visibility to 0 will make the map disappear from selection screens in multiplayer games! Don’t toggle this unless you are making a single player campaign or tutorial map or you will have trouble finding your map ingame.

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:

  • (mapname)_amalg.dat
  • (mapname)_use.dat
  • AMALG_nnn.pf2 (where nnn is a number)
  • AMALG_nnn.mex (where nnn is a number)

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

  • Objective: Creates objectives for players that appears in their menu
  • “Cinimatic Mode”: (required for cinematics to work)
  • “Script Screen Fade”: (cinematic) fades the screen out or in to whatever color you feel like.
  • “Move Camera”: (cinematic) moves the camera of all connected players around.
  • “End Level” awards victory or defeat to the specified team.
  • "Radius Sensor" Will fire when objects specified enter its area "Force Wall" : Those glowing energy walls
  • "Destroyable Prop Object" Any object that can be destroyed for whatever purpose (such as the energy core or whatever)
  • Player Start
  • "Turret Beam" and "Turret Double Barrel": the destroyable/capturable turrets - based on destroyable prop objects
  • "Multiplexer": Allows things to be triggered in sequence – with delays inbetween each activation. Important for timing cinematics. Yes. this is poorly named. It should be a "Sequencer" but if you set all delays to zero, it fires them all simultaneously...
  • "Prop": Generic decorations – used for the planets in the background, hyperchannels, etc

Important Models for Props and Destroyables

  • Prop - sky_nexus
  • Prop - sky_ribbon
  • Prop - sky_ring
  • Prop - sky_asteroids
  • Prop - sky_hyperchan1
  • Prop - sky_hyperchan2
  • Prop - prop_ccenter
  • Destroyable - prop_ctrlstation_big , prop_ctrlstation_big_destroyed
  • Destroyable - prop_ctrlstation_small, prop_ctrlstation_small_destroyed
  • Destroyable - prop_dome1, prop_dome1_destroyed
  • Destroyable- prop_energycore, prop_energycore_destroyed
  • Turret (Red, special) prop_turret2_red, prop_turret1_red