Книга «Багатокористувацькі ігри. Розробка мережевих додатків»

image Привіт, Хаброжители! Раніше ми Вас запитували перекладати книгу «Multiplayer Game Programming: Architecting Networked Games (Game Design)». Нещодавно новинка прийшла з друкарні.

У цій книзі докладно розглядаються всі основні поняття, необхідні для створення мережевих багатокористувацьких ігор. Спочатку ми познайомимося з основами мережевих взаємодій: як працює Інтернет, і як виконується пересилання даних на інші комп'ютери. Далі, після закладки фундаменту, будуть розглянуті основи передачі даних в іграх, як готувати ігрові дані до передачі по мережі, як змінювати вміст ігрових об'єктів по мережі і як організувати взаємодію комп'ютерів, залучених в гру. Потім ми поговоримо про те, як компенсувати ненадійність з'єднання і затримки при передачі даних по мережі і як забезпечити масштабованість і безпека ігрового коду. В главах 12 та 13 розглядаються служби об'єднання гравців для виділених серверів і використання хмарного хостингу — дві теми, надзвичайно важливі для сучасних мережевих ігор.

На сторінках цієї книги ми спробували поєднати теорію c практикою: у більшості розділів не тільки обговорюються важливі поняття, але й наводяться приклади програмного коду, необхідного для повноцінної роботи мережевої гри. На сайті книги ви знайдете повні вихідні коди двох ігор. Одна з них — сюжетна гра (action game), а інша — стратегія в реальному часі (Real-Time Strategy, RTS). Щоб допомогти читачеві в освоєнні розглянутих тут тим, що на протязі всієї книги ми будемо вивчати численні версії цих двох ігор.

Більша частина книги заснована на програмі навчання, розробленої для вивчення курсу програмування багатокористувацьких ігор в Університеті Південної Каліфорнії. Вона, в свою чергу, спирається на прекрасно зарекомендувала себе методику навчання розробці багатокористувацьких ігор. Однак цю книгу не слід розглядати тільки як навчальний посібник — вона стане в нагоді будь-розробникам, які хочуть дізнатися, як створювати мережеві ігри.

Кому адресована ця книга
Незважаючи на те що в програмі розглядаються деякі аспекти сучасної мови C++, використовуваного в книзі, передбачається, що читач добре знайомий з цією мовою програмування. Крім того, передбачається, що читач вже володіє базовими знаннями про стандартних структурах даних, зазвичай розглядаються в курсі CS2. Для тих, хто не знайомий з C++ або бажає освіжити в пам'яті відомості про структури даних, ми рекомендуємо відмінну книгу Еріка Робертса (Eric Roberts) «Programming Abstractions in C++».

Також передбачається, що читач має уявлення про технології програмування однокористувацьких ігор. В ідеалі бажано, щоб він мав уявлення про ігрові циклах, прийоми моделювання ігрових об'єктів, векторної математики та основи ігрової фізики. Якщо ви не знайомі з цими речами, вам слід спочатку прочитати якусь книгу про програмуванні ігор, наприклад «Game Programming Algorithms and Techniques» Санджая Мадхава.

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

Чому C++?
Переважна більшість прикладів програмного коду в цій книзі написано на мові C++, тому що він фактично залишається основною мовою програмування, що використовується в ігровій індустрії і програмістами, розробляють ігрові движки (game engine). Деякі пакети дозволяють написати більшу частину гри на інших мовах, наприклад Unity — на C#, тим не менш, важливо пам'ятати, що левова частка низькорівневого коду в таких движках все ще написана на C++. Оскільки головною темою книги є розробка мережевих багатокористувацьких ігор, що називається, «з нуля», безумовно, має сенс розглядати цю тему з використанням мови, на якому написані ігрові движки. Але навіть якщо весь мережевий код для своїх ігор ви будете писати на якомусь іншому мові, основні принципи залишаться практично тими ж. І все ж таки дуже бажано, щоб ви були знайомі з C++, інакше приклади коду будуть вам незрозумілі.

Чому JavaScript?
З'явився на світ як наспіх зроблений мова сценаріїв для підтримки браузера Netscape, JavaScript еволюціонував до стандартизованого, повноцінного і до деякої міри функціональної мови. Його популярність як мови клієнтських сценаріїв допомогла йому перебратися на сторону сервера, де його процедури, що мають форму об'єктів, простий синтаксис замикань і динамічна типізація досить ефективно прискорюють розробку служб, керованих подіями. Програмний код на цьому мовою важче піддається рефакторінгу і має гіршу продуктивність, ніж код на C++, що робить його не найкращим вибором для розробки клієнтської частини ігор. Але ці якості не є проблемою для серверної частини, коли для вертикального масштабування служби іноді достатньо лише пересунути повзунок вправо. Приклади серверних служб у главі 13 написані на JavaScript, і для їх розуміння потрібно досить близьке знайомство з цією мовою. На момент написання книги JavaScript був, за оцінками GitHub, найбільш активно використовуваним мовою. Його частка становила 50 % всіх проектів. Слідування за тенденціями заради тенденцій рідко призводить до гарних результатів, але вміння програмувати на найпопулярнішому в світі мовою дає певні вигоди.

Веб-сайт книги
Для цієї книги створений допоміжний веб-сайт, на ньому ви знайдете посилання на приклади коду з книги. Крім того, там містяться список помилок і друкарських помилок, посилання на слайди PowerPoint і план курсу навчання в університеті.

Про авторів
Джошуа Глейзер (Joshua Glazer) — співзасновник і технічний директор Naked Sky Entertainment, незалежної студії, яка займається розробкою ігор для приставок і персональних комп'ютерів, таких як «RoboBlitz», «MicroBot», «Twister Mania», а крім того, модних хітів для мобільних пристроїв: «Max Axe» і «Scrap Force». Як керівник Naked Sky він консультував кілька зовнішніх проектів, включаючи «Unreal Engine» в Epic Games, «League of Legends» в Riot Games, «Destroy All Humans» в THQ і безліч інших проектів для Electronic Arts, Midway, Microsoft і Paramount Pictures.

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

Санджай Мадхав (Sanjay Madhav) — старший викладач Університету Південної Каліфорнії, веде кілька курсів з програмування та створення відеоігор. Основний з них — програмування ігор для студентів старших курсів, який він читає з 2008 року. Також він веде кілька інших курсів, за такими темами, як ігрові движки, структури даних і розробка компіляторів. Є автором книги «Game Programming Algorithms and Techniques».

До надходження на роботу в Університет Південної Каліфорнії Санджай працював програмістом в декількох компаніях, які займалися розробкою відеоігор, включаючи Electronic Arts, Neversoft і Pandemic Studios. Брав участь у створенні безлічі ігор, включаючи «Medal of Honor: Pacific Assault», «Tony Hawk's Project 8», «Lord of the Rings: Conquest» і «The Saboteur», — більшість з яких в тій чи іншій мірі можна назвати розрахованими на багато мережевими іграми.

» Більш докладно з книгою можна ознайомитися на сайті видавництва
» Зміст
» Уривок

Для Хаброжителей знижка 25% по купону — Ігри
За фактом оплати паперової книги відправляємо на e-mail електронну версію книги.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.