Программисты

<= Художники *** Почему люди делают игры =>

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

От программиста может потребоваться хорошо знать специфику движка, на котором разрабатывается игра, особенности операционной системы, на которой игра должна запускаться, или как защитить игру от взлома, ломающего игровой баланс или дающего одному игроку не предусмотренное правилами игры преимущество над другим.

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

Начнем с того, что мы и так знаем: игры бывают однопользовательские и многопользовательские. Однопользовательские приложения выполняют простую функцию: собирают действия игрока, обрабатывают их и визуализируют результат. Многопользовательские же игры не могут существовать без механизма связи пользователей друг с другом. Соответственно им нужен либо какой-то метод поиска других игроков поблизости с помощью wi-fi или bluetooth или вообще всех игроков в эту игру. Первый вариант — с игроками поблизости — еще можно реализовать только одним клиентским (запускающимся у игрока) приложением. И то функцию сервера будет выполнять приложение одного из игроков. Но второй вариант неизбежно порождает необходимость иметь серверное приложение, которое будет запущено на каком-то отдельно стоящем сервере. Это серверное приложение в общем занимается получением команд от клиентских приложений, расчетом результатов их действий и раздачей этих результатов обратно игрокам. Соответственно клиент должен уметь отдавать серверу данные о действиях игрока, получать от сервера обработанные данные и как-то их визуализировать — функции клиентского приложения значительно отличаются от функций однопользовательского приложения. В результате мы получаем двух специалистов, один из которых занимается клиентом, а другой сервером.

Если игра многопользовательская, то вполне вероятно может появиться необходимость как-то администрировать пользователей. Закрывать доступ к игре для тех, кто нарушает правила игры, или начислить какому-нибудь игроку награду за победу в конкурсе проведенном на форуме, посвященном игре. Соответственно это порождает необходимость разработки средств администрирования. Это может быть отдельная программа или сайт, которые недоступны простым игрокам.

Так же если наша игра имеет какие-то уровни, независимо от того является ли игра шутером или головоломкой, для нее скорей всего придется сделать редактор уровней. С шутерами и аркадами может быть немного проще по причине того что современные средства разработки по-умолчанию имеют редактор уровней в общем подходящий для создания игр этих жанров. Хотя наверняка найдется чего доработать. А вот для игр других жанров скорей всего придется делать редактор уровней, что называется, с нуля.

Соответственно, среди программистов можно выделить следующих специалистов:

  • Клиент — занимается реализацией игровой логики и визуализации игрового процесса на стороне запускаемой у игрока программы.
  • Интерфейс — интерфейсом вполне может заниматься отдельный человек который может также заниматься его сборкой вместо художников. Здесь важна оптимизация процессов чтобы игра не тормозила, в чем разобраться сможет только программист.
  • Сервер — если игра многопользователская или даже просто хранит прогресс игрока в интернете, то игре нужно будет создать серверную логику.
  • Редактор карт — для того чтобы гейм-дизайнер мог заниматься дизайном карт, ему нужны для этого определенные инструменты. Редактор карт часто придется разрабатывать под каждую игру отдельно.
  • Средства администрирования — для того чтобы гейм-дизайнер мог создавать новые предметы, править баланс, работать с данными игры и игроков, если игра многопользовательская, так же нужны свои инструменты.

Программист делает так чтобы все работало.

<= Художники *** Почему люди делают игры =>