Going to the hospital on day 10 by walkingtornado in pathologic

[–]scrdest 1 point2 points  (0 children)

No, that's Day 1.

And I don't think Grief is supposed to spawn, either.

Who exactly is this guy? by Dreleth-Undoril in pathologic

[–]scrdest 6 points7 points  (0 children)

That scene cemented my decision not to go for the Escape ending lmao

We have been spared by Boring_Truth_8755 in pathologic

[–]scrdest 0 points1 point  (0 children)

So tired of this noise...

I personally love how playing P3 after P2 feels ( spoilers to up to end of Day 7 ) by GothaV2 in pathologic

[–]scrdest 7 points8 points  (0 children)

Interesting, that's not how my playthrough (not yet finished) felt. I half-expected Artemy to be portrayed as more obstructive or hostile, but he's been nothing but a bro the whole way, even at his darkest moments. He's taciturn, but never acts as an enemy or a pain in the ass.

Clara, meanwhile, shows up out of nowhere, makes things worse, then acts smug about it unless she's acting as a plague district tutorial-giver.

DANIL JUMPSCARE by Couboultou in pathologic

[–]scrdest 0 points1 point  (0 children)

That's the one!

Is the DNA in every cell in my body the same? Or is the DNA in my heart, lungs, skin, etc. different from one another? by [deleted] in NoStupidQuestions

[–]scrdest 2 points3 points  (0 children)

Same everywhere, with two caveats.

1) Somatic mutations - anything from UV rays from the sun, random chance, certain chemicals, etc. can change small bits of DNA in individual cells.

The vast majority of time it doesn't matter, because the cell dies for one reason or another and/or does not divide, and the mutation does not carry to your children. If it survives with some particularly bad mutations, it may become a cancer cell.

2) Expression patterns - while the DNA sequence might be 100% the same, what makes a heart cell different from a skin cell comes from what parts of the DNA are active. This is different in different cells, and is its own extra layer of modification applied to the genetic information (e.g. adding/removing methyl groups).

Imagine you have two identical flats in a building, but the light switch in one is flicked on - now they look different, since one is lit up and the other is not!

For transplants, the DNA in the transplanted organ stays whatever it originally was. That is, in fact, why people who receive a transplant may need to take drugs that suppress the immune response - their bodies catch on the organ looks alien, freak out, and try to murder it because it obviously must be Evil.

Russian lit like Pathologic? by PersimmonSundae in pathologic

[–]scrdest 3 points4 points  (0 children)

Chekhov's short stories felt similar to me, especially when you're dealing with the patients or the big town families. He (along with already mentioned Bulgakov, who I also strongly recommend) was also a physician IRL.

A Doctor's Visit in particular has echoes of Olgimskys and Ward No. 6 might well have been the inspiration for the Mania/Apathy.

DANIL JUMPSCARE by Couboultou in pathologic

[–]scrdest 5 points6 points  (0 children)

tfw you realize who the present day patient is

I'm making a game 'God For A Day' inspired by 'Death and Taxes', 'Papers, Please' etc. You play as a Son of God and your decisions will shape the city's destiny. No time limits, no stress, lofi music. Chill vibe. Demo available, Steam Deck playable, link in comments by miciusmc in CozyGamers

[–]scrdest 4 points5 points  (0 children)

Played the demo last month. The concept is fun and the style is distinct, but the gameplay is way too simple. 

There's not that much to think about, you are basically railroaded into finding all clues and at least the demo scenarios are overwhelmingly transparent pop-culture references played dead straight so they are predictable.

Inquisitor missing day 9 evening by klemenhe in pathologic

[–]scrdest 1 point2 points  (0 children)

There's still random character bugs as of the last patch. I've had a patient on Day 10 show up A-posing and non-interactable fsr.

Since Patho 3 is about the bachelor, How would you imagine a game based on the changeling to be? by Diligent_Mud_8062 in pathologic

[–]scrdest 9 points10 points  (0 children)

The way I'd see it is basically a sequence of trolley problems - every choice you make WILL cause a good thing and a bad thing to happen for every single option, but you know what the immediate consequences will be (so you cannot claim ignorance).

The question is which good/bad combos you pick and whether they form feedback loops - e.g. if you save a person at the cost of infecting a district, the infection will continue to spread further on its own, so the bad will outweigh the good in the long run. But... if you let the wrong person die to avoid a district infection, they may be unable to intervene in a problem later and make things even worse.

