Как стать разработчиком по: Как стать профессиональным веб-разработчиком: практическое руководство / Habr – Как стать программистом / Habr

Содержание

Как начать разрабатывать игры даже если до этого вы были бухгалтером / Habr

До того как я стал разработчиком игр, я (да и все в моем окружении) считал себя дизайнером сайтов.
Не плохим, кстати, но дизайнером сайтов. Профессия, которая почти никак не используется в разработке игр.

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

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

Шаг 0. Станьте разработчиком игр

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

Уверен, что у вас уже есть какая-то профессия. Также я уверен, что Вы каждый день посещаете сайты/форумы, связанные с вашей профессией, читаете блоги и, может, даже книги.
Первое, что надо сделать, чтобы стать разработчиком игр:
  • Начать посещать сайты, связанные с тематикой игр и разработкой игр.
  • Подписаться на блоги разработчиков, творчество которых вам нравится.
  • Купить пару книг в “киндл” на амазоне, например, о игровом дизайне.

Все, вы разработчик игр. Действительно, элементарный шаг вам может дать доступ к столь “закрытой” профессии как разработчик игр. Правда, без опыта и регалий, но никто (

ни вы, ни окружающие) уже не оспорит, что вы разработчик игр.

Шаг 1. Найдите себе применение как разработчику игр

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

Слова “найти проект” для каждого разработчика игр значат разное, вот список популярных способов поиска проектов:


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

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

Вот некоторые советы для прохождения этого шага:

  1. Начните что-то свое. Свое от идеи до реализации в одиночку. Даже если у вас есть навыки программирования или вы сносно рисуете, — не вступайте в существующие проекты. Сделайте что-то небольшое, не требующее серьезных навыков.
    Например, я сделал маме подарок на НГ — 3д-игру по психологической методике:
    У меня не было опыта разработки на C# и программировать я особо не умел (немного знал python) и никогда до этого не моделил.
  2. Скажите себе кодовую фразу: “Если кто-то смог, я тоже смогу”. Как бы вы ни были готовы к игровому проекту, всегда будет задача, с которой вы никогда не сталкивались. Например, даже у опытных программистов программного обеспечения, часто нет опыта создания шейдеров. Скажите себе кодовую фразу и учитесь по ходу
    .
  3. Найдите себе единомышлеников. Мне в моем развитии очень сильно помогли: скайп-чатик разработчиков социальных игр (теперь уже создатели: Голос Припяти 3D, Tanks Heroes, Contract Wars, Батла и многие другие), а также одногруппники из Scream School по курсу гейм-дизайна. Их успех будет вас подталкивать, а обмен опытом ускорит процесс развития.
  4. Выберите себе платформу для разработки. Определите платформу, которая вас устраивает. Это может быть, например, Unity — за ее возможности, огромное комьюнити и сравнительно низкий порог входа. Вне зависимости от платформы, станьте ее евангелистом. Это позволит вам наладить коммуникацию с другими разработчиками и быстрее развиваться.
  5. Не давайте эмоциям взять вверх. Ошибки и неудачи станут вашими спутниками на длительный период, а если вы будете делиться процессом развития с русскоговорящими разработчиками, будьте готовы к
    тоннам говна
    большому количеству негативных отзывов. Не позволяйте эмоциям брать вверх: слушайте любые отзывы и предложения, но относитесь ко всему с необходимой критикой. Сохраняйте критичность ума.

Шаг 2. Помогите себе закончить хотя бы ОДИН проект!

