Question for you and commenter above, do you play games with controls similar to Outer Wilds often? Do you play many games in general? I've seen this comment a few times and I'm curious why this is such a common talking point. I thought the controls were very intuitive, so I'm curious if it's a familiarity issue or something else.
The thing about Outer Wilds for me is that it's a game about exploration, but most attempts at exploration are punished (limited time frame, sands suffocating you, "ghost matter" kills...). They stuck with a "hard scifi" control scheme where you control your character in 6dof with inertia, which makes some things unnecessarily hard and did not (IMO) add anything to the game itself. The things you interact with in the world are also annoying to use, like the machines where you need to slide a ball around by locking it with your sight... Just let me press a button already!
I think there were two separate puzzles where I had identified the correct solution, but the mechanics were so clunky that my attempt failed. Making me waste time exploring elsewhere. Had to consult a guide just to see that I had unknowingly botched the physics. Which is an awful experience for a puzzle game. Especially when the clock is working against you and some of the set pieces require very specific timing to interact with them (where doors are only open for a certain few minutes in a run).
The game is definitely a unique experience, but some of the design elements hamper the experience.
I did not play with a controller, which made Dark Bramble effectively impossible to finish because the keyboard is all-or-nothing thrust. Had to cheat to get past it. They should have said that using a controller was mandatory, not recommended.
It's not mandatory, there's 1 part in Dark Bramble where you can go a little faster if you use a very small amount of thrust. You can just use the momentum you came in on though, there's still plenty of time
Totally achievable by using interfaces instead of structs
type Foo interface {
Foo() int
}
type Bar interface {
Bar() string
}
type FooBar interface {
Foo
Bar
}
Then functions that accept a Foo will also happily take a FooBar. Does not solve the problem of passing a FooBar[] to a function that expects Foo[] but that can be solved with generics or a simple function to convert FooBar[] to Foo[].
The motivation for the seemingly strange rounding is that a set of numbers can be rounded before summing without biasing the sum. It has good use cases but so do all rounding modes.
In general, if some recommendation from IEEE 754 (the floating-point standard) seems strange, its because someone like William Kahan thought about it in great detail and you'd be wise to follow it.
The example in the EnforcePlayerTurns section is kind of buggy. Make an attempt to place two Xs in a row in different cells, then place an O in a third cell - the second X you attempted to place will magically show up at the same time as that O.
I know a not-incompetent technology director who bought a gift card and sent the number to a scammer, because the scammer had hacked their coworker's email address, so the request came from a legit address.
Many FPS games move the camera by listening to relative mouse movements and moving your camera a corresponding amount, while keeping your cursor hidden and in the center of the screen. Absolute movements cause different issues depending on the particular game.
I am not familiar with HID but I assume there is a way for the computer to provide feedback to the input device about the cursor’s current position. If that’s correct, it could probably be done with relative movements just fine.
You're right. But this only means that it won't be possible that you use the same template for different slots. Personally, I don't remember I ever needed that. Actually, most template engines I know work this way (https://twig.symfony.com/doc/2.x/templates.html#template-inh..., "{% block content %}").
But still, it's easy to archieve that by just creating another sub template.
So your first template file is the layout, the second one contains the main block definition, and that definition you just include another sub template which can be reused elsewhere.
I have been using a catch-all for about 2 years now with great results. I hadn't thought of hashing/obfuscating the emails though. I think since I use a password manager anyway, I could just generate a random 6-8 character prefix when signing up for a new account, and since it's saved in my password manager it's easy to look up again later (no need for a true hash).
> I think since I use a password manager anyway, I could just generate a random 6-8 character prefix when signing up for a new account, and since it's saved in my password manager it's easy to look up again later (no need for a true hash).
Yeah, same. I store all the addresses in KeePass.
The main reason I don't just totally randomize them is just that there have been a few moments where I do have my salt somehow, but for whatever reason, it is either inconvenient or impossible to immediately open up the password manager and add a new entry.
In those moments, being able to deterministically generate the address and then add it at my leisure without having to double-check what I used is nice.
It also likely wouldn't happen to me, but should I ever somehow lose/lose access to both my old emails and my password manager, as long as I have my salt, I can still "remember" my email addresses for important services (e.g., PayPal or whatever) to re-generate the addresses and reset my passwords.
Whatever route you go, be it randomized addresses or hashed addresses, even though I think I am more vigilant and careful than most, it's still nice having an extra-layer to the catch-all that can't easily be targeted by someone malicious without first either somehow obtaining your salt, compromising the service, etc; it's handy being able to immediately filter and flag anything relating to my bank or whatever else if it isn't sent to the right address.
I just append 4 random characters to the email, e.g. domain.com-xy3j@myname.mail . I have to explicitly configure an alias for each of these addresses - this prevents someone from guessing a correct address for a different domain.
If Spam arrives, I can block that specific address and use different random characters to live in peace again.
Keeping the domain readable makes it easier to explain to people that they must’ve “lost” my email address somehow.