Мы только что выпустили книгу по Юнити, и нам стало интересно насколько вообще актуальна тема программирования игр. Казалось бы книг на эту тему должно быть выпущено огромное множество, но это не так.
Только что вышла книга «Multiplayer Game Programming: Architecting Networked Games (Game Design)».
Насколько актуален ее перевод на русский язык? Подробности под катом. Ждем ваши комментарии.
Сетевые многопользовательские игры — это многомиллиардный бизнес, ведь они привлекают десятки миллионов игроков. В этой насыщенной кодами и примерами из реальной жизни книге вы сможете изучить все нюансы разработки таких игр. Авторы книги, опираясь на собственный опыт разработки игр, познакомят вас с основами построения надежной многопользовательской архитектуры. Вам предстоит познакомиться с рабочими кодами двух полноценных игр: action и стратегии в реальном времени (RTS).
Авторы предлагают взглянуть на основы сетей и сетевого программирования с точки зрения разработчиков игр. А затем разобраться с управлением игрой через передачу данных, сетевыми обновлениями, а также с устройствами, подключающимися к игре. Вы узнаете, как обеспечить надежную работу, несмотря на проблемы с интернетом и сможете создавать безопасный и масштабируемый код. Не останутся без внимания и два важных вопроса: игровые сервисы и облачные технологии.
Весь контент этой книги был тщательно протестирован, так что книга пригодится как тем, кто только учится, так и опытным программистам, которые хотят переключиться на сетевые игры.
О чем можно прочитать в этой книге:
- Как сетевое окружение влияет на игры
- Интернет-протоколы и стандарты разработки игр
- Сокеты Беркли — самый популярный интерфейс для сетевых многопользовательских игр
- Эффективная передача игровых данных
- Синхронизация, ведь игроки могут жить в любой стране мира
- Сетевые топологии для игр
- Борьба с задержками и джиттерами, которые приводят к задержкам или потерям данных
- Масштабирование без ущерба для производительности
- Борьба с уязвимостями ПО и читами
- Сетевые возможности Unreal 4 и Unity
- Интеграция с игровыми сервисами (matchmaking, achievements и leaderboards)
- Запуск игровых серверов в облаке
(Исходный код всех примеров на C++ доступен по адресу: github.com/MultiplayerBook)
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.............................
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (15)
VBKesha
16.12.2015 11:01Интересно если бы оглавлении ещё и номера страниц были. Чтобы понять сколько какая глава занимает.
cynovg
16.12.2015 11:34В оригинальном издании 384 страницы, всего 13 глав, получаем в среднем меньше 30 страниц на главу. Только, что это дает?
VBKesha
16.12.2015 13:56Вот поэтому и хочется знать сколько на самом деле а не в среднем. Скажем вторая и третья глава уже были неоднократно прочитаны в других источниках, а вот 10 и 11 было бы интересно почитать. А может оказаться что 11 глава из 4 страниц. В то время как 2 и 3 допустим занимают 100. То есть хочется понять сколько какой теме уделено места.
Pinsky
16.12.2015 14:26Такое ощущение, что геймдев только из юнити и состоит
mokonaDesu
16.12.2015 15:07+1Все это потому что Unity/Unreal позволяют сделать играбельный прототип быстро и в одиночку без нужды разработки кастомного движка с нуля. Обычно, если нет какого-то готового решения, чтобы написать что-то приходится тратить сотни часов на программирование самого движка, что достаточно далеко от гейм дизайна, а Unity/Unreal обладают достаточным количеством инструментов для того, чтобы на коленке собрать какой-то концепт и проверить его на «наличие Фана».
Pinsky
17.12.2015 16:24А как же тот же Haxe с его HaxePunk, Love2D и миллион еще других решений без юньки?
KumoKairo
17.12.2015 17:04+1Не работал с Love2D (но слышал про этот движок), но знаком c Haxe, HaxePunk, HaxeFlixel, OpenFL и так далее, занимался этим какое-то время. Это весело и интересно, но с Unity всё намного проще. Меньше настройки проектов через код и «настроечные» файлы, очень простой функционал для создания рабочего прототипа, да и язык другой учить не всегда позволят те или иные причины. Я уверен, знающие и привычные к этому люди могут написать много вариантов автоматизации тех или иных процессов, но для новичков в некоторых случаях информации просто не хватает (видимо из-за менее многочисленной комьюнити и отсутствия средств на поддержку обучающих материалов)
Я бы не воспринимал факт, что «везде этот Unity как будто ничего другого нет» как что-то плохое, его никто не форсит и не проталкивает, по крайней мере не больше, чем любой другой коммерческий движок. Будь он плохим, его бы просто никто не использовал.
У меня OpenFL например ассоциируется больше с каким-то «гиковым» вариантом создания игр, это интересно и отчасти необычно, но намного проще то же самое сделать в том же Unity.
К слову, сейчас я бы с удовольствием почитал бы статьи про Cocos2Dx
KumoKairo
16.12.2015 19:48Что интересно, судя по оглавлению и примерам, эта книга не про Unity и даже не про Unreal Engine.
Severovostok
16.12.2015 14:36Скажите, пожалуйста, я не совсем понял, а в книге рассматривается разработка игр с единым авторитетный сервер?
mokonaDesu
16.12.2015 15:09+1С радостью бы прочел эту книгу и на английском. Кстати, этого варианта ответа в poll'е как раз и нету…
Mingun
17.12.2015 20:44Сокеты Беркли — самый популярный интерфейс для сетевых многопользовательских игр
Интересно, а какие еще есть варианты? Как существовавшие в прошлом, так и живущие сейчас. Вроде, прохе концепции сокета («дырки» с каналом к другой «дырке») проще быть не может, чего тут еще придумывать?
Heinhain
В случае, если решите переводить, сколько времени это обычно занимает?