разработчик
0,0
рейтинг
29 апреля 2014 в 23:34

Разработка → Бесплатная книга «Game Programming Patterns» от программиста Electronic Arts Боба Найстрома

Боб Найстром, программист, проработавший восемь лет в компании Electronic Arts, закончил работу над книгой «Game Programming Patterns». Она доступна бесплатно на сайте gameprogrammingpatterns.com. Писать книгу Боб Найстром начал четыре года назад. Большинство книг, посвящённых программированию игр, говорит он во введении, либо подробно раскрывают какой-то из аспектов создания игры — физический движок, графику, искусственный интеллект, либо описывают процесс создания игры в определённом жанре от начала до конца. Ему очень не хватало книги, рассказывающей о решении типовых задач, возникающих перед программистом, книги достаточно универсальной, не привязанной к жанрам или конкретным подсистемам игр. И поэтому он решил написать такую книгу сам.

«Шаблоны программирования игр» можно читать начиная с любой главы, но всё же сначала стоит ознакомиться с вводной частью, в которой описаны общие вопросы архитектуры игр и наиболее часто используемые в играх классические шаблоны проектирования от «банды четырёх». Рассказ о шаблонах, относящихся непосредственно к играм, разбит на четыре части — шаблоны последовательности, поведения, декомпозиции и оптимизации. Все главы снабжены примерами кода на C++, в которых по возможности не используются узко специфические для этого языка конструкции и функции стандартной библиотеки, чтобы код был максимально понятен всем, кто знаком с ООП и синтаксисом Си, а не только программистам С++.

Сейчас, кроме HTML-версии на сайте, книга доступна в исходниках на Markdown. В скором времени Найстром рассчитывает сверстать электронную книгу и выпустить бумажный вариант — но в любом случае книга останется в свободном доступе.

