Игровой программист – где учиться, зарплата, плюсы и минусы

    Содержание

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

    Большинство людей (нормальных), которые планируют заниматься программированием (как хобби или основной профессией) обычно задаются вопросами: «Что такое программирование?», «Зачем мне нужно программирование?», «Какой язык я буду учить?», «Что я получу в итоге?».

    Таким был и я. Я очень люблю разрабатывать игры и занимаюсь этим с 5-го класса. Моей первой нормальной (как я тогда думал) игрой — был симулятор бомжа. Написал я эту игру на C#, используя лишь Visual Studio и Windows Form. В дальнейшем я переписал проект под WPF и он стал более приятно выглядеть.

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

    Если

    вариант №1, то вам нужно принять то, что времени на разработку игры уйдет больше, чем у человека, посвятившему этому жизнь, и то, что вы не напишите какой-нибудь «шедевр» больше, чем Flappy Bird.

    Если вариант №2, то у вас больше возможностей, по сравнению с вашими конкурентами из варианта №1: во-первых, вы всегда занимаетесь программированием, у вас постоянная практика/теория, ваша жизнь связана с этим почти до конца вашей жизни. Конечно, вы всё также не сможете написать в одиночку AAA-Project, но уже есть возможность написать интересную игрушку.

    Итак, для разработки игр, нам потребуется следующее:

    1. Компьютер
    2. Желание создавать игры
    3. Желание учиться
    4. Установить приоритеты

    Разработка игр требует множества знаний. Это одна из самых творческих сфер в программировании, но и также самая требовательная. Сейчас математика и физика в разработке игр всё больше автоматизируется, но раньше вам точно нужны были бы знания высшей математики и минимум знания всего курса физики в школе и колледже/универе. Тем не менее, лишним знание этих предметов не будет, особенно, если вы хотите разрабатывать собственные движки. Никогда не бойтесь чего-либо. Если вы не дружите с математикой, физикой и матлогикой, то я вам
    НЕ
    рекомендую заниматься разработкой игр, НО, если же вы просто прогуливали занятия и чувствуете, что можете учить эти предметы, не имея колоссальных затруднений, то пожалуйста — двери вам открыты.

    Теперь перейдем ко второй части вопроса (правой). Задайте себе вопрос: «Кем является разработчик игр?». Не знаете? Ничего страшного, сейчас мы попробуем разобрать. Итак разработчик игр, скорее всего, разрабатывает игры? Логично, но нам нужен более подробный анализ. Минимум для этой профессии мы уже определили, но что он делает, если разбить этот минимум на блоки?

    Разработчик игр занимается следующим:

    1. Принимает задание
    2. Формулирует проект и задание в письменном виде (для себя)
    3. Обсуждает реализацию со своими коллегами
    4. Снова формулирует проект и задание в письменном виде
    5. Если задание сложносоставное — разбивает его на меньшие блоки
    6. Пишет код для решения задач
    7. Смотрит свой код, исправляет его недочеты
    8. Кооперируется с коллегами для того, чтобы удостовериться, что ошибок минимум (ведь не может быть такого, чтобы мы писали код идеальным)
    9. Дописывает мелкие детали и штрихи
    10. Оптимизирует
    11. Проверяет работоспособность
    12. Выпускает в продакшн

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

    Я хочу сказать, что разработка игр не так проста, как кажется новичкам. Это очень сложный процесс, если вы хотите сделать действительно приятную для окружающих продукт. Если вам сложно смотреть с точки зрения других, смотрите со своей. Только не говорите себе: «Ну, здесь можно схалявить, мне и так зайдет». Видите сложность? Преодолейте её! Только так вы сможете совершенствовать свои навыки и повышать свой опыт. Игра должна быть приятна минимум вам, а уже потом, если вы планируете выдать её в общественность, то нужно её отшлифовать под другие желания. Как это сделать? Просто покажите своим друзьям или знакомым ваш проект (даже недоделанный) и спросите, чтобы они хотели видеть в игре подобного рода.

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

    P.S.

    Обязательно учитесь работать в команде!

    habr.com

    языки, движки и все, что нужно знать начинающему разработчику — руководства на Skillbox

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

    Поэтому ты идешь в гугл и начинаешь изучать все статьи и ролики по теме. Выведя на экран первое «Hello, world!», решаешь, что все очень просто. Но чем глубже погружаешься в это, тем сильнее хочется рвать волосы на голове.

    Не переживайте! Главное — в самом начале узнать, что нас ждет, чтобы потом не свернуть на полпути, пройти все этапы и начать продавать игру!

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

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

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

    Создать игру можно на любом языке, от Python и C до Pascal и Java. От выбора зависит то, сколько времени уйдет на игру и для какой платформы будет релиз. Также язык влияет на производительность, хотя навыки программиста тоже очень важны.

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

    Главное — не недооценивать языки. В движке Unity можно писать и на JavaScript, а Minecraft был написан на Java.

    Среди современных можно выделить:

     Crysis, Far Cry, Sniper II: Ghost Warrior.

    Gears of War 4, Deadpool, Mortal Kombat X, Tekken7 

    Outlast, Assassin’s Creed: Identity, Temple Run, Deus Ex: The Fall.

    Большой популярностью пользуется Unity, потому что он позволяет создавать как 2D-, так и 3D-игры. Также можно работать с разными платформами и языками. Еще на нем создается большинство мобильных игр и инди. Он бесплатный, но если вы зарабатываете на своих играх больше100 000 долларов в год, то придется делиться ими с разработчиками Unity.

    Допустим, вы выбрали язык, движок, придумали концепт игры. Что дальше?

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

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

    Физика — это то, как мир игры реагирует на действия игрока или объектов, находящихся внутри него. Вот какие могут быть физические действия:

    • ходьба;
    • езда;
    • прыжки;
    • удары;
    • выстрелы;
    • падение предметов и так далее.

    Если вы пишете сами, то для обычного прыжка вам придется:

    • проверить, находится ли игрок на земле;
    • менять координату Y, чтобы игрок поднимался вверх;
    • закончить подъем через какое-то время;
    • начать и продолжать падение до тех пор, пока под ногами игрока не окажется земля.

    Не говоря уже о том, что нужно работать над анимацией всего этого.

    function jump() {
    If(gamer.jumpTimer >= 1) {
       gamer.y++
       gamer.jumpTimer --;
       } else {
          If(gamer.y >= ground.y) {
             gamer.y--;
          }
       }
    }

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

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

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

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

    • если добавить стрельбу, то это будет экшн;
    • если игрок будет безоружен — стелс;
    • если еще и замки нужно будет взламывать, то это уже головоломка или пазл.

    Будучи программистом, придется много времени уделять механике.

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

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

    Пример анимации двумерного персонажа

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

    Анимация в действии

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

    Источник

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

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

    Источник

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

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

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

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

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

    1. Персональные компьютеры.
    2. Приставки.
    3. Мобильные устройства.
    4. Браузер.

    У каждой из этих платформ своя аудитория с вполне конкретными предпочтениями. На мобильных устройствах предпочитают головоломки (2048, 94%, Cut the Rope), аркады (Subway Surf, Temple Run, Angry Birds) и казуалы (Talking Cat Tom, Kitty Kate Baby Care, Hair Stylist Fashion Salon).

    На компьютерах можно играть в MMORPG (Lineage II, World of Warcraft, Skyrim) или шутеры (Battlefield, Call of Duty, Counter-Strike). Приставки подходят для гонок (Need for Speed, Blur, Burnout Paradise), приключенческих игр (Assassin’s Creed, Portal, The Walking Dead) и так далее. В браузерах собирают пазлы и строят фермы.

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

    Заключение

    Будьте готовы к тому, что ваша первая игра не станет шедевром. Скорее всего, получится что-то вроде этого:

    Вам нужен браузер с поддержкой HTML5 и JavaScript!

    Управлять игрой можно мышью, клавиатурой или сенсорным экраном телефона.

    Мышью:

    Зажмите экран и водите курсором:

    - Левее корабля — влево

    - Правее корабля — вправо

    - Вверх — стрелять

    На мобильных устройствах достаточно нажать влево, вверх или вправо.

    Клавиатура:

    - Стрелка влево — влево

    - Стрелка вправо — вправо

    - Ctrl или Cmd — Стрелять (edited)

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

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

    Курс «С# с нуля»

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

    • Живая обратная связь с преподавателями
    • Неограниченный доступ к материалам курса
    • Стажировка в компаниях-партнёрах
    • Дипломный проект от реального заказчика
    • Гарантия трудоустройства в компании-партнёры для выпускников, защитивших дипломные работы

    skillbox.ru

    Игры, которые учат программированию / Habr

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

    У каждого есть возможность воспользоваться специально созданной для обучения школьников средой программирования Scratch, которую разрабатывают специалисты одного из самых престижных технических учебных заведений США и мира — Массачусетского технологического института. Или игрой Minecraft, за которую Microsoft год назад заплатила $2,5 млрд и с помощью которой, в том числе, планирует обучать детей программированию. Или обучающими играми, которые создают энтузиасты и добровольцы во всём мире.

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

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


    Code.org


    Ресурс создан для детей от 4-х до 10-и лет, но, как утверждают его создатели, подойдет пользователям всех возрастов. Обучение начинается с самых азов — с обучения использованию мышки. Используется scratch-подобный язык состоящий из блоков. Играя ребёнок разберётся с азами программирования, узнает как алгоритм превращается в JavaScript-код и создаст свою собственную компьютерную игру.

    Minecraft


    Minecraft — совместный проект Microsoft и Code.org. Игра рассчитана на детей от 6 лет и предполагает решение различных задач при помощи построения алгоритмов. Это позволяет детям освоить основы программирования, понять как работают его базовые механизмы.

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

    Скретч


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

    Blockly


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

    ПиктоМир


    ПиктоМир, разработанный НИИСИ РАН по заказу Российской академии наук, — наш ответ зарубежным аналогам. В НИИСИ РАН уже разработали систему «КуМир», в которой с программированием знакомятся старшие школьники, но игрового элемента в ней нет.

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

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

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

    zesetup напоминает про игру Colobot.

    Colobot


    Колобот — 3d стратегия, разработаная компанией Epsitec в 2001. Игра призвана обучить детей (от 10 лет и старше) навыкам программирования в игровой форме. Геймплей заключается в создании программ для роботов. Цель — подготовить планеты для заселения и добычи полезных ископаемых.

    Особенностью игры является возможность создавать программы, в соответствии с которыми в игре действуют роботы (задавая им алгоритмы самостоятельной работы и заменяя ими монотонные действия, которые может делать и сам игрок), поэтому считается, что игра способствует обучению программированию. Язык программирования, встроенный в игру, похож на C++ или Java, но имеется ограничение на размер программы — не более 20 000 символов, что не позволяет писать серьёзные программы вроде имитации искусственного интеллекта. К каждой миссии прилагается обширная справка с объяснением что необходимо сделать. Также зачастую там есть шпаргалка — готовая программа (или куски программы) с помощью которой можно решить поставленную задачу.

    Существует русская локализация игры.

    Microsoft Imagine


    Microsoft Imagine предлагает средства для обучения и разработки, начиная с самой первой игры или приложения до облачных исследовательских проектов с использованием больших данных. Приложения распределены по уровням сложности. Самые простые из них доступны детям 9-10 лет, более сложные предназначены для старшеклассников и студентов. Использование только некоторых приложений доступно в браузере, для запуска остальных требуется установка бесплатного ПО и операционная система Windows. Ежегодно проводится конкурс Imagine Cup, в котором могут принять участие школьники, студенты и аспиранты из разных стран мира. Главным заданием участников является разработка идеи проекта или игры и создание её прототипа с помощью современных информационных технологий.

    JavaRush


    JavaRush — изучение программирования на Java в виде онлайн-игры. Каждому уровню соответствует отдельная солнечная система на звездной карте. Лекциям внутри уровня — планеты солнечной системы. Каждая открытая лекция – это перелёт на очередную планету. Когда все лекции открыты, корабль перелетает к следующей звездной системе.
    Весь курс Java Core на JavaRush состоит из сорока уровней. Первые 10 уровней доступны всем, уровни 11 и выше доступны при наличии платной подписки.

    На каждом уровне JavaRush 10-15 мини-лекций, так что 10 бесплатных уровней — это около 140 лекций и где-то 230 задач. Достаточно, чтобы вы определились, подходит вам JavaRush или нет.

    Code Combat


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

    Начинать играть можно «с нуля», не имея о программировании никакого представления. Пользователь может выбрать язык программирования, который хочет освоить: Python или JavaScript. Уровни игры выстроены как хороший курс программирования с нарастающей сложностью.

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

    Игра имеет 80 бесплатных уровней и открытый программный код. Сотни игроков из разных стран приложили свой талант к тому, чтобы CodeCombat стал лучше. Именно благодаря этому мир воинов и магов оказался быстро переведён на разные языки, в том числе на русский.

    Нужно научиться программировать? Вам не нужны уроки. Вам нужно написать много кода и хорошо провести время, занимаясь этим. Это сущность программирования. Это должно быть весело. Не в том смысле, когда «уау, бейдж», а в том, когда «нет, мама, я должен закончить уровень». Вот почему Code Combat — это многопользовательская игра, а не курсы. Мы не остановимся, пока вы не сможете остановиться — но на этот раз это действительно хорошо. (из описания на сайте проекта)

    UPD После 18 уровней в игре появляются две ветки — одна платная, вторая бесплатная. В игре 80 бесплатных уровней. По платной подписке доступны 60 дополнительных уровней.

    Ещё статьи по теме:
    12 игр, которые обучают детей программированию
    Мой опыт обучения детей 8-10 лет программированию на Scratch
    Приключенческая игра, в которую играют путем изменения её Javascript-кода
    FightCode: танковые войны на JavaScript
    Обучение программированию через игру или как быстро собрать весь мёд
    Colobot и Ceebot

    habr.com

    программы, особенности создания и рекомендации

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

    Разработка игр

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

    Конечно, имеются и исключения из правила. К примеру, небезызвестный программист Маркус "Нотч" Перссон в одиночку создал "Майнкрафт" — игру, которая является одним из самых прибыльных проектов за последние 10 лет. Но для того, чтобы разработать что-то подобное, нужно быть настоящим асом своего дела и иметь за плечами огромный опыт.

    Создание игр. Программирование

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

    В первую очередь нужно освоить хотя бы несколько самых популярных языков программирования. Без этого создать качественную игру вряд ли получится. Почему же несколько языков? Неужели одного недостаточно? Дело в том, что каждый programming language имеет свою четкую область применения. Ниже мы рассмотрим самые востребованные языки и их применение при программировании игр.

    Языки

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

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

    Python — это, пожалуй, лучший выбор для начинающего геймдева. Во-первых, синтаксис языка довольно прост. Для того чтобы начать программировать на Пайтоне, достаточно прочитать туториал и обладать нативным уровнем английского. Во-вторых, возможности данного языка программирования достаточно широки. Конечно, Пайтону не угнаться за C++ в плане функциональности. Тем не менее посредством Python можно создать вполне достойный софт (в том числе и игру). К примеру, на Пайтоне написаны такие игры, как "Батлфилд" (2005), "Цивилизация 4", "Симс 4" и много других проектов, которые стали настоящими хитами.

    Java — еще один претендент, который определенно достоин внимания. Пожалуй, главное достоинство данного языка — полная кроссплатформенность. Это означает, что софт, написаный посредством "Ява", поддерживается всеми операционными системами ("Виндовс", "Линукс", "Андроид" и т.д.). Это позволяет быстро переделать игру под любую платформу. Помимо этого, Java дает программисту массу возможностей. За примерами далеко ходить не нужно. Вышеупомянутый "Майнкрафт" был написан именно на "Яве".

    Создание игр без программирования

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

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

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

    Программы для создания игр

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

    Пожалуй, сама известная программа для разработки игр — Game Maker. Она предназначена для создания двухмерных проектов. Делать игры можно без навыков программирования. Вместо строчек кода пользователю предоставляют набор готовых действий. Все, что нужно сделать — создать объекты и определить правила взаимодействия между ними. Также стоит подметить, что рисовать спрайты можно прямо в Game Maker без использования посторонних программ. Поэтому софт является вполне самодостаточным. Мало того, Гейм Мейкер не обидит и продвинутых юзеров, которые обладают навыками программирования. Ведь в программе есть возможность добавлять свой исходный код. Посредством Game Maker можно создавать игры с видом сверху (РПГ, тактический шутер и т.д.) и сбоку (платформер).

    Construct 2 — это еще один конструктор для разработки 2D-игр. Пожалуй, главная особенность данной программы — мультиплатформенность. Посредством "Конструкта" можно создавать игры для iOS, Android, Windows, Web и т.д. В плане функциональности Construct 2 ничем не уступает тому же "Гейм Мейкеру".

    Вывод

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

    fb.ru

    Игры для программистов, часть вторая / Habr

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

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

    Infinifactory




    Ещё одна игра от автора великолепного SpaceChem, с обзора которого начинался мой предыдущий пост. Теперь (фанфары и визги школьниц) — в 3D! В принципе, наличие третьего измерения — наиболее существенное отличие от предыдущей игры. Суть геймплея не подверглась особым изменениям: нужно брать детальки со входа, делать из них другие детальки и отправлять их на выход. Однако нельзя сказать, что Infinifactory сугубо вторична. Наличие гравитации, способы манипуляции с деталями — всё это создаёт совершенно новые задачи, не вызывая ощущения дежавю.


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

    Кстати, интересный факт: сходство с Майнкрафтом не случайно. Создатель Infinifactory — также автор старой малоизвестной игры Infiniminer, одним из идейных клонов которой когда-то стал Minecraft.

    TIS-100


    Игра того же разработчика, о которой на Хабре уже есть отдельная статья, но я всё равно напишу о ней своими словами, потому что я люблю писать, а игра того заслуживает. Если коротко, это симулятор примитивного многопоточного ассемблера, на котором вам по сюжету приходится писать разнообразные хеллоуорлды. Возможности его бедны, а в каждую ноду помещается очень ограниченное число строк, из-за чего у программиста возникают трудности, которые (я надеюсь) вряд ли встретятся в реальной работе. А чтобы жизнь не показалась мёдом, общаются ноды между собой асинхронно. Из этих трудностей рождается суть игры: ни одна нода не может целиком реализовывать сколь-нибудь сложный алгоритм, потому приходится разделять его между нодами, иногда жестоким и противоестественным способом.


    Да, и там тоже присутствует сюжет. Сюжет игры про многопоточный ассемблер. Это звучит даже забавнее, чем старая шутка про Tetris: Story Mode. Суть его в том, что главному герою остаётся в наследство винтажный на вид девайс с очень странной архитектурой. Программируя его, герой восстанавливает данные из битых нод и постепенно узнаёт его историю — откуда он взялся, для чего он создан. И надо сказать, это не то знание, знакомство с которым проходит бесследно…

    Human Resource Machine


    А вот ещё один ассемблер. Обманчиво простой, с мультяшной графикой и «программированием мышкой». Наверное, не один ребёнок, получив в подарок «детскую развивающую» игру, в ярости сломал об колено клавиатуру, пытаясь оптимизировать решение какой-нибудь дебильно простой задачи, чтобы оно выполнялось на два такта быстрее.


    На самом деле, если ребёнок не перфекционист, нацеленный на стопроцентное прохождание, то это действительно будет для него хорошей обучающей игрой. А, и ещё, если кому вдруг интересно, создатели Human Resource Machine — это те, кто сделал World of Goo.

    Кстати, раз уж мы заговорили про обучающие игры…

    MHRD


    После таких низкоуровневых вещей, как ассемблер, почему бы не… опуститься на уровень ниже? MHRD — это игра про логические элементы, в которой игрок своими, можно сказать, руками, собирает из голых NAND полноценный процессор. Причём игра подводит его к этому плавно, без резких скачков сложности. На мой взгляд, прохождение этой игры нужно давать в качестве лабораторной работы к курсам типа «Архитектура компьютера».

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

    К сожалению, игре не хватило совсем немного, чтобы стать истинным бриллиантом. «IDE» подтормаживает, нет возможности интерактивно поиграть с собранными элементами. Игра не великолепна, но весьма хороша.

    Hack'n'Slash


    Порой игроки хакают игры, чтобы упростить себе прохождение. Но что насчёт игры, в которой хаки необходимы для прохождения? Hack'n'Slash начинается с того, что главный герой (сходство которого с Линком из Legend of Zelda, разумеется, совершенно случайно) находит странный меч, оканчивающийся USB-штекером. Тыкая этим мечом в разнообразные игровые объекты, он может изменять их свойства — например, самое банальное, установить свойству «здоровье» монстра значение «0».


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

    И раз уж мы заговорили о графике…

    Untrusted —or— the Continuing Adventures of Dr. Eval


    Раз уж мы заговорили о графике, то у Hack'n'Slash есть брат близнец, который приятнее мне по трём причинам. Во-первых, он бесплатный и опенсорсный. Во-вторых, он в ASCII-графике, что согревает моё сердце как человека, прошедшего оригинальный Dungeon Crawl. И в-третьих, у него под капотом JS, а не Lua — тут, конечно, дело привычки, но первый для меня уже роднее русского, а со вторым я имел дело лишь при написании мелких модов к Don't Starve.

    Игровой процесс похож на то, что происходит в самом конце Hack'n'Slash: игрок получает доступ к самому коду игры и может модифицировать отдельные его участки, что необходимо для прохождения. Игра остроумна и прекрасна; единственный недостаток её в том, что она слишком короткая.

    Что ж, пожалуй, на этом всё. До встречи в третьей части, ещё через четыре с половиной года.

    P.S. Предвижу, что в комментариях упомянут Shenzen IO. Мне известно о её существовании, но, к сожалению, я не успел ещё в неё поиграть, а потому не стал писать о том, чего толком не знаю.

    habr.com

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

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

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

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

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

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

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

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

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

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

    Контент

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

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

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

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

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

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

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

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

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

    habr.com

    Языки программирования для создания игр

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

    Компьютерные игры появились почти сразу же с самим началом развития ИТ отрасли. Извечной мечтой любителей ЭВМ было создание программ, способных играть в шахматы и при более менее нормальном развитии техники эту задачу быстро удалось решить. Особый расцвет игровой индустрии пришелся на начало 2000-х годов, когда у многих людей начали появляться мощные и относительно недорогие персональные комптометры. Сейчас игры все так же популярны и у детей и у многих взрослых людей.

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

    Самые ходовые языки в GameDev

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

    • С++. Очень многообразный и функциональный язык, изучение которого требует немалых усилий, усидчивости и реальной заинтересованности. Это статически типизированный компилируемый язык программирования, поддерживающий основные парадигмы: объектно-ориентированное, обобщенное, процедурное программирование. Важным плюсом С++ выступает наличие у него очень объемной стандартной библиотеки, включающей массу полезных функций: ввод/вывод, многопоточность, удобные алгоритмы и контейнеры. Язык способен функционировать на самых разных платформах, он отлично сочетается с другими средствами разработки, что делает его универсальным и беспроигрышным вариантом для создания игр;
    • C#. Си Шарп также отлично подходит для разработки игр. Как игровой язык он имеет много важных характеристик и преимуществ. Это полностью объектно-ориентированный язык, разработанный в недрах компании Microsoft. Синтаксис Си Шарп очень близок к синтаксису всего семейства языков С, а также Java. В основном на нем разрабатываются игры на ПК, а если более конкретно – то на платформу .NET Framework. Язык поддерживает полиморфизм, перегрузку операторов и имеет статическую типизацию. Возможностей C# вполне достаточно, чтобы разработать полноценную игру: ее логику, архитектуру и другие важные элементы. Языки си для программирования игр используются уже давно и в целом очень успешно;
    • Что касается разработки игр под мобильные, в особенности на операционную системы Android, то здесь придется изучить такой язык, как Java. Именно он способен справиться с созданием логики игр, ее механики и других важных нюансов. Java помогает работать с многими потоками, что очень важно для игр и для самого Андроид. Также это язык дает возможность легко взаимодействовать с памятью устройств, что в играх тоже немаловажно.

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

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

    Писать все с нуля или использовать игровой движок?

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

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

    Вот только некоторые популярные игровые движки:

    • Отличный инструмент для создания как 3D, так и 2D развлекательных приложений, способный работать на Linux, Windows и OS X. Игры созданные на Unity могут одинаково успешно работать на самых разных платформах: ПК, игровых приставках, мольных устройствах на Android, iOS или Windows Phone. Игры на этом движке поддерживают популярные технологии DirectX и OpenGL, что только увеличивает их функционал и качество. На Unity созданы Wasteland 2, Prime World, Shadowgun, Gone Home, некоторые части Need for Speed и другие популярные игры;
    • Unreal Engine. Очень популярный игровой движок, на котором создается львиная доля всех современных игр. Созданный в уже далеком 1998 год он все еще является одним из самых лучших и функциональных движков, чем привлекает внимание многих компаний разработчиков игр. Именно на Unreal Engine разных версий создавались Blade & Soul, Mass Effect 3, Medal of Honor, BioShock 2, Life is Strange и огромное множество других культовых игр;
    • Frostbite Engine. Еще один отличный движок от компании EA Digital Illusions CE, который при относительно небольшой требовательности к игровым устройствам предоставляет очень качественную и графику, поддерживает технологию DirectX, способен дать возможность разработчику создавать в игре очень красивые и интересные спецэффекты (например, разрушение объектов игровой среды, более реалистичный вид рельефа и многое другое).

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

    bunkerbook.ru

    Отправить ответ

    avatar
      Подписаться  
    Уведомление о