Как стать разработчиком игр: Как стать разработчиком игр? 8 ответов от геймдевелоперов

Содержание

Как начинающему программисту попасть в геймдев? Советы специалистов краснодарской студии Plarium

Мы расскажем об особенностях работы в геймдеве, о навыках, которые следует освоить, о тестовом задании и о собеседовании.


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

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

Какими умениями должен обладать кандидат?

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

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

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

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

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

Что касается языков программирования в Unity, стандартное условие для кандидата — владение C# (реже — UnityScript и Boo). Однако этим необходимые навыки относительно языкового арсенала соискателя не исчерпываются: желательно располагать знанием Objective-C и Java, чтобы создавать нативные плагины для iOS и Android.

Не стоит забывать и о требованиях времени к разработке браузерных игр. Если раньше для их создания использовали преимущественно Flash и ActionScript, то сейчас все чаще обращаются к HTML5 и JavaScript. Некоторые специалисты экспериментируют с относительно новой технологией WebGL.

Если вас не смутил объем знаний и умений, которыми должен располагать программист, работающий в игровой индустрии, и вы по-прежнему жаждете испытать свои силы в этой сфере, пора ознакомиться с советами по выполнению тестового задания.

Тестовое задание: секреты успеха

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

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

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

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

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

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

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

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

Собеседование: ключевые моменты

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

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

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

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

Эффективный подход к решению задач. Если вы долго, но безуспешно пытаетесь справиться с какой-либо проблемой, нет ничего предосудительного в том, чтобы узнать, как в подобных ситуациях поступают другие специалисты. Разница лишь в вашем применении полученной информации: бездумное копирование или разъяснение для себя сути. Выбор очевиден.

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

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

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

Один из классиков русской литературы заметил: “Если уж писать, то только тогда, когда не можешь не писать”. В контексте нашего разговора эта фраза приобретает новый смысл. Программирование в геймдеве — настоящая страсть, а не просто выполнение должностных обязанностей в установленные договором часы. Это неотъемлемая часть жизни и подлинное счастье вновь и вновь видеть, как код обретает зримое воплощение в красочном игровом мире, приносящем радость множеству пользователей. Если вы действительно чувствуете, что разработка игр — ваше призвание, пора осуществить свою мечту!

Мой путь начинающего разработчика игр / Хабр

Доброго времени суток, уважаемые пользователи!

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

Ну, начнем с того, что я — школьник. На носу у меня ЕГЭ, надо бы к нему готовиться, а меня все тянет и тянет в эту какую-то заблудшую степь. Но меня это ни сколько не останавливает. Еще в детстве мечтал делать игры, вот почему бы и не начать именно сейчас.

Что ж, начнем, пожалуй.

Наступил 2019 год, и я решил: «Пора заняться чем-то новым!» Сел на диван первого января, открыл YouTube, как обычно, и включил фоном какой-то видос, параллельно размышляя чем бы заняться. И вот мне в голову пришла великолепная мысль, которой я решил сразу же заняться. Я решил выучить новый язык программирования! До этого знал только Python (о нем чуть позже) и pascal, который никому был не нужен, только для решения того же ЕГЭ. Вот сел я значит за ноутбук и думаю «Какой бы язык выбрать?». Мой выбор пал на Java.


Было нелегко найти неплохой курс для основ Java, но сайт CodeAcademy, как всегда, выручил (там же я изучал Python). Довольно быстро прошел все бесплатные курсы и обрадовался, подумав: «Ну все, можно писать Minecraft», но счастья было мимолетным. Мои мысли о создании игр на Java закончились после прочтения первой же статьи о разработки на данном языке. Все было каким-то сложным и долгим. В связи с этим событием, я решил придумать что-нибудь иное.

Тут я вспоминаю о такой замечательной вещи, как Unity. Я начал читать об этом движке и сразу же столкнулся с, на то время, проблемой — C#. Я думал, все будет сложно, так как какой-то одноклассник жаловался на это, но все оказалось намного проще, чем я думал: C# очень похож на Java, на мой взгляд, поэтому я его супер быстро изучил основы за один вечер, что позволяло уже начать писать код.

Со следующего утра, с первыми лучами солнца я встал и сразу же принялся читать, читать и еще раз читать о Unity все, что было. Начал устанавливать ПО и пробовать различные вещи, что увенчалось каким-никаким успехом — я написал свою первую игру на Android. Это было очень коряво сделанная игра, со скачанными картинками из интернета, без меню и багами. Ее смысл был прост — бегаешь котенком, уворачиваясь от падающих мордочек мопсов:

Рассказав родителям, я загорелся еще большим энтузиазмом, ведь им понравилось, и папа даже поделился этой новостью со своим другом.

И вот я уже начинаю писать нормальную игру. Идеей игры послужил один видеоролик на YouTube с канала Brackeys. Мне очень понравилось то, что он сделал, и я решил довести эту задумку до ума. Суть была такова: есть шарик, который вериться вокруг центра на небольшом расстоянии, и ты должен был попасть им в отверстия в шестиугольника, которые спавнились и сужались с определенной скоростью. Было тяжеловато начинать, когда ты всего пару дней учишь материал, но, благодаря нашей любимой веб-паутине, многое можно было найти.

Я начал с геймлея. Все шло своим чередом, я все делал с кровью и потом, ложился в 4 часа утра, хотя обычный режим — это 10-11 часов вечера, но меня нельзя было сломать. И вот я уже закончил меню:

Совсем простое, но для меня кнопки — это уже было что-то с чем-то.

Я показывал игру своей девушке, которая была в роли тестировщика, и ей очень сильно не понравилось управление, в то время как я этого не замечал, ведь уже привык. Начал делать управление, менять скорость вращения и все такое. Заняло это все более суток непосильного труда, сидения дома и безотрывного просмотра интернета.

Предоставляю готовые изменения и получаю в ответ все то же самое. Тогда я начал просто 24 часа в сутки что-то делать и исправлять. Все было очень сложно и я методом проб и ошибок исправил многие проблемы, уже сам писал многие части кода, потому что за столько времени перевидал многого. Также, мне пришлось научиться рисовать, чего я никогда не умел, и нарисовать кнопки. И вот что я получил, еще немного порисовав в Illustrator’e, дабы добавить вместо белого шарика какие-то скины:

Для меня это был величайший прорыв.

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

Я был горд за данное деяния, что аж решил выложить ее в Google Play. Узнал, как это делается. Принялся за работу. И тут я вижу, что надо платить $25 за регистрацию, чему я был знатно удивлен. Ладно, я заплатил (но жаба так душила, ужас просто). Все настроил, выкладываю игру. И вот я уже в нетерпении жду, когда же ее выпустят, а время ожидания от заливки APK до публикации примерно 5-6 часов, ложусь отдыхать.

Проснувшись в 8 вечера, вижу что игра уже в Google Play! Радости не было предела. Делюсь со всеми друзьями новостью, говорю: «Во! Качайте, играйте, скажите как вам». Выложив игру, я думал, что все уже сделано, но не-е-е-е-ет, далеко нет. Мои друзья начали писать о куче багов и ошибках, о которых я и не подозревал (кто же знал, что нужно производить настройку под разные экраны). Вот я снова не сплю, чиню все, подогнал под все разрешения свой шедевр и заливал обновления. Все, готово… иду отдыхать.