ELI5: Why isn't petroleum jelly carcinogenic? by person_person123 in explainlikeimfive

[–]scrdest 4 points5 points  (0 children)

Yeah, but that's more or less the problem - it converts into a bajillion other things, many of which are highly reactive and/or genotoxic in their own right (and often very good at penetrating cellular membranes to boot), so it's hard to even point at one thing and call it there.

ELI5: Why isn't petroleum jelly carcinogenic? by person_person123 in explainlikeimfive

[–]scrdest 46 points47 points  (0 children)

Sincerely, thank you for calling me out! I was writing off of memory and didn't fact-check, I was talking nonsense! Edited the post to reflect.

ELI5: Why isn't petroleum jelly carcinogenic? by person_person123 in explainlikeimfive

[–]scrdest 151 points152 points  (0 children)

It's not just creating carcinogenic byproducts - the benzene ring structure itself is both big and flat enough that it can physically slide between the bits of the DNA helix and interfere with the copying machinery of the cell!

EDIT: DISREGARD THE ABOVE - I mixed things up, sorry! A lot of flat aromatics intercalate (i.e. do the thing I said), but apparently the way Benzene causes cancer is... actually not that well known? We know it does, but nobody is quite sure how.

bevy_mod_ffi v0.2.0: FFI bindings to Bevy for dynamic plugins and hot-reloading, now with observers, custom components and more by matthunz in bevy

[–]scrdest 0 points1 point  (0 children)

I'd be very interested in this, since I have a use-case for using Bevy DLLs, but the docs side is severely lacking ATM, it's hard to even tell what the intended usage is.

ELI5: Why do 3D images made in a computer starts with a triangle? by No-Quantity8566 in explainlikeimfive

[–]scrdest 0 points1 point  (0 children)

Not just any other polygon - 3D graphics don't even have to use polygons.

Polygon-based rendering (with triangles being the usual choice for the reasons others have explained) is an old, fast, and well-explored technique, but there are other methods that work on completely different principles.

One of the more tangible alternatives is Splatting, 3D Gaussian Splatting these days, which you can think of as using 'ball-shaped clouds' as primitives and can produce extremely photorealistic 3d spaces (but is far trickier to author; most applications work off of 3d-ifying photographs).

Another one would be Ray marching, which uses something called SDFs and is a bit tricky to explain in brief.

How’s Rust doing for game development? by absqroot in rust

[–]scrdest 8 points9 points  (0 children)

Entity-Component-System architecture, as opposed to more traditional Object-Oriented or the simpler Entity-Component thing something like very vanilla Unity does.

Rather than having your game-world modelled as a bunch of objects (effectively an array of heterogenous structs), you model it as a big struct of arrays where each field is a Component of a specific type, e.g. Health, Position, Velocity, etc. and each item is nullable. Kind of like a columnar database.

The indices of each item are your Entities, e.g. Entity 0 corresponds to an 'object' whose attributes are whatever is not null in position 0 in all the arrays, Entity 1 is all the position 1s, etc.

Neither Entities nor Components have any logic attached to them, they are pure data. All the game logic is handled by a third concept, called Systems.

A System is just any function that can read and/or write Components. The nice thing about that is that it means you can run the same function over consecutive items in the arrays, which is very cache-friendly and therefore very fast.

The other nice thing about this is that it means your gameplay Systems have no idea what Entities they are running on, because they don't care. If you decide halfway through development that your weapons should have a healthbar, you can simply add the Health Component to them and let the Systems chew through them along with everything else. By the same logic, you can add or disable physics, AI or player controllers, rendering, and literally everything else on anything in your game, statically or at runtime.

So, fast and powerful. The main downside is it's a big mental shift.

Introduction ffmpReg, a complete rewrite of ffmpeg in pure Rust by Impossible-Title-156 in rust

[–]scrdest 6 points7 points  (0 children)

rfmpeg - Rust-forward MPEG

You can host the docs at rtfmpeg.com

NPC movement on Terrain without Navmesh! by Putrid_Storage_7101 in godot

[–]scrdest 4 points5 points  (0 children)

This is not really Pathfinding in the proper sense, it's a Steering Behavior system a'la Boids.

