Zufallsgenerierte Welten

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

sbrog

Betreff: Zufallsgenerierte Welten

BeitragMo, Jul 12, 2004 20:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Tag allerseits.
Ich würde vielleicht in nächster Zeit mal gerne einen Canonklon proggen, und hab auch schon Konzete für das Gameplay und andere DInge, aber ich habe keine Ahnung, wie ich zufallsgenerierte Welten erstellen soll und wie dann die Kollisionsabfrage mit der erdoberfläche läuft.

Kann mir jemand allgemein schildern , wie man solche Welten berechnet ?

Freeman

BeitragMo, Jul 12, 2004 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würde jeder Welt ne ID(numer) gebn und dann kannste das ganz gewohnt machen

Code: [AUSKLAPPEN]

seedrnd millisecs()

id = rnd(1,10)

if id = 1 then loadmap_1
if id = 2 then loadmap_2
.........


so würd ichs machen, is aber nur ne fixe idee ^^

FrEeMaN

dominik

BeitragMo, Jul 12, 2004 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaub nich das er NUR eine seiner vorher erstelleten welte zufällig auswähllen will sonder eher die gesamte kasrte per zufall erstellen will.

da ich nichts genaues üer dein game weis kann ich dir aber auch nicht viel sagen, nur vll das du dir wenn es z.B. um eine 2D map geht zufällig bestimmte punkte auswählts und dann festelgst ob da land oder wasser ist und dann von diesen punkten im kreis ausgehts und da dann wieder zufällig festlegst ob da wasser oder land sein soll. allerdings solltest du da dann halt schon die angrenzenden felder mit in die zufalls berechnug mit einbeziehen da wenn z.B. rechts un links liegenden felder beide land sind die chancen 80/20 stehen das dann hier auch wieder land hinkommt.

sbrog

BeitragMo, Jul 12, 2004 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich dachte eher an eine 2d-Berglandschaft,die man im Querschnitt sieht.

Die höhen sollen zufällig berechnet werden, aber mir ist klar, dass wenn ich jedem punkt eine zufällige höhe zuweise, dass dann nur Zackenmonster herauskommen.

Ich denke , man sollte den Bildschirm mit senkrechten Begrenzungen unterteilen und jedem Teil eine maximal und minimalhöhe zuordnen, dann teilt man die teile nochmal und ordnet wieder allen eine Minimal und maximalhöhe zu. Würde das klappen ?

dominik

BeitragMo, Jul 12, 2004 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
errechne alle 100 - 200 pixel einen wer und lass alle anderen mit sin/cos in wellen form abfallen.

sbrog

BeitragMo, Jul 12, 2004 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Wäre auch eine möglichkeit, aber das ist meiner meinung nach irgendwie zu glatt Very Happy


ich hab eine möglichkeit gefunden, einigermaßen echte Berge zu kreieren, könnte ich auf dieser basis eine Oberflächenlinie errechnen ?

Code: [AUSKLAPPEN]

Graphics 800,600
seedrnd millisecs()
a= 520
For x = 0 To 800

y= Rnd(a+5,a-5)
a= y
Plot x,y
Next
WaitKey

YellowRider

Ehemaliger Admin

BeitragMo, Jul 12, 2004 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.inarie.art-fx.org/s...index.html

TheShadow

Moderator

BeitragMo, Jul 12, 2004 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
ganz klar: spline mit sinus-förmiger steigung

www.blitzbase.de/screen.jpg
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

sbrog

BeitragMo, Jul 12, 2004 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist mit so einem Spline auch eine rauhere ,strukturiertere Oberfläche möglich ?

TheShadow

Moderator

BeitragMo, Jul 12, 2004 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab die sogar extra geglättet, damit es schöner aussieht - kannst ja (nachdem du die perfekte geometrie hast) anrauhern wie du willst...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

sbrog

BeitragMo, Jul 12, 2004 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann werde ich mal mit diesem Thema auseinandersetzen. In Robs Tutorial gibts glaube ich Beispielcode dazu.

Danke Very Happy
 

Jaramia

BeitragMo, Jul 12, 2004 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 320, 240, 0, 2

startheight = 50
abweichung = 5

height = Rand( startheight - 10, startheight + 10 )
altheight = height

For x = 0 To GraphicsWidth()
   height = altheight + Rand( -abweichung, abweichung )
   Line x, GraphicsHeight(), x, GraphicsHeight() - height
   altheight = height
Next

WaitKey


sieht fast so aus wie beim ur-tank Wink!

/edit: ich seh gerade das ein ähnlicher ansatz schon mit plots gemacht wurde... egal ^_^
alu.art-FX.org

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group