Tag/Nachtwechsel - Night and Day

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Krischan

Betreff: Tag/Nachtwechsel - Night and Day

BeitragDo, Apr 12, 2007 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Inspiriert durch die Gothic-Spiele habe ich mich mal interessehalber hingesetzt und versucht, einen Tag/Nachtwechsel möglichst realistisch hinzubekommen, halt so mit Morgendämmerung, Abendrot, Sterne und Nebel.

Waynes interessiert, ich hab die Demo inklusive Grafiken und Source ins Archiv hochgeladen.

Screenshots:
user posted image
Die Sonne geht gerade auf

user posted image
später nachmittag = bald Feierabend

user posted image
nachts sind alle Katzen blau?

Steuern kann man auch:

Pfeil rauf/runter = vor/zurück
Pfeil rechts/links = Himmelsmechanik vor/zurück beschleunigen
Space = Farbverlauf an/aus
F1 = Nebel an/aus

Also ich finds besser als bei Gothic Twisted Evil Wobei es hier bestimmt noch Raum für weitere Verbesserungen gibt. Viel Spass...

skey-z

BeitragDo, Apr 12, 2007 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Du weißt, dass du hier im Codearchiv bist?

diese Sektion ist dafür da anderen Codes zu präsentieren und keine (herunterladbaren) Programme reinzustellen.


Aber es sieht sehr nett aus.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

Krischan

BeitragDo, Apr 12, 2007 17:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar weiss ich das. Ich kann aber gerne nochmal den Code posten, nur macht der ohne die Grafiken wenig Sinn, daher der Verweis auf die ZIP-Datei wo alles drin ist:

Code: [AUSKLAPPEN]
; Night and Day
;
; von  Krischan
; Demo inspiriert durch Tag/Nachtwechsel bei den Gothic-Spielen

AppTitle "Night and Day"
Graphics3D 1024,768,32,1

; Startwerte
winkel#=3300.0            ; Position der Sonne
speed#=0.5               ; Geschwindigkeit der Simulation
sdetail=8               ; Anzahl Seiten der Lichtkugel
lod=2000               ; Terrain LOD

; Pivot für Steuerung und globale Variablen
Global cam, player
Global cam_pitch#, cam_yaw#
Global mvx#,mvy#,mvz#,targetpitch#,targetyaw#
player=CreatePivot()

; Verlaufsdatei laden
daylight=LoadImage("data\light.bmp")
daysize=ImageWidth(daylight)

; Farbfelder dimensionieren
Dim c1(daysize),c2(daysize),c3(daysize)
Dim s1(daysize),s2(daysize),s3(daysize)
Dim alpha#(daysize),xalpha#(daysize)

; Farbfelder auslesen
For x=0 To daysize-1

   rgb1=ReadPixel(x,0,ImageBuffer(daylight))
   rgb2=ReadPixel(x,18,ImageBuffer(daylight))
   rgb3=ReadPixel(x,36,ImageBuffer(daylight))
   rgb4=ReadPixel(x,54,ImageBuffer(daylight))
   
   c1(x)=(rgb1 And $FF0000)/$10000
   c2(x)=(rgb1 And $FF00)/$100
   c3(x)=(rgb1 And $FF)
   
   s1(x)=(rgb2 And $FF0000)/$10000
   s2(x)=(rgb2 And $FF00)/$100
   s3(x)=(rgb2 And $FF)
   
   a1=(rgb3 And $FF0000)/$10000
   a2=(rgb3 And $FF00)/$100
   a3=(rgb3 And $FF)

   x1=(rgb4 And $FF0000)/$10000
   x2=(rgb4 And $FF00)/$100
   x3=(rgb4 And $FF)
      
   alpha#(x)=Floor((a1+a2+a3)/3)/255
   xalpha#(x)=Floor((x1+x2+x3)/3)
         
Next

; Grafik für spätere Ausgabe skalieren
ScaleImage(daylight,0.1,1)

; Kamera
cam=CreateCamera(player)
PositionEntity cam,0,50,0
CameraZoom cam,1
CameraRange cam,0.1,10000
CameraFogRange cam,0,250

; Kamera ungefähr auf Sonnenaufgangsposition ausrichten
cam_pitch=-25
cam_yaw=180
targetpitch=-25
targetyaw=180

