Staredit Network > Forums > SC1 UMS Theory and Ideas > Topic: EUD Burrow Detection
EUD Burrow Detection
Jan 11 2010, 6:24 pm
By: ImagoDeo  

Jan 11 2010, 6:24 pm ImagoDeo Post #1



I was checking out this thread in UMSMA the other day when I realized that so many maps could use EUDs to detect burrowing instead of that 1 pixel + DT system. I've assembled a list of pros and cons for you guys.

Quote from Pros
  • No ugly DT showing up every time you burrow - the EUD system would be invisible. - Scratch that, the current system shouldn't have a DT show up if you're doing it in the best fashion.
  • Impossible to glitch unless you mess up your triggers. Players would be unable to mess with it. (Barring any players who lie about whether they're on a Mac or a PC...)
  • With the advent of Macrotriggers, the bulk of the triggering would take very little time. - Macrotriggers would be unnecessary. Keeping track of unit placement IDs isn't very hard. - The triggering would be vastly more difficult than I anticipated.
  • It's just plain cool. - That it is... but it's totally unnecessary.

Quote from Cons
  • Maps already using other systems or that are unfinished (but have units placed already) cannot easily switch to the EUD system.
  • Would be quite difficult almost impossible to trigger due to the size of the burrow memory address... did I get that right, Rockz?
  • Would probably take forever to unearth the burrow address. SCII might come out before the work was finished. - http://farty1billion.dyndns.org/EUDDB/?pg=ref&a=unitnode
  • May not work for macs. - The address could be discovered for macs. That may take a while.
  • The system is more complex and would require more triggers depending on a multitude of possibilities, which include the fact that, unless you use a blanket system, you'll have to keep track of when the unit that you want to detect was placed, since EUDs work on specific unit placement order IDs. This could cause problems if the unit dies. - Keeping preplaced replacement units in a seperate location for player hero respawns fixes this problem.
  • The specific unit placement order ID method may be the only viable method. - Not a problem.
  • The entire system could be made obsolete by a patch, though the chances of another patch won't be very high until Blizzard begins integrating SC back into the new Battle.net.
  • We already have a system that works perfectly if done right. There's no point to the EUD system.

Cons win out.

[/discuss]

Post has been edited 5 time(s), last time on Jan 12 2010, 3:22 pm by ImagoDeo.



None.

Jan 11 2010, 6:37 pm Jack Post #2

>be faceless void >mfw I have no face

http://farty1billion.dyndns.org/EUDDB/?pg=ref&a=unitnode

Down a little bit is the offset for burrowing. One con removed.

If someone found the unitnode start address for macs, that would be another con removed(you would have to have some way for the player to choose whether they are on mac or not)

I believe you would only need 1700 triggers to detect every unit's current burrow status, but for AoS's or RPGs with a fixed amount of lives, it would be a far simpler matter of having some preplaced units.



Red classic.

"In short, their absurdities are so extreme that it is painful even to quote them."

Jan 11 2010, 6:39 pm Kaias Post #3



Quote from Pros
  • No ugly DT showing up every time you burrow - the EUD system would be invisible.
If you're doing the normal detection method correctly it would be completely invisible and no DT would show up.

Quote from Cons
  • Would probably take forever to unearth the burrow address. SCII might come out before the work was finished.
  • May not work for macs.
  • The system is more complex and would require more triggers depending on a multitude of possibilities, which include the fact that, unless you use a blanket system, you'll have to keep track of when the unit that you want to detect was placed, since EUDs work on specific unit placement order IDs. This could cause problems if the unit dies.
  • The blanket system might cause map lag. So many thousands of triggers constantly being checked will almost certainly cause map lag.
It is essentially only viable for preplaced units. You also didn't list the fact that EUD addresses can change with patches, essentially mortalizing your map if you use them.



None.

Jan 11 2010, 6:40 pm ImagoDeo Post #4



Quote from name:zany_001
http://farty1billion.dyndns.org/EUDDB/?pg=ref&a=unitnode

Down a little bit is the offset for burrowing. One con removed.

If someone found the unitnode start address for macs, that would be another con removed(you would have to have some way for the player to choose whether they are on mac or not)

I believe you would only need 1700 triggers to detect every unit's current burrow status, but for AoS's or RPGs with a fixed amount of lives, it would be a far simpler matter of having some preplaced units.

Thanks for that. Apparently unearthing it wouldn't be so hard after all.

Yeah, that's a simple matter of a beacon-and-civ setup. ^^

Yes, but you have to make sure that no units are spawned before the game detects that you have died and creates a placeholder for the unit ID. Your entire system could be messed up by being applied to a spawned monster instead of the player's hero.

Quote from Kaias
Quote from Pros
  • No ugly DT showing up every time you burrow - the EUD system would be invisible.
If you're doing the normal detection method correctly it would be completely invisible and no DT would show up.

Quote from Cons
  • Would probably take forever to unearth the burrow address. SCII might come out before the work was finished.
  • May not work for macs.
  • The system is more complex and would require more triggers depending on a multitude of possibilities, which include the fact that, unless you use a blanket system, you'll have to keep track of when the unit that you want to detect was placed, since EUDs work on specific unit placement order IDs. This could cause problems if the unit dies.
  • The blanket system might cause map lag. So many thousands of triggers constantly being checked will almost certainly cause map lag.
It is essentially only viable for preplaced units. You also didn't list the fact that EUD addresses can change with patches, essentially mortalizing your map if you use them.

The current method still alters physical reality in the game. You'll see the distortion of the cloaked DT even if it belongs to another player. And it still takes up space in-game. AND it can attack, which means that you probably won't be able to use that unit for anything else. HS gets around it by calling them 'Land Mines', but that still takes up an entire unit that could be put to better use if an EUD system could be implemented.

I'll update the OP.

Post has been edited 1 time(s), last time on Jan 11 2010, 6:48 pm by ImagoDeo.



None.

Jan 11 2010, 6:46 pm Jack Post #5

>be faceless void >mfw I have no face

Like I said, preplaced units. You move a new one in and give it to the player and set a DC, then a different EUD would start detecting burrow.



Red classic.

"In short, their absurdities are so extreme that it is painful even to quote them."

Jan 11 2010, 6:50 pm ImagoDeo Post #6



Imagine the following scenario.

Your unit dies. However, you are player 2, and player 1's trigger(s) spawn a unit (or units). All of a sudden, the system begins to work on whatever unit was spawned by player 1's trigger(s). You respawn, but all of a sudden <insert spell here> doesn't work when you burrow like it's supposed to.

Nevermind, I see your point.



None.

Jan 11 2010, 6:56 pm CecilSunkure Post #7



As said in the shoutbox, I think the established method is much more effective and less cumbersome to implement into a map. It's also more versatile in terms of situations it will work in, referring to things like preplaced vs not preplaced units.



None.

Jan 11 2010, 6:59 pm Kaias Post #8



Quote from ImagoDeo
The current method still alters physical reality in the game. You'll see the distortion of the cloaked DT even if it belongs to another player. And it still takes up space in-game. AND it can attack, which means that you probably won't be able to use that unit for anything else. HS gets around it by calling them 'Land Mines', but that still takes up an entire unit that could be put to better use if an EUD system could be implemented.
Or you could ignore me. Hero Sanctuary is hardly a representation of professional mapmaking, just because it has those defects doesn't mean they are inherent with the method.
Quote from Kaias
If you're doing the normal detection method correctly it would be completely invisible and no DT would show up.




None.

Jan 11 2010, 6:59 pm ImagoDeo Post #9



Quote from CecilSunkure
As said in the shoutbox, I think the established method is much more effective and less cumbersome to implement into a map. It's also more versatile in terms of situations it will work in, referring to things like preplaced vs not preplaced units.

The EUD system would have a few consequences and would require a few preparations, but it would be more versatile in the long run. I understand that the current system works, but as I mentioned earlier, it still modifies the physical game world, which, while workable, is still not preferable to having an entirely virtual system.

Quote from Kaias
Quote from ImagoDeo
The current method still alters physical reality in the game. You'll see the distortion of the cloaked DT even if it belongs to another player. And it still takes up space in-game. AND it can attack, which means that you probably won't be able to use that unit for anything else. HS gets around it by calling them 'Land Mines', but that still takes up an entire unit that could be put to better use if an EUD system could be implemented.
Or you could ignore me. Hero Sanctuary is hardly a representation of professional mapmaking, just because it has those defects doesn't mean they are inherent with the method.
Quote from Kaias
If you're doing the normal detection method correctly it would be completely invisible and no DT would show up.

My apologies. I hadn't thought about it in those terms.



None.

Jan 11 2010, 8:50 pm rockz Post #10

ᴄʜᴇᴇsᴇ ɪᴛ!

HP detection is worthwhile due to the variable nature of HP (there's 32 bits of data). Burrow detection is 1 bit, making it increasingly difficult to detect via EUD, and there is already a well established method for detecting burrowing, whose only limitation is that it works by detecting the effects of burrowing, not the state.

If a unit stands on top of the burrowed unit, the game will think the unit isn't burrowed.

Ideally, systems never use physical units and instead resort to detecting only virtual things. However, there are some things which are just much easier to accomplish by using units (shuffling a deck of cards for example).

Also, I've never got around to testing it, but placement IDs are re-used after a time. I'm not sure of that time, but you should be able to figure out how long it takes for a new unit to be placed in the slot, then prevent any units from being created after a death until the slot has been filled by the proper unit. As long as you're using EUDs though, you can also detect a certain amount of HP and set that to be the new "zero life" so that the unit never actually dies.



"Parliamentary inquiry, Mr. Chairman - do we have to call the Gentleman a gentleman if he's not one?"

Jan 11 2010, 9:08 pm Biophysicist Post #11



Quote
If a unit stands on top of the burrowed unit, the game will think the unit isn't burrowed.
There's a very easy fix: Move the DT or whatever onto the unit you want to detect the burrow status of, then see if All Players brings At Least 2 [any unit] to the location. This way, if the DT can't be moved but the unit is burrowed, it will still detect the burrow correctly.



None.

Jan 11 2010, 9:11 pm Neki Post #12



Can you even detect two units in a pixel location though? Some units would eat up the whole location.

Quote from Kaias
The point is that one of them is burrowed and any unit being on top would make '2' units brought to the location, meaning the unit is burrowed.

Oh okay, I forgot to factor in that the burrowed unit counts as a unit to the location. I thought we were detecting two units on top of the burrowed unit.

Post has been edited 2 time(s), last time on Jan 11 2010, 9:16 pm by Taylor Swift.



None.

Jan 11 2010, 9:14 pm Kaias Post #13



Quote from name:Taylor Swift
Can you even detect two units in a pixel location though? Some units would eat up the whole location.
The point is that one of them is burrowed and any unit being on top would make '2' units brought to the location, meaning the unit is burrowed.



None.

Jan 11 2010, 9:49 pm rockz Post #14

ᴄʜᴇᴇsᴇ ɪᴛ!

So I guess you'd need to waste 2 locations, or make sure you use a perfectly square unit?




"Parliamentary inquiry, Mr. Chairman - do we have to call the Gentleman a gentleman if he's not one?"

Jan 11 2010, 10:44 pm ImagoDeo Post #15



Quote from rockz
HP detection is worthwhile due to the variable nature of HP (there's 32 bits of data). Burrow detection is 1 bit, making it increasingly difficult to detect via EUD, and there is already a well established method for detecting burrowing, whose only limitation is that it works by detecting the effects of burrowing, not the state.

If a unit stands on top of the burrowed unit, the game will think the unit isn't burrowed.

Ideally, systems never use physical units and instead resort to detecting only virtual things. However, there are some things which are just much easier to accomplish by using units (shuffling a deck of cards for example).

Also, I've never got around to testing it, but placement IDs are re-used after a time. I'm not sure of that time, but you should be able to figure out how long it takes for a new unit to be placed in the slot, then prevent any units from being created after a death until the slot has been filled by the proper unit. As long as you're using EUDs though, you can also detect a certain amount of HP and set that to be the new "zero life" so that the unit never actually dies.

As you pointed out, the current system has flaws and all kinds of things that need to be worked around.

Increasingly difficult? What do you mean by that? I would think it would be a simple matter of finding the address and modifying it by a specific amount of deaths per placement ID.

I thought placement IDs were reused as soon as a new unit was available to fill the space. You're telling me that ID #0200 can be empty and the game will continue to go up from, say, #0564, for a certain period of time - even if it could fill #0200 immediately?



None.

Jan 11 2010, 11:39 pm CecilSunkure Post #16



Quote from ImagoDeo
As you pointed out, the current system has flaws and all kinds of things that need to be worked around.

Increasingly difficult? What do you mean by that? I would think it would be a simple matter of finding the address and modifying it by a specific amount of deaths per placement ID.

I thought placement IDs were reused as soon as a new unit was available to fill the space. You're telling me that ID #0200 can be empty and the game will continue to go up from, say, #0564, for a certain period of time - even if it could fill #0200 immediately?
Flaws and such? What are you talking about? Do you understand how the established method works? The only downside to it is that it detects a single effect of something being burrowed; two grounds units can fit into a tiny location if one is burrowed. There isn't really anything that needs to be worked out or even could be worked out. You mentioned that it modifies the game non-virtually, but this can be done within a single trigger cycle which makes it rather negligible.

As for the 1 byte vs 2, vs 3, vs 4 difficulty disparity, this post might help you a little: http://www.staredit.net/177864/



None.

Jan 12 2010, 12:29 am ImagoDeo Post #17



Quote from CecilSunkure
Quote from ImagoDeo
As you pointed out, the current system has flaws and all kinds of things that need to be worked around.

Increasingly difficult? What do you mean by that? I would think it would be a simple matter of finding the address and modifying it by a specific amount of deaths per placement ID.

I thought placement IDs were reused as soon as a new unit was available to fill the space. You're telling me that ID #0200 can be empty and the game will continue to go up from, say, #0564, for a certain period of time - even if it could fill #0200 immediately?
Flaws and such? What are you talking about? Do you understand how the established method works? The only downside to it is that it detects a single effect of something being burrowed; two grounds units can fit into a tiny location if one is burrowed. There isn't really anything that needs to be worked out or even could be worked out. You mentioned that it modifies the game non-virtually, but this can be done within a single trigger cycle which makes it rather negligible.

As for the 1 byte vs 2, vs 3, vs 4 difficulty disparity, this post might help you a little: http://www.staredit.net/177864/

Yes, I understand how it works.

I guess the general vibe I'm getting here is that no one wants to spend the time to do it, seeing as we have a system that works perfectly already. I'll update the OP.



None.

Jan 12 2010, 8:19 am rockz Post #18

ᴄʜᴇᴇsᴇ ɪᴛ!

when a unit dies, its death animation keeps it from being removed from memory until the animation is finished, I think.

Quote
+0xDC - DWORD dwStatus
00000001(0x1) - Is Completed
00000010(0x2) - Is on ground? or is it is unit...
00000100(0x4) - Is in air
00001000(0x8) - Checked for disabled, if it is 00001000, then the unit is disabled(/unpowered?)
00010000(0x10) - Checked for burrowing purposes, if it is 00010000, then the unit is burrowed
00100000(0x20) - Unit is entering a building
01000000(0x40) - unit is entering a transport
10000000(0x80) -

00000001(0x100) - Checked for invisible purposes, if it is 00000001, then the unit requires a detector?
00000010(0x200) - checked for cloak?
00000100(0x400) - deals with doodad states? if set, is disabled
00001000(0x800) - Unit cloaking doesn't need energy decrease
00010000(0x1000) - Unit is in unbreakable code section? Cannot receive orders
00100000(0x2000) - Set by nobrkcodestart
01000000(0x4000) -
10000000(0x8000) - cannot attack if set

00000001(0x10000)
00000010(0x20000) - Is a Building?

00000100(0x4000000) - Invincible

00010000(0x10000000) - Speed upgrade
00100000(0x20000000) - cooldown upgrade
Cloak, invincible, speed upgrade, cooldown upgrade all mess with the value for burrow. I'm not entirely certain one of these won't change frequently, rendering the eud virutally useless.



"Parliamentary inquiry, Mr. Chairman - do we have to call the Gentleman a gentleman if he's not one?"

Jan 12 2010, 3:21 pm ImagoDeo Post #19



Quote from rockz
when a unit dies, its death animation keeps it from being removed from memory until the animation is finished, I think.

Cloak, invincible, speed upgrade, cooldown upgrade all mess with the value for burrow. I'm not entirely certain one of these won't change frequently, rendering the eud virutally useless.

Ah. That would make sense.

Yes, that would tend to put a damper on things. I might update the OP again, we'll see...



None.

Jan 12 2010, 8:43 pm samsizzle Post #20



Quote from rockz
when a unit dies, its death animation keeps it from being removed from memory until the animation is finished, I think.
Hmm this could be good for a corpse collecting game or something. OR maybe you could be able to rescue someone as long as their death animation is still there.



None.

Options
  Back to forum
Please log in to reply to this topic or to report it.
Members in this topic: None.
[06:36 pm]
RIVE -- Nah, I'm still on Orange Box.
[04:36 pm]
Oh_Man -- anyone play Outside the Box yet? it was a fun time
[12:52 pm]
Vrael -- if you're gonna link that shit at least link some quality shit: https://www.youtube.com/watch?v=uUV3KvnvT-w
[11:17 am]
Zycorax -- :wob:
[2024-4-27. : 9:38 pm]
NudeRaider -- Ultraviolet
Ultraviolet shouted: NudeRaider sing it brother
trust me, you don't wanna hear that. I defer that to the pros.
[2024-4-27. : 7:56 pm]
Ultraviolet -- NudeRaider
NudeRaider shouted: "War nie wirklich weg" 🎵
sing it brother
[2024-4-27. : 6:24 pm]
NudeRaider -- "War nie wirklich weg" 🎵
[2024-4-27. : 3:33 pm]
O)FaRTy1billion[MM] -- o sen is back
[2024-4-27. : 1:53 am]
Ultraviolet -- :lol:
[2024-4-26. : 6:51 pm]
Vrael -- It is, and I could definitely use a company with a commitment to flexibility, quality, and customer satisfaction to provide effective solutions to dampness and humidity in my urban environment.
Please log in to shout.


Members Online: Roy