Не все так просто… Через пару минут снова пишут о других ошибках. Ладно, тоже исправил, загружаю. И вот здесь, слава богу, все приостановилось. Я ложусь наконец-то спать спустя столько дней без сна. Это был самый сладкий сон в моей жизни.

Вот примерно такая история произошла у меня. Поиграть в игру вы можете нажав сюда: Spin The Ball. Если будет не сложно, напишите вашу оценку и комментарии к игре, чтобы я знал, в каком направлении развиваться. Спасибо большое!

Про историю с Python я расскажу позже.

Всем спасибо за внимание,

ваш dramaformama

Как стать разработчиком игр, если ты риелтор / Хабр

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

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

Вы тепло приняли этот пост и это дало мне хороший толчок в нужном направлении. За эти два года я попробовал и научился многому: работал с 3D моделями, знакомился с C++, рисовал текстуры, записывал звуки, писал тексты и диз-доки, но самое главное – я нашел для себя подходящую среду разработки, а именно — божественный Unreal Engine 4.

Я не решался ничего писать до тех пор, пока не смогу сделать что-то, что сможет порадовать хотя бы меня. И, думаю, мне это удалось. Довольно приятно видеть тот большой и тернистый путь, который был пройден, чтобы, начав с картинки в начале статьи, дойти до того, что под катом 😉

Несколько месяцев назад я принялся за работу над игрой-новеллой, разработку которой я могу завершить самостоятельно, попутно используя наработки из прочих моих проектов на UE4.

Огромное количество доступных уроков и довольно отзывчивое комьюнити позволили мне окунуться в изучение движка с головой, попутно совмещая все это с моей основной работой. Сидя за компьютером до 3х – 4х часов ночи, я набирался опыта и постепенно понимал пределы своих возможностей.

Игра представляет собой квест-новеллу от 3-го лица, где игроку предстоит изучать город, который постигла ужасная участь. По мере прохождения, он будет знакомиться с другими персонажами, решать головоломки, изучать город и окрестности, знакомиться с лором мира и пытаться выяснить причины случившегося. Один из моих друзей описал сеттинг словами: «Пацифистичная помесь Ведьмака и Темных Душ». По большому счету так оно и есть, но с нотками Говарда Лавкрафта.

Но скриншоты это не все. Я даже создал демо-версию игры с одной из игровых локаций, включающую в себя и музыку, и тексты, и озвучку одного из персонажей. За озвучку, кстати, огромное спасибо студии GamesVoice, а так же актерам Андрею Астрову и Константину Федосееву. Может это звучит как реклама, но ребята предложили озвучить демку абсолютно бесплатно.

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

Скачать демку можно по этим ссылкам:

Яндекс.Диск 64-bit, 32-bit (Windows).

Google Drive 64-bit, 32-bit (Windows).

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

Эпилог

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

Артем Вознюк о профессии Gameplay-программиста – CoreMission

Привет, ребята! В рамках нашего большого обсуждения профессий в геймдеве «Как стать разработчиком игр?» Артем Вознюк согласился рассказать о своей работе.

Привет, расскажи о себе? Как пришел в геймдев? Где учился? Где/над чем сейчас работаешь?
Меня зовут Артем Вознюк, мне 28 лет. Работаю в геймдеве чуть более 5-ти лет. Я родился в городе Севастополь, в 6 лет с родителями переехал в Санкт-Петербург. Учился я в СПбГУ на факультете Прикладной Математики-Процессов Управления.

В геймдеве я оказался совершенно случайно. Наш факультет выпускает специалистов с тайтлом «математик-программист», но, к сожалению, математики там в разы больше, чем программирования. На 10 математических курсов выпадает 1-2 курса, которые как-то относятся к Computer Science и технологиям.

Моей первой работой была должность преподавателя математики в компании Юниум — это курсы доп. образования для школьников, по крайней мере так было лет 8 назад 🙂 После одного
семестра я понял, что это совсем не мое и переключился на программирование.

Я стал учиться самостоятельно и на 4-м курсе получил свою первую работу программистом в одном из Питерских НИИ. Работа была не интересная, я с трудом вспоминаю чем мы вообще там занимались. Спустя 9 месяцев я решил, что пора двигаться дальше и получил контрактную работу(не в штате) в компании LG Electronics на позицию Junior C++ Developer.

Работа заключалась в написании автотестов для телефонов под Android. Через год мой контракт закончился, ни работы в штате ни нового контракта мне предложить не смогли и мне пришлось
искать себе новую работу.

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

Но на мой почтовый ящик пришло письмо, которое говорило об обратном. В компанию Saber Interactive был нужен Gameplay Programmer и мне предложили выполнить тестовое задание на эту позицию, которое я успешно выполнил.

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

За эти 5 лет я поработал в трех геймдев компаниях, занимающихся AAA играми(Saber Interactive, 4A Games, Sperasoft). Участвовал в разработке таких игр как Quake Champions и Metro Exodus. Недавно я вернулся в Saber, занимаю здесь должность Game Engine программиста.

Сейчас мы работаем над неанонсированным проектом, про который я могу говорить ровно ничего 🙂

Были ли в детстве мечты/мысли о разработке игр?
Может быть во что-то играл в детстве такое из-за чего захотелось делать именно игры? Почему именно программирование игр? Почему геймплей?
Как и большинство из нас, я был увлечен играми с раннего детства. Я до сих пор помню тот день, когда родители купили мне мой первый компьютер и две игры: Quake 3 Arena и Diablo 2. Наверное я не вставал из-за стола несколько дней. То что игры делают такие же обычные люди как я, я тогда, конечно, не знал.

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

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

Программист, работающий над большой игрой 2-4 года, конвертируется в деньги для компании не так хорошо, как программист занятый, скажем, в банке те же 2-4 года. Если вы хороший специалист, вас будут ценить и хорошо поощрять и в геймдеве, но надо признать, что в среднем программист больше заработает в банке или enterprise, чем в разработке игр. Также в некоторых компаниях вы можете столкнуться с кранчами(переработками), особенно под конец проекта.

Геймплей я не выбирал, он выбрал меня 🙂 Если вы начинающий игровой разработчик, скорее всего вы будете начинать с геймплея. Это особенно актуально сейчас с развитием таких игровых движков, как Unity и Unreal Engine.

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

Сейчас, например, моя работа тесно связана с физикой и анимациями. Стоит также отметить, что граница между Gameplay и Engine
программированием очень размыта и варьируется в зависимости от компании и технологий, на которых ведется разработка. То что в одной компании делает Engine программист, в другой — прерогатива Gameplay команды.

Расскажи о работе Геймплей-программиста (для тех кто не представляет что это такое). В чем заключается работа?
В чем заключается, какие задачи перед тобой стоят, как ты их решаешь?
Команда, разрабатывающая игру, состоит из специалистов различных профилей. Здесь есть разные художники: концепт, моделлеры, аниматоры, текстурщики, UI, VFX, технические художники; дизайнеры: гейм-дизайнеры, левел-дизайнеры, саунд-дизайнеры; програмисты: Engine, Render, Tools, Backend.

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

