@runevision@mastodon.gamedev.place
@runevision@mastodon.gamedev.place avatar

runevision

@runevision@mastodon.gamedev.place

Indie game developer, procedural generation enthusiast, Dane in Finland. I made VR adventure Eye of the Temple. http://eyeofthetemple.com

This profile is from a federated server and may be incomplete. Browse more on the original instance.

runevision, to random
@runevision@mastodon.gamedev.place avatar

I've quietly made my LayerProcGen framework public:
https://github.com/runevision/LayerProcGen

It's a framework (C#) that can be used to implement layer-based procedural generation that's infinite, deterministic and contextual.

Nobody else have tried/tested it yet - if you're up for taking it for a spin, let me know how it looks; what's clear or confusing, if you think there's low hanging fruit improvements I could make, etc.
#ProcGen

Video of a mountainous terrain and visualizations of the kind of layer based generated data that's used to generate it.

runevision,
@runevision@mastodon.gamedev.place avatar

The value of layer-based generation is not just the implementation, but also a certain way to think about how to define spatial dependencies for large-scale generation.

I've put a lot of effort into the documentation and its illustrations (examples here), which explain the high level concepts of the framework as well as the details.
https://runevision.github.io/LayerProcGen/

A chunk in one layer requests data from another layer within its own world space bounds plus appropriate padding.
Pathfinding can be implemented to operate only within a maximum distance from the start-goal line segment in order to make the effect distance of the environment on the solution path be well-defined.
Each iteration of processing of input from another layer can increase the effect distance and thus the padding needed when requesting the data.

runevision,
@runevision@mastodon.gamedev.place avatar

Procedurally generated open-world games tend to use "the functional approach" which essentially requires embracing sandbox gameplay.

LayerProcGen points the way towards making open-world procedural games based on "the planning approach" instead, which is normally only seen in "finite space" games such as rogue-likes.
#ProcGen

runevision,
@runevision@mastodon.gamedev.place avatar

@jonikorpi Ah, cone-based as in the shape of the dependencies? Or maybe the shape of loaded data from consecutive layers? I’d love to hear more about your approach, possible differences, insights you’ve gained using it, what you’re using it for exactly etc. :) If you have time to tell about it sometime.

runevision,
@runevision@mastodon.gamedev.place avatar

@scdollins That's neat! I'm unsure though what this relates to? Did your system do anything based on a "planning approach"? Based on skimming your thesis it seems to be a classic "functional approach"?

runevision, to random
@runevision@mastodon.gamedev.place avatar

Unity packages want samples in a folder called Samples~/ (ending with a tilde) but I can't commit that folder to git because it's simply not showing up in git status.

I can't find any info on this. There's reports on tildes followed by numbers being ignored (to protect NFTS file systems) or people who want to ignore files ending with tilde, but no info I could find on it already being ignored, and how to change that. I'm confused...

runevision,
@runevision@mastodon.gamedev.place avatar

Ah, finally found a mention of the same issue here:
https://stackoverflow.com/questions/44129034/git-adding-folders-containing-tilde

I used the proposed "git check-ignore -v" and found that there is a .gitignore_global file in my user folder (not in the repo) which does have *~ in it. Why I don't know. I don't remember putting that there ¯_(ツ)_/¯

runevision,
@runevision@mastodon.gamedev.place avatar

@aras I used to use SourceTree for Mercurial a lot. It's possible I also tried using it for Git at one point, yeah.

runevision, to random
@runevision@mastodon.gamedev.place avatar

We're 10 hours (and countless pages of scribbled notes) into playing Lorelei and the Laser Eyes and it's a great non-linear puzzle/mystery game with Twin Peaks-esque vibes.

I'd say its metaphysical antics are fourth-wall breaking except it's hard to know which wall is the fourth one when the viewing angle keeps changing and the walls are only enumerated with upside-down Greek letters.

https://store.steampowered.com/app/2008920/Lorelei_and_the_Laser_Eyes/

