Wow that looks so involved! Will definitely look into this.
Wow that looks so involved! Will definitely look into this.
Any recommendations on games using this engine? I’ve been playing Java Edition again lately but am always open something new.
They’re going to keep making more powerful hardware either way, since parallel processing capability supports graphics and AI just fine.
It’s not quite as simple as that. AI needs less precision than regular graphics, so chips developed with AI in mind do not necessarily translate into higher performance for other things.
In science/engineering, people want more—not less—precision. So we look for GPUs with capable 64-bit processing, while AI is driving the industry in the other direction, from 32 down to 16.
This reminds me of when I had to roll my own dynamic memory allocator for an obscure platform. (Something I never want to do again!) I stuck metadata in the negative space just before the returned pointer like you say. In my case, it was complicated by the fact that you had to worry about the memory alignment of the returned pointer to make sure it works with SIMD and all that. Ugh. But I guess with strings (or at least 8-bit-encoded strings), alignment should not be an issue.
Oh, so you’re talking about text representation in an editor or something along those lines? That’s kind of a separate problem isn’t it?
At the lowest level though, I suppose you still need to consider whether to use null-terminated segments. I think I’d still be going length + data, though I wouldn’t worry about packing down the length representation like with serialization formats. Your code will need to be highly cognizant of the length of strings and managing dynamic memory allocation all over the place, so it’s good to have those lengths quickly accessible at all times.
Better in what sense? I put some thought into this when designing an object serialization library modelled like a binary JSON.
When it got to string-encoding, I had to decide whether to go null-terminated vs length + data? The former is very space-efficient, particularly when you have a huge number of short strings. And let’s face it, that’s a common enough scenario. But it’s nice to have the length beforehand when you are parsing the string out of a stream.
What I did in the end was come up with a variable-length integer encoding that somewhat resembles what they do in UTF-8. It means for strings < 128 chrs, the length is a single byte. Longer than that and more bytes get used as necessary.
Honestly, I wouldn’t mind if they made a version that just stays in one age indefinitely and lets you explore it in an open world sort of way?
Like take Minecraft. I played that for years without even knowing there is an end game, and it came as something of a shock when someone told me. You can finish Minecraft?!?
But then I was like meh, leave me alone. I’m trying to build Noah’s Ark with a functioning village on top and a crystal waterfall down to the animal sanctuary below. And I still haven’t completed the Mars colony. Wonder how the pandas are doing over there?
We need to watermark insert something into our watermark posts that watermark can be traced back to its origin watermark if the AI starts training watermark on it.
I don’t really have an answer for you, but can say when recompiling older codebases (some in C and some in C++) using a modern C++ compiler, typing errors are among the most common I have to address. In particular, compilers seem to insist more on explicit casts for type narrowing, which is a good thing. But I don’t know about modern C itself? It wouldn’t surprise me if the language has become stricter.
1st reaction: lmao
2nd reaction: hey wait, this is pure genius!
Huh… I always thought Stalin was the most Mario-looking dictator.
Overclockers have already had it running at 9.1GHz with liquid helium cooling, and it potentially offers an enormous amount of processing power if you water cool your PC.
Well, maybe then you can run Cities: Skylines II…
Ooh this looks right up my alley…thanks for posting!
Oh interesting, so there’s a glimmer of hope at any rate. Thanks for the feedback! Maybe if there’s a big steam sale…
True. That could be deadly with a sim since the amount of detail grows like crazy as you build it up. Even the amount of RAM it would take to store all those polygons sounds insane!
Even the old game had a noticeable dip in performance by the time you were building airports and stuff, though it never reached deal-breaker levels for me. I suspect you’re right that it’s the modelling?
That’s a shame. I played tons of the original game and must’ve got most of the DLC over the years, but while 2 looked awesome in demo clips, the system specs were outrageous. Above my pay grade lol!
I wonder where the performance bottleneck lies? Is it graphics or modelling the city? I know in the demos it looked almost photo-realistic, but tbh I don’t need that. The new gameplay elements like better control over traffic at intersections were the interesting part to me.
Apply LZ Compression and boom.
That would produce a binary stream. If that’s what OP wants, they could just leave the original hash in binary. And that would be unlikely to compress any further since hashes are, by their nature, high entropy already.
You could try base64 maybe? The above would be: Z3nFNDK4ut8Em7nYkkpXhd2IckM= (28 chrs)
base64 uses A-Z, a-z, 0-9, and the + and / characters to encode 6 bits per character. That means you can encode every 3 bytes (or 6 hex) in 4 characters (since 3 * 8 bits = 4 * 6 bits). If the data are not a perfect multiple of 3 bytes, the last group of 4 characters gets padded out with = signs.
Looks gorgeous! Thanks. You’ve got me exploring what there is to explore. :)