СОВЕТ ОТ ЛЮБИТЕЛЯ
// От нуля до любителя за годы обучения
Я бы определенно держался подальше от двигателей высокого уровня, таких как Unity или Torque2D MIT. Они отлично подходят для небольших прототипов, но я бы никогда не отнесся к ним серьезно, чтобы разработать свою собственную видеоигру. Зачем мне? Какой смысл, если это был не более чем простой римейк SideScroller или Arcade?
Большинство игровых движков, библиотек или фреймворков выполняют не более чем простейшие задачи с большим количеством раздутого кода с функциями и функциями, которые вы никогда не будете использовать.
Когда я был новичком в разработке игр много лет назад, я начинал на вершине. Двигатели очень высокого уровня. Не слишком высоко, как RPG MAKER, но определенно высоко там, как Unity и Torque. Затем я опустился до XNA и C #, потому что у него было так много ресурсов и учебных пособий. Моему основному проекту требовалась производительность, или, может быть, я просто одержим желанием добиться невероятной производительности в своем программном обеспечении, даже если это не большой проект. XNA просто не решила его, и у меня было много проблем с двигателем, который, как я читал, требовал устранения головной боли. Какой смысл использовать что-то «более высокого уровня», такое как XNA / C #, когда вы выполняете ту же работу (исправление ошибок и проблем XNA), как если бы вы запускали свой собственный движок в C ++?
После недолгого изучения я в итоге узнал о том, как создаются игровые движки, и начал изучать код самих движков. Прочитав, что говорят большинство профессионалов, и жалобы критиков игровых движков, я понял: «Зачем вообще использовать движок?»
Совершенствование моего C ++ и действительно понимание некоторых философий, используемых на этом языке, мне очень помогли. Тем не менее, я потратил так много времени, узнавая о многом, что просто хотел начать делать игру.
В итоге я получил что-то с высокой похвалой, был C ++ и очень низкий уровень: SDL. К сожалению, это была головная боль. Это настолько низкий уровень, я не вижу причин, почему бы даже использовать эту библиотеку. Я бы предпочел просто изучить OpenGL и сделать это сам с нуля. Честно говоря, это было главным образом из-за того, что мне нужно было реализовать свой собственный код, чтобы сделать что-то основное, например, перевернуть изображение (а другая реализация не работала из-за того, как я обрабатывал спрайты), что привело меня к мусорной корзине SDL навсегда. Это здорово, если вам нужен программный рендерер, но, по-моему, я бы предпочел, чтобы он стал более низким с аппаратным (OpenGL) или более высоким (SFML).
Не желая покупать еще одну книгу об Amazon и изучать еще один API, я пошел выше. SFML просто замечательный, не говоря уже о том, чтобы его высоко ценили в Интернете. Я прочитал почти бесконечное количество положительных отзывов, почти без отрицательных. Я не могу сказать то же самое для SDL. Он обрабатывает все экстремальные основы, но остальное оставляет за мной и другими библиотеками по моему выбору. С тех пор я придерживался этого.
ИМО, игровой движок просто глупый. Низкоуровневые библиотеки - лучший выбор как для опытных, так и для начинающих программистов.
Также следует отметить, что я узнал больше о концепциях программирования и отточил свои навыки разработки программного обеспечения, когда вынужден работать с вещами на более низком уровне, чем я когда-либо изучал с помощью игровых движков WYSIWYG высокого уровня.
Что дает вам что-то вроде Unity над XNA? Визуальное редактирование и костыль. Новички со временем узнают, что вам все равно придется кодировать практически всю игру, как если бы у вас был чистый C ++, а визуальные редакторы неэффективны для того, что вы могли бы создать самостоятельно.
Что дает вам что-то вроде XNA через SFML или вашу собственную реализацию OpenGL и других полезных библиотек? ИМО, absolutley ничего хорошего. Хуже производительности, C # вместо C ++, множество учебных пособий для новичков, но значительно меньший профессионализм, и некоторые избавления от головной боли, что IMO снова просто костыль для того, что вы должны просто изучить с C ++. Сначала я был напуган C ++ и любил C #, в основном из-за слухов и слухов о мнении дураков, у которых были те же проблемы, которые у меня были изначально с C ++: я просто хотел достаточно хорошего программиста. Я понял, что мне нужно изучить больше основ и обострить свои слабости, чтобы преодолеть проблемы, которые у меня были с C ++, которые C # «облегчил». Я когда-нибудь упускаю простоту некоторых вещей в C #? Даже не! Я знаю, как сделать это в C ++ без хлопот.
Если низкоуровневые библиотеки или изучение DirectX / OpenGL пугают вас, просто подождите, пока вы не начнете понимать сложность создания полноценной видеоигры.
Моя философия игровых движков может быть обобщена в двух примерах, объясняющих избыточность и бесполезность движков, за исключением отдельных случаев.
У новичков, которых пугают низкоуровневыми библиотеками, случится приступ, когда они обнаружат, что даже с высокоуровневым движком, таким как Unity, (помимо рендеринга графики, воспроизведения аудио, загрузки контента; реальных базовых вещей) это будет почти идентично созданию игры с нуля. Сложность заключается в разработке игры, а не в понимании API или разработке классов для отображения на дисплее.
Эксперты, которых не пугает сложность создания полноценной игры в чем-то вроде Unity, бесполезны для Unity, потому что время, в течение которого нужно уверенно изучать API и требования конкретного движка, вероятно, больше связано с головной болью и больше времени, чем потребуется, чтобы закодировать несколько классов, необходимых для выполнения основ.
Таким образом, двигатели бесполезны для новичков, потому что новички ничего не могут с ними сделать, потому что им не хватает инженерных навыков. Аналогично, движки бесполезны для ветеранов, потому что у них уже есть инженерные навыки, чтобы делать это без движка, и они могли бы также запустить свой более эффективный, специфический «движок», чем пройти через головную боль изучения API обоих игровых движков, функции и причуды производительности. Не говоря уже о огромном кошмаре работы с движками, к которым вы иногда не можете прикоснуться, потому что они не являются открытым исходным кодом (или даже если они есть, чтение чужого кода иногда может быть кошмаром).
Черт, даже некоторые "игровые рамки" низкого уровня "- это всего лишь несколько классов для создания окна, рендеринга на дисплей и воспроизведения аудио. Это то, что профессионал может сделать сам с нуля, используя другие библиотеки, такие как SDL / SFML или свою собственную реализацию OpenGL / DirectX / OpenAL, за долю времени, которое требуется для создания полноценной видеоигры.
TLDR;
Если вы хотите программировать, научитесь быть программистом .
Избегайте использования движков , но не будьте дураками и игнорируйте невероятно полезные библиотеки.
Если вы хотите стать дизайнером игр , попробуйте движок WYSIWYG и прокачайте эти игры!
Если вы хотите стать программистом игры , избегайте таких движков, как костыль.
Для меня использование игровых движков более высокого уровня подорвало мою способность стать программистом. В тот момент, когда я начал использовать библиотеки более низкого уровня или вообще не использовал какую-либо библиотеку, я начал так много узнавать, что быстро перешел от новичка к человеку, который теперь может создавать видеоигры без каких-либо ссылок, учебных пособий или книг рядом со мной. Просто мой компилятор и много техники и практики.
Объем обучения, который я получил из низкоуровневых библиотек за короткое время, был намного больше, чем объем, полученный за ОЧЕНЬ ДЛИННОЕ время с ДВИГАТЕЛЯМИ более высокого уровня. **