Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411430 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 19, 2024, 04:35:10 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperDesignSo what can you procedurally generate?
Pages: 1 2 [3] 4 5 6
Print
Author Topic: So what can you procedurally generate?  (Read 16948 times)
oahda
Level 10
*****



View Profile
« Reply #40 on: January 23, 2016, 02:48:10 AM »

axees?
axes
Logged

NoLocality
Level 1
*


AssetsAssetsAssetsAssetsAssets...


View Profile
« Reply #41 on: January 23, 2016, 11:57:29 AM »


Aha!  Thought that sounded right but the spelling escaped me.

@Bombertree Keep us updated on the Magic Tower progress.  I want to give it a spin and after seeing this...


Here's an update on my level generator for Magic Tower.


...I'm finding myself becoming oddly emotionally invested in those frogs  Cheesy

What are they thinking?...what are their dreams and hopes?...will they be anything more than dungeon mobs?

@NoLocality
Haha I love waves like that mainly because of waverace64<3

I to have a place in my heart for Waverace 64, it was just so satisfying flipping and ramping off those waves.

Haven't seen anything comparable since (over 15 years!), so after my current project I intend to remedy this.  Brontosaurus Milk Crisis is actually the "calm down and make something smaller!" project I dove into after the boat game looked to be to large scale for a "first" game.
Logged

BomberTREE
Level 9
****



View Profile
« Reply #42 on: January 24, 2016, 01:54:29 PM »

@NoLocality
Will do man, there's there was a playable link here Smiley (but now it is gone with the wind)

I can tell you what those frogs dreams and hopes are.. They just want to hop. One more step. And when that's done they want another one, and another one, and another one.
« Last Edit: August 04, 2017, 03:05:38 PM by BomberTREE » Logged
hoguean
Level 0
**

Secret Games Company


View Profile WWW
« Reply #43 on: January 25, 2016, 11:10:09 AM »

Cool thread, if you like procedural generation, check out our RPG Kim, about half of the game is procedurally generated and we've written about the process in a few places - for us the choice was what to hard-code for historical/thematic accuracy and what not to for variety/replayability.

Kickstarter update about programming: https://www.kickstarter.com/projects/secretgamesco/kim/posts/1471781

Programmer's Unity forum thread: http://forum.unity3d.com/threads/kim-by-rudyard-kipling-2d-adventure-game.377817/#post-2452632

Kickstarter campaign page blurb touches on it too: https://www.kickstarter.com/projects/secretgamesco/kim

If anyone has questions, there is a thread about the game here where you can AMA.



Logged
oahda
Level 10
*****



View Profile
« Reply #44 on: January 25, 2016, 01:43:38 PM »

Watched an explanation of the generation going on in No man's sky the other day. I'm generally not that interested in procgen, but this was just so... clever. How they can just run the algorithm with the player's position as the input and always generate everything on the fly in order to get infinite, but consistent, worlds. Mathematically beautiful.
Logged

gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #45 on: January 25, 2016, 02:33:36 PM »

There is a lot of bullshit about procgen, ie room/corridor or perlin technique that are considered procgen for superficial reason. PROCGEN isn't a set of tools! it's an approach to content.

In fact most people use procgen without knowing it, when you use shader for automatic placement of shadow (instead of painting it) it's procgen. HTML coding is procgen layout for the most part (not yet procgen content though it's coming).

Procgen is using "descriptions" and rules to create "artefacts", game are procedural experience in that they use rules and "descriptions" to generate that experience with the player.

Most people confuse procedural with random, random is just a way to introduce variety. But badly design Procgen algorithm create bullshit. The problem is little attention is paid to procgen design. There is no difference between handmade content and procgen because procgen is handmade, but batch operation. It's the lack of understanding of scope and creativity that produce bad generation. Procgen is basically the equivalent to style sheet passed from art director to grunt artist, except the grunt is a machine.

Logged

NoLocality
Level 1
*


AssetsAssetsAssetsAssetsAssets...


View Profile
« Reply #46 on: January 27, 2016, 03:48:55 PM »

There is a lot of bullshit about procgen, ie room/corridor or perlin technique that are considered procgen for superficial reason. PROCGEN isn't a set of tools! it's an approach to content.

In fact most people use procgen without knowing it, when you use shader for automatic placement of shadow (instead of painting it) it's procgen. HTML coding is procgen layout for the most part (not yet procgen content though it's coming).

Procgen is using "descriptions" and rules to create "artefacts", game are procedural experience in that they use rules and "descriptions" to generate that experience with the player.

Most people confuse procedural with random, random is just a way to introduce variety. But badly design Procgen algorithm create bullshit. The problem is little attention is paid to procgen design. There is no difference between handmade content and procgen because procgen is handmade, but batch operation. It's the lack of understanding of scope and creativity that produce bad generation. Procgen is basically the equivalent to style sheet passed from art director to grunt artist, except the grunt is a machine.



This is going in my resume.

Interviewer 1: "So you we're somehow able to procedurally generate waves somehow without using procgen at all?"

Me: (nods without expression)

Interviewer 2: "Fascinating..."

 Wizard



Okay all joking aside I think I may be misunderstanding what you're saying.

What's an example of what you consider true procgen, why and how does it differ from our methods?
Logged

gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #47 on: January 27, 2016, 06:11:29 PM »

I'm saying it's not a method but an approach to production. It's the idea of minimizing data with "description", or if you want to abstract data.

Ie it's impossible to define without being too broad as a method, it's content generated through formula, that's all programming for you. That's why I call current bread superficial and reductive. There is no true procgen, just a shallow approach to it.

The think is that you have to realize that a lot of "handmade" content are still made through procedural process. Those brush on photoshop are using random dispersion and rotation of stamp to mimick leaves, you might use a filter, you use blending, you might use liquid rescale or content aware fill. Sounds can be pitch up and down or maintain te sound using dynamic envelop with attack, realease and sustain. The css layer is using relative number to create a lay out.

Instead of calling them procedural generation we call them "tools". Procedural generation is about using the tools logic to the end.

Procedural generation still need handmade. Let' say you are making a space exploration program. You need to describe the universe, ie it's composed of solar system, you need to describe solar system, you say it's composed of planets revolving around a sun, you need to describe sun and planets. One form of description is hard data, or a formula or both, planet can be "handmade" or "modular" or "procedural", but it is still the same, something made out of fundamental brick more or less big. Maybe what's handmade is the hard parameter that constrain planet size and colors, or it is the mesh and texture data, it's a matter of scales.

So that mean that Procedural generation is not just mathematical, it's "linguistic", aka the way you handle the description matter. As linguistic it has too mode, implicit or explicit.

- For example the typical roguelike has explicit structure. At the bottom you have "tiles" they works like basic syllable with unit of meaning (for example, wall as impassable or floor as passable) which are then arrange in higher semantic structure (room, corridor) which themselves are arrange in the higher semantic of the level then level into dungeon instances, etc ... each of them have parameters that act like adjectives (size, type, etc ...). The thing is that we can reason on element as semantic unit (you can check if two room overlap and take a decision, you can look at where room are, the number of it, test its passability of importance relative to another room etc ...).

