Grundlegende überlegungen zu einem Terraineditor

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

GermannX

Betreff: Grundlegende überlegungen zu einem Terraineditor

BeitragSa, Mai 05, 2012 14:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo alle zusammen! Smile
Nach dem ich nun einige Jahre nicht mehr Programmiert habe, habe ich jetzt wieder beschlossen, wieder mal von ganz neuem mit B3D anzufangen und die Grundlagen sind schon wieder am kommen. Trotzdem fehlt mir natürlich noch der tiefere Durchblick bzw. programmtechnischer Überblick, weshalb ich die erfahreneren User hier bitten würde, mich in folgender Grundlagenfrage zu beraten Smile

Mein Ziel ist es, einen Map-Editor für ein geplantes 3d-spiel zu programmieren. jetzt ist meine überlegung, ob es einen guten weg gibts, hierbei terrains zu nutzen. allerdings möchte ich nur sehr ungern ein terrain aus einer gemalten height-map laden, da ich (als ich das mal ausprobierte) der meinung war, dass das terrain zu kantig für ein spiel aus der ich-perspektive ist (als heightmap nutze ich das beispiel hier aus der hilfe auf diesem portal, es lag also nicht daran, dass ich etwa eine nicht weich gezeichnete heightmap genommen hätte). am liebsten würde ich eine möglichkeit schaffen das terrain in echtzeit mit dem editor zu modellieren (geziehlt stellen anheben und senken) und denke mal, dass sich das mit modifyterrain auch realisieren lassen müsste, nur wie soll ich dass dann speichern? gibt es da eine möglichkeit? die einzige die mir kommt ist, alle koordinaten aller vertexe (oder wie die mehrzahl auch nochmal hieß^^) auszulesen und einzeln abzuspeichern aber das klingt nach nem sehr unübersichtlichen unterfangen. meine andere option wäre es natürlich ansonsten, meine welt als mesh zu laden, aber dann wäre ich flächenmäßig bei meinen karten warscheinlich stark begrenzt oder? bin dankbar für alle guten richtungsanstösse udn vorschläge Smile

Danke schonmal im vorraus,

GermannX
...und der Tod warf seine Sense weg und stieg auf den Mähdrescher, denn es war Krieg!
 

bjh

BeitragSa, Mai 05, 2012 14:30
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,

wie erstellst du dein terrain?
mit loadterrain oder mit createmesh, createsurface, addvertex und addtriangle?

wenn dich die kanten stören, dann musst du halt die heightmap vergrößern.
z.b. eine 1024*1024 heightmap anstatt einer 512*512

ich programmieren zurzeit einen egoshooter, bei dem die vertexabstände 8m groß sind.
meine map lade ich aus einer datei mit bytegroßen(0-255) höheninformationen.

aber erst mal muss ich wissen, wie dus machen willst. Wink
 

GermannX

BeitragSa, Mai 05, 2012 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal danke für die flotte Antwort bjh Smile

Das ist auch eine der Dinge, wo ich mich gerne auf eine Empfehlung erfahrenerer programmierer verlassen würde. Darüber zerbreche ich mir jetzt schon seit mindestens 3 Stunden den kopf Very Happy Der Tip einfach das Terrain zu vergrößern ist natürlich die lösung, vielen dank, eigentlich peinlich, dass ich da nicht selber drauf kam Very Happy Macht es denn besondere unterschiede, wie ich das terrain erstelle? falls ja welche? (entschuldigung dass ich hier sowas frage, ich weiss ja man soll erstmal selber denken, aber in dem blitz3d buch dass ich habe ist der teil über 3d-grafik seeehr kompakt gehalten Sad ).

mfG

GermannX
...und der Tod warf seine Sense weg und stieg auf den Mähdrescher, denn es war Krieg!

Xeres

Moderator

BeitragSa, Mai 05, 2012 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstelle doch erst mal eine Übersicht, wie das fertige Spiel aussehen soll. Wenn man das Ziel nicht kennt, lässt sich immer schwer etwas dazu sagen... Ob du Terrains oder Meshes benutzten solltest, hängt davon ab, was du erreichen willst und davon, was du kannst.
Setze dir ein erreichbares Ziel und wenn du da ankommst, hast du genug gelernt um es besser um zu setzen.
Benutze die Online Hilfe doch erst mal, um dich mit den Terrainbefehlen auseinander zu setzen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

