Search
Write a publication
Pull to refresh

Разработка РПГ игры по мотивам LineAge II

Я не ошибусь если скажу, что многие начинают изучать программирование только с одной целью — научиться создавать компьютерные игры. Во всяком случае это было основной причиной по которой я начал изучать основы ООП. Началось конечно же все с овладения базовым C, потом был С++/Visual C++ с его классами и объектами, ну и наконец дошло дело и до С#. Признаться честно, до начала изучения C# очень много времени уходило на создание графических интерфейсов в среде VisualStudio для проектов на языке С++, ну уж очень громоздко и неудобно реализована в нем работа оконных приложений, при работе с консольными проектами таких проблем конечно же не возникало, хотя уверен на момент выхода языка C++ (Visual) в большое плаванье — это был верх совершенства. С языком C# все обстояло совсем иначе — окошки создаються на раз-два, добавить обработчик на контролы — да без проблем, и что самое главное никакого тебе лишнего кода в проекте, все инкапсулировано в классах-обертках. Одним словом — песня а не технология. Ах да — еще не надо заботиться о выделении и уничтожении памяти, всем заведует GC (garbage collector), напоминает технологию виртуальной машины Java JVM. Все минусы на которые так сетовали разработчики на С++ вроде как снивелировались с выходом C#, а вместе с тем возросла скорость разработки и отладки приложений.

Ну это все лирика, вернемся все-таки к разработке конкретно на движке Unity. К чему был написан предыдущий абзац спросите Вы, — а к тому, что игровой движок Unity3D поддерживает среди прочих языков программирования и C# (еще JavaScript и Boo scripting — диалект Питона). Но давайте все по-порядку.

Близился к концу второй, он же последний, год обучения в одной из частных школ подготовки специалистов в сфере IT, была поставлена задача определиться с темой дипломного проекта для защиты диплома, — в моем случае по специальности «Разработка программного обеспечения». Выбор языков и технологий для создания проекта был немалый, благо успели изучить всего понемногу. Многие из ребят решили не заморачиваться и написать либо собственную CMS, либо фреймворк для упрощения разработки сайтов, но это все относится к веб-технологиям. Я же хотел создать нечто большее, прежде всего чтобы доказать себе, что не просто так потратил столько времени на изучение объектно-ориентированного программирования.

Сначала я обратил свой взор на связку XNA+C#, но отсутствие полноценного игрового движка в понимании: игровой движок = дизайнер уровней + графический движок + обработчик физики, заставило меня задуматься, — а смогу ли я за отведенное время (до финальной сдачи диплома оставалось чуть больше 3 месяцев) реализовать все задуманное. Я пришел к выводу, что нет. И тут я каким-то чудом набрел на информацию об игровом движке Unity. Сразу почувствовал, оно — то самое, что нужно.

Опишу кратко основные возможности:

• Поддержка скриптинга на языках: C#, JavaScript, Boo (диалект Python);
• Полная интеграция игрового движка со средой разработки, что дает возможность непосредственно в редакторе проводить тестирование игры;
• Гибкий интерфейс с поддержкой Drag&Drop;
• Система наследования объектов и классов (ООП);
• Поддержка импорта моделей и других ресурсов из большинства популярных графических пакетов — 3DS MAX, Maya, Blender;
• Поддержка динамических теней и объемного звука;
• Встроенный редактор ландшафтов;
• Встроенная поддержка сети;
• Есть решение для коллективной разработки — Asset Server;
• Возможность использования систем контроля версий;
• Все приложения, созданные с помощью Unity обладают поддержкой DirectX и OpenGL
• Для обработки физики использует движок от nVidia Ageia PhysX.

И как говорится закипела работа. За короткое время необходимо было перелопатить кучу документации по игровому движку. Как оказалось среда разработки настолько интуитивно понятна, что я привык почти сразу. Языком разработки я выбрал конечно же C#. Единственное, что сначала поставило меня в тупик — это отсутствие в Unity поддержки пространства имен, то есть все классы, созданные в разных файлах проекта видны в любом скрипте проекта.

Что и говорить, это были диких 3 месяца, но я все же успел в срок. Не все конечно смог реализовать, но учитывая, что все делал самостоятельно (дизайн игровой локации, модели персонажей, скриптинг AI), кроме шейдеров воды и неба — получилось довольно таки не плохо. Поскольку я являюсь ярым поклонником MMORPG LineAge II, то и модель персонажа, мобов, а также некоторые строения позаимствованы мной оттуда, благо есть соответствующие утилиты под 3DS MAX. Получилось что-то типа РПГ игрушки по мотивам LineAge II, поиграть особо не поиграешь, но в качестве побегать и посмотреть некоторые возможности движка как раз подойдет. Я думаю все кто играл в LAII узнают антураж зданий, монументов и модели мобов.

image

Для всех желающих ознакомиться с результатом моих трудов выкладываю скомпилированный проект — http://unity3dforge.com/downloads/download-2, а также полные исходники на тот случай если кому-то захочется поэкспериментировать — http://unity3dforge.com/downloads/download-10.

Напоследок хочу пожелать всем начинающим разработчикам побольше уверенности в себе и упорства, именно этого чаще всего не хватает для достижения результата.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.