#Well I didn't sleep all night, but it was worth it, right? Procedular World Gen - Script API + PBR

1 messages · Page 1 of 1 (latest)

pulsar sage
#

Yes, I know I posted an older post recently, but I got new juice overnight and made quite a bit of progress. I won't elaborate too much but here are a few points I want to mention.

Enjoy my Deferred version of images!

#

Rivers and Streams are comming soon!

tired ingot
#

Why. ||Why this is so damn GOOD||

tender blaze
#

this is insane wth

pulsar sage
#

Thanks a lot.
Give as many likes as you can. 🥰

I'd love to have a shot at the next Banner vote. 😅

#

It's my first project that has a chance, or so I think.

hexed karma
#

love it

acoustic granite
#

how minecraft should look😔

tired ingot
#

I would download this images and use them as a wallpaper

pulsar sage
#

sure 👍

reef saffron
#

This is pretty cool

dense jewel
#

Awesome

slim gulch
#

Will this be working in survival?

pale plume
#

Awesome!

#

Still using your own server software?

#

Is everything open src?

pulsar sage
#

we are not allowed to post non vanilla things in #1046947779118895114 since BAO is about addons

pulsar sage
pulsar sage
#

i found a nice lake so let me share it here

slim gulch
acoustic granite
#

thats really stupid

#

ive seen tons of people posting stuff on servers

#

Servers basically do the same stuff as add-ons, i think youre talking about mods

#

or were you talking about his mod thingys no idea

pulsar sage
# slim gulch There will be waterfalls?

well, thats kinda not possible, but i am trying to improve these things, well since worlds are Procedular and minedcraft is chunk based, than youn dont have enought resources to simulate water rivers and these waterfalls

pulsar sage
acoustic granite
#

Ohhhh true

#

But BDSX plugins are still vanilla

#

Youre using what is already existing

pulsar sage
acoustic granite
pulsar sage
#

¯_(ツ)_/¯

#

this is what i think

steep warren
#

Hey @pulsar sage no worries this time, but please remember our 24 hours waiting period per showcase to allow visibility for all posts 😊

pale plume
#

No one complained

pulsar sage
#

Nice thats cool

deep bridge
#

Beautiful

deep bridge
#

i guess it will have to use alot of precomp resources to achieve that speed

pulsar sage
#

but i have old prototype code if you want from older posts

#

There is lib from github called FastNoise its pretty nice lib

slim gulch
pulsar sage
#

Here is some kind of sea what i have found

slim gulch
#

cool

slim gulch
#

its dope anyway

pulsar sage
#

ya, i wish i could do more 😭

#

but you can use it to pre-generate some maps or something like that

steep warren
#

Damn that’s a deep sea

pulsar sage
#

its also seed based you can kinda change seed in the middle of the generation

#

😅

steep warren
#

Cool!

#

You use structures to load chunks and other elements like trees?

pulsar sage
#

here is better look lmao

#

but some of them are good

steep warren
#

So you generate block per block?

pulsar sage
#

ya, but its kinda fast

steep warren
#

Woah, that’s crazy

pulsar sage
#

i compare, trees and generation with no trees, and there is like no difference

limpid frost
#

If only i could put render the distance beyond 10

steep warren
#

Would you like me to contribute with some good looking structures?

pulsar sage
#

Ya Also one problem is that its all Script API that means server sided, so max render distance is Simulation distance - 2

limpid frost
#

(Or if mojang just fucking added LODs)

steep warren
pulsar sage
pulsar sage
# steep warren Would you like me to contribute with some good looking structures?

well, there are two problems with structures

  • I can't split them across the chunks
  • If so, then i still can't read structures saved in bp via Script API

but good news are that i am not stopping here, i have plan on supporting json files for definition so you will be able to define your own trees and other on ground things. Maybe some kind of biomes but i am not able to override existing vanilla biomes so grass is going to look same

#

also my code is a bit mess, i have to splti classes to multiple files and manage some floating functions in my code 😅

steep warren
#

You can start with one-chunk structures to start getting around loading structures, I think that will be a good start! I feel like you should load them with .mcstructure files

#

Dang custom biomes will be fire when you get them added 👁️

pulsar sage
#

Thank to you all guys, but i have to rest rn, cus i slept for just 4 hours and i pretty tired 😂

steep warren
#

Yeah get some sleep, rest well!

