• 12 Posts
  • 44 Comments
Joined 1 year ago
cake
Cake day: June 25th, 2023

help-circle
















  • That sentence seems correct. As for your question, you’d rather have to ask yourself: When would you pay for a programming language?

    Back in the old days before internet and commodity hardware, before easy distribution, before non-trivial software, before basic compiler knowledge was common people were easily impressed, so naturally you could sell your compiler for primitive grug BASIC.

    Today, that situation is different. A language by itself is meaningless, a risk, even, in some ways. A while back some developer of REM Objects was bitching about in the old aggregator on how nobody wanted to spend money on their special proprietary BASIC. Like it was just another product. They don’t know how to use a computer how programming languages work. This extends to even finding users willing to use your stuff for free. I don’t want to knock on REM Objects in particular, you know you could add way more examples like Seed7, every lisper ever etc., but let’s get into why people pay for programming languages.

    • extreme vendor lock-in of platform, hardware, whatever (but you almost always have your language bundled with something else in the first place, because…)
    • the point is a feature beyond the language (think matlab, labview, SAP, Excel or Coldfusion 8bitguy mentioned)
    • dubious support contracts (think Oracle JDK)
    • enthusiasts you can milk for life support and dumbfucks that fall for your next gen graph AI DSL whatever bla
    • extremely great developer experience (but we live in an age where megacorps create languages and infrastructure for improved experience for free, so, good luck with that these days)







  • Maybe I’m misunderstanding what the system is, is click_handler in the post a system, and if so, do systems only declare a single component of an entity as their input?

    The way I figured would make sense was that, in the engine/game itself, the BoundaryComponent would have an additional field for registered scripts or that there would be an additional component just for registered scripts, to keep components lean. Not sure if that actually worked out in reality.

    Then there would be a system for clicking on boundaries that would call such a script, if available. It’s probably a poor example, but since that system doesn’t touch much else, only the boundary component gets passed into the script. That’s not supposed to be a rule, though. I probably should clarify that on the post later on…




  • I like the ideas presented in the article otherwise. I vaguely remember TypeScript having some sort of reflection support that Angular took advantage of or something. I wonder if that can be used to create a scriptable ECS like proposed in this article?

    I don’t know, I’ve seen some outdated version of Angular only for a couple of hours in my job now. But I’m sure, those sweet layers of metaprogramming and DI will be a bliss to debug. Not.


  • The next example which seems to create two bubbles on the same entity is just as confusing to me. If I were to query for those bubbles, would I iterate over each of those bubbles in separate iterations, but all other components that are part of this query are the same?

    No that would be crazy.

    No, but seriously, the find operator is supposed to take only one type and not merge the types. ECS seems close enough to relational databases, but not that close.