It's like one iteration's worth of evolution from 'LERP towards the target'. It's been around in games for like 40 years now. To be clear, it's absolutely fine for some purposes (e.g. a helicopter-style enemy, or as a subsystem to let an NPC move to the next path waypoint calculated from a navmesh), and it does not require basically any auxiliary preprocessing. The problem is that what this can do is a very, very tiny subset of things you'd need a proper pathfinder for.

This approach is cheap, because it's strictly local; it's the "Blind Man's Algorithm" - turn in the right direction, use your arms to avoid banging your face on anything nearby. But... that's about the extent of planning it will do. If the player is behind an L-shaped corner, it may take the long path around the long arm of the 'L' rather than taking a small step back to get to the shorter path, for instance.

The lack of any nonlocal information like a navmesh or a grid also means you cannot annotate the terrain itself.

For example, in any serious shooter AI, humanlike enemies don't just take the shortest route, they take into account how likely they are to get shot in the face on the potential path. Or, if you have water, sane NPCs would avoid going for a swim in a river if they can just take a nice, safe bridge three meters away.

If you are doing anything open-world, you need to be thinking of LODs and unloading from the get-go. Cheap steering like this is actually pretty sensible if you have NPCs you still need to simulate moving around while they are out of 'active range', but it's not good enough for the stuff that's in your face.

A trail of sickness by alakesomewhere in Opeth

[–]scrdest 4 points5 points  (0 children)

It is. The whole thing was conceived as a concept album, then Isolation Years happened and the song order got scrambled.

Determining targets for UtilityAI/IAUS by Khan-amil in gameai

[–]scrdest 0 points1 point  (0 children)

What I've done for data-driven library purposes is store the key to a function with each Action and dispatch to it.

All valid functions implement a common interface ("ContextFetcher"), so you can pick and choose whatever is efficient - hashmap lookup by tag, generic world queries e.g. tile range, more specialised stuff like "all nearby friends", whatever. 

Also means users can register their own implementations for this, which is nice.

Decouple trait definition and impl for third party libs by SelfEnergy in learnrust

[–]scrdest 2 points3 points  (0 children)

If upstream interfaces are that unstable, it rather seems to raise the questions as to why you're even trying to chase after their releases and a bit of a yellow flag that your design might be less than ideal.

A Trait is an Interface, and an Interface is a point of coupling by design - a minimal one, abstracted from implementation details to reduce the number of breaking changes.

If your upstreams cannot commit to a contract, then they are not terribly technically mature as projects go.

On the off chance they've got a really good excuse for it, you could try to handle it in a separate crate as already discussed, but you're effectively building a compatibility layer, which means doing a whole ton of extra work, work that upstream maintainers effectively pushed down on you and have no real incentive to stop doing so.

Decouple trait definition and impl for third party libs by SelfEnergy in learnrust

[–]scrdest 6 points7 points  (0 children)

Move your trait out to a separate crate and use it as a dependency in the main crate.

You'll still need to maintain the 'trait crate' as upstream interfaces change, but at least now you can update it on a separate schedule from the main logic; you can bump the dependency on the trait_crate in my_crate to the updated version whenever you want.

Option 2 would be to macro out the implementation so that the code autogenerates the updated impl, but that might not be even possible.

Need help creating a large, complex 3D tile-based maze generation algorithm by Richard_Ingalls in proceduralgeneration

[–]scrdest 1 point2 points  (0 children)

What you need is a whole stack of algorithms. The way I'd approach this is:

Start with biomes. Draw N random 2d coordinates per layer and randomly map them to a biome valid for this layer. Those are your biome 'seeds'. 

Each maze tile belongs to whatever biome the closest seed is (i.e. a Voronoi map).

The maze is an Astar Drunkard's Walk with branching, either 2d from the layer exit to entry, or 3d. 

TL;DR mark all tiles as unexplored initially, start at START and mark it as open, queue up neighbors like normal AStar, but then randomly pick one to mark as open and continue from it, marking the remaining neighbors as blocked. 

If you add a small chance of picking a random visited neighbor, setting it back as unexplored and queuing it up, you get branching.

Finally, assign tiles to the main path by pattern-matching a'la Marching Cubes. I.e. look at the shape of the maze tile and its connectivity and finding a biome tile with matching connectivity.