Як грати по локальній мережі - докладне керівництво досвідчених гравців. Як створити мережну гру

Багато хто задається питанням, як грати по мережі в піратку, якщо ліцензійна гра, все набагато простіше, ніж здавалося б, для цього випадку придумали безліч програм, які з'єднують гравців з усього світу разом.

У цій статті ми наведемо найпоширеніші програми, які часто використовують гравці. Напевно ви часто чули як грати через Хамачі по мережі тощо. Як грати в старі ігри в мережі? Утиліти для гри по локалці та інтернету. Відеогра з комп'ютером, звичайно, цікава, але набагато цікавіше чинити опір не роботі, а реальній людині! Не виключається, що він зробить якусь помилку, не звичайний крок, чимось здивує. До того ж, майже всі досвідчені гравці грають куди цікавіше і правильніше роботів...

Але якщо з багатьма передовими мережевими відеоіграми проблем з коннектом особливих не виникає WOW, Танки, GTA та інше, то ось з відеоіграми кілька старших - у багатьох гравців з'являються проблеми. Фактично, в цьому матеріалі наведу різні види та методи, як можна пограти в ігри по локальної мережіі Інтернету з реальними людьми (навіть у ті ігри, в яких це не передбачено і немає нічого, крім режиму LAN тобто гри тільки по "локалці".

Безкоштовний VPN для вирішення саме ваших проблем, з'єднайте віддалені комп'ютери в одну віртуальну мережу. Radmin VPN - безкоштовна і проста в використанні програма для створення віртуальних індивідуальних мереж (VPN). Програма дозволяє гравцям встановлювати безпечне і надійне об'єднання між комп'ютерами через Інтернет, якби вони були об'єднані через локальну мережу. Джерело - https://сайт/

Evolve - програма до створення локальної (LAN) мережі між геймерами використовуючи інтернет об'єднання. Удосконалений подібність програми Tunngle, значно краще і має більше здібностей. Найбільша перевага, це те, що не треба нічого встановлювати, програма все зробить за вас. Evolve - програма до створення локальної (LAN) мережі між геймерами використовуючи інтернет об'єднання. Удосконалений подібність програми Tunngle, значно краще і має більше здібностей.

Додаток, що надає віртуальну локальну мережу для різних комп'ютерних відеоігор. Є можливість будувати свої кімнати або підключатися до наявних. Програма GameRanger модулює віртуальну локальну мережу для комп'ютерних відеоігор: це може бути корисно для тих, кому набридло грати на самоті. Для цього щоб взяти участь у груповій відеогрі, необхідно просто встановити у себе на комп'ютері цю програму. Спочатку вона була розрахована загалом на десять гейм програм, зараз він підтримує вже більше 600 відеоігор.

Це інструмент до створення віртуальної приватної мережі (VPN) і управління нею між деякими віддаленими комп'ютерами. Ви так само можете імітувати повністю зашифровану і захищену локальну мережу, що може бути дуже корисно для деяких відеоігор. один з найбільш відомих інструментів для створення віртуальних приватних VPN мереж. Застосовуючи цю програму, ви можете легко встановити зашифроване об'єднання через Інтернет між віддаленими комп'ютерами, імітуючи об'єднання по локальній мережі.

Поширена програма, що дозволяє грати в різні комп'ютерні ігрив командному режимі, поєднуйтесь з гравцями з в цілому світу. Програма Garena Plus - універсальний відеоігровий клієнт, що дозволяє будувати локальну мережу зверху всесвітньої мережі Інтернет. Програма використовується для запуску кооперативних відеоігор різних жанрів, дозволяючи легко і швидко знаходити конкурентів для мережевих сутичок.

Tunngle - програма-клієнт, що працює за VPN-технологією і спеціально створена для відеоігор в режимі кооперативу. Внаслідок Tunngle ви можете грати з власними товаришами по Інтернету, якби це була локальна мережа. У мережі є багато програм, створених для кооперативних відеоігор, але Tunngle вважається абсолютним фаворитом серед них, пропонуючи куди більше опцій, ніж суперники.

LanGame++ дозволяє грати в мережеві ігри людям, присутнім у різних мережах, якщо така можливість у самій відеогрі немає. LanGame++ - програма, за допомогою якої можна грати в мережеві ігри людям, присутнім в різних мережах, а аналогічно в локальних мережах в різних підмережах, якщо така можливість у самій відеогрі немає. Не вимагає з'єднання з Глобальним павутинням.

Для початку встановіть залежність. Створіть папку проекту, перейдіть до неї та запустіть наступний код:

