3D Multiplayer erstellen (online) geht das?

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 3D Multiplayer erstellen (online) geht das?

    Hallo, Ich heiße Kaan, und bin jetzt auf diese Homepage gekommen, weil ich im Gamemaker 8.0 eine sehr Große Hilfe brauche.

    Mein 3D FPS Spiel habe ich bereits erstellt, und sieht gut aus, doch ich würde gerne einen Multiplayer(online oder lan) einbauen lassen. es kann auch LAN sein, aber würde gerne Online haben wollen, sodass ich gegen andere Zocken kann.

    Der Problem ist, ich kann nur 2D Multiplayer machen, mit 3D Multiplayer hatte ich nicht zu tuhen, und weiß überall garnichts. Kann man aber 3D Online machen´? für 2 Spieler, oder mehrere? Wenn ja, Würde ich mich freuen, wenn ihr mir eine Anleitung für einen 3D Multiplayer stellt. oder eine GMK würde auch sehr viel helfen.

    Ich freue mich über alle Antworten von euch, Herzlichen Dank. :)
  • Also du sagst du weisst wie man Multiplayer in 2D macht.
    Es ist im Grunde das selbe bei nicht zu extrem komplizierten Spielen die man im GM sowieso kaum realisieren kann und du sagst du hast das FPS in 3D schon realisiert... sofern
    Mein 3D FPS Spiel habe ich bereits erstellt
    in deinem Fall nicht gleichbedeutend ist mit
    das YoYogames 3D FPS Tutorial habe ich bereits kopiert
    Will dir aber nichts unterstellen :)

    Du übeträgst die Position der Spieler oder deren Tastatureingaben genau so wie dus in 2D machen würdest. Die Position der Kamera oder iwas musst du ja nicht übertragen. Nur die Richtung in der der Spieler schaut noch damit Kugeln und ähnliches in die richtige Richtung fliegen und vieleicht noch die Z Variable, alternativ kannst du das Spiel ja ganz auf die Tastatureingaben basieren, dann übernimmt dies ja die Sprung-Taste.

    Erklär doch mal woran genau du scheiterest :)

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von DragonGamer ()

  • Also bei einem 2D Spiel habe ich es immer so gemacht, 2 Players erstellt, in denn beiden eine neue Tastatur-Bewegungen gegeben, und die auf einem Raum gestellt.

    -----
    Wie soll ich bei diesem 3D Machen? weil die beiden Spieler sollen die gleiche Bewegungen haben, (w+a+s+d) und Maus bewegungen, soll ich die beiden Player gleich machen, und auf einem Raum stellen, das geht nicht.

    Was meint ihr mit dem Z Kordinaten?
  • kaano123 schrieb:

    Also bei einem 2D Spiel habe ich es immer so gemacht, 2 Players erstellt, in denn beiden eine neue Tastatur-Bewegungen gegeben, und die auf einem Raum gestellt.

    -----
    Wie soll ich bei diesem 3D Machen? weil die beiden Spieler sollen die gleiche Bewegungen haben, (w+a+s+d) und Maus bewegungen, soll ich die beiden Player gleich machen, und auf einem Raum stellen, das geht nicht.

    Was meint ihr mit dem Z Kordinaten?

    Du hast nicht wirklich was mit 3D gemacht oder? Die Z achse is da eines der wichtigsten dinge..
    Und nen 2D Multiplayer hassu zumindest auch nich online/lan fähig gemacht, oder hab ich unrecht?
  • Achja... *gähn* Wieso täuscht mich meine Intuition in diesem Forum so selten?... :|

    Fang vieleicht erstmal ordentlich mit 3D an und eigne dir die Grundlagen an. Moolt's Tutorials sind dafür ganz nützlich: 3d für Anfänger

    Später kannst du dich dann auch mit Multiplayer ordentlicher befassen. Es gibt auch dafür Tutorials. EInfach suchen.
    Wie hast du denn die simple Tastenübertragung gemacht? Etwa mit den Gamemaker internen Funktionen?
    Die sogenannte 39Dll hier: gmc.yoyogames.com/index.php?showtopic=90437 ist eine bessere (wenn auch nicht perfekte) Alternative. Wenn du ein gewisses Grundwissen in Sachen GML hast, kannst du diese Funktionen sogar viel einfacher verstehen als die des GM's. Dies ist zumindest meine Meinung nachdem ich mich durch das Multiplayer Kapitel der GM Hilfe durchgekämpft hatte...

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von DragonGamer ()

  • Es sieht so aus als hättest du eigentlich keine Ahnung von (Online-)Multiplayer oder 3D-Spiele.

    Zuerst muss man wissen wie überhaupt das Internet funktioniert, es werden Daten von Computern zu Computer gesendet (z.B. von einem Client zu einem Server). (Für solchen Multiplayer empfehle ich die 39dll)

    Bei der 39dll musst du deine Daten in einen Buffer schreiben und diesen Buffer dann senden und dann den Buffer wieder frei machen. (Bei TCP noch eine Verbindung aufbauen)
    In ein "Paket" kannst du nun z.B. die Spieler-Position reinschreiben oder Dinge den anderen Mitspieler/dem Server mitteilen: ich habe geschossen, Chat Nachrichten... Diese musst du dann wieder beim Server auslesen und dann weiter senden an die anderen Clients (den Mitspielern).

    Das ist jetzt grob gesagt, es gibt keine Funktion wie createOnlineSpiel().

    Wenn ja, Würde ich mich freuen, wenn ihr mir eine Anleitung für einen 3D Multiplayer stellt. oder eine GMK würde auch sehr viel helfen.
    Leider weiß ich nicht wie weit du dich mit GML, 3D und Multiplayer auskennst. In meinen Augen hast du eventuell gerade den Game Maker installiert, ein Tutorial durch gemacht und dann ein Beispiel runter geladen.

    Und nicht zu vergessen: der Game Maker ist ein "Spielerstellungsprogramm" für 2D Spiele und kann nur eingeschränkt den "3D-Modus". Von einem 2D Spiel zu einem 3D Spiel ist nicht ein Sprung, es ist viel Arbeit. (Meiner Meinung nach)

    (Hier im Forum gibt es auch ein paar (gute) Tutorials für 3D und 39dll)
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • Meint ihr, das ich auf sandbox.yoyogames.com/make/tutorials bei der Multiplayer Tutorial, schaffe einen (LAN) Spiel zu machen auf meinem 3D?

    Oder ist dort nur auf einem 2D Multiplayer begriffen, ich weiß, das ist nur für lan, aber würde ich es schaffen auf 3D?
  • Ein Lan Spiel kann 2D als auch 3D sein. Da gibt es keine limitierung, da die netzwerkfuntionen des GMs völlig unabhängig von der Grafischen Darstellung sind (was ja auch logisch ist.)
    Du wirst halt nur schauen müssen welche Daten übertragen werden sollen. Im 3Dimensionalen Bereich wirst du evtl die z-Achse auch "mitschicken" müssen, falls sich die Bewegung von Gegenständen auf dieser ändern soll.

    Nebenbei: Das Yoyogames Tutorial nutzt die eingebauten netzwerfunktionen des GMs. Benutz lieber die 39 DLL die man hier im Thread schon erwähnt hat.
    Sie ist schneller und bietet auch viel mehr Möglichkeiten als die GM Funktionen. (Ich persöhnlich habe auch nie die Netzwerkfunktionen des GMs genutzt, sondern habe von anfang an die 39 DLL genutzt.)

    Generell: Wenn du begriffen hast wie der Multiplayer funktioniert, sollte sich die Frage ob das auch mit 3D geht von selber erübricht haben. ;)
  • Also, kann ich mit hilfe dieser 'Yoyoames Multiplayer Tutorial' schaffen, einen 3D Multiplayer FPS Online/Lan bei mir zu machen.

    Ich kenne mich mit 39dll nicht aus, könnt ihr mir einen kleinen Anleitung geben, also, ich habe es Heruntergeladen, oben die erwähnten '39dll's' weiter gehts? Bitte!
  • Also, kann ich mit hilfe dieser 'Yoyoames Multiplayer Tutorial' schaffen, einen 3D Multiplayer FPS Online/Lan bei mir zu machen.
    Das hängt (auch bei der 39dll) ab wie viel DU kannst. Wenn du den Game Maker gerade gekauft hast und zum ersten Mal gestartet hast, dann wird das nichts.
    Ich kenne mich mit 39dll nicht aus, könnt ihr mir einen kleinen
    Anleitung geben, also, ich habe es Heruntergeladen, oben die erwähnten
    '39dll's' weiter gehts? Bitte!
    Du bindest (falls es keine GEX ist) die Skripts ein.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • :headtouch: (Danke an die Mods fürs wiedereinführen dieses Emoticons!)
    Der DLL leigt auch noch eine Dokumentation bei. Wenn du es geschafft hast mit Hilfe der GM-Hilfe die mp_ - Funktionen des Game Makers zu verstehen und damit selbstständig ein Multiplayer Spiel gemacht hast, dann garantiere ich dir dass du auch die Dokumentation von der 39Dll ausreichend verstehen wirst um damit das Selbe Multipalyer Spiel nochmal zu realisieren.

    EDIT: Btw. falls du das Prinzip von Skripten nicht verstanden hast: Ja, die Skripte die der Dll beiliegen musst du genau wie Funktionen betrachten, mit dem einzigen Unterschied dass du die Argumente im Skript selber nachschauen musst.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von DragonGamer ()

  • Ok letze frage: Ich lade mir den DLL runter, und nehme die Skripts dort im( GMK ), da gibt es ein Beispiel, und füge es genauso dort zu meinem. und danach soll ich die Skripts verändern, die Z Kordinaten.

    PS: Wenn einer mir helfen würde, wäre es total lieb( sodass ich mein GMK an ihn gebe, und er es für mich macht ), weil ich mein Spiel an meinem lehrer geben muss, er möchte es testen.

    Ich schreibe ihn auch an meinem Homepage/Credits im Information auf Spiel.
  • kaano123 schrieb:

    Ok letze frage: Ich lade mir den DLL runter, und nehme die Skripts dort im( GMK ), da gibt es ein Beispiel, und füge es genauso dort zu meinem. und danach soll ich die Skripts verändern, die Z Kordinaten.

    PS: Wenn einer mir helfen würde, wäre es total lieb( sodass ich mein GMK an ihn gebe, und er es für mich macht ), weil ich mein Spiel an meinem lehrer geben muss, er möchte es testen.

    Ich schreibe ihn auch an meinem Homepage/Credits im Information auf Spiel.

    Sry.. aber hier wird für dich wohl niemand sowas einfach mal Coden ;). Vorallem weil du ja anfangs behauptet hattest dassu scho Erfahrung hast...
  • Was meinst du bitte mit "einstellen"?
    Bitte beschäftige dich erstmal mit GML und 2D Spielen.
    Das wird 100%-ig nichts.

    Später, wenn du dich in GML auskennst, kannst du dich gerne an Multiplayer-Funktionen ranwagen, aber momentan scheinst du ja nicht einmal 'ne Ahnung davon zu haben, was Skripte sind.
    Soll keineswegs böse gemeint sein, ist nur ein persönlicher Rat, weil ich (glaube sogar jeder :P) früher den Fehler gemacht habe/hat und sich ohne Kenntnis der GML auf "Riesenprojekte" gestürtzt hatte.

    - Tobi97
  • @kaano123:

    Ich glaube du verstehst das Prinzip vom Game Maker oder gar der "Programmierung" nicht.
    Du kannst kein x-beliebiges Tutorial nehmen und Skripts einfach irgendwo "einfügen". Das wird nie funktionieren.
    Bei der "beispiel-GMK" wird eine Verbidnung aufgebaut, 2 separate objekte erstellt die per Netzwerk kommunizieren. für die Kommunikation werden zwar die Funktionen der DLL bzw die mplay funktionen des GMs verwendet, aber WAS/WIE übertragen wird und WANN/WO, musst du selber bestimmen.

    Wenn du nun einen 16 Spieler onlinemodus haben möchtest, wirst du zusätzliche abfragen programmieren müssen die die verbindung zu jedem client prüft, ihn z,B: in einer List/Array speichert,usw...
    Da gibt es nichts mit "einstellen". PROGRAMMIEREN ist angesagt.
    Um dir zu zeigen wie z.B die 39 DLL funktioniert (nur mit Files, aber immerhin was...) habe ich mal ein Script hochgeladen mit denen Dateien ausgelesen werden:

    Spoiler anzeigen

    GML-Quellcode

    1. var map_name;
    2. map_name = argument0;
    3. if (not directory_exists(working_directory+"/data/maps/")){
    4. directory_create(working_directory+"/data/maps/");
    5. }
    6. if (file_exists("./data/maps/"+map_name)){ //l�sche die Datei falls sie existiert um die Daten neu reinschreibne zu k�nnen.
    7. //sie gehen nicht verloren, da sie vorher schon in das Spiel reingeladen wurden.
    8. var buffer;
    9. buffer = createbuffer();
    10. var map;
    11. map = fileopen("./data/maps/"+map_name,0);
    12. //lese die map in den buffer
    13. fileread(map,filesize(map),buffer);
    14. var name;
    15. name = readchars(12,buffer);
    16. var ver;
    17. //version
    18. ver = readfloat(buffer);
    19. var gamemode;//variable nur vorübergehend temporär. Wird dazu benutzt um zwischen verscheidenen Spielarten zu unterscheiden.
    20. gamemode = readbyte(buffer);
    21. //playerstart
    22. var s;
    23. s = instance_create(0,0,obj_player_start);
    24. s.x = readint(buffer);
    25. s.y = readint(buffer);
    26. s.z = readuint(buffer);
    27. s.direction = readfloat(buffer);
    28. //entitys
    29. var blocks_n;
    30. blocks_n = readuint(buffer);
    31. for (i=0;i<blocks_n;i+=+1){
    32. var entNr;
    33. entNr = readbyte(buffer);//nummer auslesen (1 = Block, 2 = Gully,etc..
    34. var ent,typus;
    35. ent = scr_get_object_from_entityNr(entNr);//Von der nummer das zu erstellende Objekt herausholen
    36. switch(entNr){
    37. case 0://block
    38. var b_mod;
    39. b_mod = instance_create(0,0,obj_block_model);
    40. typus = readbyte(buffer);
    41. //Falls es ein checkpoint ist, ändere das standard gebäudeobjekt zu dem chjeckpoit objekt
    42. if (typus == 5){
    43. ent = obj_block_checkpoint;
    44. }
    45. var b;
    46. b = instance_create(0,0,ent);
    47. //block kol
    48. //writes datas of blocks
    49. b.type = typus;
    50. b.x = readint(buffer);
    51. b.y = readint(buffer);
    52. b.width = readuint(buffer);
    53. b.height = readuint(buffer);
    54. b.z_min = readuint(buffer);
    55. b.z_max = readuint(buffer);
    56. b.image_angle = readfloat(buffer);
    57. with b scr_block_akt_kolission_box();
    58. b.color = scr_building_set_color(b.type);
    59. if (b.type == 5){//falls es ein checkpoint war, lese die respawn richtungsvariable aus
    60. b.respawn_dir = readfloat(buffer);
    61. }
    62. b.model_ref = b_mod;
    63. //writes datas of blocks
    64. b_mod.x = b.x;
    65. b_mod.y = b.y;
    66. b_mod.width = b.width;
    67. b_mod.height = b.height;
    68. b_mod.z_min = b.z_min
    69. b_mod.z_max = b.z_max;
    70. b_mod.image_angle = b.image_angle;
    71. b_mod.color = b.color;
    72. }
    73. }
    74. freebuffer(buffer);
    75. fileclose(map);
    76. }
    Alles anzeigen


    Dieser code mein Freund, kann man nicht einfach irgendwo hin kopieren und dieser fängt an "magisch" zu funktionieren.
    Schon die kleinste ungereimtheit zwischen deinem Projekt und den example (sei es nur eine fehlende Variable....) wird in deinem Spiel einen Fehler verursachen. Du wirst für dein Projekt spezifische Skripts programmieren müssen die deine persöhnlichen Anforderungen erfüllen.

    Bei Netzwerkspielen können Codes in etwa so ausschauen. Die 39 DLL schreibt Dateien in einen Buffer und versendet diesen. Der Client empfängt ihn und liest ihn aus.
    Hier kannst du auch einen Buffer sehen der eben einfach dafür genutzt wird um den inhalt eines Files auszulesen.

    Von uns kannst du nicht verlangen dass wir dir ein Spiel in MMO größenordnung einfach hier vorprogrammieren. Wäre das so leicht, würden wir selber schon längst mit solchen "großen" Projekten hier auf der Bühne auftauchen.

    Ja, aber bei diesem 3D ist es schwer, vermutlich werde ich es nicht schaffen..

    Bei Netzwerkspielen ist es kein Unterschied ob sie 2D oder 3D sind. Du könntest das Yoyogames Example genauso gut auf 3D ummodifizieren... (Nein, das machen wir hier nicht so einfach "auf die schnelle"...)

    Ok letze frage: Ich lade mir den DLL runter, und nehme die Skripts dort im( GMK ), da gibt es ein Beispiel, und füge es genauso dort zu meinem. und danach soll ich die Skripts verändern, die Z Kordinaten.

    Ohje... Die Skripts in der 39 DLL sind die "Basicfunktionen" die z.B: in einen Buffer eine Variable Schreiben, eine Verbindung aufbauen, buffer leeren,etc... Eine Kommunikation in dem Sinne musst du selber aufbauen. Schau dir mal den Script an den ich hier gepostet habe. Dieser nutzt einige 39DLL befehle. (u.a. den Buffer...)


    (By the way: Ich kann von mir behaupten dass ich ein recht guter GML Programmierer bin. Dennoch habe ich bis dato auch nichts ordentliches zusammenbringen können das auf irgnedeine Weise eine Internetkommunikation genutzt hat...)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von LEWA ()