Своя игра: Эти проблемы — не ваши проблемы
Внимание! Этот документ ещё не опубликован.
Автор: Дмитрий Литовченко
Своя игра: Эти проблемы — не ваши проблемы
Перевод статьи http://howtomakeanrpg.com/a/not-your-problem.html
Итак, представим себе, что вы — молодой многообещающий разработчик. Вы желаете создать и выпустить прекрасную игру, и поделиться ею с целым миром. Это трудная задача. Гораздо труднее, чем, скажем, написать книгу. Создание игры — это алхимическая смесь искусства, хорошего вкуса, точной математики, логистики и инженерной работы. Немногие способны создать игру самостоятельно и можно легко потерять сосредоточенность и отвлечься. Или даже хуже... работать над вещами, которые совсем не важны для вашей игры. Это так классно, вы решаете задачи, узнаёте много нового, что-то делается, но ваша игра ни капельки не приближается к долгожданному финалу, а ведь это и была первоначальная цель. Не забывайте о вашей цели...
Эксперты
Проблемы экспертов — это не ваши проблемы.
Возможно вы следите на твиттере за классными парнями вроде @ID_AA_Carmack, @notch или @grumpygamer? Прекрасно! Они отличные разработчики, и имеют успешные выпущенные игры.
Выпустили ли вы игру? Нет, скорее всего. Тогда проблемы этих парней не являются вашей проблемой. У вас имеется совершенно другая проблема, которая немедленно требует неотложного внимания: выпустить готовую игру. Вот так.
Конечно, существует что-то общее между вашей проблемой и проблемами экспертов, но обычно это маленький кусочек, тонкий слой общих проблем. Поэтому следует игнорировать практически все проблемы экспертов, используя при этом предубеждение.
Проблемы Экспертов

