Minecraft Umsetzung... wie macht man so etwas?
Übersicht

Gehe zu Seite Zurück 1, 2, 3 Weiter
![]() |
Chrise |
![]() Antworten mit Zitat ![]() |
---|---|---|
Auch wenns schon länger her ist, Respekt, BIG BUG. So big scheint der bug nicht zu sein ![]() Übrigens stimme ich dir zu, dass MineCraft schätze ich bestimmt so schlau war, das auf diese Art und Weise zu machen ![]() |
||
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet. |
![]() |
grafe |
![]() Antworten mit Zitat ![]() |
---|---|---|
Starte mein programm einmal im debugmodus und schau in debuglog
dort wird die aktuelle anzahl der vertices beim momentanen surface angezeigt. Du wirst feststellen das die vorherigen Surfaces alle tadellos funktionieren, obwohl sie genau gleich viele Vertices haben. ![]() |
||
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dir ist aber schon klar, dass Du hier über 125 Millionen Polygone erstellen möchtest?
Cubes die man nicht sieht DÜRFEN natürlich NICHT erstellt werden... Nehme an dass Blitz / DX7 bei solchen Polygonmengen schlichtweg aussteigt... |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe mal eine sehr simple Herangehensweise ausprobiert und komme damit auf meinem mistigen Laptop immerhin noch auch 60 FPS. Im Vergleich dazu schnitt die "alles in ein Surface"-Methode mit drei Sekunden pro Frame eher schlecht ab.
![]() Man teilt einfach die Landschaft (512x64x512 in diesem Fall) einfach in kleinere Chunks (bei mir 32x32x32) auf, die alle ein eigenes Mesh und Surface haben. Diese Chunks beherbergen alle die Geometrie der umschlossenen Würfel und werden mit EntityAutoFade ![]() ![]() ![]() Ein weiterer Vorteil ist ausserdem, dass man Problemlos editieren kann. Wenn man einen Würfel setzt, muss man nur den umschliessenden Chunk neu erstellen statt gleich die ganze Levelgeometrie. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
Angelo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Krasse sache ^^
Also für Lego Spiele, ist das einfach nur ein muss. |
||
Alles was ich sagen kann, können auch andere ^^ |
![]() |
grafe |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke Noobody. Das hilft mir echt weiter! ![]() Edit: Eine Frage habe ich noch. Wir texturiert man einen Würfel mit 8 Vertices? Ich schaffe es immer nur, dass 4 Flächen richtig angezeigt werden, 2 sind falsch. BlitzBasic: [AUSKLAPPEN] V1% = AddVertex(s\Surface, X - ScaleX, Y + ScaleY, Z - ScaleZ,0,1) Kann es sein, dass man einen Würfel mit 8 Vertices gar nicht richtig Texturieren kann? mfg Grafe |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, du musst ja auch bedenken das 2 Seiten IMMER den Selben VErtexpunkt bzw. die SELBEN U/V Koordinaten haben. Dann hast du bei der Fläche eins die Koordinaten 0/0 und 0/1 und bei Fläche zwei auch, das kann ja nicht gut gehen ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe auch mal meine bisherigen Stand hoch geladen...
Der letzte Post hat mich schon auf einen Fehler aufmerksam gemacht - ich benutze ebenfalls bislang 8 Punkte pro Würfel... Naja meine Probleme sind aber noch die Performance, die ungenauigkeit beim "schießen" vor allem wenn man weiter rechts zum nächsten Levelteil kommt und die Texturen, was sich aber nun aufgeklärt hat... W,A,S,D zum laufen linke Maustaste - schießen space - springen ![]() Hoffe ihr könnt mir helfen. Bzw. ist mein Ansatz soweit OK oder mache ich schon große Fehler? Nur zum testen, dann müsst ihr selbst nix basteln... Code zum laden (Rechtsklick > speichern ... ihr kennt das ja) http://creativnix.de/B3D/Start.bb Code: [AUSKLAPPEN] ;Print "1 - 1024/768/32"
;Print "2 - 800/600/32" ;Print "3 - 600/480/32" ;Print "4 - 1024/768/16" ;Print "5 - 800/600/16" ;Print "6 - 600/480/16" ;grafikmode = Input("Grafikmodus wählen: ") grafikmode=2 If grafikmode=1 Then gfmx=1024 gfmy=768 gbit=32 If grafikmode=2 Then gfmx=800 gfmy=600 gbit=32 If grafikmode=3 Then gfmx=600 gfmy=480 gbit=32 If grafikmode=4 Then gfmx=1024 gfmy=768 gbit=16 If grafikmode=5 Then gfmx=800 gfmy=600 gbit=16 If grafikmode=6 Then gfmx=600 gfmy=480 gbit=16 If grafikmode<1 Or grafikmode>6 Then gfmx=1024 gfmy=768 gbit=32 Graphics3D gfmx,gfmy,gbit,2 SetBuffer BackBuffer() font=LoadFont( "arial",14 ) SetFont font Global test=LoadTexture("tex.jpg") Const TSize#=.5 ;64/128 = 0.5 Textur Size (eine Teil Textur aus der Datei) Global TexS#,TexZ# ;###################################### Create/Load Objekte Global cam2=CreateCube() EntityRadius cam2,1.5 EntityType cam2,1 Global cam = CreateCamera() CameraRange cam,.1,250 EntityRadius cam,2 MoveEntity cam2,0,160,-5 licht=CreateLight(2) PositionEntity licht,0,100,0 Global fpsrate,fpstime,loops Type Feld Field feldwert% Field TS;tex Spalte Field TZ;tex Zeile ;Field ress% ;Field anzahl End Type Type Map Field mesh Field surf End Type Const BSize%=4 ;Block size Const Size%=16;Anzahl Blocks in einem "Level Teil" Size X Size X Size ;!!!!!!!! ACHTUNG nicht mehr als 2 sonst hängt es mal schnell !!!!!!!! Const MSize%=1;Map Size Dim Felder.Feld(Size*(MSize+1),Size*(MSize+1),Size*(MSize+1)) Dim Level.Map(MSize,MSize,MSize) ;Dim Felder.Feld(100,100,100) Global x,y,z,Mx,My,Mz For Mx = 0 To MSize For My = 0 To MSize For Mz = 0 To MSize Level( Mx,My,Mz ) = New Map Level( Mx,My,Mz )\mesh = CreateMesh() Level( Mx,My,Mz )\surf = CreateSurface( Level( Mx,My,Mz )\mesh ) EntityType Level( Mx,My,Mz )\mesh,2 EntityPickMode Level( Mx,My,Mz )\mesh,2 EntityTexture Level( Mx,My,Mz )\mesh,test MoveEntity Level( Mx,My,Mz )\mesh,Mx*BSize,My*BSize,Mz*BSize For x = Mx*Size To Mx*Size+Size For y = My*Size To My*Size+Size For z = Mz*Size To Mz*Size+Size Felder( x, y, z ) = New Feld If y>29 Then Felder( x, y, z )\feldwert = 0 Else Felder( x, y, z )\feldwert = 1;Rand( 0, 1 ) If y<3 Then Felder( x, y, z )\ts = 0 Felder( x, y, z )\tz = 1 ElseIf y<5 Then Felder( x, y, z )\ts = 1 Felder( x, y, z )\tz = 0 ElseIf y=9 Then Felder( x, y, z )\ts = 1 Felder( x, y, z )\tz = 1 Else Felder( x, y, z )\ts = 0 Felder( x, y, z )\tz = 0 EndIf Next Next Next ;Version mit nur einem Mesh (Single Surface) = schnell For x = Mx*Size To Mx*Size+Size For y = My*Size To My*Size+Size For z = Mz*Size To Mz*Size+Size xMax=Mx*Size+Size yMax=My*Size+Size zMax=Mz*Size+Size If Felder( x, y, z )\feldwert <> 0 Then NichtSichtBar=0 ;X If x>0 Then If Felder( x-1, y, z )\feldwert <> 0 Then NichtSichtBar=NichtSichtBar+1 EndIf If x<xMax Then If Felder( x+1, y, z )\feldwert <> 0 Then NichtSichtBar=NichtSichtBar+1 EndIf ;Y If y>0 Then If Felder( x, y-1, z )\feldwert <> 0 Then NichtSichtBar=NichtSichtBar+1 EndIf If y<yMax Then If Felder( x, y+1, z )\feldwert <> 0 Then NichtSichtBar=NichtSichtBar+1 EndIf ;Z If z>0 Then If Felder( x, y, z-1 )\feldwert <> 0 Then NichtSichtBar=NichtSichtBar+1 EndIf If z<zMax Then If Felder( x, y, z+1 )\feldwert <> 0 Then NichtSichtBar=NichtSichtBar+1 EndIf ;6 = An allen Seiten ist ein andere Block, der dem Spieler die Sicht versperrt ! If NichtSichtBar<6 Then TexZ=Felder( x, y, z )\tz*TSize ;Zeile TexS=Felder( x, y, z )\ts*TSize ;Spalte v0 = AddVertex (Level( Mx,My,Mz )\surf ,x*BSize ,y*BSize ,z*BSize ,TexZ ,TexS ) v1 = AddVertex (Level( Mx,My,Mz )\surf ,x*BSize+BSize ,y*BSize ,z*BSize ,TexZ+TSize ,TexS ) v2 = AddVertex (Level( Mx,My,Mz )\surf ,x*BSize ,y*BSize+BSize ,z*BSize ,TexZ ,TexS+TSize ) v3 = AddVertex (Level( Mx,My,Mz )\surf ,x*BSize+BSize ,y*BSize+BSize ,z*BSize ,TexZ+TSize ,TexS+TSize ) v4 = AddVertex (Level( Mx,My,Mz )\surf ,x*BSize ,y*BSize ,z*BSize+BSize ,TexZ+TSize ,TexS ) v5 = AddVertex (Level( Mx,My,Mz )\surf ,x*BSize+BSize ,y*BSize ,z*BSize+BSize ,TexZ ,TexS ) v6 = AddVertex (Level( Mx,My,Mz )\surf ,x*BSize ,y*BSize+BSize ,z*BSize+BSize ,TexZ+TSize ,TexS+TSize ) v7 = AddVertex (Level( Mx,My,Mz )\surf ,x*BSize+BSize ,y*BSize+BSize ,z*BSize+BSize ,TexZ ,TexS+TSize ) ;Z If z>0 Then If Felder( x, y, z-1 )\feldwert = 0 Then AddTriangle (Level( Mx,My,Mz )\surf ,v2,v1,v0) AddTriangle (Level( Mx,My,Mz )\surf ,v1,v2,v3) EndIf Else AddTriangle (Level( Mx,My,Mz )\surf ,v2,v1,v0) AddTriangle (Level( Mx,My,Mz )\surf ,v1,v2,v3) EndIf If z<zMax Then If Felder( x, y, z+1 )\feldwert = 0 Then AddTriangle (Level( Mx,My,Mz )\surf ,v7,v4,v5) AddTriangle (Level( Mx,My,Mz )\surf ,v4,v7,v6) EndIf Else AddTriangle (Level( Mx,My,Mz )\surf ,v7,v4,v5) AddTriangle (Level( Mx,My,Mz )\surf ,v4,v7,v6) EndIf ;X If x>0 Then If Felder( x-1, y, z )\feldwert = 0 Then AddTriangle (Level( Mx,My,Mz )\surf ,v6,v0,v4) AddTriangle (Level( Mx,My,Mz )\surf ,v0,v6,v2) EndIf Else AddTriangle (Level( Mx,My,Mz )\surf ,v6,v0,v4) AddTriangle (Level( Mx,My,Mz )\surf ,v0,v6,v2) EndIf If x<xMax Then If Felder( x+1, y, z )\feldwert = 0 Then AddTriangle (Level( Mx,My,Mz )\surf ,v3,v5,v1) AddTriangle (Level( Mx,My,Mz )\surf ,v5,v3,v7) EndIf Else AddTriangle (Level( Mx,My,Mz )\surf ,v3,v5,v1) AddTriangle (Level( Mx,My,Mz )\surf ,v5,v3,v7) EndIf ;Y If y>0 Then If Felder( x, y-1, z )\feldwert = 0 Then AddTriangle (Level( Mx,My,Mz )\surf ,v0,v5,v4) AddTriangle (Level( Mx,My,Mz )\surf ,v5,v0,v1) EndIf Else AddTriangle (Level( Mx,My,Mz )\surf ,v0,v5,v4) AddTriangle (Level( Mx,My,Mz )\surf ,v5,v0,v1) EndIf If y<yMax Then If Felder( x, y+1, z )\feldwert = 0 Then AddTriangle (Level( Mx,My,Mz )\surf ,v3,v2,v7) AddTriangle (Level( Mx,My,Mz )\surf ,v6,v7,v2) EndIf Else AddTriangle (Level( Mx,My,Mz )\surf ,v3,v2,v7) AddTriangle (Level( Mx,My,Mz )\surf ,v6,v7,v2) EndIf EndIf EndIf Next Next Next Next Next Next timer=CreateTimer(30) ;######################################################################## ***Hauptschleife*** While Not KeyHit(1) If MouseHit(1) Then CameraPick (cam,400,300) PX=Int(PickedX#())/BSize PY=Int(PickedY#())/BSize PZ=Int(PickedZ#())/BSize Felder( px, py, pz)\feldwert=0 If KeyDown(29) Then If px>0 Then Felder( px-1, py, pz)\feldwert=0 If px<Size Then Felder( px+1, py, pz)\feldwert=0 If py>0 Then Felder( px, py-1, pz)\feldwert=0 If py<Size Then Felder( px, py+1, pz)\feldwert=0 If pz>0 Then Felder( px, py, pz-1)\feldwert=0 If pz<Size Then Felder( px, py, pz+1)\feldwert=0 EndIf Mx=Px/Size My=Py/Size Mz=Pz/Size FreeEntity Level( Mx,My,Mz )\mesh Level( Mx,My,Mz ) = New Map Level( Mx,My,Mz )\mesh = CreateMesh() Level( Mx,My,Mz )\surf = CreateSurface( Level( Mx,My,Mz )\mesh ) EntityType Level( Mx,My,Mz )\mesh,2 EntityPickMode Level( Mx,My,Mz )\mesh,2 EntityTexture Level( Mx,My,Mz )\mesh,test MoveEntity Level( Mx,My,Mz )\mesh,Mx*BSize,My*BSize,Mz*BSize For x = Mx*Size To Mx*Size+Size For y = My*Size To My*Size+Size For z = Mz*Size To Mz*Size+Size xMax=Mx*Size+Size yMax=My*Size+Size zMax=Mz*Size+Size If Felder( x, y, z )\feldwert <> 0 Then NichtSichtBar=0 ;X If x>0 Then If Felder( x-1, y, z )\feldwert <> 0 Then NichtSichtBar=NichtSichtBar+1 EndIf If x<xMax Then If Felder( x+1, y, z )\feldwert <> 0 Then NichtSichtBar=NichtSichtBar+1 EndIf ;Y If y>0 Then If Felder( x, y-1, z )\feldwert <> 0 Then NichtSichtBar=NichtSichtBar+1 EndIf If y<yMax Then If Felder( x, y+1, z )\feldwert <> 0 Then NichtSichtBar=NichtSichtBar+1 EndIf ;Z If z>0 Then If Felder( x, y, z-1 )\feldwert <> 0 Then NichtSichtBar=NichtSichtBar+1 EndIf If z<zMax Then If Felder( x, y, z+1 )\feldwert <> 0 Then NichtSichtBar=NichtSichtBar+1 EndIf ;6 = An allen Seiten ist ein andere Block, der dem Spieler die Sicht versperrt ! If NichtSichtBar<6 Then TexZ=Felder( x, y, z )\tz*TSize ;Zeile TexS=Felder( x, y, z )\ts*TSize ;Spalte v0 = AddVertex (Level( Mx,My,Mz )\surf ,x*BSize ,y*BSize ,z*BSize ,TexZ ,TexS ) v1 = AddVertex (Level( Mx,My,Mz )\surf ,x*BSize+BSize ,y*BSize ,z*BSize ,TexZ+TSize ,TexS ) v2 = AddVertex (Level( Mx,My,Mz )\surf ,x*BSize ,y*BSize+BSize ,z*BSize ,TexZ ,TexS+TSize ) v3 = AddVertex (Level( Mx,My,Mz )\surf ,x*BSize+BSize ,y*BSize+BSize ,z*BSize ,TexZ+TSize ,TexS+TSize ) v4 = AddVertex (Level( Mx,My,Mz )\surf ,x*BSize ,y*BSize ,z*BSize+BSize ,TexZ+TSize ,TexS ) v5 = AddVertex (Level( Mx,My,Mz )\surf ,x*BSize+BSize ,y*BSize ,z*BSize+BSize ,TexZ ,TexS ) v6 = AddVertex (Level( Mx,My,Mz )\surf ,x*BSize ,y*BSize+BSize ,z*BSize+BSize ,TexZ+TSize ,TexS+TSize ) v7 = AddVertex (Level( Mx,My,Mz )\surf ,x*BSize+BSize ,y*BSize+BSize ,z*BSize+BSize ,TexZ ,TexS+TSize ) ;Z If z>0 Then If Felder( x, y, z-1 )\feldwert = 0 Then AddTriangle (Level( Mx,My,Mz )\surf ,v2,v1,v0) AddTriangle (Level( Mx,My,Mz )\surf ,v1,v2,v3) EndIf Else AddTriangle (Level( Mx,My,Mz )\surf ,v2,v1,v0) AddTriangle (Level( Mx,My,Mz )\surf ,v1,v2,v3) EndIf If z<zMax Then If Felder( x, y, z+1 )\feldwert = 0 Then AddTriangle (Level( Mx,My,Mz )\surf ,v7,v4,v5) AddTriangle (Level( Mx,My,Mz )\surf ,v4,v7,v6) EndIf Else AddTriangle (Level( Mx,My,Mz )\surf ,v7,v4,v5) AddTriangle (Level( Mx,My,Mz )\surf ,v4,v7,v6) EndIf ;X If x>0 Then If Felder( x-1, y, z )\feldwert = 0 Then AddTriangle (Level( Mx,My,Mz )\surf ,v6,v0,v4) AddTriangle (Level( Mx,My,Mz )\surf ,v0,v6,v2) EndIf Else AddTriangle (Level( Mx,My,Mz )\surf ,v6,v0,v4) AddTriangle (Level( Mx,My,Mz )\surf ,v0,v6,v2) EndIf If x<xMax Then If Felder( x+1, y, z )\feldwert = 0 Then AddTriangle (Level( Mx,My,Mz )\surf ,v3,v5,v1) AddTriangle (Level( Mx,My,Mz )\surf ,v5,v3,v7) EndIf Else AddTriangle (Level( Mx,My,Mz )\surf ,v3,v5,v1) AddTriangle (Level( Mx,My,Mz )\surf ,v5,v3,v7) EndIf ;Y If y>0 Then If Felder( x, y-1, z )\feldwert = 0 Then AddTriangle (Level( Mx,My,Mz )\surf ,v0,v5,v4) AddTriangle (Level( Mx,My,Mz )\surf ,v5,v0,v1) EndIf Else AddTriangle (Level( Mx,My,Mz )\surf ,v0,v5,v4) AddTriangle (Level( Mx,My,Mz )\surf ,v5,v0,v1) EndIf If y<yMax Then If Felder( x, y+1, z )\feldwert = 0 Then AddTriangle (Level( Mx,My,Mz )\surf ,v3,v2,v7) AddTriangle (Level( Mx,My,Mz )\surf ,v6,v7,v2) EndIf Else AddTriangle (Level( Mx,My,Mz )\surf ,v3,v2,v7) AddTriangle (Level( Mx,My,Mz )\surf ,v6,v7,v2) EndIf EndIf EndIf Next Next Next EndIf mxs#=-MouseXSpeed() mys#=MouseYSpeed() If mxs#<>0 Then RotateEntity cam2,EntityPitch(cam2),EntityYaw(cam2)+mxs#,EntityRoll(cam2):RotateEntity cam,EntityPitch(cam),EntityYaw(cam)+mxs#,EntityRoll(cam) If mys#<>0 Then If mys#>0 Then If EntityPitch(cam)+mys#>70 mys#=70-EntityPitch(cam) EndIf RotateEntity cam,EntityPitch(cam)+mys#,EntityYaw(cam),EntityRoll(cam) ElseIf mys#<0 Then If EntityPitch(cam)+mys#<-70 mys#=-70-EntityPitch(cam) EndIf RotateEntity cam,EntityPitch(cam)+mys#,EntityYaw(cam),EntityRoll(cam) EndIf EndIf MoveMouse 320,240 speed0#=1 If KeyDown( 32 ) Then speed5#=speed0# Else speed5#=0 If KeyDown( 30 ) Then speed6#=-speed0# Else speed6#=0 If KeyDown( 31 ) Then speed3#=-speed0# Else speed3#=0 If KeyDown( 17 ) Then speed4#=speed0# Else speed4#=0 MoveEntity cam2,speed5#,0,speed3# MoveEntity cam2,speed6#,0,speed4# MoveEntity cam2,0,0,0 If EntityY(cam2)>0 Then MoveEntity cam2,0,-0.5,0 If KeyHit(57) Then MoveEntity cam2,0,5,0 PositionEntity cam,EntityX#(cam2),EntityY#(cam2)+4.5,EntityZ#(cam2) Collisions 1,2,2,2 UpdateWorld RenderWorld Text 10,10,"FPS: "+FPS() Text 10,30,"Pick: "+PX+" / "+PY+" / "+PZ Text 10,570,"Strg beim schießen gedrückt halten für Monster Schuss" Text 400,300,"." WaitTimer(timer) Flip Wend End Function FPS() loops = loops + 1 If MilliSecs() - fpstime > 1000 Then fpsrate = loops loops = 0 fpstime = MilliSecs() EndIf Return fpsrate End Function End |
||
- Zuletzt bearbeitet von onkelz89 am Mo, Sep 27, 2010 14:03, insgesamt einmal bearbeitet
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
war doppelt - wodurch auch immer - bitte löschen... | ||
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich bekomme hin und wieder Array Index Out Of Bounds bei deinem Programm ![]() Da ich seit wenigen Monaten auch ein blockiges Spiel programmiere, kommen mir alle Posts sehr gelegen. Momentan werden Würfel noch komplett und einzelständig erstellt, wobei ich den Performancegewinn hauptsächlich dadurch gewinne, das Nutzer die Blockbreite, -höhe und -tiefe festlegen können. |
||
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das Problem mit Array Index... ist behoben. War ein - wie so häufig - Flüchtigkeitsfehler ^^
Ich lade gerade ein Video bei Youtube hoch um meinen aktuellen Stand zu präsentieren. Es ist noch nicht viel, aber ich erhoffe mir sehr viel aus dieser "Grundstruktur"... später mehr Sobald das Video ( ~55 MB ) oben ist, editiere ich diesen Beitrag. http://www.youtube.com/watch?v=DAM9Uju3XJg |
||
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sieht ganz cool aus.
Der Sauerbraten-Editor auch mit so Cubes. lg, count-doku |
||
![]() |
grafeBetreff: Aktueller Stand |
![]() Antworten mit Zitat ![]() |
---|---|---|
Puh da hab ich ja Konkurrenz ![]() Da will ich euch meinen Stand mal nicht vorenthalten ![]() Bei mir sieht das ganze mittlerweile so aus: Momentane Features: ![]() ![]() ![]() ![]() Wer will kann sich das ganze auch mal ansehen: Download (547 Kb) Freue mich auf jedes Feedback ![]() Grafe |
||
- Zuletzt bearbeitet von grafe am Mi, Sep 29, 2010 11:33, insgesamt einmal bearbeitet
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Teil sprengt meinen Speicher ![]() |
||
Starfare: Worklog, Website (download) |
![]() |
grafe |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das liegt daran, dass es die Würfel aus einer Highlandmap ausliest, welche 512 * 512 Pixel hat
und bei ReadPixelFast gibt es immer ein MAV. Darum verwende ich ReadPixel, welches funktioniert, aber dafür auch langsam ist... Edit: Ich habe eine neue Version hochgeladen. Dort kann man zwischen drei verschieden grossen Maps auswählen Download(547 KB) mfg grafe |
||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
die mav kommt wahrscheinlich weil du einen pixel bei 512,0 auslesen willst die heighmap aber nur bit 511 geht. bei koprrekter benutzung von readpixelfast passieren eigentlich keine fehler | ||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
grafe |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Goodjee : Danke! Problem behoben ![]() Doch merke ich jetzt, dass es nicht spürbar schneller ist ![]() trotzdem danke |
||
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Konnte deine Version leider nicht testen, da mein momentan laufender Rechner - mein auf der Brust etwas schwächerer programmier Rechner ist.
Aber ich bin sicher das man da noch einiges optimieren kann ![]() Ich bin bei meinem "Editor" momentan dabei Licht zu integrieren... allerdings, bin ich am nachdenken, wie man am einfachsten prüfen kann (und performance sparsam) ob zwischen dem Licht und dem Block weitere Blöcke sind, die die Sicht verdecken... Via VertexColor und EntityFx 1+2 habe ich es geschafft, schön aussehendes "Kugel Fake Licht" zu erstellen, aber der Punkt oben bedeutet, dass man zB einen Tunnel unter dem Licht baut und dieser Tunnel dennoch hell ist... Ich hoffe die Erklärung ist soweit verständlich. Hier noch ein Bild dazu: |
||
![]() |
AnniXa |
![]() Antworten mit Zitat ![]() |
---|---|---|
cool, ich hatte auch so etwas gemacht, anfangs wollte ich auch nur simple blocke darstellen aber inzwischen ist es doch etwas komplexer geworden =)
Texturen passen sich ihren nachbarblöcken an, und die mesh der blöcke auch, dafür gibt es ein eigenes dateiformat, das jeder fläche die am "rand" des blocke ist eine eigenschaft geben kann, zum aussortieren von flächend ie ohnehin nie sichtbar wären, und daher auch nicht erzeugt werden, bzw nur erzeugt werden wenn die fläche sichtbar ist (also es in diese richtung keinen nachbarblock gibt) oder nur teilweise sichtbar ist. Geschrieben ist es in blitzmax mit minib3d, Ziel ist es damit Große 3d welten zu realisieren, die jedoch nicht allzu simpel aufgebaut sind, für verschiedene spieleprojekte die ich mit einem freund umsetzen möchte, bzw gerade umsetze. inzwischen arbeite ich seit ca einem halben jahr daran mal mit mehr, mal mit weniger elan. Erste tests auf machbarkeit und leistung: ![]() ![]() ![]() Komplexere dinge als nur würfel: ![]() ![]() ![]() 2d iso ansicht ![]() Wände, mauern, und dynamische dungeons ![]() ![]() ![]() |
||
|moonForge|
Ich bin Pokémon Meisterin seit 1998! |
![]() |
AnniXa |
![]() Antworten mit Zitat ![]() |
---|---|---|
grafe hat Folgendes geschrieben: Danke Noobody. Das hilft mir echt weiter!
![]() Edit: Eine Frage habe ich noch. Wir texturiert man einen Würfel mit 8 Vertices? Ich schaffe es immer nur, dass 4 Flächen richtig angezeigt werden, 2 sind falsch. BlitzBasic: [AUSKLAPPEN] V1% = AddVertex(s\Surface, X - ScaleX, Y + ScaleY, Z - ScaleZ,0,1) Kann es sein, dass man einen Würfel mit 8 Vertices gar nicht richtig Texturieren kann? mfg Grafe Die sache mit den würfeln hat mit viel kopfzerbrechen bereitet, man benötigt für eine vernünftuge UV map für einen würfel 12 vertixes, nach langem herumprobieren habe ich das erfahren müssen ![]() |
||
|moonForge|
Ich bin Pokémon Meisterin seit 1998! |
Gehe zu Seite Zurück 1, 2, 3 Weiter
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group