3D - Multiplayer spiel +(Kamera und Chat)

    • 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 spiel +(Kamera und Chat)

      Hallo und guten tag,

      Heute ist mein neues Tutorial "3 Dimensionales Kamera erstellen und mit Bullet schießen + Chat". Ihr wisst alle, was ein 2 Dimensionales ist. Mit einem 2D-Einstellungen arbeitet man mit einem "x,y" Koordinat. Diese zeichnen einen Bild dass man keine Bodenfläsche-oder untere fläsche sieht. Das heißt, das der Bild einfach einen strich von 4-ecken hat. Einen 3 Dimensionalen dazu, besitzt auch die gleichen Koordinaten nur dass ein 3 Dimensionales einen "Z-Achse-" besitzt. Das ist dafür, um die höhe zu bestimmen. Damit man das höhe zeichet, muss man bei einem 3 Dimensionalen mit Z-Achsen arbeiten.

      Dieses Tutorial besitzt:
      Spoiler anzeigen

      - 39DLL Multiplayer
      - 3 Dimensionales spiel + eine Kamera an dem anderen Spieler (sehen)
      - Bullet schießen und der other_player wird berührt
      -
      Chat (Chaten mit dem spielern netzwerk)
      - Andere Features :)


      Bevor das Tutorial anfängt Bemerkung: Einen Guten Deutsch habe ich nicht, darum werde ich somöglich wie gut, das Tutorial gut erklären. Das ist eigentlich für Anfänger/Fortgeschrittene gedacht. Auch im Example.gmk, habe ich im manschen Fällen die Drag&Drop genommen, also nicht denken dass warum ich drag&drop benutze,.......

      Ersteinmal um eine Verbindung dazu zu machen, müssen wir die 39DLL herunterladen und eine Verbindung zwsichen Server+Client erstellen. ( Server + Client ) sind auf dem gleichen spiel. Das heißt, mann braucht keine 2 GameMaker Files, sondern nur eine.

      obj_server_controller:

      GML-Quellcode

      1. listen=tcplisten(global.port,10,true) // Port ist auf 10 = tcp
      2. global.myid=1 // Der spieler(meine/deine) ID ist 1
      3. //
      4. sock=tcpaccept(listen,true)
      5. if sock>0
      6. {
      7. inst=instance_create(0,0,obj_server_otherplayer) // der andere der Server hostet
      8. inst.socket=sock;
      9. inst.playerid=global.idget;
      10. global.idget+=1;
      11. }
      12. if global.idget>65000 {global.idget=2}
      Alles anzeigen


      Jetzt besitzen wir eine Verbindung der dieses Object alles steuert. Jetzt kommen die "Eintreten & Hosten"


      GML-Quellcode

      1. global.host=true; // True gesetzt
      2. global.myid=1 // Wie immer deine ID 1
      3. instance_create(0,0,obj_server_controller); // erstellt den Object,
      4. room_goto(room_game); // geht zu dem spiel-raum, nur der Hoster!
      5. // Bei dem Object_Joinen kommt...
      6. client_join(); // der Skript, in dem dort:
      7. server = tcpconnect(get_string("Insert Ip here:","127.0.0.1"), global.port, true);
      8. if(server <= 0)
      9. {
      10. show_message("Unable to connect to server");
      11. game_end();
      12. }
      13. global.server = server;
      14. global.host=false;
      15. room_goto(room_game);
      Alles anzeigen



      Jetzt haben wir auch schon die Verbindungen. Jetzt kommt auf uns die Z-Achse, um den Spieler zu zeichnen. Ich habe das in dem Example als Skript schon erstellt, aber auf dem obj_spieler kommt jetzt die "d3D" Funktion, undzwar:


      GML-Quellcode

      1. fps_cam_init(0.25)
      2. d3d_start(); // Startet die d3d (Draw 3 Dimensional)
      3. d3d_set_culling(false);
      4. d3d_set_hidden(true);
      5. d3d_set_lighting(false);
      6. d3d_set_perspective(true);
      7. texture_set_interpolation(true);
      8. fr=true;
      9. global.help_text="";
      10. instance_create(0,0,obj_chatbox) // erstellt das Chat, kommen wir gleich dazu..
      11. alarm[1]=30;
      12. alarm[0]=15;
      13. playerid=0;
      14. previous_face_z=face_z
      15. previous_face_x=face_x
      16. previous_z=z
      17. playerdead=false;
      18. if global.host=false
      19. {
      20. case_msg_client_send_playerenter();
      21. }
      22. update_chat("Player made")
      Alles anzeigen


      So, das d3d wurde gezeichnet. Aber es ist immernoch nicht fertig, undzwar geht es weiter:


      GML-Quellcode

      1. // Draw Event - obj_spieler, hier zeichnen wir das Kamera..
      2. draw_set_color(c_white)
      3. fps_cam_draw();


      Dann geht es weiter mit dem Z-Achse (hier zeichnen wir den spieler):


      GML-Quellcode

      1. //draw_text_3d("Hey",z,x+lengthdir_x(20,face_x),y+lengthdir_y(20,face_x),obj_player)
      2. mytext=argument0
      3. z_height=argument1 // z-Achse
      4. xpos=argument2 // x-Achse
      5. ypos=argument3 // Y-achse
      6. player=argument4 // spieler als die drei formen (x,y,z)
      7. d3d_transform_set_identity();
      8. // x,y,Z wird eingetragen..und eingesetzt
      9. d3d_transform_add_scaling(0.1,0.1,0.1);
      10. d3d_transform_add_rotation_x(90);
      11. //the following would be just for vertical rotation.
      12. d3d_transform_add_rotation_z(90+point_direction(xpos,ypos,argument4.x,argument4.y));
      13. d3d_transform_add_translation(xpos,ypos,z_height); // X,Y,Z werden geaddet
      14. draw_text(0,0,argument0); //
      15. d3d_transform_set_identity();
      Alles anzeigen



      Download: Muss von der Webseite heruntergeladen werden, da der über 1,05 MB groß ist...Aber es ist ein Direkter Download Klick hier einfach!
      greenw.npage.de/


      Alles andere sieht ihr dann auf der Example.gmk. Dort sind dann auch alles vollständig, (bullet, Chat...) Ich hoffe das alle mich verstanden haben. Auch mit dem GameMaker sind 3 Dimensionale spiele möglich. Jedenfalls Multiplayer-spiele. Wie auch immer, viel glück noch!
      :)