Unendliches Universum speichern in Null Bytes von ??? |
Alle Positionen der Sterne sind fest definiert - indem die Quersumme des Clusters als SeedRnd verwendet wird. So könnte man theoretisch ein kompliziertes Universum schaffen - ohne es je zu speichern - und es ist jedesmal wieder gleich, wenn man wieder mal durchfliegt (So was wie eine Schöpfungs-DNS - hmm, ist wohl etwas vermessen :) ) [code:1:af8340e0e2] Graphics3D 630,480,16,2 SetBuffer BackBuffer() Global csize=400 Global dichte=40 Dim o(dichte,2,2,2) Global x#=0 Global y#=0 Global z#=0 Global xc=0 Global yc=0 Global zc=0 UpdateEnviroment() cam=CreateCamera() CameraFogMode cam,1 CameraFogRange cam,csize/2,csize ; mainloop While Not KeyDown(1) x#=EntityX(cam,1) y#=EntityY(cam,1) z#=EntityZ(cam,1) xc=Floor(x#/csize) yc=Floor(y#/csize) zc=Floor(z#/csize) If xc<>xc_old Or yc<>yc_old Or zc<>zc_old xc_old=xc yc_old=yc zc_old=zc UpdateEnviroment() EndIf If KeyDown(200) Then MoveEntity cam,0,0,10 EndIf If KeyDown(208) Then MoveEntity cam,0,0,-10 EndIf mxs#=-MouseXSpeed() mys#=MouseYSpeed() MoveMouse 320,240 TurnEntity cam,mys,mxs,0 RenderWorld() Text 0,0,x+" / "+y+" / "+z Flip Wend End Function UpdateEnviroment() For kk=0 To 2 For jj=0 To 2 For ii=0 To 2 seed=(xc+(ii-1))*(yc+(jj-1))*(zc+(kk-1)) SeedRnd(seed) For star=0 To dichte If o(star,ii,jj,kk)=0 Then o(star,ii,jj,kk)=CreateSprite() EndIf EntityColor o(star,ii,jj,kk),Rand(255),Rand(255),Rand(255) PositionEntity o(star,ii,jj,kk),((xc+(ii-1))*csize)+Rand(csize),((yc+(jj-1))*csize)+Rand(csize),((zc+(kk-1))*csize)+Rand(csize),1 Next Next Next Next End Function [/code:1:af8340e0e2] |