Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Elentor
Dec 14, 2004

by Jeffrey of YOSPOS
That's pretty neat. You can use them for a roguelike with fill algorithms. Find islands and perform a weighted random walk to connect them and it would work.

Adbot
ADBOT LOVES YOU

Carthag Tuek
Oct 15, 2005

Tider skal komme,
tider skal henrulle,
slægt skal følge slægters gang



Metal Geir Skogul posted:

That's good but seems generated, not "procedurally" generated. A random algorithm didn't come up with that :(

yeah, that seems a posteriori or whatever its called


Besesoth posted:

It's much simpler than anything else posted here, but I've been fooling around with procedural generation and one of the first things I did was create a script that generates randomized cave maps, by creating a random grid and iteratively smoothing until it looks nice. I'm not sure they'd work for roguelikes - they're not directed enough - but they feel like they could be fun for an exploration platformer like Metroid.

I've got a bot (recently rescued from a crash) posting them here. Some examples:





nice! look into Voronoi tessellation and also an Italian(?) whose name I forgot (not Fibonacci)

Woebin
Feb 6, 2006

Besesoth posted:

It's much simpler than anything else posted here, but I've been fooling around with procedural generation and one of the first things I did was create a script that generates randomized cave maps, by creating a random grid and iteratively smoothing until it looks nice. I'm not sure they'd work for roguelikes - they're not directed enough - but they feel like they could be fun for an exploration platformer like Metroid.

I've got a bot (recently rescued from a crash) posting them here. Some examples:




I don't have any very useful technical criticism because I'm not all that good at such things, but if your bot made some of these at wallpaper sizes I'd throw them into my rotation and enjoy them.

FactsAreUseless
Feb 16, 2011

Krankenstyle posted:

nice! look into Voronoi tessellation and also an Italian(?) whose name I forgot (not Fibonacci)
Mario Mario

Happy Thread
Jul 10, 2005

by Fluffdaddy
Plaster Town Cop

This looks like good quality, random noise with few artifacts from your grid remaining, but just in case you run into any problems make sure you know what https://en.wikipedia.org/wiki/Perlin_noise is if that's not what you already use. Only pointing it out because it's the standard and I didn't see you mention it.

The concept of Perlin noise and its improved cousin Simplex noise have actually always bothered me because they're all anyone talks about. It makes it seem like people have run out of ideas when it comes to procedural generation over space. Everyone for every application just does "build a grid of random vectors, smooth it, and do it at various scales layered together to hide the grid."

But why is a grid always needed in the first place? Even if you hide its rows and columns, a grid still is bound to one scale, which is why they're forced to combine and layer several of them together at carefully hand picked scales to make up for it. Isn't there some way to generate math functions over space like random polynomials that are continuous and analog and yet still noisy, where the noise in them exists at multiple scales so we're not snapping to literal grid nodes?

Minecraft also uses Perlin noise to generate all its landmasses and caverns, and I wanted to make a clone of it that doesn't. For lack of any better random function generator I instead opted for Particle swarm optimization to place the blocks. Particle swarms are a population of simulated creatures, each representing a possible solution to your problem (a block placement) and exploring their local region for better solutions. The individuals benefit from knowing global measurements and discoveries of the whole population. On that Wikipedia article you can watch an animated particle swarm find the maxima over a continuous spatial domain.

Particle swarm seemed appropriate to me for even a discrete world made out of blocks because we successfully used it to solve the Nurse scheduling problem before for a class project. That involves shifting and swapping around discrete blocks of time in a work schedule, where some of the workers have hard and soft constraints (like not being available on Tuesday afternoons) with various penalties to the global solution if they're violated. Particle swarm worked marvelously for this. It swapped timeslots around until it eventually settled down and by then it was always a schedule that made everyone happy.



When I unsuccessfully tried this to generate Minecraft-like blocks worlds like the above, I had individual blocks of material (air, dirt, leaf, wood, sand, water) be members of the swarm and those had various hard constraints (meaning a big penalty for violating) and soft constraints (smaller penalty). Like-blocks were rewarded for touching each other so that they chunked together. Sometimes in the case of wood this was unidirectional (vertical) to try to encourage a certain structure. Certain neighborhood relations were encouraged (air and leaf, leaf and wood, water and sand) while others were discouraged.

This was an attempt to segregate the world into volumes, but that's not enough to actually make the similar materials all converge into one area of the world because the surfaces and interfaces between them could be very irregular while producing a satisfying score. At the local level individual block neighborhoods were happy, but that didn't mean anything for enforcing global behavior such as smooth second order surfaces, or big solid uniform regions.

For this I tried breaking down the types of material further. The material "air" became "air1" "air2" "air3" etc. representing different layers of air that were increasingly meant to occupy deeper locations within an air mass. I hoped for something like a layered onion. I expected there to be caves with dirt walls neighboring a bunch of air1 blocks, followed by a layer of air2 blocks deeper inside the cavity, which bind to air1 blocks but not dirt. Followed by a bunch of air3 blocks, which bind to air2 blocks but not air1 or dirt.

This worked a little bit but the result never converged to anything that didn't look like a noisy mess of blocks. Smoothness was never achieved. I think I have to measure more global phenomena (like surface curvature, which sucks to measure on a grid) instead of solely relying on local relationships and expecting things like smoothness to come out.

I wish I had an example for you all to play online, but this was before I made online demos. It's also not particularly worth seeing because it didn't converge to anything beautiful, and my attempts to get it to converge made it perform slow as hell while it tried to find increasingly optimal swaps to make to perfect its score. I wish it could have been faster and more successful but I had to stop and work on something else.

Any advice on this is appreciated; maybe there's just some simple trick similar to the "air1" "air2" layers idea above that would generate emergent beauty and smooth surfaces.

Mostly though, this reinforced the idea that I don't like grids. It drew me closer to other grid-free methods like the Deformable Simplicial Complex for tracking boundaries between volumes of material. Videos:
2D: https://www.youtube.com/watch?v=Oe6kKE7cqNg
3D: https://www.youtube.com/watch?v=x9D90MBlTGM&t=10s
Here, the 3D armadillo is actually just an interface between two material types, and the outer material (air) isn't drawn so you can see the armadillo.

Happy Thread has a new favorite as of 20:20 on Mar 17, 2018

Happy Thread
Jul 10, 2005

by Fluffdaddy
Plaster Town Cop
Procedural generation of unexpectedly shaped bridge designs for optimal load bearing:

https://www.youtube.com/watch?v=R-pVm5ECZn0

This video only had 83 views but it rocks.

Hempuli
Nov 16, 2011



Dumb Lowtax posted:

Procedural generation of unexpectedly shaped bridge designs for optimal load bearing:

https://www.youtube.com/watch?v=R-pVm5ECZn0

This video only had 83 views but it rocks.

I really like how organic-looking these network-generated optimal structures are; seen some others for smaller things like connector pieces or such. It'd be really odd to live in a world where all structures were designed with optimal stress-bearing in mind, disregarding human aesthetics or how much easier it is to just make straight angles etc.

I read an airline catalogue and those always have a really odd feel to them; it's like there's a whole separate grammar for overhyping products. Entered some stuff from there to a markov chain generator:
https://twitter.com/ESAdevlog/status/978422473799733248

Phy
Jun 27, 2008



Fun Shoe

Hempuli posted:

it's like there's a whole separate grammar for overhyping products.

Try buying a house sometime. "This bright, airy space in desirable [shithole neighborhood] is only steps away from [thing that takes a solid hour's walk to get to]"

Trig Discipline
Jun 3, 2008

Please leave the room if you think this might offend you.
Grimey Drawer
These are fantastically horrifying.

https://twitter.com/DrBeef_/status/978732422085988352/

https://twitter.com/DrBeef_/status/978733665889865728

bobjr
Oct 16, 2012

Roose is loose.
🐓🐓🐓✊🪧

https://twitter.com/JanelleCShane/status/979017101150072832

Tunicate
May 15, 2012

https://worldmodels.github.io/

A robot that dreams about doom, then plays in the dream levels, then uses what it learns from its dreams to inform real doom playing

Ariong
Jun 25, 2012



Tunicate posted:

https://worldmodels.github.io/

A robot that dreams about doom, then plays in the dream levels, then uses what it learns from its dreams to inform real doom playing

Increasing the uncertainty of the simulated scenarios is like turning the dream into a nightmare. That is insanely cool, as is this:

quote:

For instance, in our initial experiments, we noticed that our agent discovered an adversarial policy to move around in such a way so that the monsters in this virtual environment governed by the M model never shoots a single fireball in some rollouts. Even when there are signs of a fireball forming, the agent will move in a way to extinguish the fireballs magically as if it has superpowers in the environment.

Because our world model is only an approximate probabilistic model of the environment, it will occasionally generate trajectories that do not follow the laws governing the actual environment. As we saw previously, even the number of monsters on the other side of the room in the actual environment is not exactly reproduced by the world model. Like a child who learns that objects in the air usually fall to the ground, the child might also imagine unrealistic superheroes who fly across the sky. For this reason, our world model will be exploitable by the controller, even if in the actual environment such exploits do not exist.

Average Lettuce
Oct 22, 2012


https://twitter.com/ptychomancer/status/980968298002006016

A great thread if you like map generation.

Phlegmish
Jul 2, 2011




Some of these are hilarious

Yinlock
Oct 22, 2008

Cacator
Aug 6, 2005

You're quite good at turning me on.


It's no Francis Bacon but it's a start.

Trig Discipline
Jun 3, 2008

Please leave the room if you think this might offend you.
Grimey Drawer
ugh goons and their obsession with bacon

Cacator
Aug 6, 2005

You're quite good at turning me on.

Trig Discipline posted:

ugh goons and their obsession with bacon

If you have a better example of flesh coloured amorphous blobs meant to represent human figures then I'd like to see it!

Happy Thread
Jul 10, 2005

by Fluffdaddy
Plaster Town Cop

Cacator posted:

If you have a better example of flesh coloured amorphous blobs meant to represent human figures then I'd like to see it!

That's so mean to goons

SerialKilldeer
Apr 25, 2014

Tag yourself, I'm Smol Pineapple:
http://aiweirdness.com/post/172622965862/tomatonames

Phy
Jun 27, 2008



Fun Shoe
Bananana

Cicadas!
Oct 27, 2010


Green Zebra Pleaser could be so many things

Carthag Tuek
Oct 15, 2005

Tider skal komme,
tider skal henrulle,
slægt skal følge slægters gang



Market  Death

The Relentless
Sep 27, 2002

ANTI KITTY-PORN TASK-FORCE - "It's Hell-Bag eatin' time! Rowwwwrrrr!!!"
Shart Delight

Bobby Digital
Sep 4, 2009
I’m San Blue Tard

Dick Trauma
Nov 30, 2007

God damn it, you've got to be kind.
Old German Baby :hitler:

Hempuli
Nov 16, 2011



Was just recently reminded of this cool tool called Imagegram that takes pictures formatted in a certain way and uses them as a 'grammar' for procedural generation by Zaratustra (@zarawesome):

https://zaratustra.itch.io/imagegram?url=dungeon2.png

Example made by Kevan Davis:


I super recommend checking out the other examples, this kind of stuff is wonderfully intriguing (to me, at least)!

Happy Thread
Jul 10, 2005

by Fluffdaddy
Plaster Town Cop
I love how the rules keep evolving the rooms smoother after they've seemingly already finished.

Phyzzle
Jan 26, 2008
A bit dated, but Goon Hal was based on e/n posts from ten years ago.

https://goonhal.livejournal.com/

Also, saved from a long-gone random joke generator well over ten years ago.


This lawyer walks into a bar. A monkey cozies up to the lawyer and takes a deep breath and yells "For a twenty I'll gently caress you and anyone else you'd like to invite along." The lawyer shouts "I'm not a lawyer, I'm a midget!" The monkey says "I'd pull down your pants to get a drink."

So the lawyer says "Just put it on my bill."

RECEDING QUEEN DISCIPLE: KNOCK, KNOCK!
REFORM PARTY'S SCHNATZ: WHO'S THERE?
RECEDING QUEEN DISCIPLE: SCHOOL!
REFORM PARTY'S SCHNATZ: SCHOOL WHO?
RECEDING QUEEN DISCIPLE: SCHOOL SCRAPPLEASS!

CUSTERS LAST STAND WALKS INTO A BAR. THE BARTENDER SAYS "DO YOU KNOW YOU HAVE YOUR EXPONENTIAL DEVILS IN YOUR RECTAL EXAM?" "YEAH," CUSTERS LAST STAND SAYS, "IT GESTICULATES MY STINKWEASEL! "

OutOfPrint
Apr 9, 2009

Fun Shoe

Phyzzle posted:

CUSTERS LAST STAND WALKS INTO A BAR. THE BARTENDER SAYS "DO YOU KNOW YOU HAVE YOUR EXPONENTIAL DEVILS IN YOUR RECTAL EXAM?" "YEAH," CUSTERS LAST STAND SAYS, "IT GESTICULATES MY STINKWEASEL! "

Are you sure these aren't Zappa lyrics?

Happy Thread
Jul 10, 2005

by Fluffdaddy
Plaster Town Cop

Phyzzle posted:

A bit dated, but Goon Hal was based on e/n posts from ten years ago.

https://goonhal.livejournal.com/

Funny. I wonder how they made these, they flow quite a bit differently than autocorrect suggestions run wild

Carthag Tuek
Oct 15, 2005

Tider skal komme,
tider skal henrulle,
slægt skal følge slægters gang



Reads like a markov chain or similar method.

Hempuli
Nov 16, 2011



https://twitter.com/quasimondo/status/992338009604395008

Happy Thread
Jul 10, 2005

by Fluffdaddy
Plaster Town Cop
I feel like technology just made people from that era alive and moving again for the first time in a while

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS

A neural network trained on Behelits and the ending of 2001 A Space Odyssey.

twoday
May 4, 2005



C-SPAM Times best-selling author

:staredog:

Kennel
May 1, 2008

BAWWW-UNH!

Make sure to watch the last 30 seconds.

Metroid Fitzgerald
Feb 13, 2012

B O O O O B S . . . !



Liberate tuteme ex inferis

SneezeOfTheDecade
Feb 6, 2011

gettin' covid all
over your posts
http://aiweirdness.com/post/163491778652/darth-net-star-wars-characters-invented-by-neural

quote:

Darth Teen
Darth Tannin
Darth Ben
Darth Toes
Darth Teena
Darth Darth
Dorth Darth Darth
Mon Darth
Man Darth
Darth Sans
Darth Band
Darth Mall
Darth Tall
Grand Moff Darth Salt

Adbot
ADBOT LOVES YOU

Queen Combat
Dec 29, 2017

Lipstick Apathy
Every now and again I go to the reddit subredditsimulator for Floridaman.

The deal is: the person who runs /r/subredditsimulator takes an entire subreddit's titles and comments, and trains a Markov Chain on it, and makes that chain a user, with the username <subreddit name>_ss. That trained robot then makes posts with titles and comments based on that entire subreddit's "personality." So, /u/sex_ss is always talking about sex tips, /u/worldnews_ss is always talking about headlines and Trump and North Korea, etc.

Because "Florida Man" headlines always follow the same format, the user /u/floridaman_ss' posts are actually pretty coherent, and sometimes border on reality (or make more sense than reality). Give it a read:

https://www.reddit.com/user/floridaman_ss?sort=top

Examples:




These are all fake. But a lot of them seem pretty damned real.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply