UDP und TCP?



  • also, wie bereits einmal erwähnt, habe ich vor c++ mit einer basic-hybrid languahe (BloitzBasic) programmiert. da konnte man netzwerkspiele auch mit udp und tcp "machen". geht das mit c++ auch, oder muss man directplay nehmen???
    (sorry, wenn das ne dumme frage ist, aber ich bin gerade erst mit c++ angefangen..)



  • BloitzBasic verwendet directplay



  • ich weiß, aber man kann auch netzwerk spiele mit udp und tcp machen. oder steht das irgendwie in verbindung miteinander...??? ich hab über sowas lso gut wie keine ahnung... *schäm*


  • Mod

    der quasi standart in dieser richtung sind Sockets, auch direckt play basiert wohl darauf.

    WSock32.dll wsock.h und WSock32.lib braucht man wohl

    google nach sockets 🙂

    rapso->greets();



  • Sicher. Wenn Dein OS es unterstützt, kannst Du sogar einzelne Bitfolgen über die COM-Ports an Dein Modem hauen, und damit alles "hardcore" machen. Oder IPX/SPX (Internetwork Packet eXchange/Sequenced Packet Exchange) - oder TCP- / UDP- (Transmission Control Protocol) / (User Datagram Protocol) - Pakete "per Hand" zusammenbauen. Vielleicht lohnt dafür ein Blick in den Source alter DOS-Games (DooM mit sersetup, ipxsetup etc. / DN3D ggf.). Etwas abstrahiert und lediglich für Windows sind dann genannte Sockets (wobei ein Socket eigentlich nur die Verbindung von IP-Adresse & Port ist).
    Von daher isset vielleicht doch am Besten, sich DirectPlay (das noch 'ne Stufe abstrahiert, und dem es schei*segal ist, ob Du nun über IPX, TCP oder 0-Modem kommunizierst) mal anzuschauen... wenn's bei Windows bleiben soll.
    Ansonsten "Berkeley Sockets" o.ä., die auch für Linux & Co. implementiert sind.


  • Mod

    eigentlich sind die sockets bei windows von unix übernommen und somit eigentlich (so wie opengl) relativ OS unabhängig.

    es gibt auch eine SDL_Socket lib, falls man sich die mühe nicht selbst machen will... ansonsten gibt es wohl nur initialisierungsunterschiede, der rest läuft gleich

    (falls ich mich nicht total versehen habe)

    direcktplay merk ich recht selten in spielen. ich glaube shooter nutzen garnicht direcktplay, weil man sehrviel mehr am tcp/udp optimieren kann als es directplay macht.

    aber c&c generals nutze direcktplay (soweit ich weiß)... aber das kann ich nichtmal im LAN vernünftig spielen.. hmm.. woran es auch immer liegt.

    sockets an sich sind aber extrem leicht zu coden (wenn man ein tut ließt).

    rapso->greets();



  • Original erstellt von rapso:
    eigentlich sind die sockets bei windows von unix übernommen und somit eigentlich (so wie opengl) relativ OS unabhängig.
    Mag sein, aber unter Linux verwendet man wohl kaum besagte "winsock.dll"... 😃

    es gibt auch eine SDL_Socket lib, falls man sich die mühe nicht selbst machen will... ansonsten gibt es wohl nur initialisierungsunterschiede, der rest läuft gleich
    Das ist logisch. Immerhin kommuzieren Linux und Windows-Rechner im Netz der Netze ja auch miteinander (mit TCP/IP), wär' blöd, wenn jedes OS sein IP-Päckchen anders zusammenbaut...

    direcktplay merk ich recht selten in spielen. ich glaube shooter nutzen garnicht direcktplay, weil man sehrviel mehr am tcp/udp optimieren kann als es directplay macht.
    Das stimmt so nicht. Sehr viele Zocks nutzen DirectPlay. Diablo (1) verinnerlichte es schon (auf sehr geniale Weise, z.B. konnte man sogar mit 0-Modem bis zu 4 PCs vernetzen !!), und das ist nun auch schon was älter...
    Sicher, Quake III wird es nicht benutzen.
    Von wegen der Optimierungen würd' ich Dir spontan Recht geben.
    Andererseits kann ein System wie DirectPlay viel "on the fly" regeln, was "hardgecodet" viel Mehraufwand erfordern würde, da jeder mögliche Fall berücksichtigt werden müsste.
    Unter anderem kann man ab DirectPlay 8 UPNP-kompatible Firewalls für die Dauer des Zockens auf den benutzten Ports "automatisch" öffnen lassen, um nicht in den Portforwarding-Stress bei NAT-System zu kommen.
    Die Pakete sind seit DirectPlay 8 auch viel kleiner (und damit effizienter) geworden als das noch zu DirectPlay 5 der Fall war.
    Aber sicher: Wer jedes Quäntchen Speed braucht, kann durch Anpassungen an sein spezielles Mehrspieler-System mit Sockets etc. natürlich noch was mehr raushauen.

    aber c&c generals nutze direcktplay (soweit ich weiß)... aber das kann ich nichtmal im LAN vernünftig spielen.. hmm.. woran es auch immer liegt.
    Naja, CCG ist das erste RTS-Game, was ressourcenhungriger als ein aktueller Shooter (Unreal II) ist: 2 GHz, 1 Gig RAM, und eine GraKa ab GF4 Ti heißen schon was. Soweit ich gehört habe, soll es aber auf langsamen System "runterskalieren" - d.h. es gibt keine Lags, sondern das ganze Spiel läuft langsamer. Kann ich aber nicht bestätigen.

    sockets an sich sind aber extrem leicht zu coden (wenn man ein tut ließt).
    Ehrlich!?! Das Tut, was ich mir mal angeguckt habe, hat mich in den Wahnsinn getrieben. Hast Du 'ne gute Addy dafür??




  • Mod

    wenn ich zuhause bin, poste ich mal mein proggy zum umrouten von packeten, da ist ein server + client drinne (als source)
    dazu speichert das ding den ganzen transfer, somit kann man z.b. radio-mp3 streams dumpen oder sich später ein protokoll z.b. irc ansehen

    sind ja nur 2 seiten mit tcp/ip

    wsock32.dll ist sicherlich nicht bei linux dabei, aber bei win ist ja das ursprüngliche socket-system ja auch nur von unix gecloned. 😃

    rapso->greets();


Anmelden zum Antworten