Thank you Quarto. That's very helpful.
That's ok, I wasn't trying to be helpful, just venting
. But seriously, I think you'll find that a bit of trial-and-error with MED will take you a long way. I genuinely can't help more than that, because I last touched it when it was first released to the public on those backup discs, which was about a decade ago. My initial impression was that it's simple enough to use, and handy in some ways, but I was far too used to WCPPas to see any reason to actually use it.
It's odd you should feel that way, as a programmer when I use UE4 I keep being reminded of an engine I used 10 years prior. It too totally misunderstood the ECS paradigm, but it was just too late to go back and fix the design flaw.
Internally most blueprint nodes actually just map to C++ functions, blueprint is really just C++ where spaghetti is enforced rather than a sign of bad design.
(snip)
Seriously though, UE4 is, underneath its shiny toolset, the most retro engine out there. There is definitely code hanging around in there which must have been carried over from the 90's.
Well, with regards to UE4's approach being outdated, I'm happy to give you the benefit of the doubt. I've never seen the innards of an engine this close (other than Unity, perhaps, but I keep
meaning to take a closer look at Unity, and never really getting around to it), and I'm in no position to tell. Indeed, that is one of the things I find so profoundly alienating about UE4: it's an engine in which the programmers shrugged and told the game designers: make the damned game yourself. The engine is designed in such a way that, if you want, you can do the whole game in blueprints, without touching the engine code itself. But in that case, you can just call your programmers designers, and your designers programmers, and no one will be any wiser.
As an old dinosaur of a designer, I found this to be challenging to the extreme at first contact. Now, after a month, I've finally reached a point where I'm actually implementing changes in the mission I've been assigned, and the game is not exploding. That's progress. But it's all just so shamelessly exhibitionist and - dare I say, lazy? I feel like I shouldn't criticise it too much, precisely because I'm still struggling with it - as a rule, when someone is struggling and they say "this is stupid", they're just making excuses for themselves
. Still, while I appreciate the greater versatility of the engine (really: how many times did we have to DLL-hack WCP, just to introduce a slight variation of an already-existing function? In UE4, you'd just modify the blueprint to add new functionality), it is frustrating, because when you work with a small, almost indie-sized developer, the outcome is inevitable: your one-and-a-half-programmers leave a heck of a lot of gameplay programmer work in the hands of the designers. That's my ultimate complaint, I guess: I keep feeling like I'm having to master the damned engine, instead of mastering a new mission scripting environment.
I should add, I also detest UE4's approach to visual scripting. I'm grudgingly accepting that having a visual script can be convenient at all, as I've always been firmly in the "text-based-is-faster-than-click-based" camp. Yes, it can be helpful (I loooove being able to track the game's visual progress through the blueprint while it's running). But the way it's done, the obsessive nature of it, where it seems like they wanted every possible thing to be a visually distinct element... it's bloody ridiculous. A basic "if" statement, something that normally fits in one short line of code, becomes a bunch of separate blocks connected together, taking up half the screen. You've got to have the variable block, connected to a "get value" block, et cetera. Spaghetti code indeed. Just give me a one-block "if" function, seriously.