Genom vad man spelar på nätverket eller hur man spelar på Internet. Program för att spela på Internet och lokala nätverk

Om du bestämmer dig för att skapa ett nätverksspel med dina egna händer, var noga med att ta hänsyn till det faktum att du kan stöta på vissa svårigheter under genomförandet av din idé. Låt oss ta reda på hur man skapar ett nätverksspel, vad du kan behöva för detta och vad/vem ska det riktas till?

Typer av spel

Nätverksspel är konventionellt indelade i två typer. Den första är turbaserade spel (turbaserade). Exempel på sådana spel är: schack, schack och olika brädspel. Spelaren har en viss tid på sig att bestämma sig för nästa åtgärd (steg), medan andra spelare väntar på sin tur. Kvaliteten på sådana spel påverkas praktiskt taget inte av eventuella problem med nätverksanslutningen, och förseningen i meddelandet kan inte särskilt förstöra intrycket av en smidigt förbigående schacktävling. Den andra typen är Real Time Games. Det mest slående exemplet på sådana spel är det välkända Counter Strike. Spelarnas aktivitet i sådana spel sker i realtid och även ett litet problem med anslutningen stör och saktar ner spelprocessen avsevärt.

Nätverksspel

Hur gör man ett nätverksspel, vilka typer är det uppdelat i och vilket ska man välja själv? Idag kan två grundläggande modeller för interaktion mellan datorspel urskiljas.

Peer-to-peer - Baserat på interaktionen mellan peer-to-peer-applikationer och program. Det representerar jämlikheten för var och en av de för närvarande lanserade kopiorna av leksaken. Denna modell övervakar statusen för de andra kopiorna och skickar meddelanden till var och en av dem. Det är endast lämpligt för de spel som involverar ett litet antal spelare. I allmänhet är varje kopia av spelet länkad till varje efterföljande kopia. Ofta kan i denna interaktionsmodell ett av de löpande spelen tilldelas en värd, d.v.s. den kommer att kontaktas av nya spelare för att kunna delta i spelet. Men den här värden kan inte hantera meddelanden mellan alla spel.

Klient/server är den andra modellen för nätverksinteraktion för olika spel, där två typer av program kan särskiljas. Det första är serverprogrammet, som är ansvarigt för alla problem i samband med att organisera spelprocessen och interagera med de angivna klientprogrammen. Med denna modell kan klienter endast utbyta meddelanden med servern, utan att direkt interagera med varandra. Den här metoden låter dig skapa projekt som kan använda bandbredden för de anslutna kanalerna och stödja samtidigt spel för många människor.

Två spelare

Det enklaste nätverksspelet anses vara ett som är designat för två spelare. I det här fallet kommer en av datorerna att vara basen (master) och den andra, respektive slav. Chefen kommer att hantera alla kollisioner, rörelser, d.v.s. hela spelet. För att synkronisera spelvärldarna tar den andra datorn emot händelser från den första och markerar dem på sitt grafikkort. Alla slumpmässiga projektiler och föremål (första hjälpen-kit, patroner) måste överföras till slavenheten. Detta måste göras en gång - innan du startar spelet.

Skapa ett nätverksspel

Innan du gör ett onlinespel måste du skriva en kort beskrivning och gradvis lägga till nya idéer och detaljer till det. Efter att den övergripande omfattningen av projektet blir tydlig, är det nödvändigt att beräkna den ungefärliga tiden för dess skapelse, programvara och utrustning som kommer att behövas i framtiden, såväl som materialkostnader.

Därefter skapar vi ett flerspelarläge för vårt spel, om det behövs. Detta är en mycket svår process, eftersom det idag finns flera system för att organisera onlinespel för flera spelare. Allt beror på projektets genre och dess funktioner. När du skriver själva programvaran måste du försöka rita detaljerna noggrant så att det senare inte finns några problem med grafisk prestanda.

