Live data from Hacker News

rg3d: Rust 3D game engine with an FPS demo game and scene editor

github.com

91–100 of 143 posts

Re: rg3d: Rust 3D game engine with an FPS demo game and scene editor

#91
post #56

This looks really impressive! Given that Rust -> WebAssembly is at least a thing, would it be plausible for someone to make that rusty-shooter demo work in a browser?

There is also a problem with rg3d-sound - it supports only Windows and Linux right now. So there will be no sound on other OSes. I've tried to add at least macOS backend by myself, but I failed all attempts to install macOS on virtual machine :(

If you have a computer with linux, this kind of things could help: https://github.com/foxlet/macOS-Simple-KVM

Re: rg3d: Rust 3D game engine with an FPS demo game and scene editor

#92
post #59

Earlier quoted context omitted.

Unsafe is not as big of a deal as people make it seem.

Using C alongside static analysis like Frama-C is also quite safe, one could say.

Frama-C's analysis is neither sound nor complete and it's way way harder to set up and use than Rust.

Re: rg3d: Rust 3D game engine with an FPS demo game and scene editor

#93
In Rust projects where you want to be developing multiple highly related modules in tandem with each other, it can be helpful to just use a single repository and a Cargo workspace[1].

You can still build and publish them individually, but it can make development and testing much simpler.

[1]: https://doc.rust-lang.org/book/ch14-03-cargo-workspaces.html

Re: rg3d: Rust 3D game engine with an FPS demo game and scene editor

#94
post #52

Earlier quoted context omitted.

Ranges and fold expressions take care of that.

that's true and I am very excited for ranges. sadly I am still waiting for c++17 to be switched on in my build system :/ still there's lots of other stuff that's more verbose in c++ than rust, often because it was bolted on much later. think about getting individual elements out of a tuple. in c++: `std::get (tuple)` for each desired element or `std::tie(elt0, std::ignore, elt2) = tuple;` in rust: `tuple.0`, not sure…

There is an equivalent to tie

let Tuple { elt0, elt2, ..} = value.

Re: rg3d: Rust 3D game engine with an FPS demo game and scene editor

#95
post #30

Earlier quoted context omitted.

I think that Rust's features allow for cleaner code bases.

I don't see why Rust would be cleaner than modern C++ codebase.

How do you define or enforce a "modern C++ codebase", this seems like an arbitrary comment to discount the parent's point.

Re: rg3d: Rust 3D game engine with an FPS demo game and scene editor

#96
post #85
post #70

Earlier quoted context omitted.

As they say, you don't write an engine - you write a game, and the engine comes out of it. Impressive work!

Not if you write Handmade Hero.

HMH is kind of special though in that its author, Casey Muratori, has many years of experience in gamedev. I think the saying of the parent commenter to yours is mostly applying to people who are trying to make game engines for the first time with little or no past experience in actually shipping complete games.

Re: rg3d: Rust 3D game engine with an FPS demo game and scene editor

#97

Earlier quoted context omitted.

Unsafe is not as big of a deal as people make it seem.

It's also not nearly as prevalent as people from outside the ecosystem seem to think it is. I read a lot of "any non-trivial Rust code will have to use unsafe" and I guess that means that all of the code I've worked on is trivial.

I believe if we dug into things deeper, we would find that "non-trivial code" here means "code that doesn't need unsafe". Developers of rust and std do a great job to cover all the "non-trivial" cases by the std types. Everything covered by them doesn't seem non-trivial anymore. So... here we are.

Re: rg3d: Rust 3D game engine with an FPS demo game and scene editor

#98
post #85

Earlier quoted context omitted.

Not if you write Handmade Hero.

HMH is kind of special though in that its author, Casey Muratori, has many years of experience in gamedev. I think the saying of the parent commenter to yours is mostly applying to people who are trying to make game engines for the first time with little or no past experience in actually shipping complete games.

Not really... All great game engines were spawned out of AAA titles. You should never try to build an engine without a set of games that stretch its limits in all directions, otherwise something will always go wrong. There isn't a single person alive who can manage the complexity of a game engine. As soon as you start splitting things up, you run into problems of distributed development. Getting this right without eating your own dog food is unlikely, at best, no matter how experienced your team is...

What makes the difference between an experienced engine developer, like CryTek and Unreal, and a hobbyist or a company who does it for the first time, is mostly that while both of them will definitely build a game with the engine while creating the engine, the experienced team will actually produce a re-usable, well designed engine, while the inexperienced team will produce a hunk of junk that doesn't fit together and doesn't extend past the game they were trying to develop.

Re: rg3d: Rust 3D game engine with an FPS demo game and scene editor

#100

Earlier quoted context omitted.

Unsafe is not as big of a deal as people make it seem.

It's also not nearly as prevalent as people from outside the ecosystem seem to think it is. I read a lot of "any non-trivial Rust code will have to use unsafe" and I guess that means that all of the code I've worked on is trivial.

The work being continuously done to improve the state of unsafe on crates.io proves otherwise.

That is my point, people continue to use "C with Classes" because they don't know better or were poorly taught, likewise many reach out to unsafe as they cannot make it work otherwise and leave the code like that.

In a world with a very thin standard library and an npm like dependency tree, every crate might be full of unsafe surprises that one is only aware if going through all of them.

And this in a scenario where cargo doesn't do binary dependencies.

Post reply on HN