bjh

BeitragSa, Mai 05, 2012 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
mich würd auch noch interessieren, was für ein spiel es wird.
du hast ja oben mal irgendetwas von ich-perspektive geschrieben.

falls du starthilfen brauchst, dann helf ich gerne. Wink
 

GermannX

BeitragSa, Mai 05, 2012 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, also das hab ich eigentlich extra nicht erwähnt, weil es sonst wieder "das-ist-zu-viel-geschrei" gibt Very Happy an und für sich plane is ein singleplayer-rpg und ja, ich weiss das ist alleine quasi nicht zu machen und viel zu schwer und alles, nur hatte ich vor jahren schonmal so ein projekt laufen und war ich damals schon relativ weit (funktionierender mapeditor, allerdings hab ich da den boden als mesh geladen, physik, tag/nachwechsel, wetterwechsel, jahreszeitenwechsel, animierte tiere die durch die landschaft gewandert sind, auch wenn die ki noch mies war, etliche hundert meshes modelliert usw.). daher versucht bitte garnicht erst mir das auszureden, ich denke sowieso das dabei der weg das ziel ist Smile
Nur will ichs diesmal eben nach möglichkeit von vorne rein so vernünftig wie möglich anbelangen was die entscheidung terrain ja oder nein und wenn ja wie anbelangt. naja, geplant sind später mehrere mittelgroße regionen zwischen denen "schnell gereist" wird, um eine möglichst große welt realisieren zu können und trotzdem nicht auf hübsche meshes verzichten zu müssen. Einen konkreten entschluss wie groß die maps werden sollen, treffe ich aber in abhängigkeit von den technischen möglichkeiten.
MfG
...und der Tod warf seine Sense weg und stieg auf den Mähdrescher, denn es war Krieg!

Xeres

Moderator

BeitragSa, Mai 05, 2012 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Es spricht ja nichts gegen große Pläne, nur...
Wenn du alles gleichzeitig anfängst, ist es wie ein 10000 Teile Puzzle, für dass du ewig brauchen wirst. Sobald du merkst, dass das Terrainsystem komplett anders sein sollte, passt der Rest auf einmal nicht mehr.
Wenn du dich auf die Kernprobleme konzentrierst, bekommst du das ähnliche Problem, dass die übrigen Features da nicht mehr eingebaut werden können (aber du hast zumindest was lauffähiges).

Ich schätze, Meshterrains hätten den Vorteil, dass sie perfekt aneinander passen würden. Plus: Die Blitz eigenen Terrains unterstützen keine Höhlen oder Überhänge usw.

Mach ruhig, aber möglichst für jeden Teilaspekt eine techdemo, damit du weißt, was geht. Und wenn du alles mal zusammen baust, trau dich ruhig alles unwichtige raus zu streichen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

bjh

BeitragSa, Mai 05, 2012 21:58
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab erstmal noch eine frage zu deinen tarrains:
wie sehen di map-grenzen aus?
benutzt du wasser also inseln oder gibt es unsichtbare wände oder wird der spieler aufgefordert umzukehren?
und in welcher zeit spielt das ganze?
interressiert mich halt Wink
wenn sonst noch was ist, einfach sagen.
ich könnte dir in einem beispielcode zeigen, wie ich meine maps erstellen lasse.

Tankbuster

BeitragSo, Mai 06, 2012 3:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht hilft dir auch einfach schon TerrainDetail Wink
Twitter
Download Jewel Snake!
Windows|Android
 

GermannX

BeitragSo, Mai 06, 2012 9:15
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Xeres: jops so wirds warscheinlich laufen, aber wie gesagt, mir gehts nicht um das ergebniss, sondern den weg und was ich dabei lerne, aber techdemos für einzele aspekte finde ich einfach witzlos, also mach ich lieber ein riesenprojekt, wo ich mal mit sehr vielem in kontakt komm, obs nun klappt oder nicht XD
Aber warscheinlich sind meshes tatsächlich ganz schlau und grade was überhänge anbelangt die einzige lösung.

