Игровой Движок - Написать Самому или Взять Готовый?

в рубрике 

Это пятая статья из цикла материалов для начинающих разработчиков игр: Игровой движок — написать самому или взять готовый? 

1. Создание игр для начинающих
2. Специальности в геймдеве
3. Создание команды разработчиков игр
4. Управление командой разработчиков игр

5. Игровой движок — написать самому или взять готовый?
6. Как выбрать игровой движок или конструктор игр
7. Создание MMORPG или любого крупного проекта — стоит ли? Показательный расчёт времени разработки
8. Создание Модов для Игр — Удачный Старт для Разработчика!

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

Почему не стоит писать свой игровой движок


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

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

Помимо бесплатных систем разработки игр, многие коммерческие игровые движки, полностью готовые к немедленному началу использования в игровых проектах,  предлагают сразу несколько очень привлекательных схем лицензирования: полностью бесплатную ( Unity 3D в бывшей Indie-редакции ), смешанную схему с выплатой Royalties ( Unreal Development Kit ) — 99 $ взнос за лицензию и выплаты 25 % прибыли после первых заработанных 5000 $, либо же доступную стоимость полновесной коммерческой лицензии ( Unity Pro за 1500 $ ).

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

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

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

Подводим итог: написанием собственного игрового движка могут заниматься те, кто чётко представляет, что именно и зачем ему это нужно, видит адекватные преимущества такого подхода и способен за вменяемые сроки претворить свой план в жизнь. Всем остальным следует поискать готовое решение, благо оных в последнее время появилось достаточно — взять хотя бы те же Unity 3D и UDK.

Читайте далее arrow 6. Как выбрать игровой движок или конструктор игр
Average: 7.5 (6 votes)
Об авторе: Сергей “Treidge” Данченко

АватарСергей "Treidge" Данченко — автор блога 3DG.Me, вольный 3D-художник и разработчик игр, веб-разработчик на Drupal и человек-оркестр с опытом в некоторых других областях. Личное кредо — "хочешь сделать что-нибудь хорошо, сделай это сам". В моменты особого вдохновения пишет стихи и играет в волейбол. Основные профессиональные инструменты — Autodesk Maya, Autodesk Mudbox и Adobe Photoshop. Без ума от индюков и попугаев. Спасибо за внимание, заходите снова!

Комментарии

Я не согласен с автором. Хотя, в чем-то автор прав) Я не согласен с автором во-первых, - потому что игровые движки пользуются спросом и не малым, а особенно движки для создания ММО, онлайн игр высокого качества или ААА класса. С другой стороны, попробуйте вы его сделать, а потом еще и продать. А вот это под большим вопросом. Все они стоят очень дорого, не по карману обычному человеку, это нужно привлекать спонсоров, да и гарантии, что ваш проект пойдет тоже нет. Да и вопрос тоже окупит себя движок или вы просто потратите время зря. На бесплатные же, не коммерческие варианты там и посмотреть не на что крупным счетом. Unity в принципе хороший движок, но скорее все-таки для начинающих. Качество графики там не очень. Для ММО игр он не катит. Лаги и тормоза страшные. Unreal отличный игровой двиг и можно добиться потрясающего качества. НО, лицензия с подвохом) В принципе-то сейчас и нет таких игровых движков для создания действительно первоклассных ММО игр. Качество графики там идет в основном на уровне 2000-2004 года. С другой стороны автор прав. Для создания обычного шутера, РПГ и т.д. сгодятся уже готовые инструменты. А вот если стоит какая-нибудь не стандартная задача, тогда уже придется девелопить самому( Например нужно создать игру с огромным миром) например для воссоздания исторических баталий и т.д. Но тут опять-таки одним знанием си не обойдешься.

[quote]Создание полноценного игрового движка требует специальных знаний, понимания того, как работают игры, огромного количества свободного времени и желания писать исходный код.[/quote] как без этих знаний игры разрабатывать? серьезнее фермы конечно :)
p.s.: UDK люблю и уважаю, но пишу свой движок именно для понимания внутренней механики в деталях.

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

Когда-то давным давно занимался своей игрой, и там был свой движок. Не могу сказать, что это так уж сложно и затратно, чтобы отказываться от его создания. Категорически не согласен. Зато, когда свой движок будет готов - то всегда знаешь, что и как в нем работает и в случае необходимости всегда можешь внести новые изменения в его код. Пишу как разработчик с 10 летним стажем. :)

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

да но если я хочу хороший игровой движок например с выводом OpenGL то таких движков нет,и придется нанимать программиста чтоб он писал движок,даже всемогущий cry engine ,написан на directX что убивает возможность кроссплатформенности