Какая рутина присутствует в ежедневной работе?
Что больше всего утомляет, пожалуйся 🙂
Геймплей программист прежде всего — программист. У него все те же проблемы, что и у других программистов. Ты не обсуждаешь дизайн игры с утра, пишешь код после обеда и к вечеру выпускаешь игру. Очень часто долгие мучительные часы проходят в затирании кнопки F10 (примечание для чайников: Это Step Over — функция отладки в Visual studio и других IDE) на вашей клавиатуре в поисках очередного неуловимого бага.

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

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

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

Когда прототип признается удачным, начинается основной этап разработки. Обычно разработка происходит в соответствии с какой-нибудь из современных методологий разработки(Agile, Scrum) — весь роадмап разбивается на месячные майлстоуны или недельные спринты, в течении которых ты выполняешь поставленные перед тобой задачи по разработке механик, обсуждаешь их на дейли стендапах.

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

В какие игры играешь сейчас? Чем вдохновляешься? Какие последние игры прошел? Любимые жанры?
Играю, к сожалению, не так часто как хотелось бы. Жизнь программиста игр — это постоянное изучение нового. На геймплее игровая разработка не останавливается, а изучать каждый винтик из которого состоит игра можно всю свою карьеру, поэтому
очень много времени уходит на это. Но в этом и кайф — ты никогда не остановишься в развитии, если сам этого не захочешь.

Из того, что прошел за последние пол года — Middle Earth: Shadow of War и Uncharted 4. Игры просто великолепные! Последнюю можно даже посчитать эталоном технического качества, но таковое достигается именно теми самыми кранчами, которые я сегодня упоминал:) Любимой игрой я считаю Fallout: New Vegas — проходил ее раз 5 вдоль и поперек 🙂

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

Как относишься к инди? В какие инди-игры играл? Нравятся ли какие-то инди от наших соотечественников?
Кому задонатил? 🙂
Я помню вечер, когда я посмотрел документальный фильм Indie Game: The Movie. Неделю после я ходил в полной уверенности, что ухожу от офисной работы и сажусь за свой проект 🙂 Вдохновение отступило также внезапно. В итоге я остаюсь убежденным корпоративным разработчиком — я люблю программировать и очень рад, что есть много людей, которые любят все остальное, что надо делать в геймдеве и мне не приходится этим заниматься. Но вместе с тем я с большим уважением отношусь к тем «людям-оркестрам», которые умеют и делают все. В особенности к тем, кто сумел довести свое дело до конца и добиться успеха.

Я не особо играю в инди игры, поэтому и донатить никому не приходилось 🙂

Есть ли какая-то профессиональная деформация? Как играются «чужие» игры когда ты сам разрабочик? Репортишь ли баги разработчикам? Возникает ли желание проверить какое-то поведение NPC, например? Может быть чем-то вдохновляешься, берешь идеи из других игр?

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

Что доставляет наибольшую радость в твоей работе? В чем самый большой кайф?
На самом деле любая законченная задача, новая фича, которая работает доставляет радость. Зачекинил свои изменения, получил аппрув от QA и дизайнеров, кайфанул 🙂 Но самый большой кайф, это когда в твою игру начинают играть конечные пользователи и получать от этого фан. Просмотр на youtube стримов с твоей игрой вызавает какие-то особые ощущения.

Посоветуй что-то ребятам, которых привлекает разработка игр и работа геймплей-программиста?
Как начинать? С чего начинать? В какой ВУЗ поступить? Какие предметы ботать? Где поучиться нахаляву?
Поработав в трех разных компаниях с четырьмя разными движками и просмотрев огромное количество вакансий, я выделил для себя четыре core скилла игрового разработчика: языки C/C++, математика, английский язык, знание предметной области.
Языки C/C++ используются для программирования всего, от самого лоу-левела до механик, в абсолютном большинстве игровых компаний, которые занимаются большими играми. Если вам нравится Unity и вы собираетесь заниматься исключительно
геймплеем, вам, наверное, подойдет C#. По C++ я рекомендую курс на youtube от Гоши Дударя… шучу-шучу 🙂 Для начала отлично подходит книга Лафоре «Объектно-ориентированное программирование в C++», затем можно почитать Скотта Майерса.

Когда осилите это, дальше уже сами разберетесь чем продолжить. Если вы программируете геймплей, анимации, графику, физику, вам абсолютно необходима линейная алгебра. В интернете огромное колличество теории и примеров решения задач.
Начать можно со статьи на хабре «Линейная алгебра для разработчиков игр». Если вы не знаете английский язык, вы заведомо проигрываете вашим коллегам, которые его знают. Все самые топовые ресурсы для изучения всего остального вы не найдете
на русском
языке.

Читайте, смотрите, говорите сами с собой, идите на курсы, делайте что хотите, но вы должны по крайней мере уверенно читать и воспринимать на слух английский язык. Для начала изучения предметной области есть две книги — Game Engine Architecture и Game Coding Complete. Книги очень похожи — это хайлевел обзор элементов игрового движка и разные подходы к их созданию, выбирайте любую. Лично мне больше нравится первая, ее, кстати, написал Jason Gregory — ведущий программист графики из Naughty Dog, уж этот парень знает, что говорит 🙂

Если вы всю жизнь планируете проработать в России, то ВУЗ для вас, на мой взгляд, не должен быть принципиален. Ни на одном собеседовании здесь у меня его не проверяли. Если же вы хотите в какой-то момент попробовать себя за рубежом,
диплом вам нужен обязательно, причем по специальности. Я получал офферы из двух компаний из Европы и в обоих случаях для получения разрешения на работу им был необходим мой диплом. То же самое было и со многими моими коллегами.
Качество ВУЗа для них не принципиально, я думаю они их не различают, а вот специальность должна совпадать с той на которую вы претендуете.

А сейчас будет секретная информация. Учиться на халяву можно… в интернете! Бесплатных ресурсов разного рода огромное колличество.

Какими качествами должен обладать крутой программист? Как эти качества в себе развивать?
Для того, чтобы отточить те скилы, о которых я сказал, вам понадобится некоторый запас усидчивости. Многие говорят, что нет смысла заниматься программированием, если оно вам не нравится и в этом, бузусловно, есть зерно, но лично мне программирование понравилось не сразу. В том числе программирование игр. Но когда вы начинаете что-то понимать и когда начинает что-то получаться, вы начинаете кайфовать от этого все больше и больше. Поэтому некоторым людям придется «отмучаться» некоторое время и заставлять себя заниматься. Но когда вспоминаешь, что в награду ты получаешь дело своей жизни и неплохой зароботок, понимаешь, что это стоило того 🙂 

Рассажи какую-нибудь историю связанную с геймдевом, программированием геймплея?

