Netzerk
Übersicht

adnan3379Betreff: Netzerk |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi, bin jetzt seit 2 tagen dabei und hab auch viele sachen ausprobiert. Nun wollte ich mich ans netzwerken ranmachen aber habs irgendwie garnicht kapiert. Hier ist zb mein kleines spielchen und wüsste nicht wie man es zb. mit 3 personen 3 kugel hin und her bewegen kann.
Code: [AUSKLAPPEN] Graphics3D 800,600,16
SetBuffer BackBuffer() AppTitle "Tests" Global ablauf = MilliSecs() Global sphere Const cube11=1 Const sphere11=2 Function springen () If ablauf <= MilliSecs() - 500 Then MoveEntity sphere, 0, 30, 0 ablauf = MilliSecs() EndIf End Function While Not KeyHit(1) Collisions sphere11,cube11,2,3 Collisions sphere11,cube22,2,3 cube = CreateCube() RotateEntity cube, 0, 0, 0 PositionEntity cube, 20, 2, 5 ScaleEntity cube, 100,10,100 EntityType cube,cube11 cube = CreateCube() RotateEntity cube, 0, 0, 90 PositionEntity cube, 20, 2, 5 ScaleEntity cube, 100,10,100 EntityType cube,cube11 cube = CreateCube() RotateEntity cube, 0, 0, 0 PositionEntity cube, 40, 20, -25 ScaleEntity cube, 10,10,10 EntityType cube,cube11 cube = CreateCube() RotateEntity cube, 0, 0, 0 PositionEntity cube, 40, 40, 5 ScaleEntity cube, 10,10,10 EntityType cube,cube11 cube = CreateCube() RotateEntity cube, 0, 0, 0 PositionEntity cube, 40, 60, 15 ScaleEntity cube, 10,10,10 EntityType cube,cube11 cube = CreateCube() RotateEntity cube, 0, 0, 0 PositionEntity cube, 40, 80, 35 ScaleEntity cube, 10,10,10 EntityType cube,cube11 sphere = CreateSphere() PositionEntity sphere, 50,50, 2 ScaleEntity sphere, 4,4,4 EntityType sphere,sphere11 EntityColor sphere ,11,11,51 camera = CreateCamera(sphere) PositionEntity camera, 0, 40, -50 TurnEntity camera,30,0,0 light2 = CreateLight() LightColor light2, 256,0,0 RotateEntity light2, 40, 0, 0 light1 = CreateLight() LightColor light1, 0,256,0 RotateEntity light1, 0, 40, 0 light = CreateLight() LightColor light, 256,0,256 RotateEntity light, 10, 0, 0 While(1) MoveEntity sphere, 0, -2, 0 If KeyHit(64) Then wire=1-wire ;gittergrafik WireFrame wire If KeyHit(59) = 1 Then PositionEntity camera, 0, 1, -10 ;first person sicht If KeyDown(59) = 1 Then RotateEntity camera, 0, 0, 0 ;first person sicht If KeyHit(60) = 1 Then PositionEntity camera, 0, 40, -50 If KeyDown(60) = 1 Then RotateEntity camera, 30, 0, 0 ;2te sicht If KeyHit(61) = 1 Then PositionEntity camera, 0, 20, 50 If KeyDown(61) = 1 Then RotateEntity camera, 180, 0, 180 ; nach hinten guck sicht If KeyHit(62) = 1 Then PositionEntity camera, 0, 80, 0 If KeyDown(62) = 1 Then RotateEntity camera, 90, 0, 0 ; oben 2d ;If KeyHit(63) = 1 Then PositionEntity camera, 0, 700, 0 ;If KeyDown(63) = 1 Then RotateEntity camera, 90, 0, 0 ; If KeyDown(32) = 1 Then TurnEntity camera, 0, -3, 0 If KeyDown(30) = 1 Then TurnEntity camera, 0, 3, 0 If KeyDown(31) = 1 Then MoveEntity camera, 0, 0, -0.15 If KeyDown(17) = 1 Then MoveEntity camera, 0, 0, 0.15 ;If KeyHit(57) = 1 Then PositionEntity sphere,50,500, 2 If KeyDown(29) = 1 Then MoveEntity sphere, 0, 1, 1.065 If KeyDown(57) = 1 Then springen If KeyDown(205) = 1 Then TurnEntity sphere, 0, -3, 0 If KeyDown(203) = 1 Then TurnEntity sphere, 0, 3, 0 If KeyDown(208) = 1 Then MoveEntity sphere, 0, 0, -2.045 If KeyDown(200) = 1 Then MoveEntity sphere, 0, 0, 3.065 UpdateWorld() RenderWorld Flip Wend Wend End wie und muss ich da jetzt die netzwerk codes einbinden? danke schonmal im vorraus |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es gibt keine zwei, drei Befehle, die man mal so eben in den Code packt und einen fertigen Multiplayer Modus bekommt. Such dir Infos / Tutorials zu Möglichkeiten von TCP/UDP und Userlibs in der Richtung. | ||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
adnan3379 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi Xeres
habe ja das forum durchgeforstet auch so einige tuts durchgestöbert aber irgendwie versteh ich das nicht, hab auch schon SimpleUDP versucht aber auch nicht hinbekommen, deswegen frage ich jetzt hier damit ichs kapiere. |
||
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
Erstmal: Wozu die ganzen Leerzeilen? Kommentieren nicht vergessen ![]() Und: Wenn du erst seit 2 Tagen dabei bist ist das Netzwerk noch etwas früh... Das sieht man daran, dass du deinen "cube" immer wieder überschreibst. Lerne Arrays (Dim ![]() ![]() Fürs Netzwerk such mal nach SimpleUDP. MFG |
||
HavockToxx |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Adnan(hoffe das war so richtig)
Mal n ernsthafte frage. Wieso glaubst du, das du nach "2 oder 3 Tage" rumbasteln schon ein fertigen Netzwerkprogramm schreiben kannst?. Ich denke, und das musste ich damals auch einsehen, das du weiter erst mal Grundlangenforschung, sprich dein Compiler und deren sprache besser kennen lernen. Ich muste es einsehen und habe in den Letzten 3 Monate viel gelernt. Soviel das ich mich nicht an Netzwerkprogrammierung rantraue. Ich programmiere nun erst mal kleine dinge wie Hilfetools die meine arbeit mir Erleichtern sollen. MFG Havock Toxx. |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Netzwerk-Programmierung ist leider ein sehr schwieriges Thema, jedenfalls wenn man es "richtig" angehen will. Neben der reinen Netzwerk-Programmierung benötigt man diverse Algorithmen die z.B. Latenzen im Netzwerk/Internet berücksichtigen oder Bewegungen Glätten (Interpolation,Extrapolation) oder neuere Ansätze wie Dead Reckoning. Hilfreich ist auch die so genannte Client Prediction um Eingabe-Verzögerungen zu umgehen usw...
Ich arbeite derzeit seit 2-3 Jahren an einem 3D-Fussball-Spiel (Multiplayer). Trotz jahrelanger Erfahrung im Programmieren musste ich gerade beim Netzwerk-Code grosse Rückschläge hinnehmen und den ganzen Netzwerk-Code etwa 6 mal neu überarbeiten. Mittlerweile ist das Ganze akzeptabel, aber immer noch verbesserungswürdig ![]() Damit will ich aber nicht zu sehr einschüchtern, denn es geht am Anfang auch einfacher, und die ganzen Algorithmen kann man auch erstmal weglassen und bekommt trotzdem schon recht schöne Ergebnisse (halt mit ein paar Rucklern etc.). Der 1. Schritt wäre zu bestimmen ob du einen Server hast der komplett alle Kugeln verwaltet, oder ob jeder Client seine eigene Kugel verwaltet. Im 1. Fall müssten sich alle Client-Programme zu einem Server-Programm verbinden und erhalten vom Server immer die aktuellen Kugel-Positionen. Der Server sendet z.B. 10-20 mal pro Sekunde die aktuellsten Positionen aller Kugeln. Immer wenn ein Client dann eine Position vom Server erhält, setzt er die entsprechende Kugel genau an diese Position. Im 2. Fall übernimmt eines der Client-Programme die Rolle des Servers, aber jeder Client steuert seine eigene Kugel und sendet die eigene Position dem Server. Der Server gibt dann die erhaltenen Positionen einfach weiter an alle anderen Clients. Die Position der eigenen Kugel sendet der Server auch einfach an alle anderen Clients. Das ganze geschieht wieder 10-20 mal pro Sekunde. Wenn ein Client eine Position einer Kugel erhält setzt er die entsprechende Kugel an die empfangene Position. Neben diesen beiden Varianten gibt es auch noch andere, aber ich denke das sind die gängigsten. Für das Senden und Empfangen wird dann entweder TCP oder UDP benötigt. Für (Action-)Spiele ist generell UDP zu empfehlen. Aber UDP kann am Anfang auch schwieriger zu handhaben sein (da Pakete nicht, oder nicht in der richtigen Reihenfolge ankommen können. Mit Hilfe einer UDP-Library kann man diese Probleme aber meist umgehen). Das Senden und Empfangen selbst, sollte eigentlich recht einfach zu verstehen sein, wenn du dir die Dokumentation dazu anschaust. Die Schwierigkeit an der Netzwerk-Programmierung ist ironischerweise meist nicht die Netzwerk-Programmierung ansich, sondern die Logik wie man die PCs/Programme untereinander synchronisiert. |
||
adnan3379 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi, danke für die antworten.
habe auch schon gemerkt das es nicht so leicht wird und bin jetzt weiter dabei die grundlagen zu lernen.Ohne die zu können geht es garnicht. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group