runevision, to random
@runevision@mastodon.gamedev.place avatar

Huh, I just learned that "foldout" is not an established term for UI controls that expand/collapse display of sub elements in a tree hierarchy. Apparently that's just in Unity it's called that.

Instead it's called overly specific things tied to the visual presentation, like "rotating arrows" or cryptic/technical general terms like "progressive disclosure controls" or "disclosure widgets". 🤯

https://superuser.com/questions/638139/whats-the-proper-name-of-that-symbol-to-collapse-expand-nodes-in-a-directory-tr

https://en.wikipedia.org/wiki/Disclosure_widget

Nifflas, to random
@Nifflas@mastodon.gamedev.place avatar

Function naming problems!

So, you know floor/ceiling/round

But, what do I name one that given the input 3.25 has a 75% chance of rounding it to 3 and 25% chance of rounding it to 4?

I realize it's going to be an incredibly useful function for adaptive music.

But... what do I call it?

runevision,
@runevision@mastodon.gamedev.place avatar

@xeophin @Nifflas When I read the description of the method I thought “that’s stochastic rounding” without ever having heard of the term stochastic rounding. It’s just - that’s what it is! It should be clear to anyone who knows the word stochastic and the word rounding.

runevision, to random
@runevision@mastodon.gamedev.place avatar

Bleh, the simple sample project I want to ship with LayerProcGen has started frequently crashing when exiting Play Mode. It's because I dispose the NativeArrays it uses on Application.quitting to avoid leaks, but some of the generation threads are still accessing the arrays, despite calling Thread.Abort() on them. For unpredictable reasons it doesn't cause issue in my own game.

I've tried a few fixes that didn't work, and I think I just don't know how to fix it properly.

runevision,
@runevision@mastodon.gamedev.place avatar

@bitinn Which exit event do you mean?

runevision,
@runevision@mastodon.gamedev.place avatar

@bitinn That's editor API, I can't use it from runtime code. And I believe the crash would happen at runtime too, just usually when quitting the application.

Anyway, I'll go with a solution discussed in some of the other replies, but thanks!

runevision, to random
@runevision@mastodon.gamedev.place avatar

We may not yet have leaves on the trees here in Turku, but today we were beckoned by these mossy stones in the sun. #Mosstodon

sinbad, to random
@sinbad@mastodon.gamedev.place avatar

The nice thing about Mastodon is when the valley bros on that US non-profit board inevitably persuade the rest that it needs to fire out a for-profit LLC to gain access to additional investment or something and begin the enshittification, we have the option to fork it and go our own way. And wall off the enshittified instances if we want. True distribution means you can cut off the head and the body doesn’t die (which is why Bsky doesn’t work like that and never will IMO)

runevision,
@runevision@mastodon.gamedev.place avatar

@sinbad @lritter The US non-profit doesn't replace the German company. Comment from the CTO: "Our operating structure is still the Germany-based Mastodon gGmbH. The new US non-profit is here to facilitate fundraising in the US and promote Mastodon there (plus maybe one day pay developers directly, if we hire in the US)." But if you mean that it's still a slippery slope, then sure, I understand.

runevision, to random
@runevision@mastodon.gamedev.place avatar

Nice article. As a C# gamedev, I had half-considered trying out Rust one day to see if (unlike C++ which makes me miserable) I might like it. But now I don't have to; it's clear I would be just as miserable with Rust, just for different reasons.

LogLog Games: "Here's also our postmortem of 3 years of Rust gamedev, and why we're leaving Rust"
https://loglog.games/blog/leaving-rust-gamedev/

glassbottommeg, to gamedev
@glassbottommeg@peoplemaking.games avatar

Uh. I'm pretty sure this just killed every single indie/AA owned by Embracer: https://embracer.com/releases/embracer-group-announces-its-intention-to-transform-into-three-standalone-publicly-listed-entities-at-nasdaq-stockholm/