Примерно полтора года назад я загорелся идеей попробовать поработать за границей. Я начал интенсивно подтягивать разговорный английский, готовиться к собеседованиям. От момента зарождения идеи, до оффера из европейской компании прошло не
так много времени — примерно три месяца. Этой компанией была польская студия People Can Fly известная своими играми Painkiller, Bulletstorm и участием в разработке нескольких частей Gears of War. Все шло так гладко и хорошо, что я начал сильно переживать, как бы чего не сорвалось.

И волновался я не зря, мне отказали в резрешении на работу. А причина была достаточно комична — написание моей фамилии в моем загран паспорте и моем дипломе отличались на одну букву.

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

Через несколько недель я получил оффер от компании 4A Games. Мальтийцы оказались не такими дотошными как поляки, я получил разрешение на работу очень быстро и получил возможность поработать с великолепными профессионалами над отличным проектом. Спустя 7 месяцев по личным причинам я решил вернуться в СПб, но все равно я рад, что попробовал — это был очень важный опыт 🙂

Как стать программистом игр? Профессия «Геймплей-программист» – CoreMission

Продолжаем наши беседы о том как стать разработчиком игр: Профессия Gameplay-программиста и рассказ Александра Балакшина о ней.


Расскажи о себе? Как пришел в геймдев? Где учился? Где/над чем сейчас работаешь?

Александр Балакшин, 33 года. Родился и вырос в Мурманске, после окончания школы поступил в МГТУ им. Баумана на аэрокосмический факультет, специальность прикладная математика. После ВУЗа занялся вещами далекими от разработки игр. Однако, спустя 5 лет решил все-таки исполнить свою мечту детства и уйти в игровую индустрию. В данный момент я тружусь в компании Sperasoft и «оказываю значительный вклад в сезонные обновления Rainbow Six: Siege» (прошу прощения за формулировку, не я ее придумал)

Были ли в детстве мечты/мысли о разработке игр? Может быть во что-то играл в детстве такое из-за чего захотелось делать именно игры? Почему именно программирование игр? Почему геймплей?

То, что хочу стать программистом я понял в 7 классе. То, что хочу разрабатывать игры, наверное, даже чуть раньше. Тогда в середине 90-х в России был настоящий бум связанный с видеоиграми. Сначала 8, а потом и 16-битные приставки (у меня была Sega). Параллельно существовали ПК игры. Я помню, как мы с друзьями околачивались в игровых магазинах, смотрели, подбирая слюни, на полки с картриджами и наблюдали как продавцы играли на различных консолях. В то же время появилась первая игровая пресса. Порой очень плохо сверстанная и с совершенно безграмотными текстами, но нам это казалось очень крутым. У меня и моего друга даже была мотивация ходить в местную детско-юношескую библиотеку — в ожидании свободного компьютера для пары часов игры в X-Com в зале периодики можно было полистать старые подшивки «Страны игр» и «Навигатора игрового мира». Именно из этих журналов мы узнавали про таких людей как Джон Кармак, Джон Ромеро и Питер Мулинье. Хотя на мой взгялд самым качественным и интересным был game.exe — помимо прекрасного авторского слога и отличной верстки, в нем всегда был раздел, который рассказывал про основные технологии разработки. У меня в Мурманске до сих пор лежит весьма внушительная коллекция данного журнала.

Если говорить про любимые игры детства, то это ecco the dolphin, earthworm jim, x-com: enemy unknown, warcraft II, command & conquer, full throttle, quake (мультиплеер в нем был революцией), half-life и конечно же fallout 2.

Ну а первой компьютерной игрой для меня был Captain comic — отец взял меня как-то на работу и ему надо было чем-то занять 5-летнего сорванца.

Расскажи о работе Геймплей-программиста (для тех кто не представляет что это такое). В чем заключается работа? В чем заключается, какие задачи перед тобой стоят, как ты их решаешь?

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

Какая рутина присутствует в ежедневной работе? Что больше всего утомляет, пожалуйся 🙂

К счастью, рутины как таковой последние 2 года не наблюдаю от слова совсем — все весьма динамично и однотипных задач не так уж и много. Ну а если нужно сделать практически тоже самое, что делали раньше, но «с розовыми пуговицами» и при этом нельзя эффективно переиспользовать существующий набор решений, то всегда можно попробовать новый, более совершенный подход и заодно, по возможности, переделать старый код (сделать рефакторинг). Наверно самое тяжелое, что есть в работе — это feature cut, когда уже почти готовый функционал, на который был потрачен не один месяц, откладывается на полку, а то и вообще выбрасывается. Причин для этого может быть множество: от банального «не успеваем сделать по срокам» до «не оправдывает ранее возложенных ожиданий». Однако, на мой взгляд, такова специфика не только игровой разработки, но и вообще создания какого-либо конечного продукта. Так что к этому стоит относиться нормально, абсолютно спокойно и c некоторой долей юмора.

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

Обязанность игрового программиста — собрать все воедино, поэтому общаться приходится и с техническими художниками, и с аниматорами, и со звуковыми инженерами и конечно самое главное — с гейм дизайнерами. Мы воплощаем идеи последних в жизнь и по сути являемся их техническим альтер-эго. Причем поскольку нам известно, как все (или почти все) устроено изнутри, то оценивая сложность реализации той или иной идеи мы по возможности стремимся выбрать наиболее оптимальное решение. Конечно, наши «рацпредложения» далеко не всегда находят отклик среди коллег и тогда уже приходится работать по-настоящему искать новые подходы и проявлять смекалку.

Если же говорить про этапы разработки, то их можно выделить три:

1. Prototyping или pre-production. Главная задача — максимально быстро реализовать идею. Качество кода неважно, главное доказать, что оно работает и в это весело играть. Иногда, конечно, приходится делать чуть более детальные исследования, связанные, например, с производительностью. Если в определенные моменты самая оптимальная реализация предлагаемой идет является причиной слайд-шоу в 5 кадров в секунду на основных платформах (как правило текущее поколение консолей + PC минимальной поддерживаемой конфигурации), то эту фичу скорее всего не возьмут в дальнейшую разработку.

2. Production. Непосредственно создание той или иной игровой механики. Именно на этом этапе идет максимальное взаимодействие с остальными участниками разработки. Правда даже на этом этапе, требования могут меняться (причем весьма радикально) и порой приходиться переделывать достаточно большое количество уже написанного кода, а то и вообще отказываться от тех или иных идей. Однако здесь в отличие от прототипирования нужно делать все максимально хорошо и качественно. Как следствие цена переделки достаточно высока.

3. Polishing. Наконец, когда все нужные механики и идеи реализованы, нужно, чтобы все работало максимально стабильно, быстро и красиво. По большей части – это багофикс (исправление ошибок). Тем не менее, даже в этот момент могут возникнуть требования равно как на добавление каких-то небольших новых элементов, равно так и на удаление лишних.

В какие игры играешь сейчас? Чем вдохновляешься? Какие последние игры прошел? Любимые жанры?

С тех пор как начал заниматься разработкой, из-за нехватки времени играю крайне редко. Так что мой последний ААА опыт как игрока связан с hitman absolution, который застрял где-то на