Varje spelutvecklare ställer sig en fråga: hur man skapar ett nätverksspel med oavbruten funktionalitet. Det bör inte glömmas bort att överföringen av data till Internet är mycket mer komplicerad jämfört med ett lokalt nätverk. Under dataöverföringen kan oväntade förseningar uppstå och i detta fall måste ytterligare åtgärder vidtas för att hålla spelet igång (t.ex. avbrottsfri strömförsörjning). Rörelsen av datormobbar utförs som regel enligt ett givet scenario, så att PC:n kan sända kommandot "Försvar enligt scenario B" eller "Vi springer iväg enligt scenario C". Således minskar vi mängden information som överförs till dem och förenklar också synkroniseringen avsevärt. Regelbundet överförda signaler kommer att indikera att något föremål kunde ha passerat cellen på vår spelplan. Och ett sådant överföringsprotokoll är mycket bekvämt i processen att arbeta med tungt belastade kanaler, eftersom det är extremt motståndskraftigt mot olika förseningar.

Efter att ha skrivit själva spelet måste du ladda upp det till servern, vilket säkerställer utbytet av data mellan spelare. Därefter måste du testa spelet för eventuella fel i båda lägena: online och offline, vi fixar felen. I inget fall bör du tillåta lanseringen av ett nätverksspel om det innehåller buggar!

Idéer

Hur gör man ett nätverksspel om det inte finns tillräckligt med idéer för dess allmänna konstruktionsschema? I processen att utveckla ett onlinespel kan det uppstå svårigheter med idéer som ger ditt projekt unikhet och originalitet. I det här fallet kan du vända dig till andra onlinespel som har stor potential och ta något från dem själv. Du bör vara uppmärksam på åsikter från användare såväl som spelare. För att göra detta måste du skapa relevanta ämnen och omröstningar på olika forum och sociala nätverk. Från världen på ett snöre, men genom att gruppera informationen kan du få ett utmärkt scenario för ditt spel. Men försök inte att helt kopiera andras tankar. Du behöver bara utveckla din utvecklade idé och komplettera den med andra föreslagna. Man bör komma ihåg att nätverket idag tillhandahåller ett stort utbud av onlinespel, inklusive flerspelarspel. Därför kan nya spelare bara attraheras av närvaron av en intressant handling och en bra nivå på genomförandet av själva projektet. Och detta är väldigt svårt att genomföra. Det är nödvändigt att tänka över allt till minsta detalj.

Spelarorientering är nyckeln till framgång för flera spelare.

Två spelare - det enklaste fallet

Det enklaste multiplayer-spelet är för två spelare. I det här fallet kommer en av datorerna att vara mastern - mastern och den andra - slaven. Huvudmaskinen styr rörelser, kollisioner och hela spelutrymmet i allmänhet. För att synkronisera spelvärldarna överförs händelser till den andra, han markerar dem på sitt (det är identiskt med huvudkortet).

Alla slumpmässiga element, till exempel patroner och första hjälpen-kit, som placeras på olika platser på spelplanen, måste också överföras till slavenheten. Detta är bara en gång innan spelet börjar. Det hela kan överföras. Slaven sänder information om tangenttryckningar till mastern.

Hur man skapar ett nätverksspel på internet

Det är svårare att överföra data över ett lokalt nätverk. Detta bör beaktas om du bestämmer dig för att göra ett nätverksspel. Faktum är att förseningar uppstår då och då under överföringen av data, och ytterligare åtgärder måste vidtas för att säkerställa att spelet fortsätter att fungera normalt. Mobbar rör sig vanligtvis i ett mönster, så datorn kan skicka ett kommando som "Försvara Scenario B" eller "Escape Scenario C". Således kommer mängden information som överförs av den att minska, och det kommer att bli mycket lättare att säkerställa synkronisering - du måste regelbundet sända signaler som indikerar att objektet har korsat någon cell på spelplanen. Det är bra att använda denna överföring när man arbetar med upptagna kanaler, eftersom den är motståndskraftig mot förseningar.

Hur man gör ett multiplayer-spel: slåss mot fuskare

De som ska skapa ett onlinespel bör seriöst fundera över metoder för att hantera eventuellt fusk. För att skydda datorer från hackning är det nödvändigt att byta slav och master då och då - detta är inte svårt att åstadkomma.

