Добрый день, Хабр!

Мы только что выпустили книгу по Юнити, и нам стало интересно насколько вообще актуальна тема программирования игр. Казалось бы книг на эту тему должно быть выпущено огромное множество, но это не так.

Только что вышла книга «Multiplayer Game Programming: Architecting Networked Games (Game Design)».

image

Насколько актуален ее перевод на русский язык? Подробности под катом. Ждем ваши комментарии.

Сетевые многопользовательские игры — это многомиллиардный бизнес, ведь они привлекают десятки миллионов игроков. В этой насыщенной кодами и примерами из реальной жизни книге вы сможете изучить все нюансы разработки таких игр. Авторы книги, опираясь на собственный опыт разработки игр, познакомят вас с основами построения надежной многопользовательской архитектуры. Вам предстоит познакомиться с рабочими кодами двух полноценных игр: action и стратегии в реальном времени (RTS).

Авторы предлагают взглянуть на основы сетей и сетевого программирования с точки зрения разработчиков игр. А затем разобраться с управлением игрой через передачу данных, сетевыми обновлениями, а также с устройствами, подключающимися к игре. Вы узнаете, как обеспечить надежную работу, несмотря на проблемы с интернетом и сможете создавать безопасный и масштабируемый код. Не останутся без внимания и два важных вопроса: игровые сервисы и облачные технологии.

Весь контент этой книги был тщательно протестирован, так что книга пригодится как тем, кто только учится, так и опытным программистам, которые хотят переключиться на сетевые игры.

О чем можно прочитать в этой книге:

  • Как сетевое окружение влияет на игры
  • Интернет-протоколы и стандарты разработки игр
  • Сокеты Беркли — самый популярный интерфейс для сетевых многопользовательских игр
  • Эффективная передача игровых данных
  • Синхронизация, ведь игроки могут жить в любой стране мира
  • Сетевые топологии для игр
  • Борьба с задержками и джиттерами, которые приводят к задержкам или потерям данных
  • Масштабирование без ущерба для производительности
  • Борьба с уязвимостями ПО и читами
  • Сетевые возможности Unreal 4 и Unity
  • Интеграция с игровыми сервисами (matchmaking, achievements и leaderboards)
  • Запуск игровых серверов в облаке

(Исходный код всех примеров на C++ доступен по адресу: github.com/MultiplayerBook)

Содержание
1 Overview of Networked Games........
A Brief History of Multiplayer Games....
Starsiege: Tribes......................
Age of Empires.......................
Summary............................
2 The Internet....................... .
Origins: Packet Switching...............
The TCP/IP Layer Cake................
The Physical Layer....................
The Link Layer.......................
The Network Layer....................
The Transport Layer...................
The Application Layer.................
NAT................................
Summary............................
3 Berkeley Sockets................... .
Creating Sockets......................
API Operating System Differences.......
Socket Address.......................
UDP Sockets.........................
TCP Sockets.........................
Blocking and Non-Blocking I/O..........
Additional Socket Options..............
Summary............................
4 Object Serialization................. .
The Need for Serialization..............
Streams.............................
Referenced Data......................
Compression.........................
Maintainability.......................
Summary............................
5 Object Replication.................. .
The State of the World.................
Replicating an Object..................
Naive World State Replication...........
Changes in World State................
RPCs as Serialized Objects..............
Custom Solutions.....................
Summary............................
6 Network Topologies and Sample Games.
Network Topologies...................
Implementing Client-Server.............
Implementing Peer-to-Peer..............
Summary............................
Review Questions.....................
Additional Reading....................
7 Latency, Jitter, and Reliability......... .
Latency.............................
Jitter...............................
Packet Loss..........................
Reliability: TCP or UDP?...............
Packet Delivery Notification............
Object Replication Reliability...........
Simulating Real-World Conditions.......
Additional Readings...................
8 Improved Latency Handling...........
The Dumb Terminal Client..............
Client Side Interpolation................
Client Side Prediction..................
Server Side Rewind....................
Summary............................
9 Scalability.........................
Object Scope and Relevancy............
Server Partitioning....................
Instancing...........................
Prioritization and Frequency............
Summary............................
10 Security..........................
Packet Sniffing.......................
Input Validation......................
Software Cheat Detection...............
Securing the Server....................
Summary............................
11 Real-World Engines................
Unreal Engine 4......................
Unity...............................
Summary............................
12 Gamer Services....................
Choosing a Gamer Service..............
Basic Setup..........................
Lobbies and Matchmaking..............
Networking..........................
Player Statistics.......................
Player Achievements..................
Leaderboards........................
Other Services........................
Summary............................
13 Cloud Hosting Dedicated Servers..... .
To Host or Not To Host................
Tools of the Trade.....................
Overview and Terminology.............
Local Server Process Manager...........
Virtual Machine Manager...............
Summary............................
Appendix A A Modern C++ Primer...... .
C++11..............................
References..........................
Templates...........................
Smart Pointers........................
STL Containers.......................
Iterators.............................
Книга по многопользовательским играм

