dsda-dev Posted January 21 This is not an announcement of a new standard. MBF21 has been out for quite some time now and seen wide adoption, including half of the top 12 cacowards from 2023. While it was a big step forward from MBF, the standard was not meant to be the end, but rather to evolve over time alongside the community, and various developers and creators have discovered both strengths and weaknesses in the few years since its inception. This thread is a place to gather those ideas and critiques of the format that can be used to fuel potential future iterations. If you've run into blockers in your projects, or headaches working with the standard, or if you've got cool ideas that would enable new stuff, please share your thoughts below. It would also be helpful to know what works particularly well that should be preserved going forward. I (and Xaser if willing 😉) will collect and organize everything together if something formal takes shape in the coming year :^) 61 Quote Share this post Link to post
Cammy Posted January 21 First of all, thank you for your outstanding work. You and the team have made so many amazing wads possible that just wouldn't have existed without you - at least not in the way they do. Cheers to you! As for requests - being able to change certain wad-wide parameters based on UMAPINFO would be awesome. I've seen a lot of people request being able to change PLAYPAL and COLORMAP lumps per UMAPINFO, but I personally think it would be just as cool to be able to have multiple sets of themed sound replacements that could be changed in this way. For instance, in a techbase, the door sound effect could be the Doom standard space sound - but what if in the next map, set in a castle, the sound would instead be replaced with groaning chains and creaking wood, like in GothicDM? Apply that to all different kinds of map geometry and you could add a lot of spice to mapsets with multiple aesthetic themes. I don't think something like this would be possible in MBF21 as it currently exists, but I could be wrong. 10 Quote Share this post Link to post
Rayziik Posted January 22 (edited) As I've been working with the format, alongside @Napsalm for a lot of it too, I came up with a good number of things that may be useful. There's a good number that are just QoL changes for existing stuff, but then also quite a few new things that would be rather useful, I think. Here's the list, as it currently is: Thing Flags (Access via editor means that the flag can be toggled in the editor like AMBUSH or FRIENDLY is) REVERSEGRAV = Makes something gravitate to the ceiling instead of the floor NORESPAWN = Access via editor to make things not respawn in Nightmare difficult JUSTHIT = Access via editor to make things instantly attack on sight SHADOW = Access via editor to make things appear as specters (speedrunners hate him for this!!) CONTROL1/2/3/4 = Dummy flags in MBF21 flags to use for JumpIfFlagsSet (also get editor access?) FRIGHTENED = Inverts speed value so that they retreat from the player (or advance if speed is set negative) TELESTOMP = Thing can telefrag regardless of map slot or MAPINFO settings Thing Properties Heal group (new) Functions similar to projectile group, but with regards to raising monsters (things in same group can only be raised by another thing in the same group) Gib health (enable) Add property functionality Blood color (extension) Add the rest of the colors as definied via DSDACR Pickup Type (new) Allows creation of "new" items, likely handled as flags? Could combine effects of existing items, perhaps also cheats, also add new effects? Ex: Pickup type = INVULNERABILITY+MEGASPHERE+GIVEWEAPON5 This would create an item that gives an invulnerability, megasphere, and rocket launcher at the same time Other properties could be pulled from other ports or just added if sounds like a cool idea Ex: FLY = Grants flight for a limited time (don't forget to bind controls) FULLAMMO = Gives max ammo in all ammo types ALLWEAPONS = Gives all weapons HASTE = Grants 25% increased move speed/weapon swap speed for limited time QUADDAMAGE = Multiplies your damage output by 4 for a limited time Perhaps even finer control could be given via other new properties? Powerup time = 'int' interpreted as seconds for effects to last (default = 30) Damage amp = 'int' interpreted as % Speed amp = 'int' interpreted as % Ammo = 'int' amount of ammo granted by an item OR multiplier of base amount amount (Ex: clip gives 10, box gives 50, multiplier at 10 would give 100) Health = 'int' repurpose for items with special as HP given, add BONUSHEALTH flag for healing over 100 (or deh limit if changed) Armor = 'int' new property for items with special, gives armor %, add BONUSARMOR flag for armor above threshold (add new misc dehacked property for green armor threshold?) Protection amount = 'int' interpreted as %, amount of damage armor absorbs Potentially add generic strings to reference when an item is grabbed? "GOTGENERIC1 =", where the number in the string name is referenced via property Thing Codepointers A_Mushroom (extension) Add argument that lets you define the projectile type that is spawned Shift to RadiusDamage instead of Explode, add two arguments for Damage + Radius (default = 128) A_NoiseAlert (extension) Add argument that lets you select a sound to play when called Add argument that detemines whether the played sound is played at full volume or not A_Wander (new) Like the strife NPCs do, move around but don't attempt to approach or attack anything (enter melee/missile states) Add argument that specifies a thing number to return to/wander around? Add argument that specifies how far away until returning to previously specified thing? A_FastChase (new) Hexen's unique chase variant that the bosses use to strafe around and keep a distance from players A_SoundChase (new) Chase codepointer that also plays a sound at the same time, like Hoof or Metal does Potentially just add arguments to the other two pointers to specifiy a different sound? A_CustomComboAttack (new) A combination of projectile and melee attack, for ease of use mostly. Exclude melee range, just use actor property type (uint): Type (dehnum) of actor to spawn angle (fixed): Angle (degrees), relative to calling actor's angle pitch (fixed): Pitch (degrees), relative to calling actor's pitch hoffset (fixed): Horizontal spawn offset, relative to calling actor's angle voffset (fixed): Vertical spawn offset, relative to actor's default projectile fire height damagebase (uint): Base damage of attack; if not set, defaults to 3 damagedice (uint): Attack damage random multiplier; if not set, defaults to 8 sound (uint): Sound to play if attack hits A_Thrust (new) Gives momentum to a thing, moving it or changing it's trajectory by the specified amounts at specified angles Add argument for the amount of thrust Add argument for the horizontal angle relative to current angle Add argument for the vertical angle relative to current angle Counter codepointers (Number of counters per thing likely limited) AddToCounter (counter #, amount) Adds value to counter # RemoveFromCounter (counter #, amount) Removes value from counter # SetCounter (counter #, amount) Sets counter to # ResetCounter (counter #) Resets counter to 0 JumpCounter (counter #, value, compare type, frame) Jumps to a frame based on counter comparison Comparator Types 0 = counter < value 1 = counter ≤ value 2 = counter > value 3 = counter ≥ value 4 = counter = value 5 = counter ≠ value Projectiles Control over damage die (Use reaction time as the variable? Default is 8 for all things anyway) Create new thing property "Missile multiplier ="? Use reaction time as the variable since it does nothing on projectiles? STRIFEDAMAGE flag does 1-4 instead of 1-8 Sector Types Friction without Protection A friction floor variant that is negated by radsuit Bouncy sectors Either control via linedef, length determines scale of bounce versus momentum on impact Or simply act like any actor touching the sector floor has BOUNCY flag Damage to all things Damaging sector type but also damages monsters Heal sectors Gives HP back to the player while standing on, flash lowest pickup palette or radsuit palette on heal maybe? Variant that heals only monsters Variant that heals all things Linedef Types Flags Block Flying Monsters Block Projectiles Block Hitscans Wrap Mid-Textures Key Locked generalized line action specials Action Specials Exit linedefs (11, 51, 52, 124, 197, 198) Use tag to point exit to different maps (Ex: tag 24 causes exit to send player to map 24, tag 0 sends to UMAPINFO/MAPINFO defined next or secret next) Possibly add new exit types for this behavior instead Translucent Middle Texture (260) Use tag to define the level of translucency (1-99) Generalized Light Types Trigger types (Walk 1/R, Switch 1/R, Gunfire 1/R, Door 1/R) Model types (trigger/numeric) "Direction" types Increase/Decrease to (only happens if below/above target level) Increase/Decrease by (relative amount, go above/below max/min for better control) Target types (Highest adjacent, lowest adjacent, next adjacent, exact value) If possible, have a property to select specific light target levels (0, 16, 32, 48, etc.) Timer amounts for temporary light level increases/decreases? Add sector types? (flicker, glow, blink, none) Line Horizon Extends the flat in front of the line to infinity on the other side Currently zokumBSP can do this somehow? Noise Alert Functions as A_NoiseAlert, but triggered on a linedef Weapons and Weapon Codepointers New Slots tied to the existing slots, cycled into like SG/SSG and Fist/Chainsaw Slot numbering is gonna be a mess unfortuntely. Chainsaw is slot 7 and SSG is slot 8 for example, so a pistol secondary slot would be 9, chaingun 10, rocket launcher 11, etc. Potentially, add a property to weapons that specifies which slot they're accessed from instead of hardcoded assignments? Would then need to have selection be based on lowest slot number or add a 'priority value' property Alt-Fire Add "altfire frame =" and new input to trigger this state change from WeaponReady Alt-Flash Add "altflash frame =" that is called by A_AltFlash Reload Add "reload frame =" and new input to trigger this state change from WeaponReady Likely used in conjunction with the Counter codepointers below or as a third firing mode potentially A_Zoom Zoom in the player view when called Add argument to specify zoom multiplier amount A_WeaponProjectile (extension) Extra argument field to set range of autoaim (is this possible?) A_WeaponBulletAttack (extension) Extra argument field to define unique bulletpuffs for hitscan impacts Extra argument field to set range of autoaim (is this possible?) A_AltFlash (new) Displays the AltFlash frames over the weapon sprites like GunFlash does for the normal Flash frames A_Light (new) Customizable light function for weapon flashes. Zdoom ranges -20 to 20, to allow darkening or lightness, 1 = Light1, 2 = Light2 Counter codepointers (Number of counters per weapon likely limited) AddToCounter (counter #, amount) Adds value to counter # RemoveFromCounter (counter #, amount) Removes value from counter # SetCounter (counter #, amount) Sets counter to # ResetCounter (counter #) Resets counter to 0 JumpCounter (counter #, value, compare type, frame) Jumps to a frame based on counter comparison Comparator Types 0 = counter < value 1 = counter ≤ value 2 = counter > value 3 = counter ≥ value 4 = counter = value 5 = counter ≠ value Friendlies Decouple the MBF target logic from the MBF infighting behavior so that friendlies work better overall New MBF21 flag that enables the MBF infighting behavior for specific things instead? Better control for modding overall Edited January 22 by Rayziik 35 Quote Share this post Link to post
Aurelius Posted January 22 (edited) Here are a few things from couple years back that I thought would be cool additions to a new standard if such a thing came to be: A codepointer for checking whether a thing's hitbox is obstructed by another solid thing (A_JumpIfBlocked?). This would make it possible to have monsters whose SOLID flags are removed and then later returned (say, an enemy temporarily submerging into water or a resurrecting zombie like monster from Quake) without having the risk of them getting stuck into each other or the player. It could function similarly to the Jump functions, where the thing would jump into a specific state if it was blocked (or not blocked). Support for randomized sounds, possibly similar to how the hardcoded randomizations work for sounds like POSIT and PODTH. Extended RandomJump with the ability to jump to as many states as the args can handle with equal probability. Some way (a flag?) for projectiles to not induce pain state on impact. This could be used for a multitude of things, like making a toxic breath monster or a flamethrower weapon not send their target into a frantic pain state loop. Could also be a controlled property, like PainChance, but as the probability of inducing it rather than being affected by it? Support for a Crash state would make a lot of environmental and gore effects easier to work with. Edited January 22 by Aurelius 5 Quote Share this post Link to post
Doomy__Doom Posted January 22 A few map feature suggestions: Set/Remove forcefield on line with tag. Force field is pretty much the most ubiquitous form of Boom's 242, making it simpler to set up, removing control sectors from equation and not seeing giant untextured walls in the editor would be nice. NoiseAlert sector effect (upon entry and "automatic/periodic" versions). Random teleport linedef. It would look for all TP destinations in the tagged sector rather than just use the last placed. Use cases - simple to make efficient slaughter teleporters without "tag range" salad, random map behavior without Magnolia/Wormwood 5-style hacks (creative as they are). MonsterCloset sector effect - prevents any thing codepointer processing. Here's a wonderful mock-up as to why the last 3: Simpler and saner closet designs, easy swarm/random directions closets. Plus a way of pushing high monster count maps towards not following "wake up a billion monsters at the start" design. I like Helion's idea of simplified processing of AI in closets, but for demo compat and cross-port implementations I figure the most sane solution is to just explicitly tell the game "do not process AI here", as that's equivalent to current Boom/MBF21 mapper taking extra effort to wake up required closets per fight. 14 Quote Share this post Link to post
ViolentBeetle Posted January 22 (edited) Some of my wishlist (Names can vary): Codepointers: A_Move and A_Attack: Option to only do half of the A_Chase, either performing move only or distance-sensitive roll for going to attack without moving. A_SquashChase: Chase, but if trying to move on top of a shootable thing, the thing dies instead of pushing back. Useful for bosses. A_Rise(State): Imitates Arch-vile resurrection, with all related checks (Except for current state having -1 duration of course). If moster could be arch-violated, it would resurrected and go to certain state, otherwise it does not. A_CheckTracer, A_CheckTarget: Check if thing currently has them, and they are valid (ie not dead). Clear them if they are. Possibly jump to state if they are. Right now there seems to be no way to check if those exists without calling something that does something. A_RecursiveProjectile: The same as A_MonsterProjectile, but with 0 vertical offset and firing at a tracer. Spawn projectile can't target the tracer like that, except with being steered with A_SeekTracer, which is not conductive to fan fire et al. Add Boolean argument to A_MonsterProjectile that makes it course-correct based on the offsets (Right now projectiles don't change their course if they are offset, and fly parallel, which is limited) A_KillAll(MonsterType, Effect): Sends every thing with this type to death state, if type is not specified apply to all things with COUNTKILL and death state. Optionally spawn a thing on top of the course to create an effect. A_TeleportToRandomThing, A_TeleportToClosestThing (Target type, state, departure effect, arrival effect, telestomp): Teleport to a thing like final boss of Heretic does, can put things on departure and arrival like teleport fog, state where it would go if target is valid, does it telestomp at destination) A_CheckCollision(State, Radius, Height, Flying): Check if the monster with parameters specified would get stuck in something or not (Under Chase logic) if centered on the thing. Jump to state if not. Useful for spawning/changing to more picky thing (Larger monster getting spawned, monster spawning from projectile, previously flying monsters landing) A_SetMarker(Thing), A_UpdateMarker, A_DetonateMarker(Base, Mult, Splash, Radius): Imitating the archvile with a custom thing A_FireAtMarker: Like A_MonsterProjectile, but firing on the marker thing instead. Potentially useful for Hellraiser (I think this is the name for 2016 monster) attacks and such. Flags: FASTSHOT: Guaranted attack roll like fast monsters are enabled, even if they are not. FLOORHUGGER: Projectile doesn't die by colliding with floor or change of floor height less than 24 and keeps going. Like Maultaur projectile. Linedef types: Apply colormap when in sector (Underwater effect decoupled from fake floor/ceiling) Apply colormap to sector (Colored lighting) Apply colormap to sector when front side is non-zero height (Colored lighting that can be turned on and off by opening and closing control sector) Edited January 22 by ViolentBeetle 15 Quote Share this post Link to post
Arsinikk Posted January 22 (edited) MBF21 has been a pretty awesome format to work in, but I've definitely run into various limitations and issues. And so I'd weigh in to some of the features that would be nice to have. DEHACKED Pickup Item functionality - I'd like functionality for new powerups / custom powerups like Rayziik said above. It is one of the few features that currently DEHACKED has no control over. My only other comment to this is that I'd like it to use the similar DEHACKED hack of using sprite Prefixes like SOUL or PVIS, as that allows for more creative ways of using power-up actions. So my ideal way of controlling this would to be able to define the prefixes that the new powerup would use. Included could be the defining of overlay colour and/or colourmap definition per powerup. Obviously I'd expect that a new message could be created/customised upon picking up the new item. More control of Enemy Health based on "conditions" - I recently played through Heretic, and the engine has some fascinating features that just aren't currently possible with DEHACKED at the moment. One of those features is the ghost functionality and how some projectiles will go through some enemies. So the idea with this is perhaps something like this could be implemented, or certain ammo resistances could be added for certain monsters based on the projectile or monster. So say a shotgun would do more damage than a plasma gun to an enemy, cuz they have plasma shields. More control of actor's Health before and after death - This is pretty simple, but I wanted to create an enemy very similar to the Zombie in Quake. In that once you kill them, after a certain amount of time, they would get back up. But gibbing the monsters would stop it from resurrecting. However with how death is currently implemented, that makes it very difficult to do in DEHACKED. So my idea is either a codepointer that can resurrect a monster after death and/or give further control over an actor's health. What if there was a monster that could slowly regain health? Percentage of item drop - Very similar to Heretic, I'd be nice to customise a chance of item drop. Perhaps multiple item drops per enemy. Gib Health - I'm surprised this wasn't already a feature. I can use "A_JumpIfHealthBelow" but it's much more of a hassle and a waste of frames. Control when and/or if monsters get crushed or not - I ran into an issue with a project, that if a thing enters a death state, it will always get crushed (turn into a pile of crushed gibs). Since I had set the monster to add the PICKUP flag, it resulting in the game crashing when running into the crushed gibs because it didn't know what the pickup action was supposed to be. It'd be nice to have further control over when monsters are turned into gibs or not. Randomised sounds - Like Aurelius said I'd be nice to be able to use something similar to what the zombiemen use. Perhaps this could be declared as a flag in a sound block definition to also use other sounds if a specific sound is chosen. Again I can do this with "A_JumpRandom" but it's quite the hassle. Colourmap linedef actions - Similar to what ViolentBeetle said, I'd be nice to control colourmaps in a way that doesn't require using fake floors. It'd actually be really cool to have some kind of action that would affect the entire level if the player crossed it. Palette change actions - We've been talking about changing the colourmap mid-map, but it'd be really interesting if it was also possible to change the entire palette mid map as well. Maybe it could be reset to the default upon entering the Intermission screen. Player only teleport lines - It's simple, but damn am I not surprised this hasn't been added yet. UMAPINFO Scrolling skies - I've requested this before to rfomin, but I'd like to have a simple value to scroll the sky horizontally. This is a feature that's in ZDoom ports as well as in the Unity Port, but not in UMAPINFO at the moment. This could be expanded to include multiple skies in something more similar to how HeXen does it's skies with some clouds moving in front of the actual sky. MISC I don't know what to put this under, but I thought it'd be really cool to have further control over the other screens of Doom besides the gameplay portion. What do I mean? I mean things like being able to have an animated TITLEPIC/HELP/INTERPIC, or being able to make your own custom Doom 1 like animated Intermission screen with the ability to specify coordinates for various small animated sections. Or perhaps being able to define your own Endgame screen with a scroll or no-scroll, or have a vertical scroll similar to the end of episode 3 in Heretic. Maybe add the ability to customise / have multiple pages / images / blocks in a sequence, like for the HELP and/or ENDGAME states. HeXen has multiple images / text blocks it goes through at the endgame sequence. In addition, just as MBF21 has added support for multiple map exits (it would be nice to just use a tag on the exit line to determine what map to exit to...), It'd be nice to have multiple endgames, so that you could have multiple endings. If you wanna go even more in depth, perhaps certain endings could have certain conditions on what triggers them, such as what maps were completed in the playthrough. Speaking of, it'd also be interesting to be able to define a custom palette just for one of these screens, similar to how at the end of Heretic episode 2's screen uses it's own custom palette. Edited January 22 by Arsinikk 13 Quote Share this post Link to post
Shepardus Posted January 22 More flexible music changes would be great. I remember others mentioning how you can't do MUSINFO music changes with voodoo dolls, and how the frequency of music changes is capped. 10 Quote Share this post Link to post
Arsinikk Posted January 22 6 minutes ago, Shepardus said: More flexible music changes would be great. I remember others mentioning how you can't do MUSINFO music changes with voodoo dolls, and how the frequency of music changes is capped. It'd be cool to be able to have/set a certain tic timer to determine when a music change is enacted. Then the music change could work closer to how Doom Eternal's does, in that you could set the amount of tics to the duration of a measure in the midi for a map, and then the music change could be a bit more smooth. Tho having voodoo dolls able to enact music changes would also be extremely useful. 1 Quote Share this post Link to post
maxmanium Posted January 22 31 minutes ago, Shepardus said: More flexible music changes would be great. I remember others mentioning how you can't do MUSINFO music changes with voodoo dolls, and how the frequency of music changes is capped. I have no idea if MUSINFO works in conjunction with IDMUS cheat or not, but if not that is something else to consider. 0 Quote Share this post Link to post
Shepardus Posted January 22 On the subject of music changes, I'd like to be able to play a track from positions other than the beginning. Like imagine you had a "two parallel worlds" sort of map (e.g. Eviternity II MAP35), each with their own mix of the same music, and moving from one world to the other switched the music without changing the position in the track, so it'd sound like the same music is playing through the whole thing but the instrumentation changes depending on where you are. 16 Quote Share this post Link to post
PBeGood Posted January 23 (edited) Been using mbf21 for a megawad for the past months and I love everything about the new dehacked features (+ DSDHACKED :P) +1 to many of the suggestions in this thread (specially random teleport destinations, I NEED IT), and here are some more that Id like to see: - Some random number generator for dehacked floats. For rain, Im using a couple of defined positions in different states and randomly jumping to those states. Would be nice if I could just get random numbers to set as the rain drop spawn position - A function that alerts the entity and sets the player (player 1 by default, or maybe the closest one) as the target, without the player making any noise or being seen - Being able to offset flat textures by sector would be amazing so that we dont have to account for the grid and change the map just to align everything. I don't know if this is a complevel thing, but its something I want when mapping Edited January 23 by PBeGood 3 Quote Share this post Link to post
Novaseer Posted January 23 (edited) 2 hours ago, Shepardus said: On the subject of music changes, I'd like to be able to play a track from positions other than the beginning. Like imagine you had a "two parallel worlds" sort of map (e.g. Eviternity II MAP35), each with their own mix of the same music, and moving from one world to the other switched the music without changing the position in the track, so it'd sound like the same music is playing through the whole thing but the instrumentation changes depending on where you are. Or instead pull a Doom 2016/Eternal where the music ramps in intensity during setpiece combat encounters and cools down to ambient once it's done. Edited January 23 by Novaseer 1 Quote Share this post Link to post
DynamiteKaitorn Posted January 23 Would a "+NOTMOVING" be possible to allow turret-based enemies to work properly? Setting their speed to 0 is fine under most circumstances but if you use a low-friction sector they start to move (cooould be a bug in WooF XD). Also, are slopes and 3D floors possible? :3 0 Quote Share this post Link to post
Arsinikk Posted January 23 43 minutes ago, DynamiteKaitorn said: Would a "+NOTMOVING" be possible to allow turret-based enemies to work properly? Setting their speed to 0 is fine under most circumstances but if you use a low-friction sector they start to move (cooould be a bug in WooF XD). Actually now that this is mentioned, it'd be nice to be able to actually have enemies that are stuck to the ceiling. If you've ever tried to make a moving or stationary enemy that's on the ceiling, you'll know that it isn't actually possible in dehacked, since during chase, the monster's z-axis will always move towards the player... Which results in the enemy floating down off the ceiling. 5 Quote Share this post Link to post
Raspoza Posted January 23 (edited) Add support for custom intermission maps ala Ultimate Doom (custom animation/"you're here!" offsets). Would be cool. Colored lighting would be awesome too if possible. Edit: While I'm at it, I think split doors like the ones in D64 would be nice too, I like those, better than using fast doors + lifts. Edited January 23 by Raspoza 6 Quote Share this post Link to post
Xyzzу Posted January 23 lol we're slowly supporting Strife one feature at a time c: All I want for Christmas is gun-activated teleport specials, player-only teleports, damagedice for projectiles... and maybe a way to have a homing projectile do the vileatk without that teleporting nonsense that it does instead? 😅 10 Quote Share this post Link to post
roadworx Posted January 23 something that allows you to enable and/or disable the monster blocking property of linedefs using voodoo closets would be really nice. i suppose it could also be like doomy__doom's forcefield idea, just one that only blocks monsters and not the player 0 Quote Share this post Link to post
Individualised Posted January 23 (edited) It would be nice if all of the D64 feature set/thing types/action types etc were taken in by a new standard, but I think things have advanced too far for that to happen without conflicts between certain features, plus most source ports still don't support D64 other than D64-specific ones. I think D64 generalised level exits (tag = level number to go to) should at least be in a new standard; I could have sworn MBF21 had this but it doesn't. Also new weapon slots is a must have as mentioned by @Rayziik above. Not sure if anything like this is possible in MBF21 already but some type of "background flags" that persist across level transitions and can be reacted to by things would be nice. Think of Quake's runes and how once you've collected one, barriers appear in the hub world. There would be a new linedef action type (or a thing flag for collectable things) for activating these flags, and there would be a new thing flag that makes a thing appear or disappear only when one of these flags are set. I'm not sure if I am using the correct terminology as I mainly do vanilla but hopefully this makes sense. Ladders. Linedef actions that give the player items or powerups. The items/powerups to give would have to be encoded somehow in the tag. Basically a cleaner version of using voodoo dolls to achieve the same effect. Maybe it's not worth the effort. Edited January 23 by Individualised 3 Quote Share this post Link to post
ViolentBeetle Posted January 23 One more thing I didn't think of yesterday. A_CheckIfAmmoDivisible codepointer for Duke Nukem style reload. I suppose you could track shots made, but that's too much of a deviation. Having one or more all-purpose counters might be useful on monsters to give them more complex patters. 2 Quote Share this post Link to post
Antroid Posted January 23 I honestly just want a port that is like DSDA but with the full DECORATE functionality for full freedom with custom monsters and objects. If I want to make a largely classically styled wad with purely prboom+ format maps but slightly more advanced custom monsters that aren't possible with the limited functions we have, I have to jump to gzdoom with all the problems and expectations that that imposes on me. Though I realize that it would probably be a monumental amount of work replicating everything that decorate has. 2 Quote Share this post Link to post
Dragonfly Posted January 23 13 hours ago, Shepardus said: On the subject of music changes, I'd like to be able to play a track from positions other than the beginning. Like imagine you had a "two parallel worlds" sort of map (e.g. Eviternity II MAP35), each with their own mix of the same music, and moving from one world to the other switched the music without changing the position in the track, so it'd sound like the same music is playing through the whole thing but the instrumentation changes depending on where you are. I think a better(?) way to implement this is allowing for vertical reorchestration - that is, muting or un-muting certain MIDI channels based on actions in the game. I would have made use of this in Eviternity II MAP35 as per the example you propose, for sure. In fact I even started testing the idea using a switch between major/minor key before checking if the features existed for that very map. See below video where I had a test midi running that had the music changes baked into it: On the topic of music changers - additional music changing methods would be VERY appreciated. Also adding this functionality to DeHackEd would be amazing so mappers can tie it to boss creatures or item pickups. The implementation would need some thought out consideration and defined fallback behavior etc, but for now some initial examples should help explain: Actor: Player enters sector (current) Actor: <Thing> sees player/voodoo Actor : <thing> dies (for use in dehacked boss monsters notably) Linedef: Change music when Player enters tagged sector (Much better than using potentially hundreds of things in detailed maps) ((Maybe needs multiple versions to choose which track if multiple are available.)) Linedef: Change music when Player crosses linedef (Useful in voodoo setups, though the above could handle that too.) One last thing to note: please please please reduce the massive lag tied to changing music. It usually takes at least a full second to change the music, sometimes longer, and in 99.99% of use cases I can concieve, an instant music change would be better. 🙏 --------- An additional setting that'd be appreciated from my end is some way of having solid midtextures - this would make 3D bridges easier to construct, but the real reason I ask this is there's no way of having exclusively flying monsters be able to cross a linedef without also having the ability to go through the midtexture - another issue seen frequently throughout Eviternity II. 11 Quote Share this post Link to post
ViolentBeetle Posted January 23 (edited) Some more ideas: Lighting: "Light stops blinking" should remove sector type 8. I don't know why it does not Trigger model for setting sector light (Set lighting to same as sector in front of the line) Transfer brightness to sector wholesale: Mostly useful to synchronize random blinks/flickers across the map when joining is not the option. Change sector brightness based on reference sector height: Probably a low concern but can be useful for some regulations. Something like adding Sector height - 256 to brightness of the sector. New type of lifts: Floor moves to trigger height. Sector moves to height of the sector in front of trigger, regardless up or down. Additional options: Fast/Slow/Instant; Returns or not. I doubt it would be possible to fit this on top of generalized actions, but maybe a new action, or just a few numbers. Just a minor quality of life: Create fake floor. Sometimes you want deep water or invisible floor under detailed ceiling. Ceiling variant can be useful, but there's fewer cases for fake ceiling in general Flags: NORETALIATION: Prevents monster from switching target to something that isn't player or player-friendly. Works best in conjunction with DMGIGNORED, but might also be useful for docile fodder INVINCIBLE: Thing can be targeted, but it doesn't lose health. Useful for things like monster raising shield. Make DMGIGNORED work on projectiles. Maybe Projectile Group too, but that seems less useful. NOIMPACT: Make projectile not die and not do damage on impact - this is in conjunction with my codepointer suggestions. Make it still stop when hitting obstacle, except RIP would let it fly through things. Codepointers: A_KillProjectiles(Type): Finds all missiles that have this thing as target (As in, sent by it), stop them and send them to death state, as if they hit something. Mostly useful for clearing projectiles on death, but might have other use cases. Optionally thing type can be specified. A_SendProjectilesToState(Type): Send owned projectiles to See, Pain, Missile or Melee state, depending on arguments or different codepointer variant. Use case: synchronizing various projectile mechanics to their originator animation. A_CountProjectiles(Frame, Number, Type): Count how many projectiles are in flight that have Target of this thing. Jump to state if equal or more than number. Optionally, specific type can be specified. Use case: Monster that spawns dormant projectiles over time than trigger them, in conjunction with A_SendProjectilesToState A_SetFlagOnTarget, A_RemoveFlagOnTarget: Meant to be used on projectiles, there are a few instances when I'd like to track if a projectile is still in flight on monster. Variants as player's weapon pointers. Can be used for something like pipe bomb from Duke3D. A_WeaponReadyAlt(Frame, Frame): Weapon ready, but specifies different frames for firing or switching away. Both can be disabled separately. Useful for something like "You planted a bomb and now holding detonator" Do something about ground monsters breaking and jumping up and down when shot while using SkullAttack Edited January 23 by ViolentBeetle 4 Quote Share this post Link to post
Blast_Brothers Posted January 23 +1 for a "fake colored lighting" sector effect. Have it work exactly like normal lighting (doesn't affect sky, or things in front of/behind the sector, etc) but using a custom COLORMAP instead. You can get close with existing COLORMAP/TRANMAP functionality but that comes with its own quirks and wrinkles. Specifying PLAYPAL in UMAPINFO would also be awesome - you could run a "bring your own palette" CP, for example. Not sure what the best way to handle that would be r/e level transitions, though. 2 Quote Share this post Link to post
Hebonky Posted January 23 Small request, but an optimization for tons of enemies walking over teleport lines because my most recent map, Frost, has a giant lagspike during the finale because of all the imps walking over teleport lines! 0 Quote Share this post Link to post
ViolentBeetle Posted January 23 1 hour ago, Blast_Brothers said: Specifying PLAYPAL in UMAPINFO would also be awesome - you could run a "bring your own palette" CP, for example. Not sure what the best way to handle that would be r/e level transitions, though. This seems very limited because it'll wreck HUD if you do anything significant. 1 Quote Share this post Link to post
Blast_Brothers Posted January 23 (edited) 37 minutes ago, ViolentBeetle said: This seems very limited because it'll wreck HUD if you do anything significant. There's a lot you could potentially do without completely wrecking the HUD, though. If I want one level at midday and one at sunset, then the HUD would be a little more reddish in the second one, but I think that's fine. And if that's not fine, then the spec could ignore palette changes on the HUD and just use the default one all the time. EDIT: Besides, the default statusbar uses red, gray, and tan/brown (for Doomguy). So you could mess with the green/yellow/blue/etc ranges with no consequences. Edited January 23 by Blast_Brothers 1 Quote Share this post Link to post
NiGHTMARE Posted January 23 (edited) The main thing I'd love to see is a companion to bossaction in UMAPINFO, which instead of applying to particular thing types applies to all creatures that start in a sector with a particular tag (obviously this would require the engine to track the tag). This would allow things like proper wave-style combat (instead of using a voodoo conveyor with an estimated timer), or forcing the player to clear an area before they can proceed. I'll call it tagaction for now, but I'm sure there's a better name. tagaction = tag1, linespecial, tag2 There are a few existing ZDoom lumps that I think could be adapted as crossport standards - I'm surprised a couple of them haven't been already: ANIMDEFS SNDINFO, along with ThingTypes 14001 to 14064 (for Doom format) and 14065 (for UDMF) TERRAIN (the terrain block could be expanded to allow some or all of Rayziik's Sector Type suggestions i.e., protection negating friction, bouncy floors, healing, and damaging all things) TEXTURES Eternity's 3D middle textures would also be a useful standard. They're already supported by GZDoom. Re: the PLAYPAL/HUD discussion, an obvious solution would be to allow UMAPINFO to change the HUD as well. Edited January 23 by NiGHTMARE 1 Quote Share this post Link to post
Ar_e_en Posted January 23 Lot of good suggestions here. Here are some more: Line exit specials that brings you to any chosen map, possibly based off of the tag given to a specific line (this one has already been mentioned, but I really want this to be added). Thing state frame action (or possibly its own state category?) that jumps to a specific frame when a player uses the use button on a thing GZDoom/Eternity Engine style line portal action (good luck implementing this one without setting most low-end computers on fire) More of a UMAPINFO feature than a MBF21 one, but fuck it: the ability to exit a map without the stats screen popping up! 0 Quote Share this post Link to post
JadingTsunami Posted January 23 It'd be nice to have the ability to generate HUD text popups using a line special. These could be indexed as lines into a MTEXTDEF lump or something similar. Also +1 to the "exit to a specific map" idea. 1 Quote Share this post Link to post
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.