Om det är fler än två spelare kan nya problem uppstå. För att en masterdator ska kunna betjäna många slavar krävs en tillräckligt kraftfull processor. Detta är dock inte den största svårigheten. Ett problem kan vara en situation när anslutningen mellan datorer plötsligt kopplas bort. Lösningen kan vara att installera en dedikerad server. Det är också möjligt att upprätta en anslutning inte bara mellan värddatorn och andra, utan även mellan alla värddatorerna. Således kommer varje dator periodvis att bli master, och om mastern kopplas bort kommer inget dåligt att hända. Det finns ett annat alternativ. Du kan vägra "huvuddatorn" helt och hållet. Varje bil kommer att kontrollera rörelserna för sina mobbar och dess spelare, och skicka data till resten. Detta system kommer att hjälpa till att lösa nästan alla problem.

Hälsningar vänner, kom äntligen runt för att skriva en artikel "Hur man spelar Minecraft online med vänner." En ganska intressant fråga som nästan alla spelare i Minecraft-universum ställs inför. Därför kommer jag att berätta några av de enklaste sätten att spela med en vän. Alla våra metoder nedan är gratis! Hur man spelar Minecraft online gratis.

Och så gick vi:

Bilagan:

  • Varje metod fungerar i den licensierade versionen av Minecraft och i den piratkopierade versionen.
  • Varje metod fungerar på alla versioner av spelet, inklusive tidiga (1.0.1, 1.1, 1.2.5, 1.3.1, 1.3.2, 1.4.2, 1.4.6, 1.4.7, 1.5, 1.5.2, 1.6, 1.6. 2, 1.6.4, 1.7, 1.7.2, 1.7.5, 1.7.4, 1.7.10, 1.8, 1.8.1, 1.8.8, 1.8.9, 1.8.7).
  • Mer än 5 fungerande sätt att spela online med vänner i Minecraft

Hur man spelar Minecraft med en vän med hamachi

Först behöver du ladda ner Hamachi för alla speldatorer att användas för onlinespel. Därefter måste du ha alla spelare identiska versioner av Minecraft-spelet.

Med hjälp av hamachi kommer vi att skapa en virtuell server där du kan spela med vänner. För den som skapar servern måste du göra:

  • Öppna (skapa) ett nytt rum i Hamachi.
  • Skriv inget i IP-serverfältet (lämna tomt).
  • Starta servern.
  • Skicka den mottagna IP-adressen till vännerna som du ska spela med.

För de som ansluter:

  • Gå till samma rum med servern (som skapades av 1 spelare).
  • Anslut med den angivna IP-adressen från rumsskaparen.
  • Obs: för att spela online måste alla spelare ha samma version av Minecraft.

Hur man spelar Minecraft med en vän över ett lokalt nätverk

Denna metod är lämplig för dem som inte har internet. För att göra detta behöver du en Ethernet-kabel (anslut dem mellan datorn).

På Windows 7:

  • Vi går till startmenyn - Kontrollpanelen - Nätverks- och delningscenter - Ändra adapterinställningar (i den vänstra kolumnen).
  • Hitta en lokal anslutning och klicka på höger musknapp för att välja "Egenskaper".
  • I fönstret som öppnas, avmarkera rutan "Internet Protocol 6 (TCP / IPv6)".
  • Nedan ser du "Internet Protocol 4 (TCP / IPv4" - klicka på egenskapen.
  • Sätt en bock på: Använd följande IP-adress och skriv följande data:

IP-adress: 192.168.0.1

Subnätmask: 255.255.255.0

Standard gateway: 192.168.0.2

  • Sätt sedan en bock på: Använd följande DNS-servrar och ordinera:

Föredragen DNS-server: 192.168.0.2

Klicka på knappen - OK. Redo! Killarna slutade.

Hur man spelar Minecraft med en vän online

Ett enklare sätt som inte kräver några program.

  • Öppnar Minecraft.
  • Skapa en ny värld och välj från menyn (ESC) - "öppen för webben".
  • Vi väljer alla inställningar som du valde när du skapade världen.
  • Klicka på: "Öppna världen för nätverket" och i chatten kan du se en ofullständig adress till din värld.
  • Därefter måste du ta reda på din IP-adress och skriva IP: Port istället för nollor.
  • Vi har redan sett porten i chatten, den såg ut så här: 0.0.0.0: 51259 (de sista 5 siffrorna är olika för alla).
  • Efter det, istället för nollor, registrerar vi IP-adressen och ger den till en vän. Det borde se ut ungefär så här: 95.56.216.145:51259.

Hur man spelar Minecraft med en vän på servern