; Skyboxes: Sterne, Himmel, Nebel
stars=MakeSkyBox("data\night_","000","000","000","000","top","png",1003,3)
sky=MakeSkyBox("data\sky_","000","090","180","270","top","jpg",1002,2)
fog=MakeSkyBox("data\fog_","000","090","180","270","top","jpg",1001,1)

; Pivotpunkt erzeugen (daran hängt die Himmelsmechanik)
pivot=CreatePivot()
TurnEntity pivot,180,0,0
PositionEntity pivot,0,0,0

; Landschaft
terrain=LoadTerrain("data\heightmap.jpg")
TerrainDetail terrain,lod,True
ScaleEntity terrain,2,80,2
grass_tex=LoadTexture("data\mountain.jpg")
EntityTexture terrain,grass_tex
ScaleTexture grass_tex,20,20
PositionEntity terrain,-500,-20,-500

; Spähre für Lichtquelle und zweite Wolkenschicht
sphere=CreateSphere(sdetail)
PositionEntity sphere,0,-250,0
ScaleEntity sphere,1000,1000,1000
EntityColor sphere,128,128,128
EntityFX sphere,16
EntityBlend sphere,3
EntityAlpha sphere,0.5
RotateEntity sphere,0,0,90
skytex=LoadTexture("data\clouds.jpg")
EntityTexture sphere,skytex

; Sonne als Sprite
sun=LoadSprite("data\sun.bmp",2+256)
PositionEntity sun,0,0,1000
EntityParent sun,pivot
EntityFX sun,9

; Mond als Sprite
moon=LoadSprite("data\moon.bmp",2+256)
PositionEntity moon,0,0,-1000
EntityParent moon,pivot
EntityFX moon,9

; Sonnenschein als Sprite
sunshine=LoadSprite("data\sunshine.bmp",2+256)
PositionEntity sunshine,0,0,1000
EntityParent sunshine,pivot

; Sonnenlicht, welches die Spähre erhellt
sunlight=CreateLight(1)
PositionEntity sunlight,0,0,1500
LightColor sunlight,255,255,220
EntityParent sunlight,pivot
AmbientLight 64,64,64

; Zeitberechnungsteiler
hdiv#=daysize/24
mdiv#=hdiv#/60

; Mauszeiger in die Mitte
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2