середине. А прошел, если не изменяет память, tomb raider 2013. Хотя список того, во что хочется поиграть у меня есть и очень надеюсь, что доберусь до него раньше пенсии. Но поскольку следить за тем что происходит нужно как минимум с профессиональной точки зрения, то основной моей игровой платформой является youtube. Иногда смотрю let’s play не только новинок, но и некоторых старых вещей, на которые в свое время также не хватило времени.

Есть ли какой-то особый жанр игр или может быть известная франшиза, в которой хотелось бы поучаствовать?

С удовольствием поработал над чем-нибудь на Frostbite. Тот же Anthem выглядит крайне интересным. Очень хочется поработать над single player open-world adventure типа horizon zero dawn.

А так есть мечта сделать свою игру. Большую и красивую. И даже идея есть. Но пока для этого немного рановато.

Как относишься к инди? В какие инди-игры играл? Нравятся ли какие-то инди от наших соотечественников? Кому задонатил? 🙂

Не сказать, что я слежу за инди сценой слишком уже пристально. Хотя некоторые вещи просто не могут пройти мимо внимания. Например, совергенно потрясающий Monument valley. Ну а Limbo от Playdead – это вообще шедевр. На мой взгляд, люди, рискующие создавать свои игры минимально доступными средствами и во многом на чистом энтузиазме, безусловно заслуживают уважения. С другой стороны, благодаря возросшей доступности и развитию таких крутых игровых движков как Unity и Unreal engine, в последнее время появилась категория так называемых AA проектов – игр максимально близких по качеству (как минимум визуальной составляющей) к крупным AAA тайтлам, но сделанным сравнительно небольшими командами и со значительно более скромными бюджетами. Ярчайший пример – недавно вышедший Hellblade: Senua’s Sacrifice.

Еще одним любопытным примером являются Coldwood и их Unravel – шутка ли 18 человек делают совершенно потрясающую по красоте игру. При этом для разработки использовался не очень уж и популярный PhyreEngine. Немудрено, что EA обратили на них свой пристальный взор.

Касательно доната, я предпочитаю избегать микро транзакций, по мне лучше уж заплатить полную цену игры. Хотя кто знает, как оно будет в будущем – в том же star citizen, который еще не вышел, к существующим платежам достаточно тяжело применить приставку «микро». Однако, с учетом того, сколько стоит по времени даже «банальное» создание всяких шкурок для некоторых игр, их цена кажется вполне оправданной.

Есть ли какая-то профессиональная деформация? Как играются «чужие» игры когда ты сам разработчик?

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

Репортишь ли баги разработчикам? Возникает ли желание проверить какое-то поведение NPC, например? Может быть чем-то вдохновляешься, берешь идеи из других игр?

Поскольку играю редко, то нет. Тут скорее наоборот – предпочитаю сам смотреть фидбэк от пользователей (привет reddit). В плане идей и вдохновения – очень интересно смотреть доклады с GDC. В прошлом году Blizzard со своей entity component system для Overwatch произвели настоящий фурор. Недаром те же unity technologies добавили нечто подобное в свежую версию своего движка. Пусть даже и пока в experimental форме.

Что доставляет наибольшую радость в твоей работе? В чем самый большой кайф?

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

Посоветуй что-то ребятам, которых привлекает разработка игр и работа геймплей-программиста? Как начинать? С чего начинать? В какой ВУЗ поступить? Какие предметы ботать? Где поучиться нахаляву?

Перво-наперво выучите английский язык. С ним вам станет доступна львиная доля информации, связанной с игровой разработкой (и не только). Если Вы еще учитесь в школе, то начните изучать основы программирования. В принципе подойдет любой язык, который вам позволит освоить основные конструкции, алгоритмы и структуры данных. Параллельно выберите ВУЗ с хорошей технической составляющей. Конечно же я с удовольствием могу порекомендовать свою альма-матер – МГТУ им. Баумана – помимо сильной школы по фундаментальным дисциплинам, университет активно сотрудничает с различным компаниями, в области дополнительного образования и практики. В особенности в последнее время – яркий пример проект «Технопарк» совместно с mail.ru. Однако помимо этого есть внутриуниверситетские лаборатории и научно-образовательные центры, где можно получить ценнейшую практику, в том числе и по программированию. Безусловно есть целая плеяда Российских ВУЗов, на которые стоит обратить внимание: МГУ, МФТИ, СПбГУ, НГУ, МТУСИ, ИТМО, МИРЭА и т.д. Однако, если в силу тех или иных причин у Вас не получится поступить в какой-либо университет из вышеупомянутого списка, не отчаиваетесь. Практически в любом государственном университете Вам расскажут необходимые дисциплины на должном уровне. Главное на что стоит обратить внимание, на мой взгляд, – это математический анализ, физика, линейная алгебра, численные методы и теория вероятности.

Тем более что для игровой индустрии, львиную долю знаний (в особенности все, что касается программирования) вам придется получать самостоятельно. Благо источников сейчас предостаточно. Есть много хороших и бесплатных курсов на coursera. Лично для себя я выделил лекции по алгоритмам от Tim Roughgarden из Стэнфорда. У них сейчас есть даже целый цикл со специализацией https://ru.coursera.org/specializations/algorithms

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

Отдельно хотел бы порекомендовать участие в различных игровых хакатонах. И желательно чтобы это было оффлайн (например, на выходных). Неважно выиграете ли вы или нет. Более того вы даже можете не закончить ваш прототип за указанный срок. Однако объем знаний и опыта полученный за это сравнительно небольшое время может быть просто колоссальным. Более того,

Вы можете познакомиться с такими же энтузиастами, только более опытными, которые покажут и расскажут вам что к чему. Лично мне в свое время это очень помогло.

Какими качествами должен обладать крутой программист? Как эти качества в себе развивать?

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

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

Всегда стремитесь сделать все максимально хорошо, однако не будьте перфекционистом. Иногда приходится поступиться «красотой» кода ради нужд стабильности или производительности. Как следствие стремитесь все написать максимально просто, но опять же не превращайте свою программу равно как в набор костылей, равно так и в зоопарк паттернов. Умейте найти золотую середину. Это придет со временем и опытом.

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

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

Рассажи какую-нибудь историю связанную с геймдевом, программированием геймплея? Забавную или драматическую

Как-то раз на одной из моих предыдущих работ пришлось обновлять версию приложения, которая пролежала без апдейтов где-то год. С учетом различных платформ, работы было где-то на 2 недели минимум. Плюс оказалось, что нужно еще обновить версию под Unity WebPlayer, который на тот момент уже официально не поддерживался ни одним браузером. Когда же все было успешно закончено, нам сообщили радостную новость, что мы прекращаем поддержку данной версии игры и вообще удаляем его из всех магазинов. Это является одной из наглядных иллюстраций того, что иногда работа, которую делает программист может быть спокойно выброшена. И с точки зрения экономики или интересности проекта это будет абсолютно правильным решением. К подобным ситуациям стоит относиться спокойно и немножко с юмором. Мы с коллегами называли такие задачи «покраской травы».