Tja, jag tror att ett av de enklaste sätten. För att spela med en vän över nätverket, välj från vår övervakning av Minecraft-servrar valfri gratis server eller server som du gillar mest och du kan spela med en vän och med andra spelare. Tja, eller välj en gratis (mindre populär) server och värd där med en vän.

En annan väg:

Spela Minecraft med vänner online

Hälsningar till alla läsare.

De flesta datorspel (även de som kom ut för 10 år sedan) stöder multiplayer-spel: antingen över Internet eller över ett lokalt nätverk. Detta är förstås bra, om inte för ett "men" - i många fall fungerar det inte att ansluta till varandra utan att använda tredjepartsprogram.

Det finns många anledningar till detta:

Spelet stöder till exempel inte spel över internet, men det finns stöd för lokalt läge. I det här fallet måste du först organisera ett sådant nätverk mellan två (eller flera) datorer på Internet och sedan starta spelet;

Avsaknad av en "vit" ip-adress. Det handlar mer om att organisera internetåtkomst av din leverantör. Ofta kan man i det här fallet inte klara sig utan att använda programvara alls;

Besväret med att ständigt ändra IP-adressen. Många användare har en dynamisk IP-adress som ständigt förändras. Så i många spel måste du ange serverns IP-adress, och om IP-adressen ändras måste du hela tiden köra in nya siffror. För att inte göra detta kommer specialerbjudanden väl till pass. program...

Egentligen kommer vi att prata om sådana program i den här artikeln.

GameRanger

Stöder alla populära Windows-versioner: XP, Vista, 7, 8 (32/64 bitar)

GameRanger är ett av de mest populära programmen för att spela på Internet. Stöder alla de mest populära spelen, bland dem finns det alla träffar som jag helt enkelt inte kunde undgå att nämna i den här recensionen:

Age of Empires (The Rise of Rome, II, The Conquerors, Age of Kings, III), Age of Mythology, Call of Duty 4, Command & Conquer Generals, Diablo II, FIFA, Heroes 3, Starcraft, Stronghold, Warcraft III.

Dessutom finns det bara en enorm gemenskap av spelare från hela världen: mer än 20 000 - 30 000 användare online (även på morgonen/natten); ca 1000 skapade spel (rum).

Under installationen av programmet måste du registrera dig genom att ange en fungerande e-post (detta är obligatoriskt, du måste bekräfta registreringen, dessutom, om du glömmer ditt lösenord kommer du inte att kunna återställa ditt konto).

Efter den första lanseringen kommer GameRanger automatiskt att hitta alla installerade spel på din PC och du kan se spel skapade av andra användare.

Förresten, det är väldigt bekvämt att titta på serverpingen (markerad med gröna ränder :): ju fler gröna ränder, desto bättre blir kvaliteten på spelet (färre fördröjningar och fel).

I gratisversionen av programmet kan du lägga till 50 vänner till dina bokmärken – då vet du alltid vem som är online och när.

Fungerar i: Windows XP, 7, 8 (32 + 64 bitar)

Ett snabbt växande popularitetsprogram för att organisera nätverksspel. Funktionsprincipen skiljer sig något från GameRanger: om du går in i det skapade rummet där, och sedan startar servern spelet; sedan här för varje spel finns det redan sina egna rum för 256 spelare - var och en av spelarna kan starta sin egen kopia av spelet, och resten kan ansluta till det som om de var på samma lokala nätverk. Bekvämt!

Förresten, programmet innehåller alla de mest populära (och inte populära) spelen, till exempel gjorde jag en skärmdump av strategierna:

Dessa rumslistor gör det enkelt att hitta vänner i många spel. Programmet kommer förresten ihåg "dina rum" som du gick in i. Dessutom har varje rum en inte dålig chatt som gör att du kan förhandla med alla spelare på nätverket.

Resultat: ett bra alternativ till GameRanger (och kanske snart kommer GameRanger att vara ett alternativ till Tungle, eftersom Tungle redan används av mer än 7 miljoner spelare runt om i världen!).

Av. webbplats: http://www.langamepp.com/langame/

Fullt stöd för Windows XP, 7

Detta program var en gång unikt i sitt slag: ingenting kunde hittas enklare och snabbare vid installationen. LanGame tillåter personer från olika nätverk att spela spel där en sådan möjlighet inte ges. Och för detta behöver du ingen internetanslutning!

