HNHacker News
TopNewBestAskShowJobs

zesterer

652 karma · joined February 6, 2019

submissionscomments
zesterer··on Chumsky: A Tutorial
If it helps, I also have tutorials in the works for type inference & type-checking, monomorphisation, optimisation, and possibly codegen too.
zesterer··on Veloren is a multiplayer voxel RPG written in Rust
Yes, although exploring a cave can get a little creepy! No gore or anything though.
zesterer··on Veloren is a multiplayer voxel RPG written in Rust
When you say 'broken', what you mean is '1 out of every 50 compiles will need a clean of the incremental compiler artifacts, which adds maybe 30 seconds to the subsequent compile but doesn't mean recompiling dependencies'. To call it 'broken' is quite misleading, it's just a minor annoyance that will be gone in the next release cycle.
zesterer··on Veloren is a multiplayer voxel RPG written in Rust
Also try recompiling it after a trivial change. You'll find that it'll take less than a minute, perhaps even seconds.
zesterer··on Veloren is a multiplayer voxel RPG written in Rust
If you take 'voxel' to mean '3D pixel', then how does Veloren not fall into that category? What does "real voxels" mean? If you're talking about rendering things as point-clouds or using raycasting, then you're not describing voxels. You're just describing one of many possible techniques for rendering voxels. Isosurface extraction into a polygon mesh is also in that set and is no less valid than the definition you're going for.
zesterer··on Veloren is a multiplayer voxel RPG written in Rust
There are several of us. I'm also one of the devs.
zesterer··on Veloren is a multiplayer voxel RPG written in Rust
The bottleneck for a game like this is the GPU and not the CPU (usually). Additionally, Veloren has a tonne of things that Minecraft doesn't:

- A much larger world (compare the number of blocks in Veloren's trees against those of Minecraft, or the fact that mountains in Veloren are regularly many thousands of blocks tall, compared to Minecraft's 256 block height limit)

- PBR rendering

- Shadow-mapping

- Bloom

- A level of detail system, along with horizon maps for dynamic terrain-scale shadows

- More advanced voxel lighting that respects normals

- Fully volumetric cloud, aurora, and atmospheric rendering with raycasting

- More detailed character models and animations

- A more detailed particle system

- Dynamic point lights and related effects (point light diffusion, for example)

- High-detail terrain objects like grass, corn, etc.

As another poster said, there's not really much point in comparing the performance of the game to that of Minecraft. They have virtually nothing in common from a rendering perspective other than the fact that their polygon normals are mostly oriented toward the cardinal axes.

zesterer··on Veloren is a multiplayer voxel RPG written in Rust
We're considering moving to AGPL.
zesterer··on Veloren is a multiplayer voxel RPG written in Rust
You can run Airshipper without the GUI from the console with `airshipper run`.
zesterer··on Veloren is a multiplayer voxel RPG written in Rust
I was one of them, as my YouTube channel can attest. The desire to create procedural worlds never left though.
zesterer··on Veloren is a multiplayer voxel RPG written in Rust
Actually, completely the opposite is true. There's a reason that voxel games appeared after games with more traditional meshes.

The fundamental complexity of voxel data structures is higher: O(n^3) for iteration, and the density of polygons required after meshing is generally much higher. The only real benefit from a complexity standpoint is that storage and access of specific voxels is much faster, but this often doesn't represent a payoff.

Voxels are great for a lot of things, but making a game like Veloren run quickly is much harder than you might initially realise. There's a reason that we're told at least every 3 years that a new company has come up with the 'engine of the future' using voxel tech only to have it vanish into obscurity as they try to turn it into something that's not a tech demo.

For Veloren, there is a big benefit: we get to create enormous procedural worlds. But actually controlling the complexity of that data and efficiently storing/accessing it is a non-trivial change as you'll see from the project's dev blog.

zesterer··on Veloren is a multiplayer voxel RPG written in Rust
(there is no good content in this post, they just want to arbitrarily hate. They make extremely basic errors throughout and clear haven't ever used Rust, at least for anything non-trivial)
zesterer··on How I See Numbers
I do something very similar, but with power-2 numbers (and have done since my childhood, long before I knew what power-2 numbers were).

There's something very rhythmic about counting beats that line up with powers of 2 and I'm able to count things extremely quickly and precisely without even thinking about the numbers I'm counting. When I want to remember how much I've counted, I simply think back at where I am in the rhythm and come up with the results in a strange vibes-ey way I'm not really able to describe (for example, I'll just intuitively 'know' the difference between having counted 32 beats and 64 beats, and then I can use that knowledge to hone in on the precise number I'm at using a sort of mental binary search).

I'm sure someone with more knowledge of musical theory or neurology could provide a better explanation, but it feels like I'm somehow taking advantage of whatever part of the brain keeps track of beats and rhythms in music, then using it to count.

Edit: I just tried this technique while listening to music and, as expected, I completely lost the ability to count in this way. Almost immediately I lost track, before I even hit 16.

zesterer··on What Is Rust's Hole Purpose?
Rust already is mainstream. It's being adopted at a very impressive rate and is running in production in innumerable places, serving billions of users.
zesterer··on Some mistakes Rust doesn't catch
As JoshTriplett said above, Rust's Clippy does this today: https://rust-lang.github.io/rust-clippy/master/#suspicious_a...
zesterer··on Some mistakes Rust doesn't catch
Compile-time deadlock prevention very, very quickly begins butting up against Rice's theorem, unless you do something silly like having channels be the only way for threads to communicate. Even then, deadlock conditions are still perfectly possible and very common.
zesterer··on One decade later, Minecraft world generation is interesting again
We mention it because:

1) The player community and the dev community are not distinct: we involve players in the development process and actively encourage them to become contributors.

2) There are many people that are interested in working with Rust, and it's often a big pull factor for new contributors.

3) Veloren is by far the biggest public domain game written in Rust: it's a good demonstration of what the language can do and how it performs at scale (Veloren's game server scaled up to a 48-thread machine with 181 players online in the same world during the last release party: not many games, let alone voxel games, can manage these numbers). We want to encourage other game developers to consider using it too.

zesterer··on One decade later, Minecraft world generation is interesting again
Have you checked out the wiki? There is a 'Getting Started' guide: https://wiki.veloren.net/wiki/Getting_Started

The game is extremely open-ended: there is no overarching objective, and you are free to interact with the world as you please. For most players, this means a combination of exploring, crafting, conquering challenges (dungeons, caves, etc.), finding rare items, and socialising with other players.

The game is 100% free so you have no reason not to jump in and give it a go if you're curious!

> How is it similar to Dwarf Fortress?

Veloren has an open procedural world with a history generation system. Although work on the history simulation is still very much ongoing, the world already more cohesive than those of many other voxel games. Our end goal is a world that feels as rich and as complex as that of Dwarf Fortress. Whether we end up succeeding is still to be determined!

> How is it similar to Minecraft?

Veloren is a voxel game, so... cubes and open-world exploration. Not much more to say about this one.

zesterer··on Firefox is the alternative to a Chrome hegemony
> So does Google really control us that much?

Yes. Contributing code to something doesn't mean that you suddenly control the direction of that thing. Google still makes the big decisions about what gets to enter the codebase: which web features to support, which ones to deprecate, how to interpret standards, and how to slowly align the web with their own financial incentives.

zesterer··on Firefox is the alternative to a Chrome hegemony
> Firefox, while open source, doesn't provide footing for the community to build browser forks

Say hello to https://servo.org/.

zesterer··on Firefox is the alternative to a Chrome hegemony
> They want it to (not or less) stay the same and not move forward

I don't think this is true at all. Anecdotally, a lot of Firefox users have been very receptive towards recent changes. Quantum was a huge success and I know very few people that miss the old Firefox with all of its jank.

> Mozilla need to follow suit in order to survive, rip that rendering engine out, build a new browser and a “browser toolkit” to let other people build their own

This is precisely what Servo is: https://servo.org/. Mozilla know what they're doing.

zesterer··on Tree Sitter and the Complications of Parsing Languages
Interesting choice to reply to matklad, one of rust-analyzer's primary authors, to explain how it works.
zesterer··on Tree Sitter and the Complications of Parsing Languages
> Newer languages are all being designed with the constraint that the grammar should be easy to parse

I think that says less about the difficulty of parsing and more that language designers have realised that 'easy to parse' is not incompatible with good readability and terse syntax. In fact, the two go hand in hand: languages that are easy for computers to understand are often easy for users to understand too.

zesterer··on RBoy: A Gameboy Emulator in Rust
rustfmt does not delete vertical whitespace in that way.
zesterer··on “The best minds of my generation are thinking how to make people click ads”
This article completely misses the point of the original quote. The original quote is not 'they could be working in better fields', it's 'the entire structural incentives of capitalism are messed up'.
zesterer··on Speed of Rust vs. C
> As a minimum to make the properly usable, we need a way of passing one object with multiple different traits.

Supertraits?

zesterer··on Speed of Rust vs. C
Um?? `smallstring` was updated 3 months ago.
zesterer··on Speed of Rust vs. C
Benchmarks wouldn't tell the whole story. This detailed writeup is far better in that it gives information about how and where the two languages differ.
zesterer··on Speed of Rust vs. C
You've just taken the word 'fearless', a word that's clearly subjective, and said that the definition the author gives of it "couldn't be more wrong". That's... a choice.
zesterer··on Speed of Rust vs. C
Code 'bloat' is a bizarre metric to use for anything unless you're on a platform with incredibly constrained executable memory like an embedded device.

The fact that Rust specialises its generic code according to the type it's used with it not some inherent disadvantage of generics. That's what they're supposed to do. By choosing to not specialise, you're actively making the decision to make your code slower. Rust has mechanisms for avoiding generic specialisation. They're called trait objects and they work brilliantly.

When you use void* in your data structures in C, you're not winning anything when compared to Rust. You're just producing slower code that mimics the behaviour of Rust's trait objects, but more dangerously.

Code 'bloat' (otherwise known as 'specialising your code correctly to make it run faster') is not a reason to not use Rust in 2021, so please stop pretending that it is.

← PreviousPage 4 of 5Next →