Npm init npm install --save express socket.io

Для швидкого налаштуваннясервера доцільно використовувати фреймворк Express, а для обробки веб-сокетів на сервері – пакет socket.io. У файл server.js помістіть наступний код:

// Залежно var express = require("express"); var http = require ("http"); var path = require ("path"); 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")); // Маршрути app.get("/", function(request, response) (response.sendFile(path.join(__dirname, "index.html")); )); // Запуск сервера server.listen(5000, function() ( console.log("Запускаю сервер на порті 5000"); ));

Це досить типовий код для сервера на зв'язці Node.js+Express. Він встановлює залежності та основні маршрути сервера. Для цієї демонстраційної програми використовується лише один файл index.html та папка static. Створіть їх у кореневій папці проекту. Файл index.html досить простий:

Наша розрахована на багато користувачів гра canvas ( width: 800px; height: 600px; border: 5px solid black; )

Ваш інтерфейс користувача може містити куди більше елементів, тому для більших проектів CSS-стилі краще поміщати в окремий файл. Для простоти я залишу CSS у коді HTML. Зверніть увагу, що я включив код скрипт socket.io.js . Він автоматично запрацює в рамках пакету socket.io під час запуску сервера.

Тепер потрібно настроїти веб-сокети на сервері. Наприкінці файлу server.js додайте:

// Обробник веб-сокетів io.on("connection", function(socket) ());

Поки що у грі немає жодних функцій, тому в обробник веб-сокетів нічого не потрібно додавати. Для тестування допишіть наступні рядки до кінця файлу server.js:

SetInterval(function() ( io.sockets.emit("message", "hi!"); ), 1000);

Ця функція надсилатиме повідомлення з ім'ям message та вмістом hi всім підключеним веб-сокетам. Згодом не забудьте видалити цю частину коду, оскільки вона призначена тільки для тестування.

У папці static створіть файл з ім'ям game.js. Ви можете написати коротку функцію для реєстрації повідомлень від сервера, щоб переконатися, що ви їх отримуєте. У файлі static/game.js напишіть таке:

Var socket = io(); socket.on("message", function(data) ( console.log(data); ));

Запустіть сервер командою node server.js і в будь-якому браузері перейдіть за посиланням http://localhost:5000. Якщо ви відкриєте вікно розробника (натиснути праву кнопкумиші → Перевірити (Inspect), то побачите, як кожну секунду надходить нове повідомлення:

Як правило, socket.emit(name, data) відправляє повідомлення із заданим ім'ям та даними серверу, якщо запит йде від клієнта, і навпаки, якщо запит йде від сервера. Для отримання повідомлень щодо конкретного імені використовується така команда:

Socket.on("name", function(data) ( // аргумент data може містити будь-які дані, що відправляються ));

За допомогою socket.emit() ви можете надіслати будь-яке повідомлення. Також можна передавати об'єкти JSON, що для нас дуже зручно. Це дозволяє миттєво передавати інформацію в грі від сервера до клієнта і назад, що є основою розрахованої на багато користувачів гри.

Тепер нехай клієнт надсилає деякі стани клавіатури. Помістіть наступний код у кінець файлу static/game.js:

Var movement = (up: false, down: false, left: false, right: false ) document.addEventListener("keydown", function(event) ( switch (event.keyCode) ( case 65: // A movement.left = true; break; case 87: // W movement.up = true; break; case 68: // D movement.right = true; break; case 83: // S movement.down = true; break; ))); document.addEventListener("keyup", function(event) ( switch (event.keyCode) ( case 65: // A movement.left = false; break; case 87: // W movement.up = false; break; case 68 // D movement.right = false; break; case 83: // S movement.down = false; break; )));

Це стандартний код, який дозволяє відстежувати натискання клавіш W, A, S, D. Після цього додайте повідомлення, яке сповіщає сервер про те, що в грі з'явився новий учасник, і створіть цикл, який повідомлятиме сервер про натискання клавіш.

Socket.emit("new player"); setInterval(function() ( socket.emit("movement", movement); ), 1000 / 60);

Ця частина коду дозволить надсилати на сервер інформацію про стан клавіатури клієнта 60 разів на секунду. Тепер потрібно прописати цю ситуацію з боку сервера. Наприкінці файлу server.js додайте такі рядки:

Var players = (); io.on("connection", function(socket) ( socket.on("new player", function() ( players = ( x: 300, y: 300 ); ))); socket.on("movement", function (data) ( var player = players || (); 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(function() ( io.sockets.emit("state", players); ), 1000 / 60);

Давайте розберемося з цим кодом. Ви зберігатимете інформацію про всіх підключених користувачів у вигляді об'єктів JSON. Так як у кожного підключеного до сервера сокета є унікальний id, клавіша буде id сокета підключеного гравця. Значення буде іншим об'єктом JSON, що містить координати x і y .

Коли сервер отримає повідомлення про те, що приєднався новий гравець, він додасть новий вхід в об'єкт гравців за допомогою id-сокету, який буде в цьому повідомленні. Коли сервер отримає повідомлення про рух, оновить інформацію про гравця, який пов'язаний з цим сокетом, якщо він існує.

io.sockets.emit() - це запит, який надсилатиме повідомлення та дані ВСІМ підключеним сокетам. Сервер надсилатиме цей стан усім підключеним клієнтам 60 разів на секунду.

На даному етапі клієнт ще нічого не робить з цією інформацією, тому додайте з боку клієнта обробник, який відображатиме дані від сервера Canvas .

Var canvas = document.getElementById("canvas"); canvas.width = 800; canvas.height = 600; var context = canvas.getContext("2d"); socket.on("state", function(players) ( context.clearRect(0, 0, 800, 600); context.fillStyle = "green"; for (var id in players) ( var player = players; context.beginPath (); context.arc(player.x, player.y, 10, 0, 2 * Math.PI); context.fill(); ) ));

Цей код звертається до id Canvas (#canvas) та малює там. Щоразу, коли від сервера надходитиме повідомлення про стан, дані в Canvas будуть обнулятися, і на ньому у вигляді зелених гуртків будуть знову відображатися всі гравці.

Тепер кожен новий гравець зможе бачити стан усіх підключених гравців на Canvas. Запустіть сервер командою node server.js та відкрийте у браузері два вікна. При переході за посиланням http://localhost:5000 ви повинні будете побачити щось схоже:

От і все! Якщо у вас виникли проблеми, перегляньте архів з вихідним кодом .

Деякі тонкощі

Коли розроблятимете більш функціональну гру, доцільно розділити код на кілька файлів.

Такі розраховані на багато користувачів ігри - відмінний приклад архітектури MVC (модель-подання-контролер). Вся логічна частина повинна оброблятися на сервері, а все, що повинен робити клієнт - це відправляти вхідні дані користувача на сервер і відображати інформацію, яку отримує від сервера.

Однак у цьому демо-проекті є кілька недоліків. Оновлення гри пов'язане зі слухачем сокету. Якби я хотів вплинути на хід гри, то міг би написати в консолі браузера таке:

While (true) ( ​​socket.emit("movement", ( left: true )); )

Тепер дані про рух відправлятимуться на сервер в залежності від характеристик комп'ютера понад 60 разів на секунду. Це призведе до того, що гравець пересуватиметься неймовірно швидко. Тож ми переходимо до концепції визначення повноважного сервера.

На якомусь етапі клієнт не повинен контролювати будь-які дані на сервері. Наприклад, ніколи не потрібно розміщувати на сервері код, який дозволить клієнту визначати своє положення/здоров'я на основі даних, що передаються через сокет, тому що користувач зможе легко підробити повідомлення, що виходить із сокету, як показано вище.

Коли я створював свою першу розраховану на багато користувачів гру, я написав код так, що гравець міг стріляти тоді, коли відправлялося повідомлення про стрілянину, яке з боку клієнта було пов'язане з натисканням кнопки миші. Умілий гравець міг скористатися цим, вставивши рядок на JavaScript, дуже схожу на ту, що згадувалася вище, щоб отримати майже необмежену швидкість стрільби.

Найкраща аналогія, яку я можу навести, полягає в тому, що клієнти повинні надсилати на сервер лише інформацію про свої наміри, які потім будуть оброблятися та використовуватися для зміни стану гравців, якщо вони валідні.

В ідеалі цикли оновлень як у клієнта, так і на сервері не повинні залежати від сокетів. Спробуйте зробити так, щоб оновлення гри знаходилися поза блоком socket.on() . В іншому випадку ви можете отримати багато дивних нелогічних дій через те, що оновлення гри буде пов'язане з оновленням сокету.

Крім того, намагайтеся уникати такого коду:

SetInterval(function() ( // код ... player.x += 5; // код ... ), 1000 / 60);

У цьому відрізку коду оновлення координати х для гравця пов'язане із частотою зміни кадрів у грі. SetInterval() не завжди гарантує дотримання інтервалу, натомість напишіть щось подібне:

Var lastUpdateTime = (new Date()).getTime(); setInterval(function() ( // код... var currentTime = (new Date()).getTime(); var timeDifference = currentTime - lastUpdateTime; player.x += 5 * timeDifference; lastUpdateTime = currentTime; ), 1000 / 60);

Це не так витончено, зате забезпечить більш плавну та послідовну роботу. Ускладніть демо-проект і спробуйте зробити так, щоб оновлення здійснювалося згідно з часом, а не частотою зміни кадрів. Якщо не захочете на цьому зупинятися, спробуйте створити на сервері фізичний двигун, який керуватиме рухами гравців.

Також можна зробити так, щоб із гри видалялися відключені гравці. Коли сокет вимикається, автоматично надсилається повідомлення про роз'єднання. Це можна прописати так:

Io.on("connection", function(socket) ( // обробник подій... socket.on("disconnect", function() ( // видаляємо гравця, що відключився)); )); ,

Якщо ви хочете грати на два ПК, не використовуючи інтернет, моментально передавати файли з різних пристроїв без USB-носіїв, то вам потрібно знати, як створити локальну мережу між двома комп'ютерами. Ця технологія поєднання двох ПК застосовується досить давно, навіть сьогодні не втратила своєї актуальності.

Приклад локальної мережі

Локальною мережею називають групу зв'язаних між собою пристроїв: ПК, телевізорів, принтерів, розташованих зазвичай не далі одного приміщення. Пристрої використовують спільну пам'ять, сервери, таким чином взаємодоповнюють один одного. Такий зв'язок дозволяє створювати ігрову зону для декількох ПК, безперешкодно і досить швидко переносити будь-які дані, друкувати документи, якщо встановлений один спільний принтер, і робити багато чого ще. Об'єднання пристроїв сьогодні частіше відбувається за допомогою роутера, але можуть використовуватися інші підключення, про які ви зможете прочитати нижче.

Створюємо з'єднання

Створити підключення досить легко, а також різними способами: через роутер або кабель. Налаштування пристроїв обох способів досить схоже. Відмінність полягає головним чином методу підключення: через кабель чи через Wi-Fi .

Зв'язок через Wi-Fi, яким користуються сьогодні набагато частіше, може бути набагато зручнішим, зате з'єднати два ПК кабелем буде коштувати дешевше, якщо ви ще не встановили роутер з якихось причин.

З'єднання через кабель

Самий старий виглядзв'язку двох машин. Для нього потрібно лише підключити мережний кабель RJ45. Кабель обов'язково повинен бути перехресним, хоча для сучасних комп'ютерівчасто можуть підійти звичайні кабелі. Все ж таки при покупці краще уточнити тип кабелю у продавця. При складанні кінців перехресного кабелю кольори кінчиків проводів відрізнятимуться - це його відмінність. Також для з'єднання потрібні мережні картки на обох пристроях, але сьогодні вони вже встановлені. Варто лише зауважити, що якщо мережева карта вже зайнята підключенням до інтернету, то використовувати її не вдасться.

Таке підключення використовувалося раніше для того, щоб грати. Але комусь може бути зручно сьогодні, особливо якщо у вас досі стоїть операційна система Windows XP, яка важко підтримує бездротові підключення.

Після підключення самого кабелю необхідно знати, як налаштувати локальну мережу між двома комп'ютерами:

  • Панель управління вибираємо пункт, що стосується мережевих з'єднань.
  • Вибираємо там створене нами, клацаємо по ньому ПКМ, вибираємо «Властивості»
  • Далі в залежності від «Вінди»: для Windows XP вибираємо Протокол Інтернету (TCP/IP), для Windows 7/8/10 – Протокол Інтернету версії 4.

  • Вручну вводимо IP-адресу: 192.168.ххх.ххх. Останні шість цифр можна ввести самостійно, головне, щоб різні пристрої вони не повторювалися.

  • На Windows 7 також треба буде зайти до Центру управління мережами, там через пункт "Налаштування" вибрати "Приватна" для нашої мережі.
  • Потім в Центрі керування включити спільний доступ до файлів, мережеве виявлення, а також вимкнути захист доступу паролем.

Після цього потрібно також налаштувати спільний доступ. Це робиться для того, щоб ПК могли обмінюватись будь-якими файлами. Методи різняться різних ОС. На WindowsXP:

  • Розділ Мережні підключення, заходимо до «Сервісу», вибираємо «Властивості папки».
  • Вкладка «Вид», ставимо галочку навпроти «Використовувати простий доступ до файлів».
  • Далі заходимо у вікно «Властивості системи»: ПКМ «Мій комп'ютер» - вибираємо Ім'я комп'ютера.
  • Клацаємо «Змінити», вибираємо «Є членом» - робочої групи. Вигадуємо спільне ім'я групи для обох ПК.
  • Мій комп'ютер, клацаємо ПКМ по жорстких дисках (наприклад, Windows (C:)), у вкладці «Доступ» клацаємо за посиланням, ставимо роздільну здатність загального доступу.
  • Все, доступ до файлів вибраних дисків повністю відкритий. З Windows 7/8/10 чинимо так:

    • Панель керування, потім "Параметри папок".
    • Ставимо галочку "Використовувати майстер загального доступу".
    • Наступні дії будуть такими ж, як для XP.

    З'єднання через роутер

    Це найбільш зручний спосіб, тому що він дозволяє підключити не лише два, а більша кількістькомп'ютерів або інших пристроїв, які підтримують Wi-Fi. Грати таким з'єднанням можна без довгих налаштувань.

    IP-адреси при такому підключенні виставляються автоматично. Для використання спільних файлів необхідно буде лише надати спільний доступ до файлів, а потім додати два комп'ютери в одну робочу групу, як було описано вище.

    Тепер, щоб передавати файли, потрібно просто ввести за допомогою адресного рядка ім'я комп'ютера: \\ім'я\. Робити це можна також через розділ Мережні підключення. Варто також убезпечити особисті або особливо важливі файли, щоб ніхто не міг отримати з сусіднього комп'ютера доступ до них. Для цього найкраще вказувати диски, які не містять важливої ​​вам інформації. Наприклад, диск, де містяться дані облікових записівкористувачів, краще не робити відкритим для всіх, або ж, використовуючи меню налаштувань файлів та папок, обмежити до них доступ: ПКМ по потрібній папці, після чого вибираємо там налаштування загального доступу.

    Гра по локальній мережі

    Отже нам вдалося підключити два пристрої до однієї мережі без інтернету, дозволити їм обмінюватися файлами. Як почати грати по локальній мережі?

    Для цього, як правило, жодних додаткових налаштувань робити не потрібно. Ми лише включаємо гру і, якщо можна грати по локальному з'єднанню, вибираємо відповідний пункт, а потім граємо вже створеним нами.

    Для різних ігорпідключення до спільного сервера може бути різним. Десь необхідно ввести IP або ім'я ПК. Для Minecraft, Counter StrikeНаприклад, потрібно буде створити сервер. Але зазвичай все робиться досить просто.

    Hamachi

    Таке трапляється досить рідко, але часом якась гра не дозволяє грати через інтернет, зате дозволяє по локальній мережі. Не варто впадати у відчай, навіть якщо вийшло, що ваш друг живе далеко від вас.

    Програма Hamachi дозволяє емулювати локальне з'єднання і таким чином підключити до нього ПК через інтернет. Для цього необхідно лише завантажити програму, зареєструватися, а потім створити нове з'єднання, придумати йому ім'я та, якщо потрібно, пароль. Після цього ви можете легко використовувати цю мережу для гри.

    Як бачите, об'єднання комп'ютерів у локальну мережу – досить легкий процес. Він не займе у вас багато часу, і ви зможете з'єднати два ПК, після чого грати з друзями, перебуваючи як далеко від них, так і в одному приміщенні з ними.

    Способи створення з'єднання підійдуть для всіх Windows, починаючи з XP, закінчуючи "Десяткою".

    Гарний часПроведення за допомогою гри на комп'ютері стало для великої кількості людей нормою. Пам'ятаєте, як проходячи одну гру за іншою, вам усе більше хотілося чогось нового? Чогось по-справжньому захоплюючого та емоційного. На жаль, так склалося, що багато ігор, які виходять на даний момент не мають видатного сюжету, атмосфери та інших атрибутів якісного продукту. Однак головне, чого комп'ютерні ігри ніколи не досягнуть досконало – це Штучний інтелектякий своєю поведінкою ідеально копіює поведінку людини. Думаю, всім зрозуміло чому це завдання нездійсненне – кожна людина унікальна, і передбачити її дії у грі неможливо.
    Але навіщо ламати голову над цією проблемою, якщо можна просто взяти та запросити свого друга за мережеву баталію? Адже зараз, у добу високих технологій, зробити це просто, як ніколи. Давайте розглянемо, як грати по локальній мережі в комп'ютерні ігри.

    Шахи