może ten skrypt rozwiąże problem
umieszczasz go w create obiektu startowego
GML
_x=room_width/32+1;//32 to wielkość splitu
_y=room_height/32+1;// najlepszy jest split o tej samej wysokości co szerokości
i=0;j=0;k=0;
for(j=1;j<=_y;j+=1)for(i=1;i<=_x;i+=1){
c[j,i]=floor(random(2));//losowanie warunków początkowych
ch[j,i]=1;
};
for(j=0;j<=_y;j+=1) c[j,_x+1]=0;
for(i=0;i<=_x;i+=1) c[_y+1,i]=0;
c[_y+1,_x+1]=0
for(k=0;k<16;k+=1){//dla mniejszej liczby iteracji krawędzie nie będą gładkie
for(j=2;j<_y;j+=1)for(i=2;i<_x;i+=1) ch[j,i]=(c[j-1,i-1]+c[j-1,i]+c[j-1,i+1]+c[j,i-1]+c[j,i]+c[j,i+1]+c[j+1,i-1]+c[j+1,i]+c[j+1,i+1])div 5
for(j=1;j<=_y;j+=1)for(i=1;i<=_x;i+=1) c[j,i]=ch[j,i];
};
for(j=1;j<=_y;j+=1)for(i=1;i<=_x;i+=1){
sum=c[j-1,i-1]+c[j-1,i]+c[j-1,i+1]+c[j,i-1]+c[j,i]+c[j,i+1]+c[j+1,i-1]+c[j+1,i]+c[j+1,i+1]
if(c[j,i]=1){
n=instance_create(32*(i-1),32*(j-1),przeszkoda);
n.image_index=sum div 7;
}
};
Uwagi
skrypt wygeneruje plansze z tunelami, wyspami i pęcherzykami, plansza jest dla widoku z góry
w tej wersji skrypt działa dla przeszkody z splitem wyśrodkowanym
bohater powinien nie być szerszy od wielkości splitu przeszkody
przeszkoda dla image_index=0 powinna być niezniszczalna, a dla image_index=1 zniszczalna