Should probably post something so my last post here isn't from 2018 😅

Well, after 18 months of writing Rust 🦀 for games I can say my sentiments here have held up fairly well:
https://thefuntastic.com/blog/why-rust-is-the-future-game-dev

Why Rust is the Future of Game Development - TheFuntastic

Rust, not related to the video game also called Rust, is a promising systems programming language with novel features ideally suited for game development. Exposure and awareness within the game

@thefuntastic Great article. It's very interesting to see a programmer's perspective. From a "designer who likes to put design in practice with code" like me, I find Rust uncomfortable. It seems like it demands a mindset where you must know exactly what you want to do before you do it. In practice, the power of good scripting languages (C# in Unity, Blueprint) is that they enable rapid iteration and improvisation (yes, at the expense of performance). I'm afraid Rust widens the gap coder/designer

@rottame @thefuntastic I think that's one of the things I like about Rust. It tends to prevent code that could cause problems in the future. Which is something that happens with experimental code. At least for me.

I can say that the feeling you're describing does vanish after a while. It gets easier to write code with abstractions that are possible in Rust and still allow extending the code quickly.

Also Rust + a scripting language might be the best case scenario.

@simonstix @thefuntastic Yeah, I've heard many programmers talking about how it gets easier. But I think one thing that is a bit of a blind spot for programmers is that there are a huge amount of designer/coder hybrids for whom something like Rust just doesn't have any advantage. As Peter noticed, there is a clear value on massive projects where you really need to really manage performance. But then again, 95%+ of games are not "massive projects who need every drop of performance"

@rottame @thefuntastic I definitely agree.
As a huge fan of rust another problem along the same lines are compile times. You have to actively maintain Rust projects to keep them low. Also having short compile times is always in direct opposition to runtime performance, or simply harder to do (trait object constraints).

I know that I'm part of the problem by avoiding dynamic calls from the start, but that simply doesn't exist in languages like C#, where performance is still good enough.

@simonstix @thefuntastic Yeah, I don't deny that probably Rust will enable some very cool things. But I am very skeptical about it creating some new paradigm for gamedev. In that sense, I feel that any real *new thing* in gamedev has to introduce a real improvement of accessibility. That's why I find Godot extremely interesting and why - as much as I personally don't like using it - I find Blueprint so impressive.

@rottame @thefuntastic Rust surprisingly adds a lot of accessibility as well. By having a powerful typechecker is makes it impossible to do a lot of typical errors, like null references, results, using objects that aren't initialized yet, etc.
In a perfect future, I'd like a scripting language that has Rusts type checker, but is easier to use in practice. Or maybe just Rust, with some guidlines to write code that's fast to iterate on.

I think finding a balance will be hard.

@rottame @thefuntastic I think it might actually be a framework problem. Rust is (relatively) easy to use, as long as you don't have to think about architecture. Maybe we just haven't found an architecture that's easy enough to work with as somebody with less experience.
@simonstix @thefuntastic Perhaps. But, another common blind spot for programmers, anything that includes memory management, pointers and such will inevitably cut out a massive amount of people. The real barrier is "why do I have to do this thing when I just want stuff to move on screen". And no text based scripting language has solved that yet, let alone one where you have to think where in memory the data is.

@rottame @thefuntastic Yes, that's definitely true. Visual scripting languages are great for abstracting away technical details like that. Maybe we need a visual scripting language inspired by Rust. Not the borrow checker of course, but Options, Results, matching, static typing in general, one that doesn't allow things that would cause errors. Or at least less of them.

It would be difficult to design without being confusing, but runtime errors can be quite confusing as well.

@simonstix @rottame Oh wow, engagement on my posts, that hasn't happened on birdsite for a while 😅

For the record, I'm with @rottame - rust is a competent replacement for the C++ part of Unreal, but not the blueprints part.

Rust is hard! I'm a decent programmer and it kicked my butt good. Asking less invested folks to engage with that feels cruel. It's the same reason most C++ engines have always had scripting langs too.

@simonstix @rottame we have a plethora of garbage collected langs, but rust is the first borrow-checked lang. Who knows what it will inspire? Feel like there is a gap for a rusty-but-simplified-and-opinionated lang.

But also this is the point where I have to strongly promise myself I'm not going to try build a new programming language. ;)

@thefuntastic @rottame I feel the urge to try to build your own. I've been playing with that thought for a while. But I know I wouldn't be getting anything else done anymore.

And I hope you're right, I'd love to see other borrow checked languages.

I'm sure there's still a lot of progress to be made in all kinds of programming languages, including visual.