Sign in

Sam Bloomberg

@xbloom.io
51 followers 87 following 167 posts

Principal Gameplay Engineer Formerly 1047 Games (Empulse, Splitgate Arena Reloaded), Xbox/SQTech/343i (Halo Infinite)

PostsRepliesMedia
Sam Bloomberg @xbloom.io · 1m
I'm always pleasantly surprised when I dig into a complex material graph in unreal and find that the majority is custom HLSL nodes so I don't have to try to follow all of the spaghetti.
000
Sam Bloomberg @xbloom.io · 9m
the source code or generate temp materials to see what exactly they're doing for each option.
000
Sam Bloomberg @xbloom.io · 9m
Yeah that's how I'd probably build a better workflow out of what's there, it's just unfortunate that the engine doesn't seem to have that already done for you - there's a "standard" way it implements all the features in the default material, so it's unfortunate I have to go digging through...
110
Sam Bloomberg @xbloom.io · 15m
I know, but that's taking the unreal side of the workflow - it's not really the middle-ground I'm looking for.
110
Sam Bloomberg @xbloom.io · 21m
And sure, that's not a lot, but purely on the workflow side of things it feels bad - like the engine is punishing you for not knowing every feature you wanted to enable from the get-go, so now you have to write those features into your shader manually.
010
Sam Bloomberg @xbloom.io · 21m
They do hide some of it away - you're basically writing to metallic/specular/roughness outputs instead of doing the PBR calculations yourself, but there are a ton of extra features that are simple toggles on the parameter-based materials but end up generating sometimes 5-10 additional lines each.
100
Sam Bloomberg @xbloom.io · 28m
It just sucks that with Unreal's implementation you also don't have an easy option for integrating your own hand-written shaders without a lot of extra pain.
000
Sam Bloomberg @xbloom.io · 28m
I'm sure there are other solutions out there that are more of a middle ground (like being able to say "use default implementations for everything except this one output") but ugh I'll take unreal's material graphs over managing Godot's unmaintainable nonsense almost any day.
200
Sam Bloomberg @xbloom.io · 28m
but it's a destructive process which is such a pain in the ass if all you want to do is write code for one small thing. Find out later you need to enable another feature of the standard material? You're either writing that code yourself or regenerating your shader and patching changes back in.
200
Sam Bloomberg @xbloom.io · 28m
Because on the opposite end of the spectrum... Godot is such a pain when it comes to materials. You can either fill out parameters for their standard PBR material (so no custom code) or you can write a shader by hand. You can have the PBR material generate the equivalent shader code...
100
Sam Bloomberg @xbloom.io · 28m
I like it as a method for writing shader code that still uses the core material parameters an engine provides - so I can plug in some math to manipulate base color/metallic/roughness/etc while still rendering the same way as a pure texture/parameter-driven material otherwise.
100
Sam Bloomberg @xbloom.io · 03/10/2026
purely around being the most accessible possible versions of themselves instead of what we got with the duality between regular cryo and vault breaker.
010
Sam Bloomberg @xbloom.io · 03/10/2026
be approached in a very different way than normal cryo - that is to say, I do think something is lost in vault breaker compared to normal cryo. It is still worth having, as more people should be able to experience cryo and accessibility is good, but I worry about future experiences being designed
110
Sam Bloomberg @xbloom.io · 03/10/2026
Vault breaker showed that cryo can be made accessible to a wider audience and is, I think, a really really fun mode that does a great job teaching the map and potentially provides a template for how to make more difficult PvP experiences accessible via PvE, but it is also very different and must
110
Sam Bloomberg @xbloom.io · 03/10/2026
Anyway... marathon is legitimately good if you can stand extraction shooters. It's unfortunate that some of the best level design in a PvP shooter is so inaccessible, but I also worry what would have been lost if it hadn't been that way initially.
100
Sam Bloomberg @xbloom.io · 03/10/2026
and the way that cryo manages to create an entire progression loop unto itself with security cards/batteries/coolant/keys/credentials. Outpost has the cards but not quite as much of the strategy - it's a good introduction to what cryo eventually asks you to do, but it doesn't have the depth.
100
Sam Bloomberg @xbloom.io · 03/10/2026
manages to create near constant close-quarters battles (something that's relatively uncommon on other maps) without feeling suffocating - something Outpost's pinwheel gives a taste of, but pinwheel doesn't have nearly the complexity in escape and flanking routes that cryo does once you learn the map
110
Sam Bloomberg @xbloom.io · 03/10/2026
(particularly in how high-level players can get into other players' spawn areas much too fast these days), the highs of cryo are really just unmatched. The sheer amount of stuff in the map is incredible, the mystery when it initially released, the interconnected design of the map, the fact that it
110
Sam Bloomberg @xbloom.io · 03/10/2026
I also find it a shame that we'll probably never get another map like cryo archive - it is, legitimately, one of the best experiences Bungie has put together, up there with some of the best raids of Destiny. Despite how frustrating it can be, and despite some tweaks I'd like to see them make
100
Sam Bloomberg @xbloom.io · 03/10/2026
both PvE and PvP. But I also worry that we'll lose part of what makes Marathon special, even if the wider gaming audience doesn't see what that is. I'm not saying we will, but any major pivot in focus inevitably brings about that worry.
100
Sam Bloomberg @xbloom.io · 03/10/2026
Anyway... I do hope they manage to turn things around. I think they would have needed to pivot to more PvE experiences regardless (as Arc is doing the same), and Vault Breaker already showed just how good even "simple" versions of that can be great. Marathon's gameplay works amazingly well for
110
Sam Bloomberg @xbloom.io · 03/10/2026
I think some of the hardcore-ness is a bit overblown, but Marathon very purposefully styles itself as being in a very hostile world where everyone and everything is out to get you - it's part of the tone of the game, and not having that would lose something.
100
Sam Bloomberg @xbloom.io · 03/10/2026
less accessible and therefore even if you could objectively say it is better in general (which is not an argument I'm making) you couldn't say that for a decent portion of Arc's audience as they'd simply not want to try it given the seemingly more "hardcore" tilt of the game.
100
Sam Bloomberg @xbloom.io · 03/10/2026
separated from Arc's release by a longer period of time it would have done much better. Arc's massive success meant that Marathon was never going to pull people away from it without being at least (pulling numbers out of my ass) 30% better, and while I love the game the reality is that it is simply
100
Sam Bloomberg @xbloom.io · 03/10/2026
the basic game is that good (outpost + cryo archive both being *incredible* maps - easily some of the best multiplayer level design out there - helps quite a bit, too). But I think it suffered by being too close to Arc Raiders - in a world where Arc either didn't exist or even if it had been
110
Sam Bloomberg @xbloom.io · 03/10/2026
timing more than anything. Maybe it's just the way I play these types of games nowadays but for once it feels like it's a game that launched with the right amount of content for what it is - it's held my attention for the better part of two seasons without adding all that much new stuff just because
100
Sam Bloomberg @xbloom.io · 03/10/2026
Just thinking about marathon a bunch recently, as the final cryo archive weekend of the season rolls is here... I really do think that in a slightly different situation the game would have been a much bigger success. Naysayers about the genre aside, I think Marathon was a victim of particularly bad
110
Sam Bloomberg @xbloom.io · 02/10/2026
My previous blockout does the same, though it's not as obvious since it's to transition between brushes that don't otherwise line up as opposed to going from a high detail section to low detail.
000
Sam Bloomberg @xbloom.io · 02/10/2026
The animation is in world space so adjacent brushes will line up their animations *if* adjacent edges share vertices, so I have to slice up brushes a bit weirdly to transition from higher detail sections to lower detail.
100
Sam Bloomberg @xbloom.io · 02/10/2026
The water is subdivided like this because it gets animated in the vertex shader, so I need to have additional verticies for that animation to work with.
100
Sam Bloomberg @xbloom.io · 02/10/2026
Working on yet another blockout...
100
Sam Bloomberg @xbloom.io · 30/09/2026
for comparison...
000
Sam Bloomberg @xbloom.io · 30/09/2026
Gameplay volumes make this map truly incomprehensible.
101
Sam Bloomberg @xbloom.io · 30/09/2026
Finally finished a bunch of more underlying technical work, so starting on a new blockout. Wanted to make something more open-ended and with canals/waterways for this one.
100
Sam Bloomberg @xbloom.io · 29/09/2026
Yeah something like that had been my first idea - all of my textures are organized into "type" folders (grass/brick/glass/carpet/etc) but i don't love outright requiring such a rigid structure since there are always exceptions. Godot metadata is quite nice, just needed a tool to mass-assign it :)
010
Sam Bloomberg @xbloom.io · 28/09/2026
Doesn't solve for non-brush geo but for static meshes I generally only need a single surface type so I assign that on the mesh itself with the same metadata key.
010
Sam Bloomberg @xbloom.io · 28/09/2026
so I added a "surface_type" metadata to each texture resource, and wrote a simple context menu plugin to allow mass-assigning surface types. Makes lookup at runtime pretty easy, no static table of surface types to maintain, and it's easy to make new surface types and assign them out.
210
Sam Bloomberg @xbloom.io · 28/09/2026
func_godot mesh metadata as you probably are already aware, but even once you have texture paths you still need to map them to some kind of "surface type" resources to select the proper audio to play. Building a global map of textures to surface types is a bit messy to maintain...
110
Sam Bloomberg @xbloom.io · 22/09/2026
Basic art pass for this level mostly done. With the new light-based stealth mechanic. youtu.be/BHfxbrXHv4s
youtu.be
Level 3 Art Pass
YouTube video by siliex
010
Sam Bloomberg @xbloom.io · 21/09/2026
I still need to go and optimize this properly - right now the texture readback and resize is done on the CPU, ideally it'd be via a compute shader, but that can come later.
000
Sam Bloomberg @xbloom.io · 21/09/2026
The AI uses the luminance value to attenuate the distance at which and time it takes to detect the player (distance/time percentages in the debug window).
100
Sam Bloomberg @xbloom.io · 21/09/2026
Luminance is averaged over a few seconds, which solves gameplay issues (small buffer of time to react to lighting changes), UI issues (eye icon animates smoothly while still representing exact game state), and fixes the value oscillating rapidly in some areas.
100
Sam Bloomberg @xbloom.io · 21/09/2026
Implementation is simple - a pyramid shape is at the player's position, rendered as lighting-only with a camera + 32x32 subviewport on a separate render layer. This is then resampled to 1x1 and the luminance value (0-1) read out (Inst. Luminance in the debug window).
100
Sam Bloomberg @xbloom.io · 21/09/2026
And now... Thief-like light detection. Wasn't originally planning on implementing this but it solves some situations where I felt I shouldn't be visible but enemies could spot me anyway, without having to adjust level geo or add manual visibility blocking volumes.
110
Sam Bloomberg @xbloom.io · 21/09/2026
And a bit more...
000
Sam Bloomberg @xbloom.io · 20/09/2026
Starting on another quick art pass for a third level.
110
Sam Bloomberg @xbloom.io · 19/09/2026
New ranged enemy! And some other miscellaneous polish - dead bodies (which enemies can see and investigate) weapon switcher HUD elements, and some new audio implementation.
000
Sam Bloomberg @xbloom.io · 19/09/2026
It is very funny to me that Bad Rats, a game that came out over 15 years ago and has basically been used as a joke-gift on steam, ended up in the "Artwork" section of that festival somehow.
the artwork section of the festival being discussed, showcasing a link to "Bad Rats"
020
Sam Bloomberg @xbloom.io · 17/09/2026
Doing just enough of an art pass to give this level the right vibes I think. Also got room-based reverb and acoustics working for first-person sounds (footsteps/weapon fire), it really makes a difference in making you feel like you're in the space.
000
Sam Bloomberg @xbloom.io · 17/09/2026
Crazy how quickly this is coming together, just from applying a few textures. Only an hour or two of work (some of which was unrelated, spent some time improving the behavior of doors and NPCs)
000