=========================================================================== Advanced engine needed : ZDoom SVN revision 4204 -OR- GZDoom SVN revision 1547 minimum Primary purpose : Single player =========================================================================== Title : Half-Life transitions Filename : HLTRANS.PK3 Release date : 29 April 2013 Author : Ethan Watson aka GooberMan Email Address : gooberman_mirag@hotmail.com Other Files By Author : Doom - The Arcade Game release 1 Space Station Omega Misc. Author Info : Wot ov it? Description : The Half-Life style transitions I'm using in Prime Directive (Space Station Omega's sequel), but now in handy prefab format. Additional Credits to : ReX for asking nicely for the scripts. =========================================================================== * Play Information * Executable needed : ZDoom SVN revision 4204 -OR- GZDoom SVN revision 1547 minimum (Obtainable from http://svn.drdteam.org/) IWAD Needed : DOOM2.WAD Map # : MAP01, MAP02 Single Player : Yes Cooperative 2-4 Player : No Deathmatch 2-4 Player : No Other game styles : No Difficulty Settings : No New Graphics : No New Sounds : No New Demos : No DEH Patch : No * Construction * Base : From scratch Build Time : An hour to make the map and clean my scripts up Tool(s) used : GZDoom Builder Known Bugs : Decals and projectiles (and anything but the player) don't get synced across maps. Known limitation. Will Not Run With... : Half-Life (derp) * General info * ReX asked nicely earlier today if he could have my scripts. So I packaged them up and decided to throw it up on /idgames while I was at it. These scripts are pretty fragile, and it's easy to mess up the effect by forgetting one little thing. So, I'm going to take a stab at trying to explain what's going on here. For this effect to work, you need to do the obvious "duplicate map sections across different maps" thing. Another VERY IMPORTANT thing to do is to place a map spot in the exact same position within the duplicate geometry. From this point, I will refer to this map spot as an ANCHOR. The anchor is used in conjunction with the actor that activates a map change. The anchor's position is subtracted from that actor to create an offset. This offset is sent to the next map via ACS calls. After changing the map, the ACS scripts trigger. Using the anchor that mirrors the one in the previous map, the offset is added to that anchor and the activating actor's position is set to this new position. Pretty simple, right? What could possibly go wrong? To make the effect work, you need to take a two staged approach - call the halflifetransition_start script using ACS_NamedExecuteWait; and change the map yourself. halflifetransition_start specifically needs to be called with ACS_NamedExecuteWait or the scripts WILL NOT EXECUTE BEFORE THE MAP CHANGE. Changing the level yourself also needs to be called with two flags - CHANGELEVEL_KEEPFACING and CHANGELEVEL_PRERAISEWEAPON. The pre-raise weapon flag is a new addition to ZDoom at my request, and is not in any official release as of the time this prefab was released (ZDoom 2.6.2 or higher; or GZDoom 1.7.2 or higher will have them). You'll no doubt need to add CHANGELEVEL_PRERAISEWEAPON to zdefs.acs yourself if you expect these scripts to compile. If you don't place things exactly right and call the scripts correctly, at the minimum you can get disoriented. At worse, you will spawn outside of the map. See? Fragile. If you can tame it, however, what you have is a reasonably convincing seamless level transition. As you can imagine, though, since it only works on the actor that triggers a level change it's not the perfect Half-Life transition you're hoping for. I would like to delve in to ZDoom's code at some point and create a sector-based serialiser so that the effect can take decals and other actors in to account. Also of note is multiplayer. This example can be quite easilly expanded to take multiple players in to account (hint: place all the player starts outside of the sync zones, the player that causes the map change will have a seamless transition while the other players will just show up in the default start spots), but a sector-based approach would need a whole heap of thinking to get around the overlapping players problem. On a separate note, I'm releasing this under a Creative Commons 3.0 license - specifically, the Attribution-NonCommercial-ShareAlike 3.0 Unported license. The ancient and crusty copyright/permissions aren't quite watertight enough in my opinion, especially considering some mapsets back in the day refused permission to be distributed anywhere but the now-defunct forum/bulletin board they were released on. The terms of the license should be compatible with how Doom content has been distributed for the last almost-20 years, but with significantly more clarity than was there originally. I'm hoping to lead by example. I've always given my Doom work away, so at a base level nothing is changing. It does, however, give anyone using the license solid legal ground to stand on if someone is caught reusing without credit - a problem I noticed happening all too often in some corners of the Doom community. If you reuse the scripts, fear not. The Creative Commons is not like the GPL, you don't have to license your entire mod with the CC license if you don't want to. However, the sections you reuse from this archive need to be credited correctly. =========================================================================== * Copyright / Permissions * All original work in this archive is released under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported license. In a nutshell, it means you can copy this archive as much as you want. You are also free to reuse any portion of this archive for non-commercial purposes as long as you credit me and share any modifications made using the exact same license. More info can be found at http://creativecommons.org/licenses/by-nc-sa/3.0/