I will point out that a significant number of artists these days spend their day programming shaders in GLSL. And that’s not BGE specific. If you go and watch some GDC talks, you’ll find many artists talking math way over a typical programmers head (or at least, way over mine)!
At one point I was following the development of DescentUnderground, which is being developed using Unreal’s blueprints. As one person put it:
We spent the entire morning working that out, and came up with a formula that was super simple, that matched exactly. I was stoked. It’s gonna be like, two lines of code, I thought, and we’d have D1 flight exactly. I went to my charts, determined carefully what constants we’d need to put in to get an exact match, and waited for a chance to discuss it with Jason.
On Wednesday, we were able to discuss the flight model with Jason. I had a pair of equations sketched on a napkin – one for acceleration and one for deceleration – and asked if we could do them. He seemed to think we could. I said “Awesome!” and waited on pins and needles for the coding to complete.
. . . and waited.
. . . and waited.
A couple hours later, I came into the office and said, “I seriously was not expecting this level of pain!” I was thinking, quick implementation, validate it with some flight, and then make sure we’d gotten all the corner cases. Instead, Jason showed me a screen full of day-glo spaghetti (apparently that’s normally what Blueprint looks like when things get complicated), and said that he had the implementation mostly working, but there were some serious glitches. Like, every so often, the ship would just jump on its own.
That’s where we left it Wednesday.
On Thursday, we were still waiting for Jason to figure it out. As near as I can tell, he slaved over that flight model all day Thursday
The next day they discover…
There was a much simpler formula that would work. One that was actually easier to implement in bluepring, one that resolved the bug, and that gave me the double reverse thrust, and it was ONE LINE.
<snip>
It’s 4 PM on Friday. Everyone around the office is laughing and joking and getting ready to go home, and Jason is slaving away at implementing my new new formula just so we can get one more iteration on this. I have no idea what it is he likes, ice cream, bourbon, what? Whatever it is, guys, we seriously owe him some of that.
This time, it really does get done in half an hour. Translational and rotational. I’ve got my tweaked constants ready to go
For reference, I implemented a formula to model the exact same thing in one line, just as the poster mentioned. Graphical programming really seems to not scale well.
A similar project that only raised one third of the funding and started several months later, but developed in some C variant, is far closer to release.
Visual programming is not new. It used to be involved for programming hardware:
- FPGA’s. In the beginning you programmed them with a text language called VHDL. Then GUI’s came along and you could program them with flowcharts. Now all the big vendors have removed the flowcharts, and guess what? They’re back to VHDL!
- PLC’s. They used to be programmed in Ladder Logic (quite similar to bge’s logic system actually), but nearly all modern PLC’s run … a textual language similar to BASIC or C.
So what are the current issues with visual programming?
- Complexity does not scale well
- Hard to make modular
- Hard to construct tests for
- Hard to manage “code quality”
- Hard to compare different versions of the same code (needed for meaningful version control systems)
- Difficult to represent higher abstractions
- Difficult to represent loops and state machines
I can say with confidence that the several multi-thousand-line-of-code codebases that I maintain and develop would not be nearly so easy to maintain in current visual programming systems.
HOWEVER. I do think that graphical programming does have a future. I just don’t think we can currently design the interface in such a way that it works for anything other than trivial cases. If anyone has any ideas for how to do graphical programming in a new/novel way, please let me know!
I have interacted with a lot of different programmers online and they all share similar personality traits and might all be on the “spectrum”
Yup, all good programmers are on the same spectrum, but it’s not one of “autism” - it’s something else that does not currently have a name. Similar to how every racing car driver has similar personality traits, all programmers behave in similar ways. If you want to understand a little about how programmers interact with normal human beings, have a glance at this article. It’s well worth a read. In short: programmers expect people to behave in predictable ways, and to contribute in a meaningful way. If a person is either unpredictable or does not contribute, then most programmers will have little respect for that person - often giving the appearance of being antisocial.