My first attempt at a raycaster is made in Rust and finally getting some progress. I'm basically following the Lodev tutorial while making the code a bit more object-oriented.
The first fancy thing I've done is making the game map load from a PNG file, with each pixel matching with a tile. Even the color palette is dynamically loaded (from another PNG holding a single row of pixels), and can be easily changed. Indexes in the palette hold the semantics of each tile:
@voxel It's pretty enjoyable as long as I clone plenty of data around to avoid what they call borrowing issues :D
Things I like most about it are the modern API (functional manipulation of collections + lambdas for instance), the npm-like package manager, the lack of null, the friendly compiler errors, the safe memory management… But yeah the latter takes quite a while to get used to ; it's not even just about syntax but really designing solutions in an appropriate way, there's quite a learning curve to that.
Still unsure whether it's worth it for people who are already used to C++, but in my case not having used C/C++ for years it feels like a good choice.
Wow, that's a bit hardcore! What made you want to load it from a PNG? Is that easier to edit than, say, a tilemap? I guess the minimap is just that image, right? Looks very cool.
Congrats on getting the renderer up and running. Can't wait to play it :)