- On contrary a perlin noise (and cellular automata or other cave method) is implicit, it's used because it looks like a landscape of hills, however there is no explicit concept of hills and you can't reason with it (you don't know where hills and valley are) even though the game is made of simple semantic unit (tiles like in explicit), you cannot guarantee some property like traversability or specific arrangement. You might use an analysis pass (like in checking cave algorithm to avoid separated island) to recover some accidental semantic and reason about it (filling or connecting island in cave generation). Implicit mode can also be structured with explicit mode surimposed on top of it. In minecraft you have a gradient and a cut out parameter that guarantee ground and air, on top of each other, and biomes as horizontal variation you can reason with (ie populate each based on the appropriate expressed semantic, ex tundra, Savannah, etc ...).

- Using randomness tend to tip toward implict as accidental meaning, using bounds on parameter, gradient and formula tend to tip toward explicit. Implicitness is generally used for mimicking creativity through accident.

The other dimension to take into account is that is the description shallow or expressive. Shallow description only describe one structure, character generator can only generate character, they are easy to understand and you get the gist of it quickly, so do universe generator, they are not diverse as much as they do variation of the same things. Expressive description can generate description of multiple structure. For example a "statement" template with a structure of adjective-noun-verb can describe events and state of any objects, all distinct to each other whether they are abstract or not, the possibility space is bigger (for example goods description in BBC elite like edible poets). Expressive description tend to be limited by the breadth of their "dictionaries", ie the elements that slots into its structures. Shallow is about focusing, controlling and constraining the scope of generation while expressive is about opening it.

It's possible to do complex descriptions that nest shallow and expressive description, for example elements of dictionary can be shallow descriptions of objects to generate to fill the expressive structure. Depending on the the type of description at each level you can constrain or open generation and control what it's actually achieving, ie you design what it can express. A story generator can have expressive hi level structure (all the type of stories) and shallow structure low level elements (character, place, building, etc ...), but a space exploration can have shallow description (galaxy) but more expressive low level elements (all type of civilization and lifes).

Given the linguistic nature of Progen, it's literally writing a style guide (style sheet) or a bible of the thing you want to generate, ie all the basic rules of design. The quality of this master description (the bible) is what makes the quality of the generation, ie it must encode all the qualities the generator must have.

For example a typical roguelike encode a rather shallow concept of level, it basically says that level design is just a bunch of carelessly toss room connected randomly with corridor in no particular way with entrance and exit somewhere. It has no concept of critical path for example nor progression nor good placement that optimized the experience, only accidentally with a good "dice roll"  ... unless you look at teh dungeon level which says that you have to go through n depth with increased complexity and difficulty in a particular order. Minecraft deliberately impose a structure of level through craft dependencies that give access to bigger resource and place such as the underground or biomes. however it's concept of space is mostly accidental outside of the ground/air separation.
Logged

NoLocality
Level 1
*


AssetsAssetsAssetsAssetsAssets...


View Profile
« Reply #48 on: January 29, 2016, 11:47:16 AM »

Okay I think I get what you're saying, "true" procgen is all about setting up a process for content generation that's a bit more than throwing math at height parameters to simulate waves and such.  From what I gather you're saying that procedural generation needs rules and direction on what it generates to achieve realism/fun/sensible placement of assets etc.

Example: at one point I was gonna have an infinite expanse of ocean in my boat game.  As the player explored and pushed on toward horizons the game would generate structures long before they were within the player's sights.

Now there had to be rules for these structures so that they were traversable and gave opportunity for the player to enjoy ramping into the air/boosting/shooting up enemies etc.

As the player got with a certain range of a 'seed' object it would undergo a process and begin placing pre-made assets with a kind of logic as follows

Seed object does a bit of a directional offset so these structures aren't to uniform in their placement: first it would place the first object out of a list of choices based on either random or some kind of logic...in this case a ramp: depending on which ramp was placed the next elements would be chosen and placed accordingly...let's say our process chose a ramp that is made to give the player a distinctly high jump instead of longer more 'forward' jump:  Then since the player is expected to gain quite a bit of altitude the process would choose from a list of appropriate assets to place and where...in this case it would choose a ring to fly though at an appropriate height for the precursor ramp or even an isolated 'pool' of perlin waves up there for the player to discover:  the process would do this until it has generated the entirety of one 'structure' made from a pool of smaller assets...something that would resemble a playground structure for boats: finally the process would place another seed object farther away from itself in relation to where the approaching player is coming from so that more 'structures' could be created as the player presses further on.

(on a side note I abandon this method and decided to a personal hand at the level design, I realized it was a bit much when different boats/upgrades would introduce various speeds/weights and this would have to taken into consideration for the 'structure' generation)

So something like that is considered procgen but perlin waves and level generation isn't?   Shrug Okay...that's cool, fresh perspectives are what discussions are all about I guess.

I would argue BomberTREE's floors in Magic Tower pass your definition as it seems his process requires there to be a clear path from start to finish while the floors get increasingly complex, also if memory serves me right I believe keys are incoming if not already in.  It may not be the most grandiose/over-complicated execution(some would even consider avoiding overblown methods eloquent), but it has a logic beyond random numbers so I'd wager it could pass even the most semantically purist's definition of 'procgen'.

As for my own perlin waves I guess you'll just have to forgive me as literally every report, paper, discussion and tutorial called these kind of methods procedural generation.  I am but a product of the environment I learned in heh.

That's why I call current bread ('thread' I'm guessing you meant) superficial and reductive.

I don't think any great harm is going to come from people sharing what their tinkering with...all arguments about definitions and appropriate names aside it's still just people showing what they are working on video game-wise, on a forum for people to show what they are working on video game-wise.
Logged