Проголосовало 446 человек. Воздержалось 68 человек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Комментарии (15)


  1. Heinhain
    16.12.2015 10:51
    +1

    В случае, если решите переводить, сколько времени это обычно занимает?


  1. ph_piter
    16.12.2015 11:01
    +4

    Я правильно понимаю что вопрос скорее о том сколько времени проходит от начала перевода до появления книги в продаже? Примерно 3 месяца из которых около месяца книга находится в типографии.


    1. Heinhain
      16.12.2015 11:06

      Вообще верно, спасибо


  1. VBKesha
    16.12.2015 11:01

    Интересно если бы оглавлении ещё и номера страниц были. Чтобы понять сколько какая глава занимает.


    1. cynovg
      16.12.2015 11:34

      В оригинальном издании 384 страницы, всего 13 глав, получаем в среднем меньше 30 страниц на главу. Только, что это дает?


      1. VBKesha
        16.12.2015 13:56

        Вот поэтому и хочется знать сколько на самом деле а не в среднем. Скажем вторая и третья глава уже были неоднократно прочитаны в других источниках, а вот 10 и 11 было бы интересно почитать. А может оказаться что 11 глава из 4 страниц. В то время как 2 и 3 допустим занимают 100. То есть хочется понять сколько какой теме уделено места.


  1. Pinsky
    16.12.2015 14:26

    Такое ощущение, что геймдев только из юнити и состоит


    1. mokonaDesu
      16.12.2015 15:07
      +1

      Все это потому что Unity/Unreal позволяют сделать играбельный прототип быстро и в одиночку без нужды разработки кастомного движка с нуля. Обычно, если нет какого-то готового решения, чтобы написать что-то приходится тратить сотни часов на программирование самого движка, что достаточно далеко от гейм дизайна, а Unity/Unreal обладают достаточным количеством инструментов для того, чтобы на коленке собрать какой-то концепт и проверить его на «наличие Фана».


      1. Pinsky
        17.12.2015 16:24

        А как же тот же Haxe с его HaxePunk, Love2D и миллион еще других решений без юньки?


        1. KumoKairo
          17.12.2015 17:04
          +1

          Не работал с Love2D (но слышал про этот движок), но знаком c Haxe, HaxePunk, HaxeFlixel, OpenFL и так далее, занимался этим какое-то время. Это весело и интересно, но с Unity всё намного проще. Меньше настройки проектов через код и «настроечные» файлы, очень простой функционал для создания рабочего прототипа, да и язык другой учить не всегда позволят те или иные причины. Я уверен, знающие и привычные к этому люди могут написать много вариантов автоматизации тех или иных процессов, но для новичков в некоторых случаях информации просто не хватает (видимо из-за менее многочисленной комьюнити и отсутствия средств на поддержку обучающих материалов)

          Я бы не воспринимал факт, что «везде этот Unity как будто ничего другого нет» как что-то плохое, его никто не форсит и не проталкивает, по крайней мере не больше, чем любой другой коммерческий движок. Будь он плохим, его бы просто никто не использовал.

          У меня OpenFL например ассоциируется больше с каким-то «гиковым» вариантом создания игр, это интересно и отчасти необычно, но намного проще то же самое сделать в том же Unity.

          К слову, сейчас я бы с удовольствием почитал бы статьи про Cocos2Dx


    1. KumoKairo
      16.12.2015 19:48

      Что интересно, судя по оглавлению и примерам, эта книга не про Unity и даже не про Unreal Engine.


  1. Severovostok
    16.12.2015 14:36

    Скажите, пожалуйста, я не совсем понял, а в книге рассматривается разработка игр с единым авторитетный сервер?


  1. mokonaDesu
    16.12.2015 15:09
    +1

    С радостью бы прочел эту книгу и на английском. Кстати, этого варианта ответа в poll'е как раз и нету…


  1. aleks_raiden
    17.12.2015 10:31

    Очень нужна, с радостью куплю и почитаю


  1. Mingun
    17.12.2015 20:44

    Сокеты Беркли — самый популярный интерфейс для сетевых многопользовательских игр

    Интересно, а какие еще есть варианты? Как существовавшие в прошлом, так и живущие сейчас. Вроде, прохе концепции сокета («дырки» с каналом к другой «дырке») проще быть не может, чего тут еще придумывать?