Gez
Why don't I have a custom title by now?!
Posts: 6458
Registered: 07-07 |
I'd welcome it. The ZDoom family are still my favorite port, but I follow Eternity's development with interest. EDF looks rather unwieldy as it is now, too low-level and too close to the original C code. Contrasting EDF frame definitions with DECORATE states, there's a lot more "meaningless" characters in EDF. ("Meaningless" in quotes because I know they really have a purpose; and it's also required because the language specs prevent from using newlines or whitespace as delimiters, so more tokens are necessary for correct parsing.)
Still, when comparing DECORATE:
code: See:
BMBE AAABBBCCCDDD 2 A_Chase
BMBE A 0 A_PlaySound("suicide/scream")
loop
with EDF:
code: frame BMBE_SEE_A { cmp = "BMBE|A|*|2|Chase|@next" }
frame BMBE_SEE_B { cmp = "BMBE|A|*|2|Chase|@next" }
frame BMBE_SEE_C { cmp = "BMBE|A|*|2|Chase|@next" }
frame BMBE_SEE_D { cmp = "BMBE|B|*|2|Chase|@next" }
frame BMBE_SEE_E { cmp = "BMBE|B|*|2|Chase|@next" }
frame BMBE_SEE_F { cmp = "BMBE|B|*|2|Chase|@next" }
frame BMBE_SEE_G { cmp = "BMBE|C|*|2|Chase|@next" }
frame BMBE_SEE_H { cmp = "BMBE|C|*|2|Chase|@next" }
frame BMBE_SEE_I { cmp = "BMBE|C|*|2|Chase|@next" }
frame BMBE_SEE_J { cmp = "BMBE|D|*|2|Chase|@next" }
frame BMBE_SEE_K { cmp = "BMBE|D|*|2|Chase|@next" }
frame BMBE_SEE_L { cmp = "BMBE|D|*|0|PlaySound|BMBE_SEE_A" misc1 = sound:suscrm }
There's a lot more redundant information given in the EDF version, which could be factorized somehow I'm sure. Maybe something a bit like this (just for illustration, not an actual proposal):
code: state BMBE_SEE
{
frames A,B,C : { cmp = "BMBE|A|*|2|Chase|@next" }
frames D,E,F : { cmp = "BMBE|B|*|2|Chase|@next" }
frames G,H,I : { cmp = "BMBE|C|*|2|Chase|@next" }
frames J,K : { cmp = "BMBE|D|*|2|Chase|@next" }
frames L : { cmp = "BMBE|D|*|0|PlaySound|BMBE_SEE_A" misc1 = sound:suscrm }
}
That would already remove a lot of redundant (for a human) code. Even better would be something like this:
code: state BMBE_SEE
{
frames A,B,C,D,E,F,G,H,I,J,K : { cmp = "BMBE|AAABBBCCCDD|*|2|Chase|@next" }
frames L : { cmp = "BMBE|D|*|0|PlaySound|BMBE_SEE_A" misc1 = sound:suscrm }
}
Such a method would still give a unique name to each frame, but it's the engine that would expand frame A from state BMBE_SEE into frame BMBE_SEE_A, and the modder would have a lot less identical stuff to type.
Just my two cents.
|