Некий Джон Кармак пишет: «Рад, что мы наконец-то добавили поддержку C++11 в кода Oculus для мобильных устройств. В куче мест unique_ptr очень бы помог.»
Обождите, я использую GameMaker! Я не настоящий программист, мой проект может смело отправляться в мусорную корзину. Пришла пора заказать шесть книг по С++11 с Амазона (или Озона, кому что ближе).
Стоять! Использование умных указателей — не ваша проблема. Чтобы выпустить свою первую игру вам указатели, возможно, и вовсе не понадобятся. Как вы собираетесь устанавливать игру на компьютер пользователя? Как вы будете тестировать работу игры на других компьютерах кроме вашего? Игровые студии сами с этим еле справляются, а у них часто имеются команды, состоящие из сотен человек. Это не ваша проблема.
У экспертов имеется куча проблем: ненависть в интернете, мягкое социальное давление в сторону инноваций, мягкое социальное давление в сторону, обратную инновациям (продолжать выпускать клоны уже успешных игр), большие команды, бюрократия больших команд, особая бюрократия больших команд (скрамы стоя, называть работников ресурсами, митинги, спорить о том, кто оставил в раковине немытую посуду — одним словом проблемы экспертов).
По делу
А теперь перечислим ваши собственные проблемы, в порядке их важности.
- Придумайте игру, которая вам вроде бы по силам и
- которая может понравиться другим людям (и они может даже её купят!)
- которую вы осилите за 1 месяц. Именно так.
- Найдите готовый движок, который вам подходит, так, чтобы
- на нём уже существовали коммерческие игры
- позволял быструю разработку
- решал задачу установки на компьютеры игроков
- идеально, чтобы был вам знаком
- Доделайте игру
- Продайте игру (или отдайте даром)
- Разрекламируйте игру
- Соберите отзывы
- Снова к шагу 1.
Если вы не можете на выбранном вами движке создать pong за половину дня, то однозначно ваш выбор был сделан неудачно и вас съест монстр из темноты, Grue.
Вот список проблем, которые вашими не являются:
- Сделать собственный движок на C++
- Нееееет
- Нееееет
- Нееееет
- Заняться переписыванием библиотеки STL в С++, чтобы она не сильно жрала память
- (тихое рыдание)
- Изучить кроссплатформенную сборку приложения
- с помощью make
- затем cmake (потому что make отстой!)
- затем premake (потому что cmake сосёт)
- затем Jam (premake - пфффф)
- и так далее, вы спускаетесь глубже и глубже во тьму бездны. Мы знаем, что вас мы больше не увидим, вы для нас мертвы. Ещё один сын Адама ушёл во тьму и пропал.
- Приняться делать свой класс вектора (или строки)
- посмотрите ещё, что можно сделать с помощью SIMD-операций!
- затем матрицы, кватернионы, интеграция пяти версий OpenGL на шести платформах, ох обождите, лучше давайте сделаем абстрактную обёртку и прикрутим DirectX. И ещё Metal. Нам ещё понадобится хороший промежуточный язык шейдеров!
- никаких слёз
- никакой жалости
- вы безнадёжны
- Поспорить о всяких глупостях в Интернете:
- язык Х лучше, чем Y
- библиотека Х лучше, чем Y
- платформа
- методология программирования
- 60 кадров в секунду это важно (на самом деле: нет)
- Учим язык шейдеров
- у вас была цель? Нет? ОСТАНОВИТЕСЬ! Делаем игру.
- вы задумали какую-то особую технику? Продолжайте...
- ... осторожно
- Автоматическая документация кода
- Doxygen
- cldoc
- вы для меня уже умерли
- Локализация
- Nooooo
- Nein
- Non
- ヤダー
- как и всё остальное — подумайте об этом после релиза
- Оптимизация
- Игры являются исследовательским программированием.
- вы скорее всего выбросите этот код
- неважно, как быстро он работает на дне мусорной корзины
- Быстро надо делать в самом конце, или если замедлилось настолько, что продолжать становится сложно
- Игры являются исследовательским программированием.
- Многостраничный дизайн-документ
- Или UML диаграммы (вот страшный секрет: их никто не использует)
- Разработка с написанием тестов вначале
- нет.
- Создание собственного редактора
- Сопротивляйтесь этому до последнего
- Когда стало очевидно, что редактор нужен и сэкономит время — пишите МИНИМАЛЬНО возможный редактор. Не угадывайте на будущее.
- MFC (в этом месте вполне можно покинуть ваш компьютер, взять опасную бритву и РОСКОМНАДЗОР. Будет не так больно)
- Qt — Нееееет
- .NET — нет
- Простые текстовые файлы с динамическим перечитыванием в редакторе.
- возможно вас это удивит. Да, так быстрее.
- XML
- Нет
- Написать собственный парсер XML
- Который умеет пространства имён
- Неееееет
- Который умеет пространства имён
- SOAP
- Вы настолько далеко ушли от разработки игры, вы даже не видите её на горизонте.
- JSON, YAML, MessagePack
- Нет, нет, нет
- Boost!
- Кто-нибудь избавьте нас от мучений, добейте. Это конец. Это уже не лечится.
Конечно, заниматься всем перечисленным можно, но так вы никогда не выпустите свою игру. Через несколько лет ковыряний у вас получится (возможно) неплохой движок и вы окажетесь на шаге 1: сделать и выпустить игру.
Советы
Как сосредоточиться на наших проблемах и получить продвижение вперёд по важным пунктам нашего плана? Вот несколько способов, которые можно испробовать:
改善 — Kaizen
Kaizen, это из Японии — это наверное круто. Если подумать ещё, то думаю могут быть и исключения. В любом случае есть кое-что из Японии, что безусловно круто — это Тойота. Да, люди, которые делают автомобили! Они как Генри Форд из 2000-х годов, и разрабатывают множество инноваций. А разве мы здесь не за этим? Мы обсуждаем восхитительную историю бизнес инноваций? Верно?
Ладно, просыпайтесь!
Тойота продвинули интересный метод работы — кайзен, или «постепенное улучшение». В общих словах это смена вашего образа мышления так, чтобы постоянно искать пути улучшения вашей разработки. Всего лишь 1%, микроскопические улучшения, без революций.
Какой наименьший шаг можно совершить, чтобы улучшить ваш процесс и продвинуться к цели.
Когда я думаю о кайзен и о разработке игр, то я игнорирую упоминание процесса, а только думаю об этом методе, так: «Какая наименьшая вещь, которую я могу сделать, чтобы игра стала чуточку ближе к релизу?». Это может быть построение нового уровня, или быстрый черновой набросок всех уровней. Может быть, следует создать список звуков и заказать у кого-нибудь, кто занимается звуками. Ключом здесь является продвижение вперёд.
Добавление ещё одной страницы в дизайн документ не продвигает игру к релизу, также как и собрание команды, на котором не сделано никаких выводов и не получен результат. Что продвигает игру вперёд — так это строки кода и мегабайты ассетов. Они двигают игру вперёд. Возможно, вам требуется сделать какую-то другую задачу кроме перечисленных, но это должен быть шаг вперёд, к релизу игры.
Начинайте с малого
Это же ваша первая игра, которая дойдёт до релиза? О, вас ждут некоторые проблемы.
Начинайте с малого! Очень малого. Такого маленького, как pong. Создайте наименьшую игру, какую только сможете создать и пройдите все шаги до релиза. В этих страданиях вы приобретёте знание о том, что люди, мучительно выдавливающие свою первую игру годами, никогда ничего не получат.
Это всего лишь мнение, но также это и объективная правда! Вы будете намного лучшим человеком, чем те ничтожные людишки, которые никогда ничего не смогли выпустить. Каждый день они продолжат пахать, как рабы, а вы будете, проходя мимо них, улыбаться, как мудрый и весёлый Rasputin. (К примеру, я, как независимый разработчик, выпустил примерно ноль игр, так что он тоже один из рабов, и только самогон и сладкие мечты о будущем под властью большевиков помогают мне выжить).
Выберите что-то, что вас восхищает
Что-то, что восхищает вас, но не сбивает с цели и не увеличивает резко сложность проекта! Секретный ингредиент любой игры — это вы сами, ваши уникальные убеждения о дизайне игры, ваше мировоззрение и всё это следует выразить по возможности с помощью игры. Не бойтесь оставить на игре свой отпечаток.
Чем больше вы восхищены проектом, тем легче будет его закончить.
Умение закончить проект
Это огромный секрет. Это как чит код. Чем больше вы закончили, тем больше вы сможете закончить. Это не тавтология, а простая правда: чем больше вы что-то делаете, тем лучше у вас будет получаться.
Завершение проекта также увеличивает уверенность и позволяет расти амбициям рационально и достижимо.
Потребляйте меньше
Чтение двадцати статей по разработке игр в день по ощущениям похоже на работу. Но ведь это и есть работа! Но это бесполезная и непродуктивная работа, она не двигает стрелку прогресса вашего проекта.
Лучше поменьше сидеть на форумах и сайтах вроде Gamasutra, TIGSource, gamedev (или где там классные парни сидят в наши дни) и побольше времени провести в вашем редакторе и сделать что-то по вашей игре.
Дайте свободу вашему внутреннему голосу!
Делитесь
Делитесь новостями о том, что вы делаете, как вы себя чувствуете, какие проблемы вас беспокоят и т.д. В окопах недалеко от вас находятся и другие разработчики, которые напишут вам в ответ слова поддержки и вдохновения. Также вы получите и отзывы по вашей работе, а отзывы делают вас лучше.
Последние замечания
Хватит читать. Беритесь за работу!
Ссылки
- Оригинальная статья: http://howtomakeanrpg.com/a/not-your-problem.html
- Not Your Problem: Or why you don't need to focus on stuff you don't need http://adnanissadeen.com/posts/experts-problem-not-your-problem.html
11 ноября 2016