Hacker News new | ask | show | jobs
by dismalaf 534 days ago
Not sure why you have scripting in quotations or are implying that it's somehow bad. You're not modifying the engine code or writing a renderer from scratch when programming a game in Unity so yeah, it's scripting by every definition.
2 comments

> or are implying that it's somehow bad.

You're actually the one implying that, you said “it's just for scripting”

> You're not modifying the engine code or writing a renderer from scratch

You're not modifying the kernel or writing a GPU driver from scratch when you're building a game engine, yet you don't consider that to be scripting, why the difference?

> You're actually the one implying that, you said “it's just for scripting”

I'm describing how the engine is actually made... It's mostly written in C++ and C# is the application scripting layer.

If the whole thing was C# top to bottom I'd call it a C# engine.

The engine is in C++, but the game itself is written in C# (and this is the actual part you'd called out earlier in this thread), and no it's not “just scripting on top of the the engine”, no more than writing a game engine in C++ is “scripting on top of the OS” your definition of what is scripting and whatnot is just off.
it's a philisophical line, I suppose. at what point is "scripting" simply programming the gameplay with a tight interface? Unity can definitely blur that line at times.
Is it really philosophical?

Scripting means telling an already built piece of software what to do. In this case, the game engine code doesn't change, the programmer uses the existing functions and interface to tell it what to do. Even Unreal programming is mostly scripting... Yes you're writing C++ but you're only telling the engine what to do, not rewriting it (well, unless you are).

It's why scripting languages are called such... The interpreter is already built and remains unchanged, and runs the code without rebuilding anything.

Python doesn't suddenly become a non-scripting language just because your program reaches a certain size or scope.

It's weird that someone would take offence to calling scripting scripting... Like, it's nice that things are prebuilt and make programming easier... I reach for Ruby first whenever I have a problem I need solved.

Maybe "philosophical" is too strong a word, but I can't think of a better fitting term.

By those same definitions, we can Call any kind of middleware an API "scripting". You're not changing the underlying code so much as sending calls to some other code base to do the heavy lifting. But there's definitely some like between that and what popular game engines are structured by.

At the end of the day, the names are bikeshedding to me, what matters more is the output and experience of the tool more than the label applied to it. But names are communication, and communication is messy by nature.

> Scripting means telling an already built piece of software what to do. In this case, the game engine code doesn't change, the programmer uses the existing functions and interface to tell it what to do.

By this lose definition pretty much all of software engineering is scripting: you're always telling the underlying layer what to do without changing it: be it a web framework or the GPU driver.

I'd argue a lot of current programming definitely is.

How much foundational technology is actually being created? How many new OSes have there been in the last 30 years? Almost everything that's currently being built is built on top of many layers.

And why is this a bad thing?

When I was in university using R to solve economics problems I wasn't thinking to myself, "This is too easy, I'm just using a scripting language, I need to rewrite everything that's in CRAN myself". No, I was happy that so much foundational tech is already there to make our lives easy.

And when someone ships a game in Unreal or Unity they're probably happier to ship than regretting not writing their own engine.

Also, being in Canada, I can't legally call programming "software engineering" lol.

This response has nothing to do with the original point I made though, which has nothing to do with “foundational technology”, btw. When people write games in Unity the game is actually written in C#, sure the engine isn't, but that doesn't change the fact that the game is, and calling that “scripting” just because it's built on top of another layer makes no sense, because as you say, everything is built on top of another layer!