[Перевод] Не твоя проблема
Ты — целеустремлённый разработчик игр. Ты хочешь создать и выпустить потрясающую игру, чтобы о ней узнал мир. Это сложно, намного сложнее чем, скажем, написать книгу. Игра — это алхимическая смесь искусства, личного вкуса, строгой математики, логистики и проектирования. Очень немногие могут создать игру в одиночку, при этом легко отвлечься, слишком легко. Или ещё хуже — заняться тем, что тебе не нужно. Ты доволен, многому учишься, что-то делаешь, но игра не становится ближе к завершению, которое и является целью. Не забывай о цели…
Специалисты
Проблемы специалистов — это не твои проблемы.
Ты подписан в твиттере на таких крутых экспертов, как @ID_AA_Carmack, @notch и @grumpygamer? Все они отличные разработчики успешно выпущенных игр.
А ты уже выпустил игру? Нет ведь, правда? Тогда проблемы этих ребят — не твои проблемы. У тебя совершенно другая проблема, требующая твоего полного внимания: выпуск завершённой игры. Вот и всё.
Твоя проблема и проблемы специалистов частично пересекаются, но совсем чуть-чуть. Так что от большинства из них можно с лёгкостью отмахнуться.
Проблемы специалистов
Джон Кармак: «Я рад, что мы наконец обеспечили поддержку C++11 в базе кода Oculus для мобильных устройств. Там есть куча мест, где unique_ptr очень поможет.»
Ой-ой-ой, а я-то использую GameMaker! Я не настоящий программист, выкину-ка весь проект в мусорку! Надо срочно заказать на Amazon шесть книг по C++11.
Остановись! Использование умных указателей — не твоя проблема. Чтобы выпустить игру, тебе нужно для начала выбросить из головы указатели. Как ты будешь выполнять сборку игры? Как обеспечишь её работу на чужом компьютере? Целые игровые студии еле с этим справляются, а ведь у них команды часто состоят из сотен людей. Это не твоя проблема.
У специалистов много проблем: хейтеры в Интернете, фанаты просят инноваций, фанаты просят оставить всё как есть, большие коллективы, бюрократия, возникающая в больших коллективах, особая бюрократия, возникающая в больших коллективах кодеров (методология Scrum, отношение к сотрудникам как к ресурсам, планёрки, споры о невымытой посуде в раковине — в общем, проблемы специалистов).
Самая суть
Вот твои проблемы по степени важности.
- Придумать игру, которую ты можешь сделать, и
- Которую оценит (а может и купит!) кто-то ещё.
- Которую ты сможешь сделать меньше, чем за месяц. Да, именно.
- Найти готовый движок
- В котором уже создавали коммерческие игры.
- В котором можно разрабатывать игры быстро.
- Который сам занимается сборкой.
- А если ты уже знаком с ним, то вообще отлично.
- Закончить игру
- Продать её (или выложить)
- Прорекламировать её
- Получить отзывы
- GOTO 1
Если в выбранном движке ты не можешь за полдня создать клон Pong, в который другие люди смогут сыграть впервые, значит, выбор был неверным и тебя съест Гру.
А вот проблемы, которые не твои.
- Создание движка на C++
- Нет
- Неееееет
- Неа
- Переписывание библиотеки STL C++, чтобы она не занимала так много памяти
- *Сдерживаемые рыдания*
- Изучение способов создания многоплатформенных сборок
- Научиться make
- Потом cmake (make — для лохов!)
- Затем premake (cmake — фигня)
- Потом Jam (пфф, premake!)
- И так он опускался всё глубже в темноту бездны. Мы знаем, что больше не увидим его лица. Он потерян для нас. Ещё одно дитя Адама заблудилось во тьме.
- Начать писать класс Vector
- Хм, лучше посмотреть в операциях SIMD
- Потом матрицы, кватернионы, ад интеграции OpenGL на любой вкус для шести платформ. Ой, постойте-ка, лучше ведь создать ещё и общий слой абстракции для поддержки DirectX. И материал для металла. А, нужен качественный промежуточный язык написания шейдеров!
- Ни слёз.
- Ни жалости.
- Ни надежды.
- Споры обо всякой фигне в интернетах
- Язык X лучше языка Y
- Библиотека X лучше Y
- Платформа
- Методология программирования
- Надо ли стремиться к 60 FPS (правильный ответ: нет.)
- Изучение программирования шейдеров
- Это было твоей целью? Нет? Тогда ХВАТИТ. Делай игру.
- Тебе нужна какая-то техника? Ну ладно, продолжай…
- …, но с осторожностью.
- Автоматизированные системы документирования
- Doxygen
- cldoc
- Закапывайте его
- Локализация
- Nooooo
- Nein
- Non
- ヤダー
- Займёшься ею, как и всем остальным, после релиза.
- Оптимизация
- «Игры — это исследовательское программирование»
- Ты выбросишь этот код
- Будет не важно, насколько быстро он шевелится на дне корзины для мусора.
- Ты будешь заниматься ею, пока код не станет быстрым, или таким медленным, что не захочется продолжать
- «Игры — это исследовательское программирование»
- Написание многотомных диздоков
- Или рисование UML-диаграмм (Открою секрет: никто этим не занимается.)
- Разработка через тестирование.
- Нет.
- Создание редактора уровней
- Не поддавайся искушению
- Если очевидно, что это сэкономит время, создай МИНИМАЛЬНЫЙ редактор. Не тешь себя мыслью, что он пригодится в будущем.
- MFC (Здесь тебе лучше просто выйти из-за компьютера, взять молоток и ударить себе по пальцам. Это будет менее болезненно.)
- Qt — нееееет
- .NET — неа
- Простые текстовые файлы с динамической перезагрузкой в редакторе
- Удивительно, но да
- XML
- Нет
- Написание собственного парсера XML
- Который работает с пространствами имён!
- Нет
- Который работает с пространствами имён!
- SOAP
- Ты так далеко сошёл с пути разработки игр, что уже не видишь его.
- JSON, YAML, MessagePack
- Нет, нет, нет
- Boost!
- Усыпите нас обоих. Дороги назад уже нет. Это точка невозврата.
Во всём этом нет ничего плохого, но занимаясь такими вещами, ты никогда не выпустишь игру. Через несколько лет ковыряния у тебя будет отличный самописный движок, но ты останешься на первой клетке поля. Создай и выпусти игру.
Советы
Как сосредоточиться на своих проблемах и развивать то, что важно? Вот что можно попробовать.改善 — кайдзен
Всё японское — это круто, не так ли? Ну, если подумать, можно найти несколько исключений. А вообще в Японии есть то, что без сомнения замечательно — это Toyota. Да, люди, делающие автомобили! Они, как Генри Форд двухтысячных, создают множество интересных бизнес-инноваций. И ведь все мы готовы всегда поговорить о бизнес-инновациях? Правда?
Ну ладно, пора проснуться!
Компания Toyota популяризировала отличный метод кайдзен: постоянное усовершенствование. Вкратце описать эту технику можно как мировоззрение, направленное на постоянный поиск областей для улучшения процесса разработки. Небольших улучшений, пусть на 1%. Никаких революций.
Выбери минимальный шаг, который может улучшить процесс и приблизит тебя к цели.
Когда я думаю о кайдзен в свете разработки игр, я игнорирую то, что касается процесса и рассматриваю этот метод как вопрос: «Какое минимально возможное действие я могу сделать, чтобы игра приблизилась к релизу?» Это может быть создание одного уровня или быстрое накидывание всех уровней при первом этапе доводки. Это может быть составление списка нужных звуков и отправка его аутсорсеру. Важно всегда двигать процесс разработки вперёд.
Новая страница диздока не приблизит завершение игры, как и безрезультатная встреча. Приближают финал строки кода и мегабайты ассетов. Только они двигают процесс. Тебе может понадобиться выполнение других задач, но всегда надо делать небольшие шаги в направлении релиза.
Начни с малого
Это будет твоя первая игра? О, тогда тебя ждут проблемы.
Начни с малого! Действительно малого. Маленького как Pong. Выбери самую маленькую игру, которую сможешь сделать, и пройди с ней весь процесс разработки. Благодаря этим мукам ты получишь из первых рук мудрость, которая недоступна людям, годами пыхтящими над своей первой игрой.
Конечно, это только мнение, но и объективная правда: ты во всех отношениях будешь сверхчеловеком по сравнению с этими жалкими грязнокровками, которым не удалось ничего закончить. Каждый день они будут уныло мотыжить поля, а ты — проноситься мимо них на своей лихой тройке. (Сам я в одиночку выпустил ровно ноль игр, так что я тоже тот смерд с мотыгой, варящий самогон и мечтающий о мировой революции, которая принесёт ему свободу.)
Выбери то, что вдохновляет тебя
Цель, которая вдохновляет тебя, но не слишком масштабна или сложна! Фактор X для любой игры — это ты, с твоими уникальными взглядами на дизайн игр, своим мироощущением, которое ты можешь выразить через игру. Не бойся вносить собственные штрихи.
Чем больше тебя вдохновляет проект, тем проще будет закончить.
Завершение — это навык
Это главный секрет, что-то вроде чит-кода. Чем больше ты завершаешь, тем больше сможешь завершить. Это не тавтология, а правда: делая что-то, ты улучшаешь в этом свои навыки.
Завершение повышает уверенность в себе и позволяет быть рационально амбициозным.
Потребляй меньше
Прочтение 20 статей о разработке игр в день похоже на работу. Да это и есть работа! Но бесполезная, непродуктивная работа: ты топчешься на месте.
Проводи меньше времени на Gamasutra, TIGSource, r/gamedev/ (или где там ещё тусуются крутые ребята в наши дни), и трать чуть больше времени на работу над проектом.
Дай своему внутреннему голосу и интуиции немного развернуться!
Делись
Рассказывай о том, что делаешь, что чувствуешь, какие проблемы у тебя возникают и т.д. Многие разработчики, ведущие бой со своими проектами, найдут для тебя слова поддержки. Кроме того, ты получишь обратную связь, а она сделает тебя лучше.
Заключение
Хватит читать, приступай к делу!
Комментарии (2)
10 ноября 2016 в 16:12
+1↑
↓
В целом согласен. Полезная статья для одиночных программистов, которые хотят сделать всё с нуля. Не надо так.)
Реально оценив свои временнЫе возможности и ресурсы, делаю очень-очень простенькие игры. Тем более без знания языка. Пытался написать «свой редактор уровней, удобнее, чем Tiled»©. Усердно бил по рукам, пока не убедил, что неудобное редактирование в Tiled будет продуктивнее написания своего редактора, своего парсера файлов этого редактора в игровом движке, своего визуализатора игрового мира, вместо готовых решений… Переубедил! Вроде более-менее работает. Пока не гуглил, как libgdx отрисовываем Tiled карты, надеюсь, что обрезая лишнее, а то всё же придётся делать свой велосипедостроительный завод…Ещё раз соглашусь с посылом статьи: лучше довести до релиза хоть что-то простое, чем годами вылизывать технологическое демо морально-устаревшей почти игры.
10 ноября 2016 в 16:44
+1↑
↓
Вот сижу я сейчас и пилю новый движок для игры которая уже 5 лет зарабатывает деньги, и надеюсь будет зарабатывать ещё много лет, и мне грустно читать такие статьи. А движок, третий по счёту пилится очень скрупулёзно т.к. старые тормозят, а требования растут. И очень мало людей кто умеет писать серьёзные вещи и мало материалов. А все пилят проекты за месяц на гейм мейкере или за три на юнити толком не понимая как вообще это рисуется…