Wie man einen Multiplayer mit Socket.IO macht

-1
  • 0 favourites

Index

Tagged

Attached Files

The following files have been attached to this tutorial:

.capx

socketioexample.capx

Download now 78.09 KB
.zip

socket-io-mod-johnnysheffield.zip

Download now 355.61 KB

Stats

10,957 visits, 12,931 views

Tools

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

socket.io coding:

        // Dies wird benötigt um den Server zu starten
        // hier definieren wir den port wo die daten durchgehen
        // In diesem fall ist es port 8080, du kannst da jeden port eingeben den du willst
        //aber bemerke, manche ports werden schon benutzt, falls so wird socket.io eine error meldung
        //wiedergeben
        var io = require("socket.io").listen(8080);
        //Eine Variable für unser “automatch making”
        TmpRoom="wait";
        //Falls ein client zum Server verbindet, werden wir diese funktion laufen lassen:
        io.sockets.on("connection", function (socket) {
        
           //Wenn der client emits “adduser”, wird dieses ausgeführt
        	socket.on("joint", function(data){
        		// checkt falls es keinen anderen wartenden mitspieler gibt
        		if(TmpRoom=="wait")
        		{
        			//falls nicht, wird dieses hier ausgeführt
        			//Es sagt TmpRoom = data, der benutzename ist data
        			/*Das bedeutet tmpRoom is nicht mehr = wait! Also wird der nächste der hier
                                    joinen will, in die nächste schleife geschickt, die “else” schleife*/
        			TmpRoom = data;
        		//Denn das hier kreirt & joint einen raum, der benannt wird nach dem benutzernamen
        			socket.join(TmpRoom);
        			//jetzt sendet es you,raumnamen
        			socket.send("you," + TmpRoom);
        			//jetzt endet die schleife
        		}
        		
        		else
        		{
        			//Joins the Temporary Room, to the enemy player
        			//Joint dem Raum, zum feindlichen mitspieler
        			socket.join(TmpRoom);
        			//Denn sendet es den RaumNamen
        			socket.send("Room," + TmpRoom);
        			//Und jetzt der interresante part, es sendet die daten nicht nur zu einem client!
        			//Aber zu allen Clients, zu allen in dem raum TmpRoom
        			//Die daten die er sendet ist der raum-name
        			io.sockets.in(TmpRoom).send("enemy," + TmpRoom);
        			//Und der benutzernamen des anderen mitspielers!
        			io.sockets.in(TmpRoom).send("enemy," + data);
        			//Jetzt setzt er TmpRoom = “wait”; sodass der nächste der joint,
        			//einen neuen raum kreiert.
        			//Räume werden automatisch Zerstört nachdem alle sie verlassen haben.
        			TmpRoom = "wait";
        		}
        			
        	});
        	//Falls der socket, eine eigene funktion von C2 kriegt, genannt “Message” mit data(raumname)
        	//Denn macht es das hier:
        	socket.on("message", function(data){
        		//Jetzt sind wir in der schleife, falls der server ein event kriegt genannt chatmessage,
        		//vermutlich mit einem string, den wird es das hier ausführen:
        		socket.on("chatmessage", function(data2){
        			//Sendet eine chat nachricht in den raum
        			//Es sendet die daten zu allen in dem raum
        			//Der raum wurde vom client in seiner “message” funktion deklariert mit (data),
        			io.sockets.in(data).send("chatmessage," + data2);
        		});
        		//Das hier ist so ziemlich das gleiche, und braucht vermutlich nicht mehr erklärung
        		socket.on("GameSettings", function(data2){
        			//Sendet die Game Settings, x,y koordinaten, String, ALLES!
        			io.sockets.in(data).send("GameSettings," + data2);
        		});
        	});
        	//Wenn der User disconnected wird das hier ausgeführt:
        	socket.on("disconnect", function(data){
        		//Bei disconnecting raum leaven.
        		socket.leave(data);
        	});
        });

Viel code oder?

Die // sind kommentare, und werden benutzt im notizen zu nehmen an bestimmten stellen.

Ich glaube dies bedarf nicht an weiterer erklärung, du kannst die datei links downloaden(Alles english)

Aber desto mehr Javascript du kannst, desto mehr möglichkeiten hast du.

Dies ist nur ein exempel, und sollte nicht als fertigen server benutzt werden, da es mehrere Bugs enthalten könnte.

Aber du könntest es als vorlage benutzen wie es villeicht sein wird.

Starte Server

Jemals gewundert wie man den Server den startet?

Es existieren mehrere möglichkeiten, ich werde zwei erklären.

1. CMD

Öffne CMD und gebe ein:

cd C:\Dein\Save\Ort\fuer\Deine\js\datei

node deinappname.js

Jetzt hast du den Server gestartet und solltest einen Command fenster sehen.

2. Batch

Erst öffne den Editor, den gebe ein:

node deinappname.js

pause

node deinappname muss dein server app name seien, den du benutzt hast zum abspeichern.

Denn drücke Speichern Als -> Dateiname: Start.bat -> Dateityp: Alle Dateien -> Speichern.

So das wars, jetzt tue die .bat datei in die location wo du deine .js datei hast und starte sie.

Jetzt hast du den Server gestartet und solltest einen Command fenster sehen.

Falls du was in die console hineinschreiben willst, am wichtigen zeitpunkten(spieler hat gejoint),

gebe bei der .js ein:

console.log("string" + "oder" + einevaraible);

  • 0 Comments

  • Order by
Want to leave a comment? Login or Register an account!