С другой стороны, иногда случалось, что идеи, оформленные в виде прототипов и отложенные на неопределенный срок в виду тех или иных причин (сложность исполнения, нехватка ресурсов, недостаточно интересно и т.д.) возвращались спустя почти год, обретали новую жизнь и делали игру лучше. Лично для меня такие моменты – одни из самых любимых и мотивирующих.

Как стать разработчиком игр, если ты риелтор / Habr

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

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

Вы тепло приняли этот пост и это дало мне хороший толчок в нужном направлении. За эти два года я попробовал и научился многому: работал с 3D моделями, знакомился с C++, рисовал текстуры, записывал звуки, писал тексты и диз-доки, но самое главное – я нашел для себя подходящую среду разработки, а именно — божественный Unreal Engine 4.

Я не решался ничего писать до тех пор, пока не смогу сделать что-то, что сможет порадовать хотя бы меня. И, думаю, мне это удалось. Довольно приятно видеть тот большой и тернистый путь, который был пройден, чтобы, начав с картинки в начале статьи, дойти до того, что под катом 😉

Несколько месяцев назад я принялся за работу над игрой-новеллой, разработку которой я могу завершить самостоятельно, попутно используя наработки из прочих моих проектов на UE4.

Огромное количество доступных уроков и довольно отзывчивое комьюнити позволили мне окунуться в изучение движка с головой, попутно совмещая все это с моей основной работой. Сидя за компьютером до 3х – 4х часов ночи, я набирался опыта и постепенно понимал пределы своих возможностей.

Игра представляет собой квест-новеллу от 3-го лица, где игроку предстоит изучать город, который постигла ужасная участь. По мере прохождения, он будет знакомиться с другими персонажами, решать головоломки, изучать город и окрестности, знакомиться с лором мира и пытаться выяснить причины случившегося. Один из моих друзей описал сеттинг словами: «Пацифистичная помесь Ведьмака и Темных Душ». По большому счету так оно и есть, но с нотками Говарда Лавкрафта.

Но скриншоты это не все. Я даже создал демо-версию игры с одной из игровых локаций, включающую в себя и музыку, и тексты, и озвучку одного из персонажей. За озвучку, кстати, огромное спасибо студии GamesVoice, а так же актерам Андрею Астрову и Константину Федосееву. Может это звучит как реклама, но ребята предложили озвучить демку абсолютно бесплатно.

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

Скачать демку можно по этим ссылкам:

Яндекс.Диск 64-bit, 32-bit (Windows).

Google Drive 64-bit, 32-bit (Windows).

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

Эпилог

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

Чем занимается разработчик на C++ и как им стать? — Академия Яндекса

Разработчик на C++ занимается разработкой высокопроизводительных и высоконагруженных систем, таких как поисковики, драйверы, игры и приложения. Автор курса «Разработчик C++» в Яндекс.Практикуме Антон Полднев рассказал, как происходит процесс работы над задачами и какие навыки нужны для успешной карьеры разработчика на «плюсах».

Зачем нужен C++

C++ входит в десятку самых часто используемых языков программирования в рейтинге Stack Overflow. Его применяют для создания высоконагруженных сервисов, где важна скорость работы, таких как поисковые и рекламные системы, драйверы и операционные системы, игры и приложения, а также в разработке браузеров, потому что люди любят открывать много вкладок, а потом смотреть на зависающий компьютер. На C++ можно писать программы любой сложности, в том числе модели машинного обучения и программы для автопилотов.

Серверная часть многих классных и сложных приложений и систем написана на C++, среди них Adobe Photoshop & Illustrator, Spotify, YouTube, Amazon, Windows, MySQL. Например, в YouTube на C++ написана обработка видео, а у Amazon — обработка пользовательских запросов.

C++ — довольно старый язык, который существует с 1983 года. За это время появились языки попроще, например, Go. Go дружелюбнее к новичкам, на нём удобно создавать простые скрипты, например, для администрирования или инфраструктуры, такие как веб-серверы и микросервисы. Но на нём тяжело писать сложные вещи, для этого всё еще нужны «плюсы».

Достоинства и недостатки С++

С++ — один из самых популярных языков. У него есть свои достоинства и недостатки, которые на самом деле достаточно субъективны. Понять, нравится ли вам язык, можно не раньше, чем вы начнете его изучать.

Что делает разработчик C++

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

К тому же разработчик обладает определенной свободой, ему нужно не только проработать задачу, но и решить, как это сделать лучше всего. Если вы младший разработчик, вам помогут и подскажут. Но чем вы старше, тем больше уровень ответственности. Предположим, к вам приходит менеджер и ставит задачу: «Нужно сделать вот такую фичу». Его желания не всегда реализуемы, в такой ситуации опытный разработчик может ответить: «Нет, это очень сложно. Но мы можем сделать по-другому. Давай мы договоримся о более простом решении, которое тоже будет работать».

Определить, что будет лучше и проще, помогают опыт и понимание того, как работает конкретная система.

Со временем вы узнаете не только, как писать те или иные программы, но также и как на C++ писать не стоит

Приведу пример из моего опыта. Есть некоторый код, формирующий индексы, по которым другой код дальше должен что-то искать в реальном времени. Чтобы этот процесс происходил быстро, индексы нужно расположить определенным образом: один индекс ссылается на второй, второй на третий. С одной стороны, это занудный код и его тяжело писать, а с другой стороны, он повторяется в нескольких местах по единому шаблону. Суть в том, что в одном месте в этот код нужно было что-то дописать, и я грустил, что он повторяется. А есть мантра, что нужно избавляться от дублирования кода. Я придумал, как это сделать, использовал хитрые средства C++: шаблоны, макросы и лямбда-функции. Такое нагромождение помогло избавиться от дублирования, и задачу я решил довольно легко, но код оказался настолько сложным для понимания, что другие разработчики в дальнейшем его не использовали. Мораль в том, что копирование кода не является абсолютным злом и вообще абсолютного зла не бывает. Нужно всегда думать, кто ваш код будет использовать и насколько разработчикам после вас это будет комфортно.

Как строится работа над задачей

Получить задачу от менеджера проекта. Если менеджер понимает, как устроена разработка, то он подскажет, что конкретно надо поправить в той или иной функции, тогда разработчику остается только закодить. Но часто это не так и проработка задачи состоит в следующем:

  • понять, что конкретно надо написать в существующем проекте разработчику, который получил задачу
  • cостыковаться со смежными командами и сервисами, которые поставляют вам данные или которым данные поставляете вы

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

Протестировать программу. Сначала нужно запустить собственные тесты, затем — все старые, которые писали предыдущие разработчики, чтобы убедиться, что не сломалась текущая функциональность. Обычно этот процесс автоматизирован и с ним нет проблем.

Провести код-ревью. Попросить коллегу или наставника посмотреть ваш код и убедиться, что там всё хорошо.

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

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

Какие нужны навыки, чтобы начать писать на C++

Для того, чтобы начать обучение, достаточно иметь опыт программирования на любом языке, даже если это Delphi или Pascal. Если такого опыта нет, то перед обучением придется изучить основные понятия: функция, циклы, условные операторы и так далее.