Если вы закончили свой первый проект как разработчик игр, скорее всего, вы что-то делали не так. Даже эпилептоид не сможет закончить свой первый проект, а к первому релизу у него в архиве будет пара-тройка (минимум) замороженных проектов. Это нормально. Мы учимся на своих ошибках, а не совершают их только идиоты или те, кто ничего не делают.
Но в какой-то момент нужно будет собрать весь свой опыт, полученный из проб и ошибок, и, наконец, сделать свой первый релиз.
У каждого разработчика своя история первого релиза, но у меня есть пару советов, которые обязательно вам помогут:
  1. Вгоните себя в экстремальные условия, а выходом из них сделайте релиз. Поставьте себе реальный, но очень сжатый срок на релиз, например, 48 часов или неделю, но спать будете по 4 часа в день. Это даст сильный толчок, заставит оптимально использовать время и сфокусироваться на результате.
    • Сжатые сроки
      Сжимая сроки, не оставляйте себе время на риск. Сжимайте до последнего, пример с 48 часами — хороший.
    • Отсутствие сна
      Полное или почти полное отсутствие сна хороший мотиватор, но не доходите до крайностей. Практика показывает, что даже молодому организму надо давать отдых.
    • Менеджмент времени
      Не стоит выделять много времени на тайм-менеджмент, но не забывайте ставить себе вехи (milestone). Например, скажите себе, что через 5 часов вам надо сделать играбельный прототип.
      Например, в своем первом 48 часовом марафоне (на нем я только рисовал), я за первую треть времени нашел стиль игры, нарисовал основной, игровой экран и все спрайты врагов. И за оставшееся время сделал 170+ спрайтов анимации и дорисовал интерфейс.

    • Конкурсы, особенно мероприятия, типа, HackDays или Ludum Dare, где нет времени на раздумья и надо сразу бросаться в работу, — отличное подспорье для пунктов выше.

  2. Поставьте себе рамки. Для первого релиза, особено в сжатые сроки, критически необходимо знать рамки проекта. Выпишите себе минимум, что нужен для релиза, и не выходите из него. По необходимости:
    • Урежьте список возможностей
      Было бы здорово сделать возможность летать на самолетах, но если вы делаете шутер про пехоту, сфокусируйтесь на стрельбе.
    • Сократите время игры
      Вероятно, вы рассчитывали сделать синглплеер на 5 часов игры, но вы останетесь победителем с демкой на 20 минут.
    • Уберите часть контента
      Конечно, дополнительная карта не будет лишней для вашего тактического шутера, но релиз останется релизом даже с одной картой.

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


Шаг 3. Сделать полноценный релиз

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

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

  1. Делайте проект каждый день. У всех начинающих инди есть занятия, с которыми приходится совмещать разработку. Но не забывайте добавлять хотя бы
    одну строчку
    кода или новый спрайт в игру каждый божий день. Это очень важно, это пункт номер 1.
  2. Ставьте себе небольшие задачи и старайтесь выполнять их каждый день. Долго открытая задача, например: “разработать систему инвентаря”, может быстро превратиться в “висяк” с очень низким приоритетом. Поставьте задачу “Интерфейс основного окна инвентаря” и закройте в этот же день, а затем радуйтесь прогрессу.
  3. Два шага вперед, один в сторону. Какой бы разнообразной вы ни планировали игру, не стоит делать сразу 50 типов врагов и тысячи уровней. Сфокусируйтесь на реализации возможностей игрока, а не способах их проявлений. Делаете слешэр? — Реализуйте возможность рубить врага, а врагов клонируйте.
  4. Прототипируйте. Когда вы сфокусированы на настоящем релизе, необходимо отдавать себе отчет, что игра должна быть хорошей. Проверить это можно, прототипируя.
  5. Вы делаете игру. Не стоит делать из своей игры движок или фреймворк. Нет, я не про чистоту кода или возможность его переиспользовать. Работайте хорошо, и результат будет хороший. Не стоит реализовывать возможности до того, как поймете, что они действительно необходимы вашей игре. Например, если вы не уверены, что будет возможность менять цвет одежды героя, не стоит рисовать маску для смены цвета в шейдере. Убедитесь, что ваш дизайн подразумевает наличие предметов перед тем, как создать класс Item.
  6. И главное… Не бойтесь вернуться на шаг 2. Возможно, еще не время для настоящего релиза.

Удачных вам релизов и быстрого развития.

Как стать разработчиком | Про профессии.ру

 

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

Чтобы стать любым разработчиком в IT сфере, сперва нужно обучиться какому-либо языку программирования. К примеру, если выбрать путь веб разработчика следует изучить php, если андроид разработчиком — учить jawa.

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

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

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

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

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

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

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

Стать разработчиком сайтов легче, чем каким-либо другим разработчиком. Веб разработчикам не требуется логическое мышление и хорошее знание математики, как другим разработчикам ПО.

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

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