Jo, till exempel, du och dina kamrater är anslutna till Internet via samma leverantör, men i nätverksspelläget kan ni inte se varandra. Vad ska man göra?

Installera LanGame på alla datorer, lägg sedan till varandras IP-adresser i programmet (glöm inte att stänga av Windows-brandväggen) – sedan återstår bara att starta spelet och försöka slå på nätverksspelläget igen. Konstigt nog – spelet kommer att starta ett flerspelarläge – d.v.s. ni kommer att ses!

Även om detta program, med utvecklingen av höghastighetsinternet, förlorar sin relevans (eftersom även med spelare från andra städer kan du spela med en mycket låg ping, trots frånvaron av ett LAN), kan det fortfarande vara populärt i snäva kretsar för en lång tid.

Hamachi

Fungerar i Windows XP, 7, 8 (32 + 64 bitar)

Hamachi var en gång ett mycket populärt internet LAN-program som användes i många flerspelarspel. Dessutom fanns det väldigt få värdiga konkurrenter.

Idag behövs Hamachi mer som ett "skyddsnät": inte alla spel stöds av GameRanger eller Tungle. Ibland är vissa spel så "nyckfulla" på grund av frånvaron av en "vit" IP-adress eller närvaron av NAT-enheter - att det helt enkelt inte finns några alternativ till spelet, förutom genom "Hamachi"!

I allmänhet ett enkelt och pålitligt program som kommer att förbli relevant under lång tid. Rekommenderas för alla fans av sällsynta spel och anslutna till Internet via "problem"-leverantörer.

Alternativa program för att spela på nätverket

Ja, naturligtvis, många populära program kom inte till min lista över de 4 programmen ovan. Men jag baserades för det första på de program som jag hade erfarenhet av att arbeta med, och för det andra, i många av dem är onlinespelare för små för att betraktas på allvar.

Till exempel, GameArcade- ett populärt program, dock enligt min mening - dess popularitet har sjunkit länge. I många spel finns det helt enkelt ingen att leka med, rummen är lediga. Även om bilden är något annorlunda för hits och populära spel.

Garena- är också ett ganska populärt program för att spela på Internet. Det är sant att antalet spel som stöds inte är så stort (åtminstone under mina upprepade tester - många spel har inte lanserats. Det är möjligt att situationen nu har förändrats till det bättre). När det gäller hitspel har programmet samlat en ganska stor community (Warcraft 3, Call of Duty, Counter Strike, etc.).

Det är allt, jag kommer att vara tacksam för intressanta tillägg ...

Installera först beroenden. Skapa en projektmapp, navigera till den och kör följande kod:

Npm init npm installation --save express socket.io

För att snabbt konfigurera servern är det lämpligt att använda Express-ramverket och för att bearbeta websockets på servern - paketet socket.io. Placera följande kod i din server.js-fil:

// Beroenden var express = kräver ("express"); var http = kräver ("http"); var sökväg = kräver ("sökväg"); var socketIO = require ("socket.io"); var app = express (); var server = http.Server (app); var io = socketIO (server); app.set ("port", 5000); app.use ("/ static", express.static (__ dirname + "/ static")); // Routes app.get ("/", funktion (request, response) (response.sendFile (path.join (__ dirname, "index.html"));)); // Starta servern server.listen (5000, function () (console.log ("Jag startar servern på port 5000");));

Detta är ganska typisk kod för en Node.js + Express-server. Den installerar beroenden och huvudvägarna för servern. Det finns bara en index.html-fil och en statisk mapp för detta demoprogram. Skapa dem i projektets rotmapp. Filen index.html är ganska enkel:

Vårt multiplayer-spel

Ditt användargränssnitt kan innehålla många fler element, så för större projekt är det bäst att lägga dina CSS-stilar i en separat fil. För enkelhetens skull lämnar jag CSS i HTML-koden. Observera att jag har inkluderat socket.io.js-skriptet i koden. Det kommer automatiskt att fungera som en del av socket.io-paketet när servern startar.

Nu måste vi konfigurera websockets på servern. I slutet av din server.js-fil lägg till:

// Web socket handler io.on ("anslutning", funktion (socket) ());

Än så länge finns det inga funktioner i spelet, så inget behöver läggas till i websocket-hanteraren. För att testa, lägg till följande rader i slutet av server.js-filen:

