Начиная с нуля - это ошибка, если я заново изобрел колесо?

31

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

Но многие блоги и разработчики говорят, что это не хороший вариант для изобретения колеса.

Я что-то пропустил?

Ayyappa
источник
Как часто вы на самом деле «запускаете игру»? Если вы быстро повторяете идеи, делайте все, что работает. Если вы делаете опус Magnum, где оплошность дорогостоящая или время ограничено, зачем тратить время на изобретение колеса? Если вы заинтересованы в изучении того, как все работает, почему бы не написать свою собственную технологию? Каковы ваши цели здесь?
ChrisE

Ответы:

16

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

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

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

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

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

Рэй Дей
источник
Спасибо, Рэй, это полезно! но не могли бы вы перечислить игровую механику также ...
Ayyappa
Нет проблем. Я не совсем уверен, что вы имеете в виду в контексте вашего первоначального вопроса. Что конкретно вы после?
Рэй Дей
Это нормально, я сделаю это отдельным вопросом. Другой вопрос в этом посте был удален (отредактирован), так как он не имеет отношения к контексту.
Ayyappa
+1 за финишную черту - на самом деле завершение проекта - это хороший опыт.
Циклоп
36
i want to implement it on my own to learn stuff.

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

Tesserex
источник
3
+1. Тот факт, что API или сторонняя библиотека могут абстрагировать все детали реализации, не означает, что вам не нужно их знать. Использование готовых колес поможет вам быстрее написать готовый код; но создание собственного колеса поможет вам определить, какие из готовых колес являются лучшими, и что наиболее важно, как оптимизировать и отладить их, когда начинают появляться спицы ...
sebf
4
+1 Не изобретай велосипед, если не учишься делать колеса.
zzzzBov
4
помните, что это улучшит ваши навыки в дизайне игрового движка , но не в игровом дизайне.
Дейв О.
Это также достойный ответ ... спасибо ... но плохо, что я не могу отметить два ответа :(
Ayyappa
10

Изобретая колесо, вы узнаете, как работают колеса.

хаос
источник
5

Зависит от того, что вы после. Если вы хотите учиться, изобретите столько колес, сколько захотите. Я знаю людей, которые написали свои собственные JVM или загрузчики PNG.

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

Яри ​​Комппа
источник
4

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

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

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

После того, как вы изобрели несколько колес, чтобы вы катились, вы хорошо знаете свои вещи в качестве сильного бонуса!

Плюс это чертовски весело.

Гарет Клаборн
источник
1

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

Показательный пример: Эскил Стинберг, создатель World of Love (отличное видео, где он рассказывает о своей игре, своем движке и потрясающих инструментах, а также своей философии: http://vimeo.com/18423305 )

Будет
источник
1

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

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

ТИА
источник
0

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

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

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

Оскар Дювеборн
источник
0

Это только ошибка, если у вас нет времени учиться. Если у вас есть время, дерзайте. Если нет, то не делай этого.

Тим Холт
источник