Mapping Tutorial for DungeonDoom6XP: |
This tutorial contains specific information for modifying and extending the DungeonDoom6XP level geometry. ************************************************************************************** Chapter 1: Modifying the overworld, bossroom or storyroom geometries: ************************************************************************************** Do not remove any entity/brush without making sure that it does not serve a role in the game. There are dozens of dummy or helper entities that are essential for the game, such as dummy monsters (removed later in script but needed for compiling the aas system), entities which direct player and monster spawns, guis etc. Make sure that you do not disturb the visportal or aas systems (see chapter 3 for more details on this issue. You should be pretty safe if you leave the floor and walls alone) Make sure that your modifications do not interfere with the room functionality. One isue that has been 'hacked' into the engine in a relatively unflexible way right now is an issue of teleporting monsters. In bossroom 1 (the one that contains the playerspawn1 entity) the zombies are able to teleport themselves. In order to keep them from teleporting into any of the solid walls I added certain zones that are prohibited to teleport into within the teleport_m function. This is very inflexible right now and should be fixed at one point of time, but basically, in a level which allows monsters to teleport, non-permissive regions have to be manually added to the script. Other than that everything should be fine. Keep in mind that the game allows a thirdperson overhead view, so make sure that visibility is not an issue in either mode. ************************************************************************************** Chapter 2: Adding new "special rooms" (storyrooms or bossrooms): ************************************************************************************** Adding a new special rooms is very simple. You need to add the room within the large worldbox. If you need more space replace the current worldbox with a larger one or expand it. Then you model your room and add a few special entities to it to connect it to the storyline of the game. Storyroom: Basically, a storyroom is a location to which the player will be teleported to tell a certain aspect of the story. A storyroom contains any kind of designs and two special entities of the type func_static that can be named arbitarily. One should represent the player spawn position for this story event, the other should represent the position of a npc entity, which tells the current aspect of the story. In the story definition (see story1.def for an example), these two entity names are used to direct the story progression. Bossroom: A bossroom is similar to a storyroom, however, there won't be any storyteller but instead a boss entity together with minions. The special entities used to direct player, boss and minion spawning are standardized and numbered: for room 1 this is playerspawn1, bossspawn1 and minionspawn1_1, minionspawn1_2 etc. Boss fights are again triggered by the story system defined in the story definition file (see story1.def for an example). For the first boss in story1.def, "yellow bastard", the corresponding story event is "eventtype_7" "boss". In this event definition the key "bossspawn_7" "1" directs this bossfight to bossroom 1 and thus the player will be teleported to the position playerspawn1 and yellowbastard will be teleported to bossspawn1. The key "boss_minions7" "2" defined the number of minions which is 2. Accordingly, room 2 contains 2 minionspawn entities minionspawn1_1 and minionspawn1_2. Further information on story developement can be found in the "Story Tutorial for DungeonDoom6XP". ************************************************************************************** Chapter 3: Modifying the Dungeon Geometry: ************************************************************************************** Currently, the most complex aspect of dungeondoom is the randomly generated maze, which is build as an array of worldspawn brushes functioning as pillars, separated by a combination of func_statics, func_portals and aas_obstacles functioning as walls. The maze generating code carves its way through the array by hiding walls, portals and obstacles along the way of a semirandom walk. The mazewalls are painted with a special texture (textures/dungeondoom/default) which changes in appearance according to the current dungeonlevel. I do not have a very good understanding what makes the levels vis_portal and aas_obstacle systems work, but certain modifications lead to failure of the aas or visportal systems. You should regularly test your map after setting r_showtris 4 to see if the portal system is working fine. You should also regularly test your modifications with monsters present to verify that the aas system is up and running - i.e. that the monster pathfinding is unaffected. So far I was able to add conditionally switched platforms to the game which add to the 3dimensionality of the game. If you want to see that your modifications might end up in a future release, make sure that you communicate your plans to me, so that we can coordinate our efforts. Please let me know if you have any additional questions. -hellborg |