Можно обучаться коду на обычных ресурсах. В браузере нажав ПКМ и выбрав «Посмотреть код» выведется окошко с веб кодом, который уже обученный разработчик может прочитать, а новичок разобраться и обучиться.

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

Стать разработчиком игр трудновато. В одиночку разрабатывать качественные игры очень трудно. Разработчик игр, если он хочет создавать игры в одиночку, должен обладать знаниями:

  • режиссера,
  • дизайнера,
  • художника,
  • музыканта,
  • программиста.
  1. Во-первых, нужно создать идею игры, что там будет и какой сюжет.
  2. Во-вторых, нужно создать модели игроков, предметов и их анимацию.
  3. В-третьих, требуется рисовка локаций, уровней и других составляющих.
  4. В-четвертых, требуется хорошая музыка и озвучка героев.
  5. И только в конце уже требуется соединить все составляющие в программном коде, после чего и получится игра.

Именно поэтому в одиночку и без знаний стать разработчиком игр очень трудно.

Некоторые программы которые используются для создания игр: C#, 3DS MAX, Photoshop, 9.3 MAGIX Music Maker, Unity3d .

Как стать мобильным разработчиком

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

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

Стоит завестись связями с другими разработчиками, возможно, им нужен будет стажер, а затем уже коллега.

Возможно Вас заинтересуют:

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

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

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

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

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

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

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

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

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

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

Скачать демку можно по этим ссылкам:
Яндекс.Диск 64-bit, 32-bit (Windows).

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

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

Эпилог

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

Как стать разработчиком игр. Профессия мечты.

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

Привет, ребята!

Частые вопросы, который я получал от Вас: Что нужно, чтобы стать разработчиком игр? Как стать разработчиком игр? Что нужно изучить? С чего начать?

*Для тех, кто со мной не знаком вкратце: я игровой программист, программирую геймплей в крупной игровой студии в Спб, интересуюсь программированием графики.

Решил подробно ответить на такие ваши вопросы. Прежде всего, «разработчик игр» это не обязательно программист. Game developer (с англ. разработчик игр) — это общее название для многих профессий, которые занимаются разработкой игр. Это и геймдизайнеры, и артисты (от англ. Artists), и программисты, и менеджеры и тестировщики. И каждая из этих профессий, вы удивитесь, не является конечной специализацией разработчика.

Например, артисты — это и 3d-моделлеры, и художники, и аниматоры. Программисты — это и геймплей программисты, и графические программисты, и tool-программисты. И, как говорится, в детском стишке — все профессии нужны, все профессии — важны!

C чего начать?

Прежде всего: задумайтесь, когда вы представляете радужные перспективы работы-мечты, что именно вы бы хотели делать «разрабатывая игру»? Что именно вы думаете Вам больше всего понравится? Писать сценарий/сюжет? Рисовать персонажей? Планировать уровни?

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

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

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

Ответ: Никак! Никакие курсы — тем более дрянные от geekbrains, или курсы от «разработчиков игр», которые сами не практикуют разработку, не могут обучить новичка с нуля ВООБЩЕ! И уж тем более — быстро.

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

Так как же стать разработчиком игр?

Ответ: Упорной работой, усердием. Какую бы область/профессию ты бы не выбрал. Если ты еще в школе — отлично! Ты еще можешь выбрать нужную ветку развития в этой РПГ 🙂 Выбери ВУЗ или колледж с соответствующей специальностью и готовься к поступлению.

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

А как же инди? Как сделать инди игру?

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

Несколько советов

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

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

— Изучи какой-то бесплатный движок вроде Defold, Unity или GameMaker.

— Постарайтесь изучить основы как можно раньше.

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

— Постарайся переносить падения стоически! Бой проигран, а война еще впереди!

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

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

Как Вам такая идея? Ведь у меня в студии работают самые крутые представители своих профессий! А кого-то я могу выловить из бывших коллег, сейчас они работают в известнейших студиях: Nival, Wargaming, Saber.

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

*далее в списке ссылочками будут отмечены готовые статьи

Профессии в геймдеве

Что нужно от Вас?

Нужны ваши голоса за темы в комментариях, клики по кнопкам расшарить ниже (серьезно именно они очень нужны). Вопросы к специалистам в комментариях, ни один не останется без ответа! Я прослежу.

