Я не ошибусь если скажу, что многие начинают изучать программирование только с одной целью — научиться создавать компьютерные игры. Во всяком случае это было основной причиной по которой я начал изучать основы ООП. Началось конечно же все с овладения базовым 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 узнают антураж зданий, монументов и модели мобов.

Для всех желающих ознакомиться с результатом моих трудов выкладываю скомпилированный проект — http://unity3dforge.com/downloads/download-2, а также полные исходники на тот случай если кому-то захочется поэкспериментировать — http://unity3dforge.com/downloads/download-10.
Напоследок хочу пожелать всем начинающим разработчикам побольше уверенности в себе и упорства, именно этого чаще всего не хватает для достижения результата.
Ну это все лирика, вернемся все-таки к разработке конкретно на движке 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 узнают антураж зданий, монументов и модели мобов.

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