Playing
Some general differences:
- You need to register an account at Syntensity (of course this is free). We believe that this will greatly help in preventing cheating. (Also note that you can run your own master server and game servers, the code is open source, in which case you don't need to register an account at Syntensity)
Controls
- Press 'M' to toggle mouselook mode. In this mode you can move the
mouse freely, without changing the direction your character looks. In this mode smooth camera movement is enabled.
- Turn left and turn right keys are available, by default '4' and '6' on the keypad. This is useful in mouselook mode.
- Pageup/pagedown let you pitch up and down, again, this is useful in mouselook mode.
- Press 'V' to toggle 'character view' mode. In this mode you can look at your character from different angles (turn left and right to see).
Variables (sauer cubescript variables)
- cameraheight - Lets the camera be a little above the player. Useful in thirdperson mode (so you don't shoot at a target blocked by your character's head).
Creating
Running
Cube 2/Sauerbraten lets you run the client in an entirely standalone mode, and edit maps in that. In the Intensity Engine you will need to either connect to a running server, or run your own (see README-standalone.txt). The reason for this is a stricter separation between the client and the server in the Intensity Engine.
Controls
- Editing in thirdperson mode is possible, preferably in combination with mouselook mode ('M', see above). One way in which this is useful is that when you turn, you turn around the character, which is a point in front of the camera (unlike first person mode). This is useful when editing a particular spot, to move around it as you edit. (Of course, in thirdperson your character may get in the way sometimes.)
Map files
Cube 2 maps are comprised of a map.ogz and optionally a map.cfg. In the Intensity Engine, each map occupies a directory under packages/base, and includes
* map.ogz: The ogz file as in Cube 2
* map.js: A script file that sets up the map, including game logic, entity classes, etc.
* Optionally, entities.json: A file containing the permanent entities for the map
Note that map.ogz and map.js are the filenames used. The engine looks for those files specifically in the map directory, if you give those files other names it won't find them. In other words, the directory name is the map name, and inside a map directory the names are standardized.
The ogz file does not contain the entities, instead they are in the separate entities.json file. This file is loaded and executed by map.js. Having it as a separate file allows easier editing as well as a more modular way to add entities to running maps.
When a map is uploaded, the contents of the map directory are wrapped in a tar.gz file.
Entities
Entities can be added by aiming the mouse at a spot and pressing F8 (when in edit mode). Select the class and an entity will appear there. Do
NOT create entities with
/newent (it may crash the server, and in any case will not give the right results).
For creating lights, there is also a GUI, which you can access at: editing commands->ents->light.
Edit entity details by right-clicking on the entity. Then change the variables you want to.
When you upload a map, entities are exported to entities.js by default, and uploaded with the map. You can also export entities manually to other files as you work.
Saving changes
When you upload a map, a tar.gz file is created from the map directory's contents, as mentioned above. This is uploaded to the asset server and stored in the /files directory of that asset server. The server running the map will then get the new version of the map from there, and then notify all connected clients to do the same.
Creating a new map
See here.
Importing maps from Cube 2/Sauerbraten
There are some technical details about importing maps:
- Map entities in .ogz files are ignored by the Intensity Engine, as it uses a different (more dynamic) method for storing and streaming them. But entities can be migrated with a bit of work. One helpful thing is that entities are written to the console when an ogz file is loaded that contains them, this output is in JSON and can be placed in an entities.json file.
- You will need to create a map.js file, as the map.cfg isn't used. The tools/convert_cfg.py and tools/mapmodels.py can help.
- You will probably need some textures that are in Cube 2/Sauerbraten but not available in the Intensity Engine, as many of the textures there are not freely distributable, or simply because they haven't been added.
First, create a new map from scratch, as detailed above. Then:
- Before running the client, find the directory holding the map. This is in your user directory (not the install directory), on Linux it will be ~/.intensityengine_client/packages/base/MYMAP/map.ogz, and on Windows the directory will be under Documents and Settings for your user. Note that the map name is map.ogz, unlike Cube 2/Sauerbraten (maps are kept in separate directories to tell them apart).
- Replace that map.ogz with the Cube 2/Sauerbraten map you want to import, by renaming it to map.ogz and placing it instead of the existing map.ogz.
- Run the client, log in, and enter the instance that you repurposed before. You should see your map now, instead of the 'empty map' map. But, only you see it so far, not the server or other people.
- In the client, enter the menu (Escape key) and select "upload map". This will package the current map files and upload them to the asset server.