P.S.

Серьезно очень стараюсь найти тех, кто не против дать интервью и рассказать о профессии, подготовил много разных вопросов, попросил довольно много людей, но я понимаю — у всех занятость на 25/8.

Как стать хорошим разработчиком? | KV.by

Пользователи сайта Quora поделились своим мнением по поводу того, как стать высококлассным разработчиком. Самые интересные ответы — в нашем материале.

 

Майк Циаральди, занимаюсь программированием уже 50 лет

Вот список советов, которые помогли мне добиться этого. (и, да, я считаю, что я более чем великолепен в разработке и внедрении систем программного обеспечения. Не Линус Торвальдс или Ричард Столлман, конечно, но тоже далеко не последний в списке.

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

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

3. Изучите основы компьютерной науки: как функционирует аппаратное обеспечение, как именно выполняет свою работу компилятор, каким образом работают различные алгоритмы. Разберитесь, как анализировать алгоритм, учитывая то, как много времени, памяти и прочих ресурсов ему понадобится для выполнения вашей задачи. Подобный анализ сможет показать вам, целесообразно ли использование того или иного алгоритма. Знаете ли вы, что означает «NP-полная задача»? Вам необходимо знать.

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

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

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

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

 

 

Тим Бодро, на данный момент работает в компании Oracle Labs

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

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

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

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

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

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

Кроме того, существует список того, что не нужно делать, чтобы стать великим программистом:

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

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

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

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

5.  Не ввязывайтесь в проекты, в которых вы не сможете научиться чему-то новому.

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

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

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


Равичадран Джейв, Full stack-разработчик структуры программного обеспечения

1. Создавайте все, что угодно: игры, дизайн, анимацию.

2. Полюбите ошибки. Внимательно просматривайте каждое сообщение об ошибке. Станьте истинным фанатом ошибок. 

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

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

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

6. Следите за здоровьем. Какое-то время, пока мой компьютер компилировал, я поднимал гантели и ходил с ними из одной комнаты в другую, а потом выходил в коридор и шел обратно. Кодовая база тогда состояла из 15 000 строк – и это действительно большая цифра для компиляторов Clipper и Turbo C, так как им необходимо было сгенерировать объектный код для компоновщика, а с оперативной памятью в 256 Mb этот процесс проходил крайне медленно. Поэтому процесс поднимания и хождения с гантелями растягивался иногда на 30 минут, но именно это и помогало мне оставаться в хорошей физической форме!

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

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

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

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

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


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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

Инструкция начинающего разработчика игр / Habr

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

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

И так Вы решили сделать свою игру, о чём Вам нужно подумать…

Думаем – нужно ли это тебе

Перед тем, как за что-то взяться, необходимо всё обдумать. А перед тем, как заняться разработкой игр, необходимо обдумать всё очень хорошо. Очень часто начинающие разработчики, достигнув определённых успехов в чём-то (сделал мод для игры, небольшой фан-сайт и пр.), начинают грезить созданием своей игры. Это происходит из-за того, что они имеют слабое представление о процессе разработки игр.

Я перечислю основные ошибки в их представлении:

  • Нет романтики. Многие начинающие разработчики, наигравшись вдоволь в игры, приходят к мысли, что создавать игры также интересно, как и играть, только чуть-чуть сложнее. Это очень частая ошибка. Чем больше и сложнее игра тем, скучнее и безынтереснее процесс её разработки. Романтики совершенно нет.
  • Трудно и даже невозможно. Многие после нескольких (или даже одного) успешного проекта наполняются уверенностью, что написать игровой проект им по силам. На самом деле, игры – это одно из самых сложных направлений разработки. И чем «серьёзнее» игра, тем проект сложнее. В процессе создания игры разработчик может столкнуться с нерешаемыми проблемами, которые убивают на корню энтузиазм даже у самых упёртых.
  • Отвращение к играм. Со временем у каждого матёрого разработчика игр развивается отвращение к играм. Сначала просто они становится менее интересными. Затем начинаешь замечать, что они вовсе не интересны, а интересно только, как они работают. Чем дальше, тем хуже.
  • Конкуренция и качество продукта. Играми занимаются многие студии и независимые разработчики. Существует своеобразный «уровень вхождения» в этот бизнес. Сейчас нельзя сделать успешную игру, нарисованную акварелью (да, такие игры встречались в начале 2000-х). Она просто не выдержит конкуренции. Соответственно, абы что не сделаешь. Тут скрывается важный психологический момент – начинающий разработчик вынужден делать хороший продукт, иначе он будет испытывать постоянное чувство страха неуспешности своего продукта.
  • Время и ресурсы. И самая распространенная ошибка – это то, что ресурсов (время, деньги, знания) им хватит. Чтобы понять объём работ, читайте следующие пункты.

Концепция и ТЗ

Когда-то давно я написал довольно неплохую статью о концепции проекта. За последние пару лет мои взгляды слегка поменялись, но суть осталась та же.
  • Что же такое концепция? Концепция игрового проекта — это документ, описывающий цели, задачи, основные особенности проекта, исследование рынка и целевой аудитории, условия его выполнения. Также, так как проект игровой, обязательно описание игровой механики, игровых понятий, примерный сценарий и концепт-арт. Если Вы ещё рассчитываете делать проект не в одиночку (что весьма вероятно), то понадобится ещё техническое задание (ТЗ) – документ, содержащий описание необходимых работ, сроки и условия.
  • Зачем нужна концепция? Очень хороший вопрос. Зачем заниматься какой-то «писаниной», когда нужно собирать команду и писать код?
    В первую очередь концепция нужна, чтобы самому получить полноценное представление о конечном результате и оценить объём работ. Без чёткой и продуманной концепции у Вас в итоге получится, соответственно, противоречивая и непродуманная игра. Без концепции существует большая вероятность возникновения ошибок организации игровой механики или ошибок реализации.
    Во вторую очередь концепция нужна для того, что бы другие поняли то, что Вы хотите сделать. Все члены команды должны работать над одним общим проектом. Об этом общем проекте члены команды узнают из документа концепции проекта. Это нужно, чтобы не было расхождений в представлениях о конечном результате. Если Вы решили создать игру и для этого собираете команду, то первые вопросы от будущих членов команды будут: «А что предстоит мне сделать? Что в итоге мы должны получить?». Вы должны будете им предоставить концепцию проекта и ТЗ. Без концепции и ТЗ Вы не привлечёте ни одного нормального специалиста.
  • Объёмы. Весьма интересен вопрос объёма концепции. Тут необходимо отталкиваться от сложности игры и её разработки. Если у Вас простая игра, Вы работаете один и Вы способны удержать идею игры в своей голове, то можно вообще не писать концепцию. Если удержать в памяти все моменты нельзя, то необходимо перенести их на бумагу (или другой носитель). Если Вы будете работать в команде или использовать помощь других людей (инвесторы, художники и прочие), то Вам просто необходима развёрнутая концепция и ТЗ для каждого человека. Критерий один – понятность. Нужно чтобы любой человек, ознакомившись с концепцией и ТЗ, представил конечный результат, так же как и Вы.
    Обратите внимание на то, что, если Вы понимаете свою концепцию, то это не значит, что её поймут другие. Написание концепции выполняет роль «лакмусовой бумажки». Если Вы не можете написать понятную концепцию (примерно, 5 страниц для небольшой игры, несколько десятков страниц для большой), то вряд ли Вы закончите в итоге проект.
  • Детальность. В концепции должны быть ответы на все вопросы. После прочтения концепции должно сформироваться полное представление о проекте. Специалисты первым делом смотрят на концепцию, если концепция окажется для них не полной и непонятной, то они не будут с Вами работать.
    Отдельно стоит упомянуть концепт-арт. Он должен быть, хотя бы в простейшем виде. Он является доказательством решения проблемы с контентом, содержимым игры (смотрите следующий раздел).
  • Русский язык. Для многих это серьёзная проблема. Если документ концепции содержит множество грамматических, орфографических и синтаксических ошибок, то ни один специалист не воспримет его всерьёз. Помните: незнание русского языка очень вредит бизнесу.
  • Время. Желательно в сразу в ТЗ указать сроки выполнения работ. Проблема в том, как оценить это время, если никогда подобным не занимался. Точно ответа на этот вопрос Вы никогда не получите, всё придёт с опытом. Я только дам один совет: учитывайте не только время разработки, но и время на исправление ошибок (примерно 50% от времени на разработку).

Контент

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

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

Разберём основные моменты этого раздела.

  • Сложность. Это самая главная проблема в вопросе контента. Оказывается, в большинстве случаев подготовка контента является самой сложной задачей, сложнее написания программного кода, сложнее тестирования и отладки, и сложнее реализации игры. Естественно, если игра маленькая, то это не так заметно, а если большая, то на долю создателя контента выпадает до 80% работы по проекту.
  • Объёмы. Часто из-за того, что разработчики никогда не выполняли задачи создателей контента, им очень сложно оценить объёмы. Кажется, что там такого ¬– пара десятков картинок и 3-4 звука. Но если посчитать, то получается 40 крупноразмерных изображений, 400 мелких изображений, два десятка звуков (я привел пример среднестатистической BMMORPG). Хорошо, что это всё можно подсчитать при подготовке концепции.
  • Качество. Во-первых, надо понимать, что игроки работают непосредственно с контентом. Во-вторых, надо помнить, что существует огромное количество игр-конкурентов с хорошим контентом. Можно сделать вывод: игра с плохим контентом будет не конкурентоспособна, т.е. контент в игре должен быть высокого качества.
  • Время. Вполне логично, что на подготовку больших объёмов качественного контента уходит очень много времени. Времени уходит больше, чем на все остальные направления вместе взятые (маленькие игры не в счёт). Учитывайте это, когда будете планировать и рассчитывать сроки.
  • Стоимость контента. Хороший контент стоит «хороших» денег. Очень «хороших» денег, которых у начинающих разработчиков игр обычно нет. Многие разработчики питают иллюзорную надежду найти «бесплатного» создателя контента (или дешёвого). Найти можно, но он либо будет создавать низкопробный контент, либо создаст для Вас немного контента, а затем переметнётся к тем, кто будет ему платить. Короче говоря, «бесплатного» создателя хорошего контента Вы никогда не найдёте. Именно по этой причине нет хороших «OpenSource» игр.
  • Воровство. Из-за существования проблемы дорогого контента, иногда появляются разработчики игр, которые его воруют. Мол, что такого?.. возьму-ка я из этой игры десяток картинок, а фоновые изображения найду на DA, а в качестве фоновой музыки поставлю пару любимых песенок Rammstein. Проблема в том, что авторское право контента достаточно легко подтвердить. У «жертвы» воровства есть либо исходные файлы контента, либо документ о передаче контента от его создателя. Для воров контента очень велик шанс нарваться на статью 146 УК РФ.
  • Единый стиль. Ещё один важный момент, о котором часто забывают. Что бы игра смотрелась цельной и продуманной, ей нужно иметь единый стиль. Создатели контента не роботы, поэтому делают работы в своём индивидуальном стиле. Отсюда можно сделать вывод: желательно чтобы содержимое игры создавало как можно меньше человек.
  • Дилемма. После прочтения описанных выше моментов можно построить следующую цепочку: Конкурентоспособная игра требует использование качественного контента. Качественный контент может сделать только профессиональный создатель контента. Профессиональный создатель контента стоит недёшево. Решений данной проблемы всего лишь три:
    1. Не делать игру, то есть отказаться от направления разработки игр.
    2. Найти инвестора. Но тут сразу нас поджидает проблема концепт-арта. Кто будет подготавливать концепт-арт, если нет денег на художника? А без концепт-арта никто не будет инвестировать в Вас.
    3. Решать проблему собственными силами. То есть кто-то из членов команды должен быть создателем контента и должен получать зарплату, даже если все остальные сосут палец.
Программирование

Как ни странно, создание программного кода для игр не является самой сложной задачей, но в тоже время и не является простой.
  • Команда. В отличие от создателей контента программистов для своей команды найти легко. Это объясняется тем, что при определённом уровне подготовки написание программного кода игры не такая уж сложная задача. Можно найти «бесплатных» программистов, готовых работать ради интереса. А за плату и «имя» (упоминание, как разработчика игры) можно найти программиста, который будет писать хороший годный код. Но… сейчас не начало 2000-х и программисты поумнели. Первым делом адекватный программист попросит разработчика продемонстрировать концепцию и ТЗ. Затем спросит про создание контента или финансирование, которое пойдёт на его создание. Специалисты прекрасно понимают, что незачем вкладывать силы в изначально провальный проект. Если у Вас нет концепции и не решен вопрос с контентом, то нормального программиста Вы не найдёте.
  • Сначала делаем большое, потом маленькое. Достаточно простой совет, но ему чаще всего не следуют. Игровой проект в большинстве случаев сложен и имеет множество зависимостей. Все это сложно просчитать на уровне составления концепции, частенько приходиться что-то менять в планах. Поэтому, чтобы не выполнять двойную работу, сначала необходимо сделать общую работающую конструкцию (прототип), а затем углубляться в детали.
  • Что сначала контент или код? Прочитав раздел про контент, Вы уже, наверное, поняли, что современные игры основаны на контенте, а не на программировании. Отсюда дилемма – код подгонять под контент или контент подгонять под код. Оба подхода имеют место в современном процессе разработки. Если подгонять код под контент, то нагрузка падает на программиста, время разработки увеличивается. Это дешёвый способ. Если контент подгонять под код, то нагрузка с программиста спадает, и при учёте, что контент подготавливают наёмные работники, время разработки сокращается. Это дорогой способ, так как нагрузка падает на наёмных создателей контента. Заранее оцените ситуацию и придерживайтесь одного из подходов.
  • Нерешаемые ошибки. Это даже не проблема, а предубеждение. Разработка игры весьма сложный процесс. Бывает, что разработчик сталкивается с нерешаемыми проблемами (либо решаемыми крайне тяжело) и ему приходиться пересматривать чуть ли не весь проект. Психологически это очень трудно. Многие, даже самые упёртые разработчики, попав в такой «тупик», теряют энтузиазм и закрывают проект. Предубеждение в том, что все считают, что с ними такого не случиться. Совет один: будьте психологически готовы пересмотреть весь проект и выполнить работу заново.
  • Журналы. Совет лично от меня. Ведите три журнала:
    1. Журнал выполненной работы по проекту для отслеживания динамики разработки;
    2. Журнал идей по проекту, чтобы не забыть их и, если возможно, включить в концепцию;
    3. Журнал найденных багов и ошибок, которые необходимо исправить в будущем.
    Эти три журнала помогут избежать ошибок и двойной работы в процессе разработки.
  • Время. При определении времени, которое планируется на написание кода, часто делают одну ошибку – не учитывают затраты времени на исправление багов и отладку кода.
  • Авторство программного кода. Определённый «маразм» наблюдается, у некоторых программистов. Они считают, что обладают абсолютными правами на код, который ими написан, что даже после релиза игры они могут предъявить права на «часть кода» игры. Что бы защитить это «священное» право они могут пойти на всякие низости (программные бомбы, бакдоры, отказ от передачи исходных кодов и прочие). Мой совет прост – остерегайтесь таких неадекватных программистов. Программный код не контент. Доказать его авторство очень сложно. Поэтому нормальный программист сначала договаривается, что он получит за код; затем его пишет; потом передаёт разработчику и получает вознаграждение; после чего уже ни на что не претендует. Также должно быть организовано и в команде.

Тестирование

О тестировании начинающие разработчики обычно не задумываются, а зря, так как на него тратиться немногим меньше времени, чем на написание программной части. В этом разделе есть два важных момента:
  • Тестирование сторонними людьми. В процессе разработки тестирование проводиться в основном своими средствами. Со временем глаза привыкают к имеющимся игровым моментам, вырабатываются умение работать в данной системе, короче, ошибки становятся менее заметными. Поэтому устраивайте периодические тесты продукта сторонними людьми, которые никогда не видели ваш продукт. Следите за их реакцией на различные игровые моменты, как они воспринимают меню игры и, вообще, расспросите их общее впечатление. Поверьте мне, один такой тест даст Вам очень большой объём полезной информации. Проводите их чаще, прислушивайтесь к обратной связи, и Вы получите на выходе хорошую игру.
  • Женщины. Когда-то я написал неплохую статью про женщин и игры. Смысл в том, что женщины видят всё по другому. Поэтому, желательно, чтобы в тесте игры участвовала хотя бы одна женщина (девушка), даже если игра не рассчитана на женскую аудиторию. Их обратная связь будет невероятно полезна.
Организационные моменты
  • Команда. Как Вы могли догадаться, созданием таких проектов, как игры, лучше заниматься командой. Это обосновано тем, что создание контента совершенно другой вид деятельности отличный от программирования и организации проекта и одному заниматься такими разными видами деятельности сложно. Минимальная команда – это два человека, создатель контента и разработчик. Чтобы не было непонимания, уточню – наёмный работник, по-моему, тоже в какой-то мере член команды.
    Конечно, можно заниматься разработкой и в одиночку. Есть такие «сумасшедшие», которые и пишут код, и рисуют графику, и сочиняют музыку, но это их проблемы.
    Собрать команду при наличии финансирования легко – форумы программистов и создателей контента, биржи фрилансеров Вам в помощь. При отсутствии финансирования можно найти только программиста, а вот нормального создателя контента не найдёте – здесь надо надеяться либо на себя, либо на удачу.
  • Юридическое оформление. Здесь всё просто. Хотите иметь с игры деньги и обезопасить себя от рейдерского захвата (когда кто-то внаглую ворует вашу игру), то вам нужно юридическое оформление на уровне индивидуального предпринимателя. Если Вы ещё собираетесь распределять проект по долям, то нужно оформление на уровне ООО. Поэтому если при поиске членов команды Вы обещаете долю в проекте, то не удивляйтесь, что Вас будут просить предъявить реквизиты вашей организации.
  • Контакты. Никогда не пренебрегайте знакомствами. Знакомьтесь с другими разработчиками, общайтесь и обменивайтесь контактами. В будущем, возможно, знакомство с ними принесёт Вам пользу.
  • Реклама. Так как игр на рынке много, то чтобы пользователи выбрали именно вашу игру, нужно привлечь к себе внимание. Делается это при помощи рекламы на различных ресурсах. Логично, что реклама эта требует: во-первых денег, а во-вторых, рекламный контент (банеры, видеоролики, статьи). Возможны и другие способы ¬– связи, спам, рекламные акции и прочие, но они не всегда эффективны.
    Без рекламы игра, точно также как и без контента, является провальным проектом. Обратите на это внимание. Но тут ситуация может достаточно легко исправлена инвестированием и сторонней помощью.
  • Инвестирование. Понятное дело, что с деньгами игру делать гораздо легче, но без развёрнутой концепции (с концепт-артом), команды и рабочего прототипа никто не будет финансировать ваш проект. То есть на начальных этапах на финансирование не надейтесь. А вот на последних этапах разработки ситуация может в корне поменяться – могут появиться инвесторы и Вам всё равно будут нужны деньги для организации рекламной компании.
    Чтобы найти инвесторов, собирайте контакты.
  • Сторонняя помощь. Вместо инвесторов можно найти стороннюю помощь (реклама за рекламу, помощь в распространении за процент и прочие). Тут надо ориентироваться по ситуации. Чтобы найти стороннюю помощь, так же собирайте контакты.
Послесловие

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

UPD: Статья получилась успешной, даже очень. Но в комментариях прослеживаются замечания по поводу отсуствия романтики и отвращения к играм. Поэтому я прокомментирую эти моменты.
Многие опускают тот факт, что статья для начинающих разработчиков игр, претендующих на роль лидера (первый абзац статьи). Не буду отрицать, что со временем, когда приобретаешь опыт разработки игр и жизнь складывается удачно, возвращается романтика и отвращение спадает. Но в самом начале, когда начинаешь с нуля, после того как столкнёшься с первыми серьёзными проблемами, эта романтика и любовь к играм исчезает ко всем чертям. Разработка игр — это не прогулка по ковровой дорожке в розывых очках, а блуждание в лабиринте Минотавра, где много тупиков.
Я не собираюсь своей статьёй вселять в начинающих разработчиков уверенность. Они должны знать, что путь разработчика игр сложен, что они могут встретить нерешаемые проблемы, что их нерализованный проект будет для них символом поражения.

Добавить комментарий

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