@bjh:
eine weitere schwierige frage. Ich denke zum teil werde ich schauen, dass unüberwindbare berge die map begrenzen und zum teil werde ich wohl leider tatsächlich auf den aufruf an den spieler, umzukehren, zurückgreiffen lassen, wobei sich das bei meinem szenario, einer von bürgerkriegen geschüttellten, untergehenden industriegesellschaft in einer verseuchten welt, wohl noch relativ gut verstecken lässt. hierbei ist mein gedanke, verglechbar mit "strahlung" oder anderem aus spielen bekannten, eine "nitrosegasbelastung" und eine "schwermetallbelastung" einzuführen, da die von mir erdachte gesellschaft stark bergbauorientiert ist. somit könnte man auch einfach die karte durch zu verseuchte gebiete begrenzen.

@Tankbuster:
Danke, aber damti habe ich natürlich schon gespielt Smile
aber ja, in kombination mit einem größeren terrain sieht es damit jetzt nicht mehr eckig aus .

MfG
...und der Tod warf seine Sense weg und stieg auf den Mähdrescher, denn es war Krieg!
 

Matthias

BeitragSo, Mai 06, 2012 10:48
Antworten mit Zitat
Benutzer-Profile anzeigen
@GermannX

Mein Lieblingsthema.

Lange habe ich mich unter Blitz3D mit diesem Thema beschäftigt.

Ich habe viele wertvolle Erfahrungen auf diesem Gebiet gesammelt, die mir mir jetzt unter BlitzMax+OpenGl von nutzen sind.

Vieleicht kannst du dieses Beispiel für dich benutzen.
https://www.blitzforum.de/foru...mp;start=0

Für mich macht es allerdings keinen Sinn mehr unter Blitz3D daran weiter zu arbeiten.
Weil Blitz3D schon sehr alt ist, und BlitzMax+OpenGl durch seine Shader um Welten schneller ist.

Es gibt mehrere Möglichkeiten.
Die einfachste ist folgende.
BlitzTerrain mit ModifyTerrain. Functioniert auch recht schnell.
Probleme gibs dann aber bei der Textur.
Bei 512x512 gibs noch keine Probleme.
Ab 1024x1024 dauert das Locken/Unlocken zum bearbeiten extrem lange und es ruckelt.

Mann kann das Problem eindämmen indem mann nich sofort auf die Textur schreibt sondent ersteinmal
in einem Dimfeld.
Bei jedem Mainloop wird dann nur ein kleiner bereich auf die Textur übertragen.
Auch kann mann sehr schnell auf dieses Dimfeld zugreifen um zb eine Pinseltextur einzumischen.


Nachteil ist natürlich das die Veränderungen erst mit einer kleinen Verzögerung sichtbar werden.
Aber es ruckelt dann wenigstens nicht mehr.

Für das Terrain selbst bietet sich diese Technick natürlich auch an. Gerade beim heben und senken.
Wenn mann das Terrain etwas glätten will (Blur) kommt mann um ein Dimfeld nicht drum herum.
 

bjh

BeitragSo, Mai 06, 2012 12:00
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe loadterrain nur als blutiger anfänger benutzt.

deshalb zeig ich hier mal den aufbau meiner maps:
BlitzBasic: [AUSKLAPPEN]
Dim map(128,128);das dimfeld für die 129*129 vertexpunkte der map

Graphics3D 0,0,32,1;vollbild und desktopauflösung
SetBuffer BackBuffer()
AmbientLight 255,255,255
timer=CreateTimer(60);timer

map_m=CreateMesh();das mesh der map
map_s=CreateSurface(map_m);das surface der map

;falls das bild map.png vorhanden ist, einfach die strichpukte entfernen
;map_i=LoadImage("map.png")
;DrawImage map_i,0,0
;FreeImage map_i

For x=0 To 128
For y=0 To 128
map(x,y)=AddVertex(map_s,x,$FF And ReadPixel(x,y),y,x,y);vertexe erstellen mit pixelblauwerte die höhe 0-255
Next
Next
For x=0 To 127
For y=0 To 127
AddTriangle map_s,map(x,y+1),map(x+1,y),map(x,y); die zwei polygone für jeweils ein quadrat
AddTriangle map_s,map(x,y+1),map(x+1,y+1),map(x+1,y)
Next
Next

cam=CreateCamera();die kamera
MoveEntity cam,64,99,64
TurnEntity cam,90,0,0

WireFrame 1;wireframemodus

While Not KeyHit(1)


UpdateWorld;kollisionen gibt es noch keine
RenderWorld;rendern

Flip 0
WaitTimer timer
Wend
End


is ein funktionsfähiger code

erstellt ein grid mit den höheninformationen eines bildes.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group