Hello there,
I have been messing with the flashlight effect lately, and that's working great...
But i was wondering if there was a not-so-complex way of making the explored areas fade back to unexplored?
So that i could make a
"pitch black" effect..
None.
An artist's depiction of an Extended Unit Death
Why yes, yes there is. I did this for my
December contest entry.
I'm assuming you're using the flashlight system I came up with, but any system involving triggers can incorporate this. Before running the flashlight's reveal, run this action:
Visibility - Change visibility for player 1 to Unexplored within (Entire map) and Do Not check cliff level
Oh okay good. Now for a flashlight question:
How do you make the "flashlight" only reveal terrain that is the same height as the unit? I tried disabling "check cliff level," but no luck only works partially.
-i think i would have to set a region to all terrain of a certain height which idk how to do
None.
An artist's depiction of an Extended Unit Death
Yeah, I've been having trouble with this. You can check "Height At Point" to determine if the point specified should be revealed. I haven't worked out a perfect algorithm for this (my December entry had a partial algorithm).
Essentially, you want to do this: if "Height At Point" at the current position is significantly greater (I used +0.3) than "Height At Point" of the position of the unit, do not reveal, and stop all further flashlight reveals. Here's an example of what that would look like:
General - For each integer counter from 1 to 10 with increment 1, do (Actions)
Actions
Variable - Set spread = (((Real(counter)) * 0.45) - 0.5)
General - If (Conditions) then do (Actions) else do (Actions)
If
((Ground height at unitPoint) + 0.3) >= (Ground height at (unitPoint offset by spread towards unitFace degrees))
Then
Visibility - Reveal (Region((unitPoint offset by spread towards unitFace degrees), (0.5 + ((Real(counter)) * 0.2)))) for player 1 for 0.06 seconds and Do check cliff level
Else
General - Break
The "Break" should make it exit the loop. Technically, using break statements is bad design, so if you want, you can add a boolean local variable, add it to the If/Then/Else condition list, and flip the boolean in the else statement.
Yeah, I've been having trouble with this. You can check "Height At Point" to determine if the point specified should be revealed. I haven't worked out a perfect algorithm for this (my December entry had a partial algorithm).
Essentially, you want to do this: if "Height At Point" at the current position is significantly greater (I used +0.3) than "Height At Point" of the position of the unit, do not reveal, and stop all further flashlight reveals. Here's an example of what that would look like:
General - For each integer counter from 1 to 10 with increment 1, do (Actions)
Actions
Variable - Set spread = (((Real(counter)) * 0.45) - 0.5)
General - If (Conditions) then do (Actions) else do (Actions)
If
((Ground height at unitPoint) + 0.3) >= (Ground height at (unitPoint offset by spread towards unitFace degrees))
Then
Visibility - Reveal (Region((unitPoint offset by spread towards unitFace degrees), (0.5 + ((Real(counter)) * 0.2)))) for player 1 for 0.06 seconds and Do check cliff level
Else
General - Break
The "Break" should make it exit the loop. Technically, using break statements is bad design, so if you want, you can add a boolean local variable, add it to the If/Then/Else condition list, and flip the boolean in the else statement.
i see what you are trying here but it doesn't work so well when the unit is facing parallel of the cliff. I love how complex this is...
None.
An artist's depiction of an Extended Unit Death
Your experience does not match with my own; I can face parallel to a cliff and still see down the line just fine. When facing a cliff directly, obviously, barely anything is revealed, because it's like pointing a flashlight close to a wall.
If, for some reason, you need the flashlight spread to be less sensitive to cliffs and still give a decent reveal when almost facing a cliff, you may want to consider running this loop for two more sets of paths: one going away from the unit's facing direction with an offset of -5, and one going away from the unit's facing direction with an offset of +5. This will expand your flashlight width significantly, so you may want to reduce the expand rate of the light.
Here's a visual representation of what I mean. O = unit, X = Flashlight path
Current:
O X X X X X
Modified:
X
X X
X X
O X X X X X
X X
X X
X
The code doesn't really show it that well, but I don't feel like making an image. I hope this is enough to depict what I was trying to describe above.