sly totem
#

I can't wait for the final version of this

pulsar sage
#

Some one nuke my world 🤯

tender blaze
#

damn

pulsar sage
limpid frost
#

ah, we can have hell on earth for bedrock edition!

lean violet
pulsar sage
#

Script API its vanilla only

deep bridge
#

@muted idol somebody beats you to it

muted idol
pulsar sage
#

what is going on lol?

pale plume
#

also.. is it everywhere so hilly?

#

Id rather build my base on a flat surface

lean violet
#

just the type of landscape he wanted to achieve

pulsar sage
#

Ya its still early state

deep bridge
#

well ,this is the same idea you told me about

#

fast worldgen using JS

pulsar sage
#

its not that fast

pale plume
#

How fast is it?

deep bridge
pale plume
#

I don't think so...

pale plume
deep bridge
#

...he even said he is going to make it a package ?

pale plume
#

Id expect molang to be faster than quickjs...

#

But tbf.. worldgen is smth compilcated and the efficency as well as the performance might vary

lean violet
lean violet
pale plume
#

I can't really talk about it cuz my scripting api, as well as molang, knowledge is next to zero

pulsar sage
lean violet
#

I mean more procedural generation in a broad sense

pulsar sage
#

oh ya

muted idol
#

for setting blocks i was computing that smallest amount of sets i needed to do using cubes

lean violet
#

In procedural generation

muted idol
# lean violet Nothing is truly random

ofc ofc but i meant that in the way of there is no complex noise gen happening. I was using a lazy computed low res perlin map to decide how to blend multiple maps that were generated with custom software that could do all the complex simulations to get nice looking terrain

lean violet
#

I was thinking of doing it

#

that

#

with bds

#

send a request to load a chunk

#

make it render in nodejs with much faster runtimes

#

then send the data back

pulsar sage
#

like compare to palcing blocks

lean violet
#

Hmm yeah it is mostly block placement tbh

honest ivy
#

Wow

honest ivy
#

And caves

pulsar sage
#

Propably not, or i dont want to, since i am not generating underground then thats the reason why its kinda fast, when you start generating things under ground then you are no longer able to use fillBlocks method, that means i have to iterate each block and thats really slow

pale plume
pulsar sage
#

Well i have kind more Minecrafty gen but i am still not able to mkae some parts more flat 😅

lean violet
#

You have octaves, pitch and something else I think

#

One of them increases the zoom

#

the more u zoom in the less difference in the gradients are

#

making it flat

pulsar sage
#

you need secon noise to control its height thats kinda solution but also its not that fancy, but it kinda works

leaden pulsar
#

what noise does this use?

#

if i remember theres like fractal noise and perlin

pale plume
#

Some fast perlin lib iirc

leaden pulsar
#

ohh

#

does this use greedy meshing then fillBlocks or is it just setBlock per block

pulsar sage
muted idol
muted idol
#

I did it for quite a nice perf boost

#

I'll be poke around with it again soon

pulsar sage
#

generating underground is jost not they way yet

muted idol
#

I mean i did it with an ordering system

#

It only generated caves when needed

muted idol
#

Also some form of burning system so the games mstp is always at 45 to 55 is ideal

#

By just setting up using globalThis

#

U can use unix time to calculate how long you have been running

pulsar sage
#

well that example of 5 more blocks is a bit over Exaggerated another thing is that fillBlocks doesn't randomize blocks that are filled, so case will be pretty boring, and just one layer of random blocks being placed is also not super good, i think i am just avoid caves since now, maybe in the future i will try implementing them

#

thats just my opinion

pulsar sage
#

Do you have like video or something?

muted idol
#

1 sec

#

i posted it here actually

#

that isnt a true performance showcase due to its noise being precomputed

#

but it was still building the commands in real time

#

i actually could have just build chunks with async commands

pulsar sage
#

commands?

muted idol
#

yeah

#

i was using commands for fill in that

#

instead of the fillBlock

#

that was kinda crappy code tbh

pulsar sage
#

did you use a Script API?

muted idol
#

yeah

pulsar sage
#

or not at all

#

and setBlock?

muted idol
#

scripting handles the placement

#

well

#

if u mean like that

#

then na

#

it was mostly just processing the noise and building commands

pulsar sage
#

try poor script api or try randomize block types

muted idol
#