Вот что надо знать джуниор-разработчику для работы.

  • Ключевые возможности языка: принципы объектно-ориентированного программирования, реализация алгоритмов, исключение, наследование, полиморфизм, циклы, функции, объявление, указатели, классы и так далее. Нужно понимать, как они работают, и уметь ими пользоваться.
  • Базовые компоненты: как создавать итераторы, конструкторы, шаблоны. Изучите не только базовую библиотеку, но и те, которые часто используют другие разработчики, например, STL и Boost.
  • Структуры данных и алгоритмы: нужно понимать, где и какие требуются для работы, и научиться выбирать подходящие для конкретной задачи. Например, линейный поиск, двоичный поиск, быстрая сортировка, хеш-таблицы, списки, деревья. Не обязательно уметь их программировать, потому что они есть в стандартной библиотеке, но стоит понимать их принципы работы и свойства.
  • Многопоточность: это одна из важных концепций, которые используются в работе. Ее применяют, когда есть несколько задач, которые могут работать параллельно.
  • Как писать эффективный код: написание такого кода включает в себя тестирование и проверку на безопасность. Нужно понять, какие проблемы могут возникнуть с производительностью, как их исправить, как оптимизировать поиск, использовать память, настраивать ограничения.

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

Для того, чтобы потренироваться в решении таких задач, есть разные сайты. Один из самых популярных — LeetCode. Если вы чувствуете, что не справляетесь с этими заданиями, нужно еще поучиться и поработать над собой.

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

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

Освойте разработку на C++ в Яндекс.Практикуме

alt

6 шагов, чтобы стать разработчиком игр

Итак, вы хотите знать, как создавать игры, не так ли? Здесь вы найдете все возможные советы, как стать разработчиком игр. Я должен вам сказать, что путь к тому, чтобы стать отличным разработчиком игр, труден и требует много времени. Итак, засучите рукава и приготовьтесь разрабатывать отличные игры и, надеюсь, заработать немного .

Игры — самые сложные в разработке цифровые продукты. Это почему? Потому что игры — это наиболее выразительная форма сочетания технологий и искусства.Чтобы добиться успеха, вы должны знать все, что связано с разработкой игр, и это будет непросто.

Шаг первый: определитесь со своей областью

