Jump to content

Reflections and Aspirations: MBF21 in 2024


Recommended Posts

an option to have teleporters retain z height (like complevel 4 but a flag of some kind) would be cool. Not sure if there's already a way to do this in cl21, though

Share this post


Link to post

MBF21 is pretty damn cool and I really like all of the suggestions already made.

My only suggestion to add to this list would be to allow a customizable Arch-vile attack.

You could make lightning spawn over the players heads with this. I recall this being done on Zdoom when DECORATE was coming to fruition.

Share this post


Link to post

An option for key-activated lines to remove the key from your inventory once activated, similar to how doors work in Commander Keen, Duke Nukem 3D, and probably several more games I'm forgetting. It'd open up a bunch of possibilities for puzzles and interesting layouts.

Share this post


Link to post

Since I didn't see it anywhere, and it's just come up in another topic: support for railguns, and fast projectiles that don't risk passing through walls (like Hexen's Mage's wand).

 

One thing I've also been thinking: It would be really nice if ports could adopt TX_START/TX_END from ZDoom and finally not have to worry about TEXTUREx and PNAMES lumps. This isn't exactly in spec for a new mapping format, but it could be an addition made to any port that ends up supporting a new MBF2x standard.

Edited by plums

Share this post


Link to post

One thing I would definitely like to see is support for negative damage. Quoting myself from a thread I made last year.

 

Quote

Those who are familiar with Doom modding (dehacked modding) know that it is possible to assign negative damage to attacks. However, it isn't really usable because while whenever positive damage is applied, the screen turns red. But whenever negative damage is applied, the screen palette turns into garbled mess because the game tries to read a color palette in playpal that doesn't exist.

 

Now I was wondering if this is something that can be turned off in source ports (or be made into a standard, like MBF22 or something) such that the game checks if a player received negative damage and not apply any palette changes in such case. This is something that can be really useful for modding in non-zdoom ports as it would mean it would be possible to have stuff like "healing stations" in Boom-compatible ports, be it a damaging floor that applies negative damage or a healing companion/entity that applies negative damage.

 

What do you guys think? Is it worth considering to implement? What would be the best way to implement it?

 

Share this post


Link to post

I have some ideas but the most basic one that I have off the top of my head would be generalized and more controllable damaging floors, and also healing floors. Don't know how feasible that even is.

Share this post


Link to post
54 minutes ago, DoomGappy said:

I have some ideas but the most basic one that I have off the top of my head would be generalized and more controllable damaging floors, and also healing floors. Don't know how feasible that even is.

 

That would be really nice to have. Half-life Xen style healing floors when :p

Share this post


Link to post
1 hour ago, ReaperAA said:

 

That would be really nice to have. Half-life Xen style healing floors when :p

Those are my thoughts exactly. Imagine making weird looking colored pools of healing liquid. Or even healing pods and stuff like that. Amazing!

Share this post


Link to post
19 hours ago, plums said:

Since I didn't see it anywhere, and it's just come up in another topic: support for railguns, and fast projectiles that don't risk passing through walls (like Hexen's Mage's wand).

 

This would be neat too. I tried making a railgun weapon for a weapons mod of mine a while back, and the end result was a bit "eeehh". With a proper railgun attack I'll be able to revamp it to be a true railgun weapon.

 

----

 

On another note, another weapon in my pack was originally going to have a secondary projectile that would only fire off as long as the player had 200 health (yay Master Sword references), but then found out A_JumpIfHealthBelow doesn't work with weapons so it had to become a charge-up attack instead.

Share this post


Link to post

"Pistol start only" flag for items and enemies (and maybe "continous play only flag"? but i dont know if its possible)

Instantly killing floor

More customisable Teleport action, like teleporting by activating the button, or by shooting into it; if its even feasible

Edited by SpaceCat_2001

Share this post


Link to post
10 minutes ago, SpaceCat_2001 said:

Instantly killing floor

MBF21 already has this, look at Generalized Effects for sectors in UDB

 

10 minutes ago, SpaceCat_2001 said:

More customisable Teleport action, like teleporting by activating the button, or by shooting into it; if its even feasible

Switch teleports have existed since Boom. Shooting to activate a teleport would be an interesting addition though.

Share this post


Link to post

For the bucket of pickups - direct control over values for pickups (e.g. medkit with +33, armor bonus with +15, shells with +5 and box of shells with +44). And detailed control over backpack - each ammo pool and pickup amount as independent value, so possible to have e.g. ammo base 100/20/20/100 become 250/30/50/200.

Share this post


Link to post
33 minutes ago, plums said:

MBF21 already has this, look at Generalized Effects for sectors in UDB

 

Switch teleports have existed since Boom. Shooting to activate a teleport would be an interesting addition though.

Sorry, im just not very well versed in all of the capabilities of MBF21

Edited by SpaceCat_2001
typo sphaghetii

Share this post


Link to post
11 minutes ago, SpaceCat_2001 said:

Sorry, im just not very well versed in all of the capabilities of MBF21

No problem, just don't want you waiting on features that already exist!

Share this post


Link to post

This one is ambitious, but an adaptive difficulty flag. Here is how I thought it could work, but I have absolutely no idea if it's possible or if I'm tripping balls.

 

The flag would have a number field, and this number is the number of deaths the player has before that particular item disappears. For example, let's imagine that I made a map, and I put 20 imps on it on ultra violence. I select 2 imps and mark the adaptive flag and use the number two. That means that after two player deaths, the imps that were marked with the flag will not appear anymore. The same thing could be done in reverse, to make items appear after the player dies a certain amount of times. Again, no idea if it's possible and I think it's not, due to demos and other types of things, but it's an idea that occurred to me. Probably can be done with Zdoom type scripting, though.

Share this post


Link to post

If possible:
 

Add support for a classic thunderstorm, when the lighting on the entire map flashes for a while (to all sectors for a while added a certain value of the lighting level) and the sound of thunder is produced. Add at the same time in UMAPINFO settings for the map:
- Possibility to enable the feature
- what sound to play during thunder
- how many brightness units to add to the sector during the flash.
- what periodicity of thunder
- choose whether to lighten all sectors on the level or only those under F_SKY1 
 

Add support for coloring sectors in specific Colormap (as it works in SMMU and Eternity Engine). Even better, if it would be possible to select any color for a sector, not just through a separate Colormap. Especially for Eternity Engine I'm currently making a colormap pack with a lot of different colors of lighting and fog. It would be nice to see such functionality not only in Eternity Engine.
 

Add a special lump - BRGHTMPS. It is very flexible and powerful for quick and easy creation of special brightmaps to textures and not only and it is already available in Doom Retro, Woof!, Nugget Doom. 

Ability to have multiple exits from the map, for each of which you can specify a different nextmap.

Turn a thing like NUGHUD from Nugget Doom as an element of the standard. This would get a bit further than creating a wad-specific statusbar.

Add A_PlayLoopingSound( ) for the possibility of creating special actors to be used as sources of ambient sounds that will not be interrupted by the rest of the sounds.

Voodoo doll's ability to trigger sector specials, such as a secret.

Edited by DRON12261

Share this post


Link to post

Another thing I'd like.

Im currently trying to get the main light level of a sector to increase by 10 per each switch i press.

 

There is no easy way to do this, but having a new action like "213: Transfer Floor Light" that would transfer the main light level would be very helpful.

 

Even better would be actions like "12: W1 Set Light to Highest Adjacenting Level" that would set the light of the tagged sector, to the light of the sector that the linedef is facing

Share this post


Link to post
On 1/25/2024 at 12:03 PM, DoomGappy said:

I have some ideas but the most basic one that I have off the top of my head would be generalized and more controllable damaging floors, and also healing floors. Don't know how feasible that even is.

Floors that heal monsters would be super interesting too.  Like oh this HK is 1 ssg blast away from being dead and it walks on a healing floor and gotta start all over again. 

Share this post


Link to post
On 1/25/2024 at 11:57 AM, plums said:

One thing I've also been thinking: It would be really nice if ports could adopt TX_START/TX_END from ZDoom and finally not have to worry about TEXTUREx and PNAMES lumps.

I've thought the same thing for a long time, it is a much more reliable system than the TEXTUREx crud.

 

For software ports, the main difficulty I think is the fact that ZDoom (etc) support PNG images in that namespace, so any port which claims to supports it needs to support reading PNG images, which is a large dependency to add if you don't already have it (as you need zlib decompression too).

Share this post


Link to post
On 1/22/2024 at 2:01 PM, Rayziik said:

 


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

 

This is definitely one of the most useful features I'd like to see, but I'd also add the ability to manipulate COUNTKILL as a thing flag.

 

On 1/22/2024 at 2:01 PM, Rayziik said:

 


        Translucent Middle Texture (260)
            Use tag to define the level of translucency (1-99)

 

Problem with this one is that the tag number is already used to apply translucency onto lines that use the tag.

Share this post


Link to post

Good suggestions here, here's my personal list:

MBF21 (maps)

Some way to control the player's friction (pretty sure this was in mbf, not sure if it retained your speed or not, thinking about movement mods w/ wolf3d or quake movement)

Build-style floor/ceiling portals (self-explanatory)

MBF21 (dehacked)

Decimal values for state duration (wouldn't make a big difference for those cap their framerates, but would be fun for those who leave it uncapped)

Items that can be picked up w/ custom message (not sure if i saw this in the 3dge docs or mbf21, but would be lovely, make the world feel more lively)

UMAPINFO

I'd love to be able to have a set number or disable difficulties

 

all i can think of, pretty exhausted, see y'all later

Share this post


Link to post
1 hour ago, deathz0r said:

This is definitely one of the most useful features I'd like to see, but I'd also add the ability to manipulate COUNTKILL as a thing flag.

 

Problem with this one is that the tag number is already used to apply translucency onto lines that use the tag.

I love how the properties that are variable can be defined by the tagged linedef, like scrolling floors can be faster or slower. Isn't it possible to make the same for things like lighting, translucency, ammount of lowering and raising of floors, etc? Would allow for great customizability. I miss generalized actions for lighting. The more generalized actions, the merrier.

Share this post


Link to post

I figure this might be the right time to share an idea I've had a few months ago - a line action that instantly activates the actions of all lines facing target sector(s). The main use for this would be to point it to a control sector with multiple actions attached, thus achieving a line that triggers multiple things without the need for boilerplate voodoo doll closets each time (and without the small delay that comes with them). Admittedly I didn't think very far into the full implications of this, so it might not be as simple as I made it out to be, but still I think it's something worth considering.

 

On the simpler side of things, I think it would be neat to have additive blend mode midtextures - in the same vein as the transparent lines we have now. This would allow for more realistic glass windows (especially when stacked with a second, "solid" frame midtexture 1px away), as well as some other cool visual effects.

 

In general, I advise against adding too many niche linedef flags to avoid the clutter (I mean, look at where it got UDMF), but if there's one flag that would certainly be useful it's block hitscan and projectiles - both in the same flag, as one doesn't make much sense without the other. This would go nicely with the previous suggestion, allowing for windows that block shots without the need for a dummy invisible sector.

 

Out of the posts I've read in this thread, the one I liked the most was definitely the one about the simplified monster closets, hands down - this would be so useful to have it's not even funny. The same post also suggests a line action that toggles "forcefield" linedefs, which I also think is a great idea - not only for actual forcefields, but also for simplifying voodoo conveyor triggers! It could come in two variants, "toggle impassable" and "toggle barrier" (which toggles both impassable and "block hitscan and projectiles", from the suggestion above), and the line's midtexture could be "stored" in its lower texture, so it can be restored later on (essentially the actions would switch lower and middle texture, on each side).

Share this post


Link to post

Some more things I'd like to see:

 

Thing Flags:

 

  • INVULNERABLE: Thing cannot take damage (expose MF2_INVULNERABLE)
  • PUSHABLE: Thing can be pushed by the player or other actors (expose MF2_PUSHABLE)
  • DORMANT: Thing is inactive and won't respond to attacks, sound checks, etc (expose MF2_DORMANT)
  • ANTITELEFRAG: Actors that would telefrag this actor are telefragged instead of this actor being telefragged. Useful to keep boss monsters from getting instagibbed by errant Icon of Sin cubes and the like.
  • Generic flags with no function that can be used for logic gating via A_AddFlags, A_RemoveFlags, etc.
  • TRUESIGHT: Thing sees invisible targets and doesn't get thrown off by partial invisibility. (Or split these into separate flags.)

Thing Codepointers:

  • A_JumpIfTargetHigher: Function to gate logic based on the target's z position relative to the caller.
  • A_Move: Has been mentioned before, but something like A_Chase where checks aren't made to make the Thing attack. Maybe add an arg to allow definition if the steps made during this codepointer count toward the step countdown before attacking.
  • Along those same lines, A_StepForward: A generic movement codepointer that simply makes the caller take a step in the direction it's currently facing.
  • A_MonsterChargeAttack: Similar to A_SkullFly, but more suitable for non-flying enemies. Creature does not lose momentum upon being shot, and if it doesn't have flight, doesn't bounce up on stopping when bouncing lost souls are enabled. May require additional mobj flags, but I think a lot of the behavior could just be taken from the Maulotaur code.
  • Absolutely seconding A_JumpIfBlocked to check that nonsolid objects don't have something clipping over them.

Weapon Flags:

  • RECHARGE/RECHARGEINACTIVE: Weapon regains ammunition (likely based on some new fields that control the weapon's recharge speed in tics and ammunition amount). These two flags would independently control whether the weapon recharges only during its Ready states (RECHARGE) or even while it's being Raised, Lowered, or while another weapon instead active (RECHARGEINACTIVE).

Weapon Codepointers:

  • Additional args for A_WeaponMeleeAttack to allow the player to consume ammo, but also determine whether this should happen only on hit versus actually hitting with the weapon. Alternatively, the arg could simply be the frame to jump to if the melee attack hits.
  • A_RemoveWeapon: Function to remove the calling weapon from the player's inventory and immediately call its Lower state. Should probably have no effect on weapons that the player has at all times, such as the Fist or Pistol.

In addition, I love the idea, ambitious as it may be, to define additional pickup benefits as an extension to the Thing definition. Ammo type/amount to add on pickup, powerup and duration to add, armor type (including an option for "current" like armor bonuses) and amount to add/max pickup limit, health amount to add/max pickup limit, etc. This would also be the opportunity to add some new power up options, such as a double damage effect, quad damage effect (probably don't stack these), etc, but even without that, it'd be neat to have a new pickup that can help armor for more than 1 point, but maybe doesn't count as a bonus item. Or a super backpack that instantly fills the player ammo.

Edited by bofu

Share this post


Link to post

I like all these Bofu mentioned.  It would also be nice to have a way to control player weapon inventory.  Either to take away weapons or replace them with other versions.

Share this post


Link to post

Support for Hexen style fog would be sweet.

 

For weapon codepointers: An option to make hitscan attacks penetrate through enemies, as well as an option to change the sprite of bullet puffs/smoke.

Edited by Scorcher

Share this post


Link to post

Would it be possible to have monsters change attacks based on skill level? So a codepointer that will check for the skill level and jump to a defined attack only if playing on skill 4 for example? So instead of having to increase the number of monsters in a map, one could just make the same numbers of monsters more dangerous.

Share this post


Link to post
23 hours ago, Gregor said:

Would it be possible to have monsters change attacks based on skill level? So a codepointer that will check for the skill level and jump to a defined attack only if playing on skill 4 for example? So instead of having to increase the number of monsters in a map, one could just make the same numbers of monsters more dangerous.

This is a neat idea, and I like it. I've often considered having an enemy use a more aggressive attack pattern in other difficulties.

 

I also came up with some additional codepointers/flags.

 

Thing Codepointers:

  • A_MonsterJumpAttack: Parameterized version of A_VileAttack that allows the player to set the damage, blast radius/blast damage if the target has the caller's Archvile targeting object active on it, the upward momentum, and the sound to play. This could be leveraged to also produce damageless "jump pads" and things of that nature.
  • A_TeleportToThing: Bit of a weird one, but I think it has lots of uses. Parameterized command to teleport the caller to the position of a nearby specified thing (by thing ID). If the caller has a target active, it will select the closest specified thing that is also within line of sight of its target; if no such thing is within line of sight of the caller's target, it will instead select the one closest to the target. Otherwise, if there is no target set, it will simply select the closest thing. Optionally, there could be an argument to simply have it be a random instance of the thing on the map. Will silently fail if there is no thing with a matching ID in the map. No sound or visual effect so that this can be used to be teleport ambushing monsters, like creatures that sink under the water.
  • A_ProjectileTracer: Parameterized attack based on the behavior of BFG 10K from Quake II. When called by a projectile, it does a tracer attack on all creatures not friendly to the projectile's source within line of sight of the projectile. Damage and range can be parameterized. When called by another thing, hit every shootable thing instead, regardless of whether or not it's friendly. Another parameter could specify the "puff" object to be spawned on each target.
  • A_HealSelf: Parameterized function for a thing to heal itself by the specified amount of hitpoints. Second argument defaults to 0, but if set to nonzero, allows the caller to heal itself up to the specified number of hit points.
  • A_MonsterRailAttack: Parameterized railgun-type attack. First two arguments control the damage and damage factor; third argument controls the thing spawned as the rail particle; fourth argument controls the frequency in units at which the thing in the third argument gets created along the firing path; fifth argument controls if the thing created on impact.

Weapon Codepointers:

  • A_WeaponRailAttack: As A_MonsterRailAttack, but as a weapon attack.

Thing Flags:

  • NOHITSCAN: Thing is immune to damage from hitscan-based attacks of all sources. Will still block said hitscans and produce a blood splatter/bullet puff if SHOOTABLE is active, but won't take any damage.
  • LOYAL: Thing does not engage in infighting with any other thing. Things with the LOYAL flag that are friendly to the player will never target the player as the result of being struck by a player-sourced attack; non-friendly things with the LOYAL flag will never attack other non-friendly things.

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...