then buffering them into the next tick using a custom buffer system

#

each chunk was built over 2 ticks

#

but that was just a limit i added

#

it could have done around 5 or 6 chunks every 2 ticks

#

im rn working on a new algo for calculating the cuboids to fill

pulsar sage
#

but still you have to palce block per block if you want nice looking terrain

#

like randomize the block types

muted idol
#

yeah ik

#

i was working on handling that

pulsar sage
#

in that case you can not use fill

muted idol
#

but i got bored of mc

pulsar sage
#

ya, i am also kinda bored nowdays

muted idol
#

i mostly work on native modding now

pulsar sage
#

i see

muted idol
#

i just recently began looking into making the scripting API use another JS engine via some strange JS hackery with native

#

eg getting scripting API running on NodeJS

pulsar sage
muted idol
#

why do u use a 3D array?

#

u do realise thats awful for per formance

pulsar sage
#

it could be just one array

#

its just concept of palcing multiple blocks

muted idol
#

use a 1D array with a custom index function

pulsar sage
#

ya

#

i know

#

i also use that in my custom server software

#

1d array can be dimensed with custom dimension sizes let say you can re size it from 4:5:5 to 5:4:5

#

or somehting

muted idol
#

ive been wanting to work on a custom server software

muted idol
pulsar sage
muted idol
pulsar sage
#

ya

muted idol
#

i have a prototype proxy for BDS servers that works like Folia

#

its designed to handle over 600 players on 1 server

pulsar sage
#

but i was a bit suprised that single threaded lang was that fast

muted idol
pulsar sage
muted idol
#

the game does a lot more math for its terrain

pulsar sage
#

even vanilla BDS can't really handle that many players right?

muted idol
#

and it also has a bunch of pallet optimizations

muted idol
#

the way im looking at setting it up is how folia works

#

chunking the world and getting multiple servers running each server handles 1 chunk of the world

#

i had to stop working on it cuz my system just cant handle working on it

pulsar sage
muted idol
pulsar sage
#

if you want really massive performance boost, then turn off all block ticking and entity ticking

#

for servers you dont need block ticking or entities

muted idol
#

i should be green threadding it tbh

pulsar sage
muted idol
#

Golang uses greenthreads

#

C++ is native hardware threads

#

so C++ is the one that will struggle

#

well all 3 of the langs in that article use green threads

pulsar sage
#

ya

#

ik

#

thats why it doesn't really tells anything

muted idol
#

if i even dared to do that in C++ it would just die

pulsar sage
#

its just no possible to create 10k hardware threads

muted idol
#

i mean it is

#

if u yield it

pulsar sage
#

wdym?

muted idol
#

which is what all of them do

pulsar sage
#

are you talking about that article or world gen

muted idol
#

article

#

to in C++ spawn 1mil hardware threads if they call yield it works

#

if they are doing a while(true) or something ur system grinds to a hault

#

Have u poked much with world gen out side of MC?

pulsar sage
muted idol
#

its fun

#

ive been working on a tectonic plate simulation for infinite terrain

#

which hasnt been done before

pulsar sage
#

How so what other games use such a world gen what is not static?

#

ohh

muted idol
#

Vintage Story is one

pulsar sage
#

i have no idea about other games

muted idol
pulsar sage
#

i am not huge gamer

muted idol
#

its something ive been meaning to mod

muted idol
#

i spend most of my time making mods or programs

#

outside of rocket league i dont touch games unless im in call with friend s

pulsar sage
#

here are some games what i know bc the are famous

  • MC
  • GD
  • Roblox
  • Fortnie
  • PUBG
  • FNAF
#

and some old anrdoid games as well

muted idol
#

lol

#

i know a lot of games

#

i just dont play many

muted idol
#

RL?

pulsar sage
#

i never played fortnite but lot of ppl are talking about it

#

lmao

#

i am just cubecraft FFA anjoyer

muted idol
#

CubeCraft

pulsar sage
#

it has the best FFA

#

and best ping for me

#

¯_(ツ)_/¯

muted idol
#

CC is a mess lol

#

only thing neat about it is its proxy system

#

and its server backend

pulsar sage
#

lot of things are mess, but i am ADHD guys so i kinda like mess

#

😂 😅

muted idol
#

i cant get over how bad its AC is

pulsar sage
#

AC?

muted idol
#