"после первых заработанных 5000 $"

Поправочку внесите. После первых 50000$ ;)

taigar.ru

Как по мне, так не совсем прав автор. Когда ты без базовых знаний и знаний работы DirectX (или OpenGL) лезешь в готовый движок - у проекта такой же шанс посыпаться, как и при собственноручной разработке движка. На самом деле в разработке игры не так много вещей для понимания. Весь упор идет на разработку правильной объектной модели и оптимизацию процесса отрисовки. Конечно, быстро и качественно сразу не получится разработать годный движок. Но в процессе получаешь такой объём знаний, который с лихвой окупает все затраченное время.

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

Хорошая статья, ведь! А то все понаехали на бедного автора. он ведь хотел как лучше) Особенно если вспомнить что автор писал ДЛЯ НАЧИНАЮЩИХ, я сомневаюсь что много новичков могут создать мало-мальский хороший движок, прав автор насчет того, что движок сначала надо чужой брать.)

Частично не согласен с товарищем marsus, а именно в том, что касается Юнити. Графика этого движка зависит от написанных шейдеров, качества моделей, а производительность - от прямоты рук программиста. Этот движок вполне способен выдать ААА качество и работать быстро. Но чтобы получить ААА - нужны специалисты высокого класса, а большинство пользователей таковыми не являются, да и проекты преимущественно инди и не требуют сверхкрасоты, там акцент ставится на геймплей (собственно по этому и складывается впечатление о слабости этого движка). Что касается быстродействия: сам юнити, как и его ядро, используемое в играх, написаны на C++, сложно сказать на сколько это увеличивает производительность, ибо это уже не панацея при современном железе. Тут больше, опять же, зависит от разработчиков непосредственно игр. Вроде С++ был выбран ими (unity Technology) из соображения кроссплатформенности, в большей степени. А Mono студия делает возможным C# код логики упаковать в бинарники и использовать как плагины для этого ядра. Вот это дает значительный прирост производительности для навороченных логикой игр, по сравнению с использованием интерпретируемого lua и тд. Да, кстати, вы заблуждаетесь, unity3d прекрасно подходит для MMO, почитайте про тот же фотон для него.

По статье: в принцыпе опять же частично согласен. Но все-таки существуют доводы писать собственные движки:
1) Углубление знаний (в моем случае)
2) Недостаточный функционал существующих движков (в том случае, если этот вопрос невозможно решить написав плагин, или подходящие движки слишком дорогие для простых смертных)
3) Универсальность - убийца качества/производительности. Если есть серьезная цель написать игру определенного жанра, то иногда имеет смысл создавать движок, заточенный конкретно под него. Это позволит провести более тонкую оптимизацию. Но подобное могут себе позволить в основном крупные конторы.
4) Не подходящая система рендеринга, физика и тд. Например physX имеет существенную потерю точности при обработке маленьких объектов. В основном он заточен под объекты сравнимых по размеру с человеком. Хотя для большинства игр это не так существенно. В юнити этот вопрос вполне решаем: не хочется интегрированный физИкс - подключай любой другой, но чуток потанцуя с бубном.
5) хз, возможно еще есть.

С пользователями Евгений и Shadow согласен полностью.

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

да господи, товарищи шаристые люди, ответьте же простому человеку на вопрос, только давайте сразу прошу отнеситесь с серьезностью, у меня конкретное желание чтобы как можно быстрее появился на свет проект MMO RPG , я так думаю браузерная, внешний вид я рассматривал и фоллауты(1,2, тактикс)готов даже впринципе на что-то вроде легенды драконов, хотя анимированные 2д меня раздражают, то есть я хочу упор сделать не на графу, а на геймплэй, вот из моих набросок и подскажите конструктор или движок или тех кто хочет мне помочь!

В комментариях к статье столкнулись две точки зрения - по упущению автора. Мне так мнится (но, прошу учесть, я более (или менее) чем новичок), что в описании готовых решений пропущена тема её расширения. И это вызвало споры на, в общем-то, пустом месте. Я думаю, полезно было бы затронуть тему "а что можно будет сделать, если в движке нет желаемых возможностей". Конечно, если есть открытый исходник, то всё решаемо; а как же быть в остальных случаях? Мне только дизассемблирование видится (с ужасом), но, возможно, есть другие ходы. Например, переводчики с одного движка на другой.

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

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

Привет, ребята, а я делал свой игровой движок на C++, OpenGL и в итоге даже сменил Unity на C++

Оставить новый комментарий
Copyright © 2010-2013 Сергей "Treidge" Данченко. Свяжитесь со мной, если у вас есть вопросы или предложения. Тема основана на BlogBuzz от Antsin.com