Sign in

Mara

@maraneshi.bsky.social
148 followers 387 following 75 posts

Sometimes works on game engines. She/Her. More tired than you could ever imagine. 🏳️‍⚧️🏳️‍🌈 @Maraneshi@mastodon.gamedev.place x.com/Maraneshi

PostsRepliesMedia
Mara @maraneshi.bsky.social · 10/09/2026
To be clear, this is 5 figures of equipment/materials and weeks of work to produce 20 bits of raw memory at mid 80s transistor size. He could maybe get to kilobytes with this process. Still really cool and impressive, but the article is misleading because it has no relevance to current time issues.
130
Mara @maraneshi.bsky.social · 23/06/2026
Still better than my store which is playing their own hip hop song about their organic food products.
010
Mara @maraneshi.bsky.social · 05/06/2026
Quake 2 guy when you ask him to jump: SURE!
000
Mara @maraneshi.bsky.social · 13/05/2026
Descartes is actually "des Cartes" (originally "des Quartes" apparently?), like "van Beethoven", "de Gaulle", etc. It's just that at some point (French Revolution?) they decided to drop this sort of spelling and normalize to a singular last name, so we get "Descartes", "Leclerc", "Delacroix" etc.
120
Mara @maraneshi.bsky.social · 03/05/2026
One of the top competitive Quake players told a story about how he went to his first tournament and only then found out that everyone except him and his brother was playing with mouse, which was new to them. Since then he's played with left mouse button moving forward and right mouse backwards.
010
Mara @maraneshi.bsky.social · 25/04/2026
One metro station I was at recently had a custom made song that used the ticket scanner validation sound as an instrument. I'm not entirely sure where that falls on the crime scale.
100
Mara @maraneshi.bsky.social · 23/04/2026
The industry has moved to larger wafers over time because it decreases cost and increases throughput. 300mm has worked out to be a sweet spot for advanced fabs and 150-200mm for fabs on older processes that produce small cost sensitive chips like power management ICs or RF chips.
000
Mara @maraneshi.bsky.social · 23/04/2026
I'm confused why you have a table of fabs by wafer size and then seemingly refer to the smallest wafer size as the most advanced fabs. It's generally going to be the opposite outside of experimental non-silicon materials. A smaller wafer does not mean the chip you produce on it has smaller features.
210
Mara @maraneshi.bsky.social · 19/04/2026
You don't have to bother, this is a fake post about something that doesn't exist. These kinds of viral "good feels" posts with zero sources have been going around a lot lately, there's many accounts dedicated to creating and boosting them, especially on Twitter but now also here.
110
Mara @maraneshi.bsky.social · 18/04/2026
But then they'll look at 2ms vs 4ms and say "it's 50% faster!". Hardware reviewers do this all the time, especially when they compare relative perf from absolute time vs rate measurements and it drives me up the wall. There's no winning.
000
Mara @maraneshi.bsky.social · 04/04/2026
I don't want to put the guy on blast, but scrolling down this timeline I don't see how anyone can come to the conclusion that this was the slop generator team. bsky.app/profile/luke...
bsky.app
020
Mara @maraneshi.bsky.social · 04/04/2026
Where did you read "GenAI team"? The term "AI" has been used in games for decades, it does not inherently have anything to do with the current trend. Somebody has to program your NPC behaviors, your strategy game opponent, your procedural content generation tools, etc. This was that team.
230
Mara @maraneshi.bsky.social · 04/04/2026
Why would people working on real game technology and denouncing genAI being laid off be a good thing?
110
Mara @maraneshi.bsky.social · 04/04/2026
The head of this team has been publicly outspoken against LLMs and generative AI, which is probably *why* they now got axed. This is not good.
130
Mara @maraneshi.bsky.social · 18/03/2026
I get that it looks like a photo at first glance and the whole "sexier women and whiter men" being popular is also expected of course (sigh), but I really don't understand how AI has become such a mind virus that people will vehemently defend this shit.
100
Mara @maraneshi.bsky.social · 18/03/2026
I'm *baffled* that there are devs who like this. Graphics ppl proudly post nigh-indistinguishable comparisons of their tech, they've literally been pixel peeping their entire career and now suddenly nonsensical lighting coming from nowhere is amazing?
100
Mara @maraneshi.bsky.social · 16/03/2026
And honestly, if it wasn't trained on model photoshoots, why is it also adding makeup to all the faces? Clearly this isn't just "guesses what a better lighting algorithm could look like".
010
Mara @maraneshi.bsky.social · 16/03/2026
But yeah I guess I don't know for sure what it's trained on, it just reminds me so much of professional overdone photo edits and wholesale AI generated "photos".
110
Mara @maraneshi.bsky.social · 16/03/2026
But I see this in the background of the RE9 street scene as well for example. There's always seemingly a fill light appearing behind / to the side of the camera when they turn on DLSS 5, so that everything is perfectly lit from the front. You can even see it reflected in the eyes in some shots.
110
Mara @maraneshi.bsky.social · 16/03/2026
The whole non-directionality of the lighting reminds me *very* much of indoor studio photos, it's especially obvious in the faces of course, like this one where it removed the shadow from the clothes entirely (and made the guy white) because there's a magic floodlight behind the camera with DLSS 5.
Normal guy with normal lighting, his hat casts a shadow across his face, his collar a shadow on his neck and clothes.DLSS 5 Yassified guy made to look more white, his entire face is perfectly lit from the front, almost all shadow is removed from the picture apart from small scale AO.
161
Mara @maraneshi.bsky.social · 16/03/2026
Yeah, the model knows nothing about the lighting. It gets a color buffer and motion vectors and pretends you have lights setup out of frame for a studio photoshoot, because it's presumably trained on professional photos and maybe highly edited film. Shadows aren't allowed, apart from localized AO.
111
Mara @maraneshi.bsky.social · 09/02/2026
It's not a good game, but nobody can say they didn't at least try to make something cool. A memorable game one way or another. I'm still massively impressed by their cutscene and camera direction, it's so dynamic and high effort even if over the top and goofy sometimes.
110
Mara @maraneshi.bsky.social · 06/02/2026
Here's a RenderDoc shot with the projected shadow/light and a generic smoke particle, plus some more examples. The last one smoothly "trims" the particles into a perfect cone shape matching the spot light cone. Also works surprisingly well as a bloom effect, there's no post processing here.
Screenshot of the graphics debugging tool RenderDoc showing the scene from the video above. You can see a large particle quad with two textures being applied to it, one is the shadow from the fan above, the other is a generic ball of smoke.More particles mimicking volumetric lighting through a ceiling window. One may notice the shape of the "shadow" on the particles doesn't particularly fit the scene here, it's a shared texture with the scene from the next screenshot, presumably to save memory.More fake volumetric lighting through a window on the side of a structure.Search lights illuminating the "air" in front of them by emitting particles that are then shadowed by a projected texture to form a perfect cone shape matching the spot light. The overlapping particles plus the light's flare sprite create a nice bloom effect.
0301
Mara @maraneshi.bsky.social · 06/02/2026
A while ago I was surprised to find some obscure game from 2003 (Chaser) to have *really* great fake volumetric lighting by using static textures projected onto particles. Projectors weren't entirely new, but I don't remember *any* sort of lighting on particles being common back then.
2591
Mara @maraneshi.bsky.social · 28/11/2025
Also to the original point: LLMs would help exactly nothing with any of this. A lot of it is not documented and it would be impossible for a machine to infer this much context and connections just from code. Even if I wasn't already against using it, it would be practically useless for this codebase
010
Mara @maraneshi.bsky.social · 28/11/2025
Also we have a spy class that can disguise itself as any other character in the game by effectively changing its soldier preset but then undoing some of the changes, which is a super awesome mechanic but you can imagine how this is yet another nightmare stacked on top. TLDR: Games were a mistake.
110
Mara @maraneshi.bsky.social · 28/11/2025
So then people go and add hacks to individual scripts on the soldier itself to re-check on creation which zones they are currently inside, which then crashes because it's calling back into other scripts which weren't created yet so it needs a timer, etc...
100
Mara @maraneshi.bsky.social · 28/11/2025
Different soldiers can also have different gameplay scripts attached, some of them quite complex, so scripts need to be recreated from scratch on change. Unfortunately that means if you're in a zone that attaches a script to you when you enter, that script is detached when you change characters.
100
Mara @maraneshi.bsky.social · 28/11/2025
Any time you add functionality to the soldier class you need to make sure it's initialized correctly both on the initial creation of the object and on respawn/character change. We once had a bug where if you died or changed characters you could no longer damage yourself with your own explosions.
110
Mara @maraneshi.bsky.social · 28/11/2025
However you can also buy different types of soldier presets during gameplay, so it does need to reinitialize quite a lot more stuff. This also means in many places you cannot distinguish in code whether a player respawned after a death or bought a new character class.
100
Mara @maraneshi.bsky.social · 28/11/2025
This reminds me of fun things in W3D: The "soldier" objects owned by players are never destroyed until disconnect, which for example means that you can't respawn until the death animation has fully played out since respawning is teleporting your existing soldier that is currently in "death" state.
100
Mara @maraneshi.bsky.social · 25/11/2025
Yeah I'm not sure, but maybe it can't automatically find i in A because it could also be dependent on T or something. The fun part is where if you also have a global variable named i and you don't qualify A::i then it will increment that global instead, except if you are in MSVC permissive mode.
010
Mara @maraneshi.bsky.social · 25/11/2025
There's a long explanation of this behavior and what kind of issues you can encounter with it here: devblogs.microsoft.com/cppblog/two-...
devblogs.microsoft.com
Two-phase name lookup support comes to MSVC - C++ Team Blog
点这里看中文版 This post written by Tanveer Gani, Stephan T. Lavavej, Andrew Marino, Gabriel Dos Reis, and Andrew Pardoe “Two-phase name lookup” is an informal term that refers to a set of rules governing th...
110
Mara @maraneshi.bsky.social · 25/11/2025
MSVC still defaults to permissive/non-standard mode, where templates are only checked/compiled when instantiated. If you add /permissive- to the command line it will also complain, because then templates are syntax checked at the point of definition, which is the indended standard behavior.
111
Mara @maraneshi.bsky.social · 09/11/2025
Killing or knocking out or avoiding enemies was a true choice in DX, but in DXHR everything *must* be wholly systemized and every action within that system *must* have an immediate reward, making you think about that instead of the action itself. Same with pretty much every other mechanic.
010
Mara @maraneshi.bsky.social · 09/11/2025
You *can* make good games that way and I certainly enjoy systems-oriented games, but I miss a more world/goal oriented design in some ways. IIRC the original Deus Ex mostly gave you rewards for meeting goals, not the individual actions that lead to them, so you actually felt free in your choices.
110
Mara @maraneshi.bsky.social · 09/11/2025
I'm not a designer but I've been thinking this a lot lately, where especially newer games are entirely action/system oriented in their rewards and the overall design and how it turns everything into an instant-gratification numbers game and reduces the world to pretty set-dressing over those systems
120
Mara @maraneshi.bsky.social · 25/09/2025
What is lighting? Also the original lipsync was bugged so we slapped slow interpolation on it and made it look like a bad cartoon animated for another language instead.
Screenshot from Deus Ex Remastered, showing pitch black walls right next to overly bright lighting.
000
Mara @maraneshi.bsky.social · 21/08/2025
Unity documents that it does apply the factors even for min/max, but it can't actually do that since no graphics API supports that (I checked OpenGL, Vulkan and D3D). What's likely happening is that not specifying blend factors in Unity means blending is *disabled entirely*.
110
Mara @maraneshi.bsky.social · 29/07/2025
Since not all possible byte values even *make sense* for UTF-8 (unlike UTF-16), as in they are not even code units at all, there's no way to make a "messed up" encoding like WTF-16/8 out of this and you either have to actually support arbitrary byte sequences or assume UTF-8 and hope for the best.
100
Mara @maraneshi.bsky.social · 29/07/2025
they can still fit the general idea because all code units [0x0000, 0xFFFF] *can* be used in a legal encoding. On Linux, the situation is hopeless because technically file names have no encoding whatsoever (may depend on file system), only the byte values for ASCII nul and slash are illegal.
100
Mara @maraneshi.bsky.social · 29/07/2025
Windows filenames are mostly arbitrary bytes and thus WTF-16 can have those "surrogates" as individual values instead of pairs. This can then still be encoded in an extended form of UTF-8. So even though we have arbitrary bytes and some of them are not legal code *points*,
100
Mara @maraneshi.bsky.social · 29/07/2025
Summary as far as I understand: In UTF-16, all 16-bit values from 0x0000 to 0xFFFF are used and legal, but [0xD800, 0xDC00) and [0xDC00, 0xE000) are supposed to come as pairs to encode larger code points using the lower bits in each value (two 16-bit "code units" to make one "code point").
100
Mara @maraneshi.bsky.social · 29/07/2025
Yes. Basically, OSes like treating file names as just bags of bytes, so you can create filenames that are not valid UTF sequences. This has been dubbed the Wobbly Transformation Format (WTF). It's usually used with regard to Windows, but I believe Linux has the same issue simonsapin.github.io/wtf-8/
simonsapin.github.io
The WTF-8 encoding
112
Mara @maraneshi.bsky.social · 29/07/2025
Make sure to also learn about WTF-16!
100
Mara @maraneshi.bsky.social · 29/07/2025
Ugh, scratch that, I was blind. Both compilers insert the prefetch loop at the end, which makes a lot of sense because the "else" case is universal and only refers to the second "if", so it will always execute even if the first if condition is true when you don't chain them with "else if" correctly.
110
Mara @maraneshi.bsky.social · 29/07/2025
Both. Unfortunately it seems the problem is quite a lot more mysterious because I'm getting the exact same codegen for the measured section on MSVC, but the perf difference is consistently measurable. On Clang there is at least a slight difference in how the loop is unrolled (MSVC doesn't unroll).
110
Mara @maraneshi.bsky.social · 29/07/2025
Also, I propose the "pipeline" mode optimization should be called "loop unrolling but I went too far".
110
Mara @maraneshi.bsky.social · 29/07/2025
My initial instinct was that the pointers should be pre-sorted, but of course that only helps if there is some actual data locality, so I had to reduce the test set to <32kB to get any actual benefits. The sorting would have to take place whenever the pointers get modified, not when you query them.
110
Mara @maraneshi.bsky.social · 29/07/2025
In another case of "benchmarks are hard", the "original" becomes a bit faster (~15% for me) if you change "if (Mode == kPipeline)" to "else if". Since Mode is a template parameter anyways, upgrading to "if constexpr" should absolutely ensure no weird side effects on code gen from the branch.
220