i used to make bedrock cheats so i know how dog its AC is

#

anticheat

pulsar sage
#

ohh, ya, its not well handled

muted idol
#

they use java servers with a bedrock proto iirc

#

like its java server

pulsar sage
#

idk why kids with cheats still exists

muted idol
#

and they switch the proto

pulsar sage
#

its like so boring when you use kill aura, you even can't move your self lmao

muted idol
#

most of the fun for me was making them

pulsar sage
#

ya, that sounds great but actually playing for hours with cheats

#

?

muted idol
#

i did that

#

i did it cuz making configs and bypasses is fun. Most of it was reactions

pulsar sage
#

lmao

muted idol
#

like flying and just watching people just meltdown about it was always so funny

#

loved Mineplex for that

leaden pulsar
#

you guys both should meet irl

pulsar sage
#

Guys i have an basic update to the terrain, maybe it doesn't looks that well, bc i am working on custom biomes, but the terrain it self is way more nature rn
One image also shows you funny scenario of my broken optimalizations

pulsar sage
pale plume
#

Or entire oceans?

pulsar sage
#

ya

#

these are small teasers i will create nwe post soon with some basic gameplay as well

hexed karma
pulsar sage
#

thats when math is not mathing

pale plume
#

Math is always mathing

pulsar sage
lean violet
#

do you know calculus?

#

and linear algebra?

pulsar sage
#

ya

#

but its all fixed now

lean violet
#

That’s the only thing preventing me from doing something like this

pulsar sage
#

i was having problem with taking 1d array as 2d

lean violet
#

😭😭

pulsar sage
#

i besicly got over indexed thats why it got up so quickly

#

also first footage of biomes

pale plume
#

Bro is productive af

pale plume
pulsar sage
pale plume
#

Caves bao_foxxo_smug

pulsar sage
#

there will be two factors for picking right biome,

  • altitude
  • temperature
pale plume
#

And biomes next to it

pulsar sage
pulsar sage
pale plume
#

Well....

pulsar sage
#

but since temperature is kinda linear then it never happens having cold and hot biomes next to each other

pale plume
#

A desert should NEVER spawn directly next to a snowy hills biome
Even if the world gen changes rq

pulsar sage
#

that temperature will be a noise

pale plume
#

Ah

pulsar sage
#

👍

#

i have to take a rest rn

pale plume
#

Rest good

pulsar sage
#

its like 900 blocks long

steep warren
#

Holy smokes!

muted idol
#

im gonna have a look at implementing this with some form of greedy meshing for blocks. I wanna see how far i can push this concept lol

leaden pulsar
#

do you use different type of noise (like temprature/humidity)

#

idk

pale plume
#

He did

leaden pulsar
#

yes but what noise type

#

is it the same for shaping the terrain

leaden pulsar
#

i got so many question

#

me when math

pulsar sage
# leaden pulsar also did you blend the biomes using river/linear interpolation

well, idk if i want to anser bc it may change in the future anyway, well i want to use OpenSimplex bc its kinda fast and i dont need complex shapes for temprature, ya i will try to implement humidity as well, but in that i case i have to create at laest 10 biomes to make it work properly, also i was thinking of implementing custom fog management for this biomes.

pulsar sage
deep bridge
#

@sick holly look at this

leaden pulsar
#

did you use biome blending

pulsar sage
#

nah, i just started working on it lmao

pulsar sage
#

🤫 He is basic teaser for tomorrow

pale plume
#

UPDATE: its now called spicy

pulsar sage
#

UPDATE: the footage is old, background terrain doesn't exist anymore

#

UPDATE: this project has been discontinued and archived

#

UPDATE: This project is back on track and I'm working on it

high junco
#

Wut

lean violet
pulsar sage
sly totem
leaden pulsar
#

con

#

do you know how to implement /locate like

#

to locate specific biome

#

using the data from your noise

pale plume
#

Totally possible... we would just need custom commands from scripting api, that is missing since years XD

muted idol
deep bridge
#

biometypes class

pale plume
pulsar sage
#

nah, only chat commands

#

like "!give"

pale plume
#

Thats just text matching lmao

#

@muted idol amethyst js command api when?

pulsar sage
muted idol
pale plume
muted idol
#

ill redo it later then show it off in amethyst

pale plume
#

Noice

#

Do you plan on adding the js api to amethyst as well?