Indie doesn't scale. You can't katamari up a bunch of tiny studios and then say "alright break into 100 teams and each make small games!", it breaks down. But that's essentially what they did #GameDev

runevision,
@runevision@mastodon.gamedev.place avatar

@glassbottommeg But isn’t this move scaling down rather than up? All the studios used to be under a single company (Embracer) whereas now it will be split up into three companies. The “katamari up” happened earlier when each studio joined Embracer, not now.

djlink, to random
@djlink@mastodon.gamedev.place avatar

Embracer name is so tainted right now they're rebranding in 3 companies so they can keep doing what they've been doing. https://twitter.com/Wario64/status/1782281799877415084

runevision,
@runevision@mastodon.gamedev.place avatar

@djlink Splitting up a company into multiple separately publicly listed ones is no more a rebranding than merging multiple companies is? Or what am I missing?

Nifflas, to random
@Nifflas@mastodon.gamedev.place avatar

I wish there were a local pizza place with a "the extremely bonkers spicy hot chili pizza challenge"

It's probably a good way to stand out too, become known for a weird thing locally. I don't know where to go in town when I crave a pizza of both burning suffering and delicious taste.

runevision,
@runevision@mastodon.gamedev.place avatar

@Nifflas Monkey paw finger curls and the challenge now exists locally for you, but the super spicy pizzas are also super gross to you and taste absolutely terrible despite having the hotness you crave. Second paragraph where you mentioned delicious taste was not part of your stated wish; I don't make the rules.

Nifflas, to random
@Nifflas@mastodon.gamedev.place avatar

I've always felt prefab overriding is volatile and weird in Unity, for the decade I've used it, I never feel comfortable overriding fields in the scene 'cause they're easy to accidentally apply when changing a prefab, or accidentally override when I didn't mean to.

But, I've never been able to come up with a satisfying solution to this. To this very day, I never, ever, override a field in a prefab in a scene.

But sometimes I really need to. Anyone ever came up with a solution to this?

runevision,
@runevision@mastodon.gamedev.place avatar

@Nifflas How could any workflow or tools solve this? Encapsulation would still let you make those temporary overrides, just with more steps.

runevision,
@runevision@mastodon.gamedev.place avatar

@Nifflas I mean, you said yourself in this thread that the chaotic mess happens because you keep overriding things in the scene with the intent to save them into the Prefab, even though you know it's bad, just because it's convenient. But you can do tons of bad convenient things all the time, which you don't because you choose not to. I use Prefab overrides in the scene with intent (only when I want an override in the scene), and I never have issues with accidental overrides.

runevision,
@runevision@mastodon.gamedev.place avatar

@Nifflas I agree encapsulation is a good idea though (if you think so; a bit unsure based on your replies). But as you say, it's incompatible with some of the workflows you say you want. And preventing scene saving sounds like an anti-pattern to me that would often result in lost work, because we can't know when a user might suddenly need to close Unity on short notice. But ok you also said to not listen to your ideas because of how esoteric your criteria are compared to many other users. :)

runevision,
@runevision@mastodon.gamedev.place avatar

@Nifflas Yeah, that's the basic concept in encapsulation, I agree it's very good, similar to an OOP interface.

runevision,
@runevision@mastodon.gamedev.place avatar

@Nifflas Yeah! I'm really annoyed the feature was just dropped (or put indefinitely on hold or whatever).

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • ngwrru68w68
  • everett
  • InstantRegret
  • magazineikmin
  • thenastyranch
  • rosin
  • GTA5RPClips
  • Durango
  • Youngstown
  • slotface
  • khanakhh
  • kavyap
  • DreamBathrooms
  • provamag3
  • ethstaker
  • osvaldo12
  • tester
  • cubers
  • cisconetworking
  • mdbf
  • tacticalgear
  • modclub
  • Leos
  • anitta
  • normalnudes
  • megavids
  • lostlight
  • All magazines