Илья Сименко @ilya42
карма
526,7
рейтинг 0,0
разработчик
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

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

  • +4
    Было бы просто превосходно, если бы кто-нибудь взялся за перевод, можно даже сделать это совместно.
    • 0
      Я думал взяться за перевод главы Spatial Partition, даром что она последняя в книге. Весьма полезный (и встречающийся везде, вплоть до собеседований) способ оптимизации.
      • 0
        Ниже оставил ссылку на нотабеноид, если захотите взяться, было бы очень хорошо.
    • +1
      Создал на нотабеноиде ветку, присоединяйтесь.

      В планах:

      1. Составить словарь для редактуры
      2. Изображения перевести отдельно, исходя из перевода текста
      3. После перевода перейти на github — сохранить структуру (выноски, абзацы, рисунки) и, возможно, предложить сообществу написать код примеров на разных языках (аналогично вики)

      Т.к. Боб не указал лицензию, написал-спросил у него разрешения.
    • +16
      Было бы просто превосходно, если бы кто-нибуть наконец-то взял себя за жопу и выучил английский язык, можно даже сделать это совместно.
      • +2
        Знать иностранный язык и наслаждаться чтением на родном — разные вещи.
        • +3
          Каждый раз, когда я вижу людей, которые хотят перевести английскую техническую литературу на русский, я хочу совершить суицид.
          • +4
            Спасибо, хоть не убить их.

            С меня — обещание перевести на достойный русский язык (так, чтобы текст не вызывал ощущения «что я сейчас только что прочитал»). Кроме того, хотелось бы объяснить, почему я так ухватился за эту книгу:

            1. По моим ощущениям в инди-индустрии все очень плохо с паттернами. Да даже с вменяемым кодингом плохо — хорошо хоть наши дизайнеры не берутся писать игры (а может, плохо — тот же багованный Fez написан дизайнером, да и крутейший Braid)

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

            3. В университетах студенты часто задают вопрос преподам — «Скажите, а ряды Фурье — они для чего?», а те молчат, хотя с помощью них даже музыка в mp3 кодируется. Так и здесь — мне импонирует, что автор сразу дает практику использования паттернов, да еще и в «индустрии» игр, что, конечно, уже плюс в глазах любого студента. У нас, например, был целый семестр, в который мы писали игру — и я очень хотел бы, чтобы хотя бы студенты будущего могли прикоснуться к проектированию архитектуры кода сразу, попытавшись пропустить тот этап, когда пишется лапша даже без отступов.

            Ну и персональный довод для вас — если вы, как и я, читаете техническую литературу свободно, вы можете потратить совсем немного своего времени для того, чтобы те, кто этого лишен (по тем или иным причинам) тоже смогли прочитать это. Разве это вообще не достаточный повод?
            • +5
              Я думаю, вы неправильно поняли меня. Мне не то, чтобы не нравятся стилистика русских переводов, меня беспокоит сам факт их существования.

              Ты — программист. Не знаешь английский — ты плохой программист. Я очень ценю ваш энтузиазм, но правда ли у вас есть время на плохих программистов?
              • +4
                Чтобы стать хорошим программистом, возможно, надо пройти через говнокод, лапшу и начальника «запили-ка мне быстро». Но мне, кажется, многие вещи стоит учить гораздо раньше. И если в нашей стране большинство студентов даже на четвертом курсе не успевает освоить английский язык в том качестве, чтобы читать свободно такие книги на английском, то ничего поделать нельзя. Я реалист.

                Ну и, кроме того, я считаю (хотя и не славянофил), что терминология должна входить в язык также, как и остальные слова — т.е. не всегда прямым и грубым заимствованием. Это тоже важно.
                • –2
                  Чтобы стать хорошим программистом, возможно, надо почитать чужой код и сделать для себя правильные выводы и вывести необходимые best practices.

                  Вы наводите пример — студенты 4-го курса. Дай бог, чтобы эти ребята сейчас игры начали делать, вы серьезно? Игры должны делать специалисты, которые сильны в графике и математике, с опытом программирования — чтобы игра не превращалась в вычислительную лапшу, а была архитектурно ням-нямочка.

                  Короче, говоря. Я считаю, что в случае с целевой аудиторией книги, уровень квалификации должен быть достаточным, чтобы человек знал английский. Иначе — может стоит пересмотреть уровень квалификации?
                  • +3
                    Как перфекционист (в душе), ставлю вам плюс. Но, к сожалению, надо быть реалистами и раскладывать все по полочкам:

                    1. Студент может быть любого курса. Я написал свою первую программу лет в 8. Помоглал брату делать мун лендер (баловался параметрами) — чуть позже, когда поменяли спектрум то ли на тройку, то ли на четверку. И потом игры писал. И мне, и моим друзьям было плевать, как она написана.

                    2. Лунная посадка это, или змейка-тетрис, или даже башни — чем раньше человек начнет писать красивый код, тем лучше. А увлеченный паренек в любом случае напишет или игру, или очередной таск-менеджер, это неизбежно.

                    3. Откуда он может взять. Вы говорите — язык оригинала и чужой код. Да, действительно, это порой лучше, т.к заставляет думать и мучитьься в процессе. Но на родном языке неофиту проще понять, что до него пытаются донести. Признаюсь честно, я не все места из русской-то версии банды четырех понимал, а английский текст приводил меня в замешательство попыткой ввести саенс в простые вещи.

                    4. Доступность — не только в виде понимания, но и привлечения внимания неофитов к материалу, который им будет полезен. Считайте проявлением честолюбия с моей стороны.

                    5. Игры — не только ААА-индустрия и клоны, и заезженные механики. По моему опыту, инди часто пишут молодые разработчики, имеющие идеи. Да и маленькие игры тоже чаще требуют необычных механик и отхода от канона, что хорошо. Хорошие игры могут быть написаны плохо, что мешает авторам фиксить баги и добавлять фичи.

                    6. Накноец, хороший код и профессионализм — не самоцель вообще. Хороший код нужег:

                    а) скорость разработки. Замедляя сначала, он дает выигрыш в разработке и тестировании. Его просто изменять, если совсем уж казуально.

                    б) он нужен для унифицированности в командной разработке. Действительно классный проект пишется несколькими людьми или просто очень долго (пример — underrails, braid..)

                    в) его можно использовать повторно — хотя мы все сами насчет этого пункта давно понимаем

                    г) чтобы было не стыдно показывать код и проще устроиться на работу

                    И так далеее, и так далее. И да, я считаю, что не знающий английский программист может быть крепким джуниором или девом, помогать новичкам надо и мы не утонем в лавине тауердефенсов и казуалок хотя бы потому, что поиск совершенствуется, а благодаря им в том числе мы получили FTL, minecraft и вообще — пис, мэн.

              • 0
                1. Может получиться так что будешь играть (а возможно уже не раз играл) в игру написанную «плохими программистами». Чем на больше это будет переведено языков тем лучше — больше покрытие будет, меньше в итоге косячных проектов будет.
                2. На родном языке читать приятнее и (мне лично) быстрее.

                Я из случая как с Fez (не знал кстати что там так обстоят дела), просто не всегда можно нанять или найти подходящих людей и приходится делать самому, коряво, но делать и я думаю таких самоучек много, если не очень много.

                Хотя английский я знаю технически и постоянно пользуюсь переводчиками типа google, bing + иногда гляжу urban dictionary и multitran (обычно когда надо самому что-то написать), но когда мне в первый раз кинули ссылку на gameprogrammingpatterns.com без всякого пояснения, я бегло прошёлся глазами по тексту и закрыл вкладку, почему-то не заинтересовало, не захотелось тратить время на перевод с чтением сомнительного текста (я уже встречал что-то подобное). Был бы он переведён я бы остановился подольше, как минимум потому что обычно переводят то что явно чем-то оказалось полезным и по умолчанию заслуживает большего внимания.

                А учить английский на хорошем уровне у меня тупо нет ни времени ни желания (хотя я в своё время предпринимал попытки). В школе же я учил немецкий (я на самом деле хотел английский, но...). В последние годы самому интересно изучить исландский из-за его пуризма, но тоже никак не найду времени :(
                Кстати, нередко встречаю французов и (реже) немцев, у которых с английским так же плохо.
                Короче на английском свет клином не сошёлся.
      • 0
        Вы думаете, я не читал книгу? Мне она понравилась, но мой английский не позволяет насладиться ей полностью.
        • +2
          Это ваш недостаток, а не общественная недоработка.
          • 0
            Если вы так категоричны, то что вы вообще на русскоязычном техническом ресурсе забыли? По вашему, на русском языке вообще не должно выходить литературы по разработке?
            • 0
              Я тут общаюсь со специалистами и меня все устраивает. По-моему, литература, требующая высокий уровень квалификации программиста не нуждается в переводе, вот и все.
    • 0
      Куплю в переводе на русский язык.
      Готов сообщить email для подписки на уведомление о продаже версии в переводе.
    • 0
      Шаблоны проектирования не меняются от сферы применения.

      Если вам интересно почитать про шаблоны на русском начните от сюда
      ru.wikipedia.org/wiki/Design_Patterns
      И настоятельно рекомендуемый ознакомится с полной работой «Банда четырёх» www.ozon.ru/context/detail/id/20217137/?gclid=cl-0ioi5kb4cfehncgod15oafg
      • 0
        Шаблоны проектирования не меняются от сферы применения

        На самом деле вы заблуждаетесь. В игровой сфере шаблоны, бывает, довольно сильно отличаются от бизнес сферы. Основные подходы к архитектуре, конечно, остаются теми же, но детали бывают довольно существенны.
  • +9
    Пользуясь случаем, напомню о крупнейшем репозитории бесплатных книг по программированию: free-programming-books. Судя по git, Game Programming Patterns туда добавили ещё 24 декабря 2013 (коммит f6bbab71).
  • +2
    Эта книга хороша в тандеме с другой замечательной книгой: Mike McShaffry, Game Coding Complete. В последней тонны полезной информации об архитектуре игр и много интересных примеров из жизни. Вкусно написана.
  • 0
    Отличная книга! Особенно, мне понравилось, что описано в ООП-стиле. Для некоторых это будет поучительный и ценный аспект. Насчет перевода на русский, считаю, что не настолько ценно, как существование оригинала — всегда лучше потратить некоторые усилия, прочитать на английском, подтянуть себя. В мире gamedev не очень просто тем, кто не может читать англоязычную литературу, хотя бы на базовом уровне. А умение понимать техническую литературу для программиста (понимание смысла), можно считать, необходимым навыком. Хотя, спору нет, читать на родном языке приятнее, но не забывайте, друзья, что нужно учиться понимать и англоязычные, оригинальные варианты.
    • 0
      Согласен, книга отличная. А еще ее на английском лучше читать, потому что написана хорошим языком с шутками-прибаутками :)
  • +2
    Для истории: в ЖЖ есть перевод Игоря Легостаева / live13 (ссылка), судя по оглавлению — переведены все разделы.
  • –1
    В скором времени Найстром рассчитывает сверстать электронную книгу и выпустить бумажный вариант — но в любом случае книга останется в свободном доступе.

    Вот только HTML версия осталась бесплатной, а за PDF нужно платить…

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