BomberTREE
Level 9
****



View Profile
« Reply #49 on: January 29, 2016, 01:25:42 PM »

Watched an explanation of the generation going on in No man's sky the other day. I'm generally not that interested in procgen, but this was just so... clever. How they can just run the algorithm with the player's position as the input and always generate everything on the fly in order to get infinite, but consistent, worlds. Mathematically beautiful.

You might be interested in Spore's design (pre-EA). The developers of No Man's Sky mentioned how their design ideas were influenced by it, super cool.

@Jimym
That wall of text though!
Don't scare away people who want to post repetitive dungeons and perlin waves Tongue
They can always be expanded to fit how you define procedural generation!
Logged
gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #50 on: January 29, 2016, 02:20:40 PM »

I didn't want to scare them, I was responding to some posts Cry It was more a clarifying about the true potential of procgen NOT TRUE PROCGEN such thing don't exist lol.

I'm saying perlin and other IS FINE and true procgen but REDUCING procgen to that MISS the potential. It was meant to open the thought not to snob at it Cry

A metaphor is to say that math is not just addition or subtraction but the way we think about numbers and their manipulation. It's not that addition and subtraction aren't "true math" they are! they are just short sighted and hide multiplication, division, series, probability, etc ... all which can be expressed using addition and subtraction too (see Vihart) I try to direct the attention to math and not just addition and subtraction.

It allow to go much further, like for example realizing that procedural generation is like an infinite virtual memory hashed from a formula, so the way to visualize what can be done is heighten! For example imagine you had an algorithm where you could access to all npc's life down to infinite time precision, so basically infinite persistent npcs with pathfinding across many generation of npcs without simulation, which then open to instant time travel within infinite timeline and also alternate dimensional travel. Just because you can now see procgen as an implicit access function.

Procgen is basically mixing chaos (generally random function) with order (constrain and description) toward creativity.

To come back to perlin, it's mostly used for heightmap or 3d cave landscape (ala minecraft). Perlin is itself a gradient with some order, you won't find a white spot next to black spot, there will be gray in between, so there is an IMPLICIT direction to perlin, though random. Gradient can be used as a planning feature, its basically a coordinate system normalized to 0-1 ranges. So you can use it for anything you want implicitly. For example let say you fill a map with grass, except at tile where the perlin values is between 0.5 and 0.6 where it spawn path tiles, then value above 0.9 spawn treasures. You know that path will always be at a distance of path because of the gradient property. Looking at it abstractly allow better idea to manipulate generation.

I didn't merely qualify procgen in my wall text, I was defining and precising it in way I don't see in procgen articles. For example shallow and expressive aren't "quality" as values but property you need to understand to design for procgen, shallow isn't bad it gives you control when you need it. I meant to expend what people understood with procgen.

How do you think I should rewrite it to make it more clear?
Logged

NoLocality
Level 1
*


AssetsAssetsAssetsAssetsAssets...


View Profile
« Reply #51 on: January 29, 2016, 04:01:21 PM »

I didn't want to scare them, I was responding to some posts Cry It was more a clarifying about the true potential of procgen


Oh okay...this makes more sense.  I admit I thought the whole point you were pushing was about naming conventions and I thought it was a great deal of detail you were putting forward simply to argue semantics.

I'm going out on a limb and guessing you speak more languages than english Jimym, I think a bit was lost in translation sir so no hard feelings and no worries  Wink

With this clarified I gotta agree with you...there is quite a lot more that can be done with procgen (infinite by nature actually).  The before mentioned Spore and No Man's Sky comes to mind, also I'd like to throw in 'Love' an odd little semi-abandoned mmo where the whole world is procgen and apparently changes as time passes and these little tribes within vie for territory...It's visuals are stunning, it's free and I'd recommend hopping in to see it if you have a spare 5-10 minutes. ...that or just google "Love mmo" and check out some images.

The scope of what can be done using procgen is amazing.

That said we all gotta start somewhere.  I imagine most people are aware at least somewhat of the possibilities but some are just starting with the practice (myself lol) or have found simple methods adequate for what they have in mind (again me).

So cheers Jimym  Coffee no harm no foul.
Logged

BomberTREE
Level 9
****



