The idea is that “roguelike” = a game like Rogue, which according to some people, requires checking most if not all of the boxes including ASCII, proc-gen, perma-death, turn-based, … while the term “rougelite” is less strict. But I think we’re past the point of that distinction being adopted into mainstream.
Then you should also override
Equals(object)
,GetHashCode
, and implementIEquatable<T>
.Thankfully a lot of the usual boilerplate code can be avoided using a
record
class or struct: