Содружество Независимых Программистов

Объявление

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Содружество Независимых Программистов » Статьи на [около]программистскую тематику » Материалы по сокетам для программирования игровых серверов


Материалы по сокетам для программирования игровых серверов

Сообщений 1 страница 6 из 6

1

Учиться программировать и тренироваться, чтобы не забывать, а развивать навыки через написание простых игрушек - это интересно и полезно, а учиться писать сетевые игры - это ещё более интересно. Можно развивать одновременно большое количество навыков: программирование графики, математику, базы данных, клиент-серверное программирование и т.д.

Выкладываем здесь, всё что касается программирование игровых серверов.

Содержание:

- Multiplayer game Node.js

- Real Time Multiplayer in HTML5

- Source Multiplayer Networking

- Многопользовательские игры. Разработка сетевых приложений

Отредактировано 8Observer8 (Вт, 10 Дек 2019 17:38)

+1

2

Multiplayer game Node.js

Из того, что я находил в сети, эти уроки я бы рекомендовал для начинающих. Я считаю, что только первые 4 урока полезны. Остальные уроки путают. Нельзя пересылать нажатия клавиш напрямую без учёта сетевых задержек. Но первые 4 урока дадут быстры старт для начала программирования игр, которые не требуют учитывать сетевые задержки: крестики-нолики, морской бой, карточные игры (например, игра "Дурак"). Рекомендую сразу после первого соединения и отправки первого сообщения через сокет развернуть свой первый простейший сервер на бесплатном хостинге Heroku. Потому что локально не так интересно и на реальном хостинге вы можете тестировать сервер со своими друзьями, публиковать на форуме для тестирования и предложений. Наберите в интернет поисковике: heroku node.js и первая ссылка будет на эту пошаговую инструкцию: Getting Started on Heroku with Node.js. После создания нового приложения на Heroku можете перейти на вкладку Deploy и нажать кнопку "Connect to GitHub". Вам предложат ввести имя репозитория на GitHub и поставить галочку для автоматического Deploy, тогда прим "push" Heroku будет забирать изменения кода с GitHub и переразвёртывать приложение. Можно оставить Manual Deploy по кнопке, а можно как в Getting Started on Heroku with Node.js развёртывать со своего компьютера через CLI Heroku. Мне больше нравится автоматического развёртывание с GitHub. На Heroku есть бесплатные базы данных: MySQL, MongoDB и т.д.

Отредактировано 8Observer8 (Вт, 10 Дек 2019 03:53)

0

3

Real Time Multiplayer in HTML5

Потренировавшись с играми не требующими учитывать сетевые задержки можно перейти к тем, которые требуют. Лучший пример, который я нашёл из этой статьи: Real Time Multiplayer in HTML5. Исходники примера можно скачать с GitHub. Я развернул пример на Heroku: запустите по клику. Так как хостинг бесплатный, то если приложением никто не пользовался 30 минут, то оно засыпает. Если оно заснуло, то нужно будет подождать пробуждения примерно 10 секунд. Запустите в двух браузерах и оцените плавность перемещений. Отключите на GUI методы компенсации задержек (вкладка "Methods"): "client_smoothing" (интерполяция позиций других клиентов на вашей стороне) и "client_predict" (предсказание движения клиента без ожидания его реальзной позиции с авторитарного сервера).

Отредактировано 8Observer8 (Вт, 10 Дек 2019 03:54)

0

4

Source Multiplayer Networking

В этой статье объясняется, как работает игровой сервер движка Source от Valve Software. На этом движке сделаны игры: Counter Strike, Half-Life и Left 4 Dead. На данной статье базируется статья Real Time Multiplayer in HTML5, в которой есть отсылка на статью данную статью о Source. Слева вверху сайта данной статьи можно переключить язык на русский, но я думаю, лучше всегда читать на английском, если есть возможность, а то вдруг опять обманут, как это было ни раз, потому что часто переводят плохо. Лучше всегда быть в курсе английской терминологии. В самом низу статьи есть раздел "See also", где есть ссылки на связанные темы. Я пока только проглядел и сильно не вчитывался, но вникать постепенно придётся. Неприступная крепость не берётся сразу. Мозг должен привыкнуть к новой реальности сетевого программирования.

Отредактировано 8Observer8 (Вт, 10 Дек 2019 03:51)

0

5

Я забыл вставить ссылку на статью: Source Multiplayer Networking

Отредактировано 8Observer8 (Вт, 10 Дек 2019 03:54)

0

6

Перевод: Многопользовательские игры. Разработка сетевых приложений
Оригинал: Multiplayer Game Programming: Architecting Networked Games
Исходники примеров: https://github.com/MultiplayerBook/MultiplayerBook

Смотрел перевод, он вроде хороший. Но я читаю оригинал. Я пока только некоторые места данной книги посмотрел обзорно. На протяжении книги создаётся игра по локальной сети, где, как я понял, играешь за робота-кота, который что-то ловит. Цель поймать больше и набрать больше очков, чем соперники. Происходит действие игры в одном игровом мире, где каждый за себя и пытаешься выжить в конкурентной борьбе. Чёткого описания игрового процесса я не нашёл. Может я что-то не правильно понял. То что я точно понял, что для клиента и сервера используется C++. Для 2D графики используется библиотека SDL. Для сервера используется чистый Winsock (https://ru.wikipedia.org/wiki/Winsock). Я использую для сервера и клиента C#. Клиента пишу OpenGL 3.0 и OpenTK. С помощью OpenTK можно создать окно из консольного приложения. Можно встроить OpenTK.GLControl в WPF и WinForms. Устанавливаются OpenTK и OpenTK.GLControl очень просто и очень быстро, через NuGet. Не нужно долго настраивать SDL2. В Xamarin встроена OpenTK, то есть можно написать на C# клиента для Android и iOS. В целом, я считаю, что C# вполне подходит для написания игровых серверов. Я много находил информации, что если есть небольшие отличия в скорости C# и C++, то эти отличия сходят на нет, потому что это пренебрежимо мало с сетевыми задержками, которые неизбежны даже при самой лучшей скорости соединения. Я за то, чтобы переписывать примеры книги на C#. C# намного более дружелюбный, мне он больше нравится. Тем более всегда есть возможность перейти на Unity, который является самым популярным движком. Можно использовать Unity, как клиент для C# TCP-сервера.

Отредактировано 8Observer8 (Вт, 10 Дек 2019 18:18)

0


Вы здесь » Содружество Независимых Программистов » Статьи на [около]программистскую тематику » Материалы по сокетам для программирования игровых серверов