View Profile
« Reply #52 on: January 29, 2016, 09:04:07 PM »

Quote
I'm saying perlin and other IS FINE and true procgen but REDUCING procgen to that MISS the potential. It was meant to open the thought not to snob at it!

I dont think you should rewrite it! As NoLocality said, no harm no fowl man Smiley
I appreciate your thoughtful wall of text, and I agree with you that the term procedural generation can be found stapled onto projects that often only include bits of randomization. I tried breaking away from my usual generated content when I wrote Magic Tower by setting restrictions and rules that loosen and change as the game progresses, it mimics level difficulty which works well with the (unfinished) gameplay. But it's still pretty much a modified maze generator with smart enemy and item placement.

I'd be really interested in seeing a procedurally generated project by you Jimym, I know you've done your research!

@NoLocality
I remember Love being really unique when I first looked into it a few years ago! Glad to hear they're still relevant Tongue
Logged
gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #53 on: January 30, 2016, 08:44:14 AM »

I'll rewrite just a little though Tongue

It's a not a "methodology" or a "set of tools"

It's "a way to look at things"

You can see your handmade stuff under the procedural lens, or anything really, THEN implement it as a "procedure". It will still be fixed and handmade but with a procedure instead of hard data (see vectorial art, or art derive from formula). Ie you can either think about placing tile by hand or placing them using a loop that space it every x pixels, the result is the same, but with one you are thinking with "formula".

It's a paradigm shift, ie thinking in term of formula as content.
Logged

LuisAnton
Level 1
*


View Profile WWW
« Reply #54 on: March 30, 2016, 11:03:42 PM »

We are working on a procedural action-adventure set in space, so we are creating small, low-poly, single-biome planetoids that are already walkable and affect character stats. That is, it's not just colors but there's active information in those triangles: lava burns, desert sand is hot, snow is cold, mud slows you down, etcetera...

Here are some of those planetoids, a gentle one with green plains, some mountains and a river; a desert like, a swamp planetoid and a volcanic one. 


We are considering opening a devlog with this...

Logged

BomberTREE
Level 9
****



View Profile
« Reply #55 on: April 01, 2016, 10:06:09 PM »

@Woodwolf

Pretty cool stuff you're doing man.
How large are the planets going to be during gameplay?
And totally make a devlog if you're wanting to!
Logged
Oats
Level 1
*


High starch content.


View Profile
« Reply #56 on: April 03, 2016, 01:22:38 AM »

Skeletaaaaans!

These are the username seeded avatars I use in my game. I'm pretty amazed at how well humans find shapes in noise, the faces are basically noise
Devlog:
https://forums.tigsource.com/index.php?topic=52539.msg1235821#msg1235821
Logged

eh
LuisAnton
Level 1
*


View Profile WWW
« Reply #57 on: April 03, 2016, 08:37:34 AM »

@bomberTREE

Thanks! They are quite small. This game was originally inspired by The Little Prince. Not THAT small, but you can outrun sunlight X)

In terms of tris, those are 5k icospheres. If optimizations allow us we'll move up to 20k icospheres (though smaller planetoids may still use 5k). The main character occupies a triangle, that's more or less the scale we are considering.

Here's a screenshot on a 20k desert planetoid, standing next to a uadi:



And sure, we'll start a devlog here when we complete the side project we are currently working on, where we are testing the AI structure we want to use here : )
Logged

BomberTREE
Level 9
****



View Profile
« Reply #58 on: April 09, 2016, 01:29:10 AM »

@Oats
Quote
I like it! I think I've seen some similar projects turn into SHMUP ship generators.
After reading what you wrote haha, that's a pretty sweet idea  Smiley

@LuisAnton
Haha outrun the sun xD
I'm imagining the data for the world being displayed on a grid similar to a roguelike, but it being round would blow up my mind Facepalm
Logged
LuisAnton
Level 1
*


View Profile WWW
« Reply #59 on: April 09, 2016, 06:56:36 AM »

@BomberTree lol, no, the data is stored not in a grid... but in a sphere :D We have a 'metatriangles' structure so that knowing the index of the triangle we are standing on we can recover its 'matter' (ice, lava, grass...) and neighbours. It's useful for pathfinding (A*) too.
Logged

Pages: 1 2 [3] 4 5 6
Print
Jump to:  

Theme orange-lt created by panic