Если вы хотите знать, как создавать игры, вы должны понимать, что вам нужно знать, чтобы сделать игру успешной:

  1. Технологии
    1. Игровой движок (Unity, Unreal и т. Д.)
    2. языков программирования (C #, C ++, Swift и т. Д.)
      1. Структура данных
      2. Алгоритм
      3. Образец проектирования
      4. ООП: объектно-ориентированное программирование
      5. Многопоточность
      6. Сетевые коммуникации
      7. Конечный автомат
      8. и т. Д. И т. Д.
  2. Физика (в основном интегрирована в игровой движок, но всегда хорошо иметь некоторые основы)
  3. Marketing: Без этого ваша игра бесполезна, потому что о ней никто не узнает
    1. Использование сайтов социальных сетей
    2. Продайте свою игру
    3. Создание контента для публикации (видео, снимок экрана и т. Д.)
    4. Горячая продажа вашей игры
    5. Геймификация
    6. и т. Д. И т. Д.
  4. Графика: это то, что видит пользователь
  5. Управление командой
  6. Управление проектами
  7. Игровой дизайн
  8. и т. Д. И т. Д.

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

Я знаю, что это большая работа, но уловка очень проста: «Divide et impera», как говорили римляне. Другими словами, разделите свои проблемы на более мелкие, чтобы решить большую проблему, которая в нашем случае: «Как сделать игру».

Начните с малого: Как развить свои навыки разработки игр:

Чтобы стать экспертом в одной из перечисленных выше областей, потребуется уйма времени, а в большинстве случаев это не нужно.А если вы станете экспертом во всем, вы можете стать «игровым продюсером».

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

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

С учетом сказанного, ваша главная цель для вашего первого проекта — не создавать красивые игры, а научиться их делать. . Поэтому, если вы думаете о создании следующего «World of Warcraft», я могу просто сказать: «Забудьте об этом и начните с чего-нибудь очень маленького и простого».

Пример :

Если я хочу начать учиться программировать с Unity, и это мой первый раз, я бы сделал следующее:

  1. Посмотрите все основные учебные пособия по редактору Unity
  2. Посмотрите все учебные материалы по основам Unity, посвященные программированию на C #.
  3. Создайте что-нибудь простое, чтобы применить полученные знания (максимум одна неделя)
  4. Начните снова с первого пункта, но узнайте что-то новое.

Как только вы изучите все основы программирования, вы сможете приступить к созданию своей первой небольшой игры (максимум 1 месяц). Когда это будет сделано, вы сможете узнать что-то новое и усложнить свои проекты. Постепенно вы сможете добавить больше навыков в свое портфолио и создавать лучшие игры . Но не совершайте распространенную ошибку, создавая что-то большое, не имея для этого навыков.

Ресурсы для начала изучения создания игр:

Если вы хотите научиться делать игры, вам нужно найти лучшие места для изучения ваших любимых тем.

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

Кроме книг, вы также можете использовать:

  1. Форумы по игровому движку (форум Unity, форум Unreal)
  2. Reddit полон сообществ разработчиков игр с множеством тем, связанных с индустрией разработки игр
  3. Платный или бесплатный курс: на таких сайтах, как Coursera или Udemy, например, есть множество бесплатных курсов, по которым вы можете пройти
  4. Youtube бесплатные обучающие программы

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

Не тратьте время зря: будьте продуктивны

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

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

Важно оценивать свои улучшения и сохранять мотивацию. Составьте план обучения на следующие два месяца, а затем начните заново.

Избегайте распространенной ошибки и не сдавайтесь

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

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

В качестве примера можно взять развлекательную систему Rovio. Прежде чем прославиться игрой Angry Birds, они разработали 51 неизвестную игру. Они не сдавались, пока не сделали это. Нравится вам это или нет, сейчас это мир разработки игр.

Помогите нам:

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

.

Как стать разработчиком игр

Регистрация
Авторизоваться

  • MMO
  • Стратегия
  • Стрельба
  • Действие
  • Приключение
  • Головоломка
  • Tower Defense
  • Холостой ход
  • Больше

    Категории

    • Многопользовательская игра
    • Кликер
    • Выживание
    • классический
    • Платформа
    • Армия
    • Война
    • Обновление
    • РПГ
    • Снайпер
    • Зомби
    • Ужас
    • Наведи и щелкни
    • Все категории

    Квесты

    • Последние квесты
    • Квесты
    • Доска героя

    Сообщество

    • Рейтинг игроков
    • Кузница
  • Форумы
  • Портал разработчика

    • Отправить игру
    • Armor Games Studios

Станьте поклонником Armor Games

  • Рекомендуемые
  • Последние


Soda Dungeon 2 уже доступна!


Скоро в игре — Последняя битва: Последствия


ITTA уже доступна!


Топ 5 новых игр


10 лучших игр 2019 года


Эпическая боевая фантазия 5


10 лучших головоломок


Эпическая боевая фантазия 5


Swords & Souls: Neverseen выйдет в Steam 22 июля!


Void Tyrant уже доступен!


Чук и Сосиг — ходьба по доске теперь доступна!


5 лучших кликеров


.

Как стать разработчиком игр

Работа в игровой индустрии требует относительно уникального сочетания творческих способностей и аналитического мышления.

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

Здесь мы рассмотрим, как начать разработку игр и что означает стать разработчиком игр.

Кто такой разработчик игр?

К разработчикам игр относятся технические и творческие специалисты.

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

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

Подробнее: разработчик игр Ребекка рассказывает о своей работе

Создание игры (иногда называемой «разработкой») от первоначальной идеи до готового продукта может длиться многие годы и требует больших команд сотрудников.

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

Чем занимаются разработчики игр?

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

Например, программисты будут работать в таких областях, как:

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

Огромные игры, такие как Fortnite или Red Dead Redemption , например, создаются обширными студиями разработки игр. У разработчиков игр, работающих в таких студиях, будет очень специализированная область.

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

Задачи разработчика игры, работающие над дизайном игры, могут включать:

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

Начальная зарплата разработчиков игр составляет от 19 000 до 25 000 фунтов стерлингов. Имея опыт, вы можете рассчитывать на заработок до 50 000 фунтов стерлингов. Старшие разработчики игр зарабатывают до 75 000 фунтов стерлингов, а иногда и более.

Какие навыки мне понадобятся?

Чтобы стать разработчиком игр, вам понадобится определенный набор навыков, качеств и характеристик:

  • Технические и ИТ-навыки (хотя не все роли в разработке игр требуют навыков программирования или кодирования).
  • Посвящение и приверженность.
    Как стать разработчиком игр: опыт работы имеет решающее значение
  • Способен проявлять инициативу.
  • Работа в команде: в создании игры участвуют самые разные профессионалы.
  • Коммуникация: возможность объяснить ваши идеи коллегам и руководителям.
  • Творчество, особенно когда дело касается решения сложных технических проблем.
  • Адаптируемый и способный изменить подход, если что-то не работает.
  • Хорошие навыки тайм-менеджмента и умение соблюдать сроки.
  • Все продумано до мелочей.
  • Стремится постоянно узнавать об игровой индустрии и развивать свои навыки.

Тим Никсон, разработчик игр и директор по работе с сетью в калифорнийской компании That Game Company, сказал нам, что самое важное, когда дело доходит до работы в разработке игр, — это возможность продемонстрировать свою работу в игровой игре.

Он сказал: «Независимо от того, являетесь ли вы художником, писателем, программистом, дизайнером или музыкантом, возможность показать игру, которая включает в себя вашу работу, не только показывает, что вы понимаете инструменты и конвейер, необходимые для выполнения вашей работы, но и вероятно, показывает, что вы можете работать в команде.Разработка игр — это очень совместная работа, поэтому найдите группу местных студентов или разработчиков-любителей и объединитесь для создания демонстрации ».

«Если вы хотите взять на себя всю задачу, такие инструменты, как Unity и Game Maker, упростят, как никогда, создание и запуск вашей собственной игры, а в Интернете есть так много бесплатных ресурсов, которые научат вас их использовать. . Если вы еще учитесь в школе или университете, попробуйте найти способ использовать эти инструменты в своих заданиях. Чем больше у вас будет практики, тем лучше выйдет ваше окончательное портфолио, и в конечном итоге все будет сводиться к тому, насколько увлекательными и хорошо представлены те первые несколько минут игры, которые вы дадите своему потенциальному работодателю.”

Как стать разработчиком игр…

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

  • Математика.
  • Физика.
  • Компьютерные игры (разработка или дизайн).
  • Программирование компьютерных игр.
  • Информатика.
  • Программная инженерия.

Ассоциация независимых разработчиков игр (TIGA) предоставляет список аккредитованных игровых курсов.

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

Подайте заявку на получение опыта работы в отрасли и убедитесь, что ваши знания в этой области актуальны.

Читать дальше: Студент игрового дизайна Эндрю делится своим курсом

Основное изображение (Fortnite) через Flickr; разработчик игр и игра через Pexels.

.

Как стать разработчиком игрового движка — Гарольд Серрано

Вот шаги:

Шаг 1. Изучите линейную алгебру

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

Шаг 2. Изучите C ++ (или любой другой язык по вашему выбору)

Далее научимся программировать.Предлагаю изучить C ++. На этом этапе вам не обязательно быть экспертом в кодировании. Но узнайте о классах, методах, наследовании, полиморфизме и инкапсуляции.

Шаг 3. Разработка математической машины

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

Шаг 4. Изучение компьютерной графики

А теперь самое интересное.Познакомьтесь с концепциями компьютерной графики, особенно с конвейером рендеринга и шейдерами. На данный момент избегайте кодирования и использования OpenGL API. OpenGL API сложно понять, если у вас ограниченные познания в концепциях компьютерной графики.

Шаг 5. Изучите OpenGL и выполняйте множество проектов

Как только вы освоитесь с концепциями компьютерной графики, узнайте об OpenGL API и OpenGL Shaders. Выполняйте как можно больше проектов. Узнайте, как отображать символы, как вращать и переводить символы.Узнайте, как текстурирование и освещение работают с OpenGL. Опять же, это самая интересная часть, и я предлагаю выполнить как можно больше проектов.

Шаг 6. Изучение шаблонов проектирования

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

Для разработки API вам необходимо изучить шаблоны проектирования.Наиболее распространенными шаблонами проектирования являются Singleton, Observer, Strategy, Composite, Factory и другие.

Шаг 7. Разработка механизма рендеринга

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

Шаг 8: Просмотрите законы движения Ньютона

После того, как вы завершили работу с движком рендеринга, пора поработать над самой сложной частью движка, то есть с Physics Engine.

Хорошая новость заключается в том, что вам не нужно быть физиком, чтобы разработать Physics Engine, но вам нужно знать законы движения Ньютона и то, как они реализуются с использованием таких алгоритмов, как алгоритм Рунге-Кутта.

Шаг 9: Изучение алгоритмов вычислительной геометрии

Игровой движок — это не игровой движок без обнаружения столкновений. Чтобы разработать систему обнаружения столкновений, вам необходимо изучить алгоритмы вычислительной геометрии, такие как GJK, BVH и Sutherland-Hodgman.Эти алгоритмы используются для определения того, произошло ли столкновение, где оно произошло и какие объекты могут столкнуться с наибольшей вероятностью.

Шаг 10: Разработка физического движка

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

Шаг 11. Разработайте игру, протестируйте и повторите

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

Книги для начала работы

Вот список книг, которые помогут вам начать работу:

3D-математика

  1. Учебник по 3D-математике для разработки графики и игр

Механизм рендеринга

  1. OpenGL Superbible: подробное руководство и справочник
  2. Графические шейдеры: теория и практика, второе издание

Физический двигатель

  1. Физика для разработчиков игр: наука, математика и код для реалистичных эффектов
  2. Разработка физического движка игры: как создать надежный физический движок коммерческого уровня для вашей игры
  3. Обнаружение столкновений в реальном времени

Надеюсь, это поможет

.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *