OutFox icon indicating copy to clipboard operation
OutFox copied to clipboard

[Feature Request] Behavior control of arrows passing through receptors

Open waiei opened this issue 2 years ago • 11 comments

Please Select the game mode your feature request is about.

All Game Modes

Is your feature request related to a problem?

Currently, when a tap passes through a receptor in dance mode due to a miss decision or other reasons, it is painted black This behavior is similar to that of DDR EXTREME and earlier, and is very difficult to see in the case of dense music

image

Describe the solution you'd like

In DDR SuperNOVA and later, arrows that pass through receptors gradually become transparent Since Project OutFox supports a variety of game modes It would be useful to be able to control this behavior on the note skin side

Since the behavior differs depending on the type of arrow, it is important to consider how much control should be available

Reference video in the case of DDR https://www.youtube.com/watch?v=-MB3i81YUrg

  • The BPM doubles at 0:21 and 0:39, but they appear to be transparent in the same way
    • I wonder if the transparency is changing by the number of pixels instead of the time after passing through the receptor
  • Long notes and shock arrows pass through without becoming transparent
    • In the case of Project OutFox, I think Hold, Roll, Mine, and Long mine are equivalent to this
  • 1:54 Taps at the same position as the beginning of a long note do not become transparent, but pass through without becoming transparent
    • In Project OutFox, it may be necessary to decide whether to change the behavior by setting "DrawHoldHeadForTapsOnSameRow" or not

Describe alternatives you've considered

I think it would be good to be able to freely control the behavior of filling in black with NoteSkin commands, even if it is not possible to control it so finely

Implementation I imagine

metrics.ini

# Count or Time (Time: seconds/Count: beats)
PassedReceptorEffectType=Count
# 0.5 beats after the arrow passes through the receptor, diffusealpha,0
PassedReceptorEffectTime=0.5
PassedReceptorEffectCommand=diffusealpha,0
I have no sense of naming, so I need you to come up with a good name

Additional context

No response

waiei avatar Jan 27 '23 07:01 waiei

This is a good idea, we will look into it

Scraticus avatar Jan 28 '23 15:01 Scraticus

Testing out the implementation. I am unsure how the engine could behave with adding a NOTESKIN command on the threshold, so I made a fadeout system instead.

Using Beat timing to fade out

PassedReceptorTransparentNote=1
PassedReceptorBeatsUntilZeroColor=1
PassedReceptorUseTime=0

https://github.com/TeamRizu/OutFox/assets/23246027/57e6ba99-748f-4415-97ba-959691e76f8e

Using Seconds timing to fade out

PassedReceptorTransparentNote=1
PassedReceptorBeatsUntilZeroColor=1
PassedReceptorUseTime=1

https://github.com/TeamRizu/OutFox/assets/23246027/441543e2-a237-4816-92d5-920dc0e86c0c

JoseVarelaP avatar Jun 27 '23 18:06 JoseVarelaP

@JoseVarelaP Thank you, I think it is very good! By the way, if I want to fill it with black as before, is it ok to use assedReceptorTransparentNote=0? I was a little concerned that in Dance mode, either black paint or transparency is fine, but in other game modes, we may see a different pattern In that case, =2,=3, ... and will it be extended? Nevertheless, I think most games will be fine with the behavior you have addressed, and I look forward to seeing the implementation reflected!

waiei avatar Jun 28 '23 05:06 waiei

@waiei

I was a little concerned that in Dance mode, either black paint or transparency is fine, but in other game modes, we may see a different pattern

So they way I've implemented is dependent on the NoteSkin. So each noteskin can decide for itself if it wants to draw missed notes transparently or opaque.

By the way, if I want to fill it with black as before, is it ok to use PassedReceptorTransparentNote=0?

Yes, by default it is 0, which is the "fade to black" logic.

In that case, =2,=3, ... and will it be extended?

Not currently, it is just a boolean value.

JoseVarelaP avatar Jun 28 '23 05:06 JoseVarelaP

Okay, I will try different things once the implementation is reflected Thanks!

waiei avatar Jun 28 '23 05:06 waiei