Der Witz an der Sache ist, doppelter RoomSpeed, doppelter Ressourcenverbrauch. Ob ich 30 fps berechnen muss oder 60, das ist für mich gleich mal die doppelte Belastung. Und der GM ist schon nicht der schnellste. Da muss man das meiner Meinung nach nicht auch noch herausfordern.
39Dll: Ein simples Spiel
-
-
Also ich benutz nur noch 60 Fps bei meinen Spielen, bewegungen wirken viel geschmeidiger, das ist mir der doppelte Resourcenverbrauch auf jeden fall wert. Ich denke auch das es besser ist bei der 39dll 60 Fps zu wählen.
-
Ich habe gerade einen interessanten Artikel gefunden, der Euch vielleicht auch ineteressiert - ist allerdings in Englisch. Wenn ich durch bin, mach ich vielleicht 'ne Überstzung, bzw. eher ein Example
LATENCY COMPENSATIONDieser Beitrag wurde bereits 1 mal editiert, zuletzt von Melancor ()
-
Ich hab' mir Melancor's Link ( noch ) nicht angeschaut, allerdings würd' ich ( wie bei einem seiner Posts beschrieben ) z.B. nur senden, wenn
TRUE wiedergibt.
Außerdem evtl. mit dem Drücken der Tasten + Deltatime ( ein Thread auf der GMC handelt davon, ich weiß nur grad' nicht, wo er ist ) schreiben,
sollte nicht zu Stark aufen Putz hauen.
Ich hoffe, ihr konntet das Nachverfolgen
Gruß, Phoenix -
Bisher haben wir nur über TCP gesprochen. Aber gerade die hochfrequente Übermittlung der Spielerposition, wie in diesem Echtzeit-Spiel gezeigt, ist geradezu geschaffen für UDP astatt TCP. UDP ist wesentlich schneller, das ist der Hauptgrund. Da ich am Anfang meine Probleme damit hatte, will ich auch noch 1-2 Sachen dazu sagen:
Wenn Ihr Pakete über UDP versendet, ändert sich nur der "sendmessage" Befehl. Man braucht die IP-Adresse des Empfängers, und der Port ist ein anderer. Genau gesagt braucht Ihr zwei Ports: einen zum senden, und einen anderen zum Empfangen.
Wenn ein Spieler verbindet, wird seine IP-Adresse vom Host mit lastinIP() ausgelesen, und zusammen mit der Spieler-ID an alle Clients verteilt. In dem Beispiel hier gibt es zwar nur einen Client und einen Host.... hier würde also der Host als Antwort die eigene IP an den Client schicken, und die Spieler-ID entfällt sowieso. Hat man mehrere Clients, sollte man auch verschiedene Ports verwenden (ansonsten sendet man eben die Spieler-ID mit). Muß nicht sein, läuft aber schon glatter.Ein Beispiel:
"receiveid" heißt, der Client kriegt gerade seine playerID vom Host mitgeteilt. Alle anderen Clients bekommen stattdessen eine "newplayer"-Message, die sieht bei mir dann gekürzt so aus:
Um dann Messages über UDP zu versenden, habe ich sowas in der Art:
und zum Empfangen sowas:
Wenns nicht funktionierte, war mein Problem meist daß ich irgendwo einen falschen Port angegeben habe (z.B. einen bereits belegten). Wenn Ihr nur zwei Spieler wollt, könnt Ihr Euch wie gesagt die PlayerID sparen.
So kann ich (bei room_speed 60) getrost alle 2-3 Steps oder - bei nur zwei Spielern - sogar jeden Step die Spielerkoordinaten austauschen, was mit TCP schon delikat war.Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Melancor ()
-
hallo,
ich fand das Tutorial am Anfang sehr gut nur die Beispieldatei wurde anscheinend gelöscht
könnte man das wieder uploaden? -
Ich selbst hab die Datei anscheinend leider nichtmehr, ich hoffe irgendwer hat die noch rumfliegen, sonst kann ich dir leider nicht weiterhelfen. Demnächst stell ich aber ein neues Tutorial rein, mit einer "gescheiten" Übertragung der Daten und für >2 Spieler.
-
ok, dann muss ich mich wohl bisschen warten
danke trotzdem -
Hi ich fand das tutorial auch ziemlich gut
(gäbs hiern thanks button hätte ich ihn 100pro schon gedrückt :D)
jedoch funktioniert bei mir das connecten über die ip nicht (jedenfalls nicht auf einen anderen rechner)?
weiß jemand woran das liegen könnte mit 127.0.0.1 klappts nämlich und heute in der schule als wir es ausprobiert hatten hat es auch funktioniert aber wieso will es privat nich??
Bitte kann mir jmd. helfen
Ich will wie mein Opa im Schlaf sterben, nicht heulend und schreiend wie sein Beifahrer.
I am a in the GM Quiz!
xD -
Du musst über 127.0.0.1 verbinden, da du nicht auf deine externe IP drauf kommst. Damit andere Computer über deine externe IP verbinden können musst du den Port öffnen der benutzt wird.
-
jaja mit 127.0.0.1 gehts ja gut aber ich will ja auch das jeder belibig andere einen eigenen server hosten kann müssen bei dem dann auch die Ports frei sein? Und gibt es nicht einen port der immer frei ist und den man mit dem gamemaker benutzen kann?Ich will wie mein Opa im Schlaf sterben, nicht heulend und schreiend wie sein Beifahrer.
I am a in the GM Quiz!
xD -
-
das must du im router ändern
je nachdem welchen du hast musst du
192.168.178.1
oder
192.168.2.1
im browserfenster eingeben
dann irgendwo sowas wie portfreigeben oder nur freigaben suchen und den port da eintragen
-
jaja mit 127.0.0.1 gehts ja gut aber ich will ja auch das jeder belibig andere einen eigenen server hosten kann müssen bei dem dann auch die Ports frei sein? Und gibt es nicht einen port der immer frei ist und den man mit dem gamemaker benutzen kann?
Ich werf mal hier ne frage ein. Es heißt immer man muss einen Port öffnen. Aber wie zum Kuck-kuck macht man das?? -
Demnächst stell ich aber ein neues Tutorial rein, mit einer "gescheiten" Übertragung der Daten und für >2 Spieler.
ich weiß is schon lange her das du das geschriben hast aber ich fänds cool wenn du das machen würdest weil dein jetziges hat mir richtig gut gefallen
Gibts irgentwo auf gm-d des eigentlich schon??
könnte mir jemand sagen wo es sowas gibt oder
mir sagen oder nach welchem prinzip ich >2 spieler mache??
thxIch will wie mein Opa im Schlaf sterben, nicht heulend und schreiend wie sein Beifahrer.
I am a in the GM Quiz!
xD -
ich weiß is schon lange her das du das geschriben hast aber ich fänds cool wenn du das machen würdest weil dein jetziges hat mir richtig gut gefallen
Gibts irgentwo auf gm-d des eigentlich schon??
könnte mir jemand sagen wo es sowas gibt oder
mir sagen oder nach welchem prinzip ich >2 spieler mache??
39dll: Verbindung und Kommunikation
MfG Henrik1235 -
(oberer Teil gelöscht)
EDIT:
Ok habe nun mit viel ausprobierens ... mein Problem gelößt.
Jedoch ist es nun sehr,sehr ruckhaft und ich würde es gerne mit Udp probieren jedoch hätte ich dazu ein par fragen:
muss dafür JEDER spieler die ports offen haben,oder wie stellt man damit eine einfache verbindung her?
(ein codebeispiel wäre nett)
werden die befehle wie tcpaccept... überhaupt noch benötigt oder braucht man nur dieses udpconect??
Thx im VorrausIch will wie mein Opa im Schlaf sterben, nicht heulend und schreiend wie sein Beifahrer.
I am a in the GM Quiz!
xDDieser Beitrag wurde bereits 3 mal editiert, zuletzt von miau ()
-
@ghost, der download link ist leider nicht mehr intakt.
-
Kannst du bitte denn DL Fixen? Danke.
-