SetInterval (funktion () (io.sockets.emit ("meddelande", "hej!");), 1000);

Den här funktionen kommer att skicka ett meddelande med namnet meddelande och hi-innehåll till alla anslutna websockets. Kom ihåg att ta bort den här delen av koden senare eftersom den endast är till för teständamål.

Skapa en fil som heter game.js i den statiska mappen. Du kan skriva en kort funktion för att logga meddelanden från servern för att vara säker på att du får dem. Lägg till följande i din static / game.js-fil:

Var socket = io (); socket.on ("meddelande", funktion (data) (console.log (data);));

Starta servern med kommandot node server.js och gå till länken http: // localhost: 5000 i valfri webbläsare. Om du öppnar utvecklarfönstret (högerklicka → Inspektera), kommer du att se ett nytt meddelande varje sekund:

Vanligtvis skickar socket.emit (namn, data) ett meddelande med det angivna namnet och data till servern om begäran är från en klient, och vice versa om begäran är från servern. För att hämta meddelanden för ett specifikt namn, använd följande kommando:

Socket.on ("namn", funktion (data) (// dataargumentet kan innehålla vilken data som helst att skicka));

Med socket.emit () kan du skicka vilket meddelande som helst. Du kan också skicka JSON-objekt, vilket är väldigt bekvämt för oss. Detta gör att information i spelet omedelbart kan överföras från server till klient och tillbaka, vilket är grunden för multiplayer-spel.

Låt nu klienten skicka några tangentbordstillstånd. Placera följande kod i slutet av din static / game.js-fil:

Var rörelse = (upp: falsk, ned: falsk, vänster: falsk, höger: falsk) document.addEventListener ("keydown", funktion (händelse) (switch (event.keyCode) (fall 65: // A movement.left = true; break; fall 87: // W movement.up = true; break; case 68: // D movement.right = true; break; case 83: // S movement.down = true; break;))); document.addEventListener ("keyup", funktion (händelse) (switch (event.keyCode) (fall 65: // A movement.left = false; break; case 87: // W movement.up = false; break; case 68 : // D move.right = false; break; case 83: // S movement.down = false; break;)));

Detta är en standardkod som låter dig spåra nedtryckningen av tangenterna W, A, S, D. Efter det lägger du till ett meddelande som meddelar servern att en ny spelare har dykt upp i spelet, och skapa en loop som informerar servern om tangenttryckningar.

Socket.emit ("ny spelare"); setInterval (funktion () (socket.emit ("rörelse", rörelse);), 1000/60);

Denna del av koden kommer att skicka information om tillståndet för klientens tangentbord 60 gånger per sekund till servern. Nu är det nödvändigt att registrera denna situation från serversidan. Lägg till följande rader i slutet av server.js-filen:

Var spelare = (); io.on ("anslutning", funktion (socket) (socket.on ("ny spelare", funktion () (spelare = (x: 300, y: 300);)); socket.on ("rörelse", funktion (data) (var spelare = spelare || (); if (data.left) (player.x - = 5;) if (data.up) (player.y - = 5;) if (data.right) ( player.x + = 5;) if (data.down) (player.y + = 5;)));)); setInterval (funktion () (io.sockets.emit ("tillstånd", spelare);), 1000/60);

Låt oss ta en titt på den här koden. Du kommer att lagra information om alla anslutna användare som JSON-objekt. Eftersom varje uttag som är anslutet till servern har ett unikt ID, kommer nyckeln att representera uttagets ID för den anslutna spelaren. Värdet kommer att vara ett annat JSON-objekt som innehåller x- och y-koordinaterna.

När servern får ett meddelande om att en ny spelare har anslutit sig, kommer den att lägga till en ny post till spelarobjektet med hjälp av socket-id:t som kommer att finnas i detta meddelande. När servern tar emot ett rörelsemeddelande kommer den att uppdatera informationen om spelaren som är associerad med denna socket, om en sådan finns.

io.sockets.emit () är en begäran som skickar meddelanden och data till ALLA anslutna uttag. Servern skickar detta tillstånd till alla anslutna klienter 60 gånger per sekund.

I det här skedet gör inte klienten något med denna information ännu, så lägg till en hanterare på klientsidan som kommer att visa data från servern till Canvas.

Var canvas = document.getElementById ("canvas"); canvas.width = 800; canvas.height = 600; var context = canvas.getContext ("2d"); socket.on ("tillstånd", funktion (spelare) (context.clearRect (0, 0, 800, 600); context.fillStyle = "grön"; för (var id i spelare) (var spelare = spelare; context.beginPath (); context.arc (player.x, player.y, 10, 0, 2 * Math.PI); context.fill ();)));

Den här koden kommer åt Canvas id (#canvas) och ritar dit. Varje gång ett statusmeddelande tas emot från servern kommer data i Canvas att återställas och alla spelare kommer att visas igen som gröna cirklar.

Nu kommer varje ny spelare att kunna se tillståndet för alla anslutna spelare på Canvas. Starta servern med kommandonoden server.js och öppna två fönster i webbläsaren. När du klickar på länken http: // localhost: 5000 bör du se något liknande:

Det är allt! Om du har några problem, kolla in källarkivet.

Några finesser

När du utvecklar ett mer funktionellt spel är det vettigt att dela upp din kod i flera filer.

Flerspelarspel som detta är ett bra exempel på MVC-arkitekturen (Model-View-Controller). All den logiska delen måste bearbetas på servern, och allt som klienten behöver göra är att skicka användarinmatning till servern och visa informationen den tar emot från servern.

Detta demoprojekt har dock flera nackdelar. Speluppdateringen är kopplad till en socket-lyssnare. Om jag ville påverka spelets gång skulle jag kunna skriva följande i webbläsarkonsolen:

While (true) (socket.emit ("rörelse", (vänster: sant));)

Nu kommer rörelsedata att skickas till servern, beroende på datorns egenskaper, mer än 60 gånger per sekund. Detta kommer att få spelaren att röra sig otroligt snabbt. Detta för oss till konceptet att definiera en auktoritativ server.

I inget skede bör klienten kontrollera någon data på servern. Till exempel bör du aldrig sätta kod på servern som gör att klienten kan bestämma sin position / hälsa baserat på data som överförs över sockeln, eftersom användaren enkelt kan förfalska meddelandet som kommer från uttaget, som visas ovan.

När jag skapade mitt första flerspelarspel skrev jag koden så att spelaren kunde avfyra när ett avfyrningsmeddelande skickades, vilket på klientsidan var förknippat med ett musklick. En skicklig spelare kan dra fördel av detta genom att infoga en JavaScript-rad som är väldigt lik den som nämns ovan för att få en nästan obegränsad eldhastighet.

Den bästa analogin jag kan ge är att klienter endast ska skicka information om sina avsikter till servern, som sedan kommer att bearbetas och användas för att ändra spelarnas tillstånd om de är giltiga.

Helst bör både klient- och serveruppdateringscykler vara socket-oberoende. Försök att hålla speluppdateringarna utanför blocket socket.on (). Annars kan du sluta med en massa konstiga ologiska handlingar på grund av att speluppdateringen är förknippad med en socketuppdatering.

Försök också undvika kod så här:

SetInterval (function () (// code ... player.x + = 5; // code ...), 1000/60);

I detta kodavsnitt är uppdateringen av x-koordinaten för spelaren relaterad till spelets bildhastighet. SetInterval () garanterar inte alltid att intervallet kommer att respekteras, skriv något så här istället:

Var lastUpdateTime = (nytt datum ()). GetTime (); setInterval (funktion () (// kod ... var currentTime = (nytt datum ()). getTime (); var timeDifference = currentTime - lastUpdateTime; player.x + = 5 * timeDifference; lastUpdateTime = currentTime;), 1000 / 60);

Det är mindre elegant, men det kommer att ge jämnare och mer konsekvent prestanda. Komplicera demoprojektet och försök se till att uppdateringen utförs enligt tiden, inte bildhastigheten. Om du inte vill sluta där, försök skapa en fysikmotor på servern som styr spelarnas rörelser.

Du kan också välja att ta bort funktionshindrade spelare från spelet. När ett uttag kopplas bort skickas ett frånkopplingsmeddelande automatiskt. Det kan skrivas så här:

Io.on ("anslutning", funktion (socket) (// händelsehanterare ... socket.on ("koppla från", funktion () (// ta bort den frånkopplade spelaren));)); ,

Relaterade publikationer