; Hauptschleife
While Not KeyHit(1)

   ; Winkel um speed erhöhen
   winkel#=winkel#+speed#
   
   ; Tastatursteuerung
   If KeyDown(205) Then winkel#=winkel#+(speed#*5)      ; Pfeil rauf = vorwärts
   If KeyDown(203) Then winkel#=winkel#-(speed#*5)      ; Pfeil runter = rückwärts
   If KeyHit(57) Then si=1-si                     ; Space = Farbverlauf ein/ausblenden
   If KeyHit(59) Then fo=1-fo                     ; F1 = Nebel an/aus
      
   ; Nebelfarbe
   CameraFogMode cam,fo
   CameraClsColor cam,c1(w),c2(w),c3(w)
   CameraFogColor cam,c1(w)/1.5,c2(w)/1.5,c3(w)/1.5

   ; Nebel Alpha
   If fo=1 Then EntityAlpha fog,0.75 Else EntityAlpha fog,0
      
   ; Winkel begrenzen
   If winkel#>3599 Then winkel#=0
   If winkel#<0 Then winkel#=3599
   w=Int(winkel#)
      
   ; Skybox und Terrain beleuchten, Sonne färben, Himmel faden
   EntityColor sky,c1(w),c2(w),c3(w)
   EntityColor fog,c1(w)/2,c2(w)/2,c3(w)/2
   EntityColor terrain,c1(w),c2(w),c3(w)

   EntityColor sun,s1(w),s2(w),s3(w)
   EntityColor sunshine,s1(w),s2(w),s3(w)
   EntityColor moon,255,255,255
   
   EntityAlpha sky,alpha#(w)
   EntityAlpha sunshine,xalpha#(w)/384
   LightColor sunlight,xalpha#(w),xalpha#(w),xalpha#(w)
   
   ; Wolken und Sterne etwas bewegen
   TurnEntity sphere,0,-speed#/10,0
   TurnEntity stars,0,-speed#/10,0
   
   ; Sonne, Sonnenschein und Mond sind am Horizont grösser
   size#=(1-Sin(winkel#/10)/3)
   ScaleSprite sun,250*size#,250*size#
   ScaleSprite moon,200*size#,200*size#
   ScaleSprite sunshine,500*size#,500*size#
         
   ; Sonnenbewegung anhand des Winkels, das Licht zeigt immer auf Sphere   
   RotateEntity pivot,(winkel#/10),0,0
   PointEntity sunlight,sphere
   
   ; FPS counter
   FPS_C=FPS_C+1
   If ms<MilliSecs()
      ms=MilliSecs()+1000
      FPS=FPS_C
      FPS_C=0
   EndIf

   ; Maussteuerung
   PlayerControls()
   
   ; alles berechnen
   UpdateWorld
   RenderWorld
   
   ; Uhrzeit aus Winkel berechnen
   hour=Floor(winkel#/hdiv#)
   minu=(winkel-(hour*hdiv#))/mdiv#
   hour=7+hour : If hour>23 Then hour=hour-24
   If(hour<10) Then stunde$="0"+Str(hour) Else stunde$=Str(hour)
   If(minu<10) Then minute$="0"+Str(minu) Else minute$=Str(minu)
   
   ; Infos ausgeben
   Color 255,255,255
   Text 0,0,"Tris: "+TrisRendered()+" FPS: "+FPS
   Text 0,20,stunde$+":"+minute$+" Uhr"

   ; Farbverlauf ausgeben
   If si Then
      DrawImage daylight,0,50
      Color 255,0,0
      Rect (w/10),50,1,72
      Color 255,255,255
      
      Text ImageWidth(daylight)+5,52,"Himmel"
      Text ImageWidth(daylight)+5,70,"Sonne"
      Text ImageWidth(daylight)+5,88,"Himmel Alpha"
      Text ImageWidth(daylight)+5,106,"Licht Alpha"
   EndIf
   
   ; Bufferflip
   Flip 1

Wend

End

; Funktion um eine Skybox zu erstellen
Function MakeSkyBox( pre$,front$,Right$,back$,Left$,Top$,ext$,scale,order )

   m=CreateMesh()

   ;front face
   b=LoadBrush( pre$+front$+"."+ext$,49)
   s=CreateSurface( m,b )
   AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0
   AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b

   ;right face
   b=LoadBrush( pre$+Right$+"."+ext$,49 )
   s=CreateSurface( m,b )
   AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0
   AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b

   ;back face
   b=LoadBrush( pre$+back$+"."+ext$,49 )
   s=CreateSurface( m,b )
   AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0
   AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b

   ;left face
   b=LoadBrush( pre$+Left$+"."+ext$,49 )
   s=CreateSurface( m,b )
   AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0
   AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b

   ;top face
   b=LoadBrush( pre$+top$+"."+ext$,49 )
   s=CreateSurface( m,b )
   AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0
   AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b

   ScaleMesh m,scale,scale,scale
   FlipMesh m
   EntityFX m,9
   EntityOrder m,order
   
   Return m

End Function

; Spielersteuerung
Function PlayerControls()

   mxspd# = MouseXSpeed()*0.25
   myspd# = MouseYSpeed()*0.25

   MoveMouse GraphicsWidth()/2,GraphicsHeight()/2

   targetpitch = targetpitch + myspd
   targetpitch = ClampValue(targetpitch, -85,85)
   targetyaw = targetyaw - mxspd   

   cam_pitch = cam_pitch + (targetpitch - cam_pitch)/8.0
   cam_yaw = cam_yaw + (targetyaw - cam_yaw)/8.0
   
   RotateEntity player,0,cam_yaw,0
   RotateEntity cam,cam_pitch,0,0

   If KeyDown(200) Then mvz=mvz+1
   If KeyDown(208) Then mvz=mvz-1
   
   If KeyDown(30) Then mvx=mvx-1
   If KeyDown(32) Then mvx=mvx+1
   If KeyDown(17) Then mvz=mvz+1
   If KeyDown(31) Then mvz=mvz-1
   
   TranslateEntity player,0,mvy,0
   MoveEntity player,mvx,0,mvz

   mvx=mvx/1.2
   mvy=mvy/1.2
   mvz=mvz/1.2
   
End Function

; vertikale Begrenzung
Function ClampValue(Original#, low#, high#)
   If Original<low  Then Return low
   If Original>high Then Return high
   Return Original
End Function

skey-z

BeitragDo, Apr 12, 2007 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
deswegen sollen hier ja auch eigentlich nur Codes rein, die ohne externe Sources auskommen, wäre also alles in allem in Projekte oder WiP besser aufgehoben, denke ich jedenfalls, aber das werden die Moderatoren schon selbst entscheiden
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Christoph

BeitragDo, Apr 12, 2007 20:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal: klasse, sieht toll aus. Aber manches stört mich:

1. Ich finde den Mond und die Sonne zu groß (den eigentlichen Kern/die Strahlen sind ok)
Wenn die Sonne/der Mond im Lot stehen, sollten sie etwas kleiner sein. (Unser Physiklehrer sagt, das sei eine optische Täuschung, aber es kommt einem wirklich so vor)

2. Ich finde, die Sterne sieht man nach Sonnenuntergang zu früh (so viele Sterne sieht man erst nachdem die Sonne schon eine Weile untergegangen ist)

3. Bei Nacht sollte das Terrain nicht pechschwarz sein, man sollte etwas mehr umrisse sehen

Versucht mal so einen Regenbogen-artigen Sonnenuntergang hinzubekommen Wink

user posted image
 

deCoucy

BeitragDo, Apr 12, 2007 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich find Deinen Sonnenauf- und -untergang sehr schön. Natürlich läßt sich daran noch einiges verbessern und erweitern.
Was hältst Du davon zum Beispiel davon, Wind einzuführen und Wolken über den Himmel zu jagen ?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Apr 12, 2007 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Es werden doch schon Wolken durch den Himmel gejagt, nur haben diese eine recht hoche Transparenz, so das man es kaum sehen kann.

Ansonsten ist es wirklich gut gelungen. *daumenheb*
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Krischan

BeitragDo, Apr 12, 2007 23:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
wäre also alles in allem in Projekte oder WiP besser aufgehoben, denke ich jedenfalls


Also ein Projekt ist das nicht, grossartig daran weiterbasteln ist im Moment auch nicht geplant und da bei der Forumbeschreibung "kleine Spielereien mit BlitzBasic" steht kann man es wohl auch da lassen. Wer Lust hat, kann das ja als Basis für eigene Projekte nehmen oder in bestehende miteinbauen. Ist eher sowas wie eine Machbarkeitsstudie (das Terrain ist ja auch voll billig gemacht, die Steuerung nur rudimentär). Was mich dann eher reizen würde, wäre so ein Spiel im Stil von Gothic, aber das sind grosse Worte gelassen ausgesprochen. Wahrscheinlich würde es eher ein Bildschirmschoner oder Kandidat für einen zukünftigen Szenerie-Contest werden.


Zitat:
1. Ich finde den Mond und die Sonne zu groß (den eigentlichen Kern/die Strahlen sind ok) Wenn die Sonne/der Mond im Lot stehen, sollten sie etwas kleiner sein. (Unser Physiklehrer sagt, das sei eine optische Täuschung, aber es kommt einem wirklich so vor)


Stimmt. Das kann man aber einstellen, wie man es mag. Natürlich ist das eine optische Täuschung, und es sah so besser aus.

Code: [AUSKLAPPEN]

   ; Sonne, Sonnenschein und Mond sind am Horizont grösser
   size#=(1-Sin(winkel#/10)/3)
   ScaleSprite sun,250*size#,250*size#
   ScaleSprite moon,200*size#,200*size#
   ScaleSprite sunshine,500*size#,500*size#


Der Teiler "/3" macht den Grössenunterschied nicht so auffällig (bei 1 verschwindet die Sonne kurz im Zenit zu einem Punkt), na und die Grössen sind ja in den Folgezeilen beliebig änderbar.

Zitat:
2. Ich finde, die Sterne sieht man nach Sonnenuntergang zu früh (so viele Sterne sieht man erst nachdem die Sonne schon eine Weile untergegangen ist)


Stimmt, da ist Finetuning an der Datei "light.bmp" fällig, da habe ich ziemlich lange dran gebastelt, bis alle vier Werte so ungefähr gepasst haben und irgendwann keinen Bock mehr gehabt. Die Datei kann sich auch jeder selbst erstellen - 3600 Pixel breit und 4x18 Pixel hoch (ich habe die im Original mit 360x72 Pixel bearbeitet und dann nur breitgezogen). Bei X=0 ist es übrigens genau 6 Uhr mit einem Winkel von 0 - die linken 50% der Grafik finden am Tag, die anderen bei Nacht statt. Ach, drückt in der Demo einfach Space, dann seht ihr das schon.

Zitat:
3. Bei Nacht sollte das Terrain nicht pechschwarz sein, man sollte etwas mehr umrisse sehen


Ist es nicht, das Ambientlight ist auf 64. Stell das mal auf 128, ist mir aber zu hell. Alternativ kann man den Blauwert in der "light.bmp" etwas aufhellen. Wenn der Vollmond nicht da wäre würde man in echt eigentlich auch gar nichts sehen, denn die paar Sterne da oben reichen nicht aus. Was hier noch klasse wäre: Mondphasen bzw. dass der Mond auch so ganz leicht am tagblauen Himmel auftaucht, so wie man es manchmal schön sehen kann. Im Moment befindet er sich ja genau auf der gegenüberliegenden Seite der Sonne, ist halt recht einfach gehalten.

Zitat:
Versucht mal so einen Regenbogen-artigen Sonnenuntergang hinzubekommen


Hmm daran hatte ich auch schon gedacht, das wird dann aber sehr komplex mit den Überblendungen (die im Moment teilweise eh nicht perfekt gelungen sind, z.B. wenn die Sonne hinter Wolken scheint). Evt. mit einer zusätzlichen Skybox mit Regenbogenverlauf möglich, die bei Auf/Untergang kurz ein/ausgefaded wird. Muss ich mal ausprobieren.

Zitat:
Was hältst Du davon zum Beispiel davon, Wind einzuführen und Wolken über den Himmel zu jagen


Wie hectic bereits schrieb, da bewegt sich tatsächlich was, halt ganz langsam und kaum sichtbar. Ich hatte schon an einen extra Wolkenlayer gedacht, aus purer Unlust hab ich die halt lieblos auf die Kugel geklatscht, die eigentlich zur Illumination der Seite, auf der die Sonne scheint, dient. Und da diese Kugel aus den genannten Illuminationsgründen ein Alpha von 50% hat sieht man die Cloudmap halt nicht so gut. Der Wolkenlayer müsste dann aber noch eine zusätzliche Schicht haben, die z.B. wenn die Wolke zwischen Sonne und dem Betrachter ist, den Sonnenschein entsprechend abdunkelt (so wie es in Wirklichkeit merklich dunkler wird wenn sich eine Wolke vor die Sonne schiebt).

Danke an alle für die Blumen, dafür dass es nur ein Gehirnpups war scheint er ja gut angekommen zu sein Cool Ich hab mir eben nochmal den Himmel von Gothic 2 angeschaut, der ist geradezu einfach gestrickt dagegen Twisted Evil

Die Technik dahinter haben aber alle soweit geblickt? Ist eigentlich ganz simpel und sogar Lowpoly (die Kugel kommt ja mit nur 8 Seiten aus) und die drei Würfel reissen es auch nicht. Ob es bei den vielen Farbänderungen noch performant ist kann ich im Moment nicht sagen, da ich das hier auf meinem Reservenotebook (T30 mit 2GHz und Ati 7500) gebastelt habe. Da komme ich so auf ca. 55-60FPS.

FireballFlame

BeitragFr, Apr 13, 2007 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal -- seeeehr schön!

Und jetzt 3 Kritikpunkte:
1.: Wenn der Mond über mir steht, ich hochschau und Pirouetten dreh, dann dreht der Mond sich mit.
2.: Die Wolken verdecken nicht die Sterne ^^
3.: Es ist alles viel zu nah... schon wenn ich an den Terrainrand gehe, bewegen sich Sonne und Mond nicht mehr über mir. Außerdem hab ich nach kurzer Wegstrecke den Skyboxrand erreicht. (Hab mir den Code zwar noch nicht angeschaut, aber das müsste mit Childs eigentlich relativ einfach zu beheben sein.)
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

aMul

Sieger des Minimalist Compo 01/13

BeitragFr, Apr 13, 2007 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich muss sagen, dein Code hat(und ist) Klasse.
Ich hab in Blitz noch nie ein besseres Tag-Nacht-System gesehen, und dann durch die Bilder/das Bild noch flexibler als sonst was.
Ich glaube, ich muss demnächst auch mal was in die Richtung schreiben Wink
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver
 

Krischan

BeitragFr, Apr 13, 2007 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
@FireballFlame:

Zu 1: kann ich nicht nachvollziehen...
Zu 2: liegt wie ich vorher bereits schrieb an der Notlösung mit Alpha=0.5 beim zweckentfremdeten Illuminationslayer
Zu 3: das ist extra so, damit man auch "von aussen" sehen kann, wie es gemacht ist. Richtig wäre es, den ganzen Himmel mit Wolken, Sternen und Objekten an die Cam zu hängen, also immer gleich weit entfernt ist

@aMul:

Vielen Dank! Das System könnt Ihr gerne erweitern, wenn Ihr magt (dafür hab ichs ja auch hier gepostet). Ich schreibe jetzt eh erst einmal an meiner Homepage weiter (war eher so ein Ausflug um mal auf andere Gedanken zu kommen).
 

fliege

BeitragSo, Apr 15, 2007 10:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, gleich mal Vorweg:
Ich find den Code auch ziemlich cool, und vor allem leicht in eigenen Projekten einsetzbar (ich hoffe, das darf man Embarassed)
Etwas, was mich noch ein bisschen stört ist, dass man die Zeit so schwer steuern kann. Hast du vll irgendwelche Formeln, wie ich die Zeit auf zB 12:00 stellen kann? Und dann vll noch den 'speed#' - Wert, der aus einer Minute in Echtzeit auch eine Minute im Spiel macht? - Das wär absolut klasse.

Fliege
 

Krischan

BeitragMo, Apr 16, 2007 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Hast du vll irgendwelche Formeln, wie ich die Zeit auf zB 12:00 stellen kann? Und dann vll noch den 'speed#' - Wert, der aus einer Minute in Echtzeit auch eine Minute im Spiel macht?

Geduld, ich habe mich noch einmal dran gesetzt, bin aber noch nicht fertig. Bei der Gelegenheit habe ich auch gleich die Zeit neu implementiert und das Ganze wird noch cooler aussehen als jetzt Smile Vielleicht sogar mit Regenbogen-Dämmerung, mal sehen.

lukaswagner

BeitragFr, Feb 06, 2009 12:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann man die Skybox eig auch an der Cam festmachen?
Wenn man dann auf einer großen Map ist kann es ja auch sein, dass dadurch n geiler Horizont-effekt entsteht...

Nur so als Idee...
Mfg Lukas

DAK

BeitragFr, Feb 06, 2009 13:21
Antworten mit Zitat
Benutzer-Profile anzeigen
lies dir mal die posts über dir durch... es is genau so beabsichtigt, dass ma die skybox an die cam hängt. Krischan hats nur nicht gemacht, damit ma sich den aufbau der skybox von außen anschauen kann...
Gewinner der 6. und der 68. BlitzCodeCompo

The_Nici

BeitragFr, Feb 06, 2009 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hai,
wie könnte man es realisieren um die Geschwindigkeit der echten Zeit anzupassen? Will mir daraus einen Bildschirmschohner machen. Smile

MfG

Xeres

Moderator

BeitragFr, Feb 06, 2009 14:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Anstatt "Uhrzeit aus Winkel berechnen" berechnest du den Winkel aus der Zeit.
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)

The_Nici

BeitragFr, Feb 06, 2009 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Jup, soweit bin ich schonmal.
Nun habe ich herausgefunden:
Eine Stunde in Krischans Beispiel hat, wie ich es ausrechnete, 150 ErdenMinuten
Heisst: 3600 / 24 / 150 / 60 = 0.01666...
Diese Zahl am Ende ist Speed.
Was mir noch fehlt ist der aktuelle Winkel. D:
Denn
Code: [AUSKLAPPEN]
winkel#= Int(Left(CurrentTime(),2)) * (Int(Mid(CurrentTime(),4,2)) * (150 / Int(Mid(CurrentTime(),4,2))))

will nicht so wirklich, ausserdem zweifle ich an meinen 150.
MfG
 

Dragorad

BeitragFr, Feb 06, 2009 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

   akt_zeit$=CurrentTime()
   akt_stunde$=Left(akt_zeit$,2):akt_std=Int(akt_stunde$)-6
   akt_minute$=Mid(akt_zeit$,4,2):akt_min=Int(akt_minute$)
   
   ; Winkel aus Uhrzeit berechnen
   winkel_neu#=akt_min*mdiv#+(akt_std*hdiv#)


So hatte ich die Sache geregelt - da ist nur noch der kleine Makel, dass der Winkel nur einmal pro Minute neu berechnet wird - so ruckelt die Sonne langsam über den Himmel.

Xeres

Moderator

BeitragSa, Feb 07, 2009 3:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
akt_sekunde% = (MilliSecs()/1000) Mod 60
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)

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group