Banalität SQL - 3D Anwedung laag Probleme wg. Timingfunktion

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

mayan

Betreff: Banalität SQL - 3D Anwedung laag Probleme wg. Timingfunktion

BeitragDi, Jan 31, 2006 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo, ich hab mal ne frage an alle die sich ein wenig mit sql und timing in 3d anwendungen beschäftigt haben, denn ich habe hier ein kleines Probelm.

versuchsweise hab ich mir ne kleine Datenbank angelegt die ledigklich mal zu testzwecken x y und z coordinate speicehrt.

mein problem hierbei ist - dass wenn ich den mysql query z.b. alle 2000 ms schicke (was etwas lang ist - aber darum gehts auch net) - der client alle 2 secs n laag hat wenn er den sql query schickt - nervig beim herumlaufen.

meine frag ist - ist es irgendwie machbar den query asynchron zum hauptthread laufen zu lassen oder gibts ne andere möglichkeit, das zeitliche event auszuführen ohne dass der code hängenbleibt?

Für sämmtliche Anregungen etc wäre ich dankbar. merci schon mal im Vorraus.
 

mayan

Betreff: Kleiner Codeauszug zur Verständlichkeit

BeitragDi, Jan 31, 2006 15:57
Antworten mit Zitat
Benutzer-Profile anzeigen
While Not KeyDown( 1 )



If KeyDown( 205 )=True Then TurnEntity camera,0,-1,0
If KeyDown( 203 )=True Then TurnEntity camera,0,1,0
If KeyDown( 208 )=True Then MoveEntity camera,0,0,-0.1
If KeyDown( 200 )=True Then MoveEntity camera,0,0,0.1

x#=EntityX(camera)
y#=EntityY(camera)
z#=EntityZ(camera)



PositionEntity camera,x#,terra_y#,z#

If MilliSecs() > Client_Event_Timer
Client_Event_Timer = MilliSecs() + Update_Frequenz
Server_Player_Pos = SQLQuery(SqlConnection, "UPDATE `player_pos` SET `Cur_X`='"+Str(x#)+"',`Cur_Y`='"+Str(y#)+"',`Cur_Z`='"+Str(z#)+"'WHERE `ID`=1000 LIMIT 1;")
EndIf




UpdateWorld
RenderWorld



If (SqlConnection)
Text 10,10,"_SV_WORLD_EVENT: connected",False,False
Text 10,22,"_SV_WORLD_EVENT: starting update",False,False
Else
Text 10,10,"_SV_WORLD_EVENT: can´t connect",False,False
WaitKey
End
EndIf

Text 10,100,x#
Text 10,112,y#
Text 10,124,z#
Text 900,10, "FPS: "+update_FPS(FPS)



If (Server_Player_Pos)
Text 10,34,"_SV_WORLD_EVENT: player_pos query running (table player_pos)",False,False
Else
Text 10,34,"_SV_WORLD_EVENT: player_pos query failed (client generates laaags now)",False,False
EndIf






Flip 0


Wend


CloseSQLStream(SqlConnection)
End

Function update_FPS(checktime%=10)

Local Time,Righttime

FPS_Zahler = FPS_Zahler + 1

Time=MilliSecs()

If Time > FPS_START_TIME + checktime%

Righttime = Time - FPS_START_TIME
FPS_START_TIME = Time
FPS# = (Float(FPS_Zahler)/Float(Righttime))*1200.0
FPS_Zahler = 0

EndIf

Return FPS#

End Function
 

Dreamora

BeitragDi, Jan 31, 2006 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Für ein eigenständiges Ausführen unabhängig von deinem B3D Programm müsstest du eine SQL DLL benutzen, die einen eigenen Thread hat und die entsprechende Funktionen zur steuerung etc für B3D bietet.

Allerdings frage ich mich, was du damit genau vor hast, denn wenn du "ruckeln beim bewegen" sagst, müsste man davon ausgehen, dass du Echtzeit willst und das geht mit SQL definitiv nicht ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

mayan

BeitragDi, Jan 31, 2006 16:13
Antworten mit Zitat
Benutzer-Profile anzeigen
oki - merci für deine schnelle antwort - echtzeit - naja mit ner kleinen latenz mit cira 200 ms wohl auch nicht machbar - naja mist -

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group