The cheaty gameplay isn’t that bad, as long as it’s not the first playthrough. It’s definitely way too easy to give you a sense of accomplishment against all odds, but it also allows you to skip all the grind and the sidequests that you should’ve already done (as those, AFAIK, have no Lea-dependent dialogue).
I didn’t know Iconoclasts was usually compared to CrossCode!
I can’t really see any similarities. It’s a great game, definitely on the level of CC if a bit less git gud
in nature, but the only similarity I can think of is both games using pixel art.
With the last two big things I’ve heard about (Yuzu and… Dolphin, I think?) they were legally in the right, but at least where I live there is absolutely no way to spin a recompiler + asset extractor as something illegal - they can’t even claim the developers are circumventing DRM, because OOT and MM didn’t have any.
Though, I would not be surprised if there’s something in US law that can be exploited for this.
As far as I know, C’s threads.h
implementation (or std::thread
for C++) is based on POSIX threads.
If you’re using CMake or a similar build system that can define macros when building from Windows, then one option you have is to simply create an interface of sorts.
Something like:
// angle brackes work for this codeblock? idk
#ifdef PLATFORM_WIN32
// The syntax MSVC wants (which I'm not familiar with)
#include "fuckmissingbracketsidontrememberwhatiwrotehere"
thread_t win32_create_thread( /* ... */ ) {
/* ... */
}
#else
// The syntax sensible compilers want (which I'm also unfamiliar with because I forgor U+1F480)
#include "fuckmissingbracketsidontrememberwhatiwrotehere"
int thrd_create( /* ... */ ) {
/* ... */
}
#endif
It may be a bit tedious, but I don’t know if there is some widely known C equivalent to the Boost library, at least for threads.
I’m not sure about C, but C++ often describes certain things as “implementation defined”;
one such example is casting a pointer to a sufficiently big integral type.
For example, you can assign a float* p0
to a size_t i
, then i
to a float* p1
and expect that p0 == p1
.
Here the compiler is free to choose how to calculate i
, but other than that the compiler’s behavior is predictable.
“Undefined behavior” is not “machine-dependent” code - it’s “these are seemingly fine instructions that do not make sense when put together, so we’re allowing the compiler to assume that you’re not going to do this” code.
That said, UB is typically the result of “clever” programming that ignores best practices, aside from extreme cases prosecuted by the fiercest language lawyers (like empty while(true)
loops that may or may not boot Skynet, or that one time that atan2(0,0)
erased from this universe all traces of Half Life 3).
Of all the things the article could have used to make its point, they should have mentioned the issue of type punning through type aliasing (fancy words for "reinterpret_cast from uint32_t*
to std::float32_t*
"), which is something that can realistically lead to incredibly sneaky bugs with all popuplar compilers.
I’m being peer-pressured into playing it with friends, it’s an ok game. The quality is there, it’s full of content, though I wouldn’t say my lack of hype was misplaced - I’d still rather play some other niche games in my library.
What rubs me the wrong way is it’s GPU load even with lower graphical settings, and the hundred gigabytes of mandatory high-res textures and whatnot;
I find the UX clunky and infuriating at times, which is not ideal but acceptable for the genre.
What I really respect BG3 (and Larian) for is that its overall a very solid game and it’s making the AAA industry seethe, apparently.
It’s also DRM-free, but I would definitely buy it rather than Steam-Familying it if I were into its subgenre (and if it wasn’t a GPU hog).
I absolutely loathe double tap to dodge mechanics.
Terraria does this, everyone who played it with me thinks it’s reasonable to fear accidentally dodging into an enemy when trying to walk slowly with a keyboard.
This is 10 times worse on controllers, because dodging just becomes irritating and janky as fuck - if I need to dodge a bullet, I don’t want to fight the kinetic energy of my finger for an entire fourth of a second and hope I am fast enough.
Wdym? flamingo_pinyata’s explaination was quite useful, I wish somebody had told me that long ago and it’s still going to let me save so much time.