MonoGame — альтернативна реалізація Microsoft XNA з відкритим кодом. Ціль проекту — спростити розробку кросплатформих ігор шляхом максимізації повторного використання коду.
Логотип MonoGame являє собою стилізований логотип Mono. На ньому зображений мозок, що з'єднаний з трьома мобільними пристроями які підтримуються MonoGame.
Архітектура MonoGame працює на багатьох платформах: iOS, Android, Windows, Mac OS X, Linux, Windows 8, Windows Phone 8, PlayStation Mobile та консоль OUYA.
MonoGame майже повністю повторює архітектуру класів та просторів імен XNA. Теоретично, для того щоб перенести проект з використанням XNA на MonoGame, достатньо лише змінити бібліотеку що підключється, не вносячи змін до коду. Така кросплатформність досягається шляхом використання відповідних препроцесорних директив. На різних платформах використовуються різні директиви для підключення бібліотек, реалізації методів, або їх частин, необхідних для роботи фреймворку саме на певній платформі. Для контролю того, під яку платформу відбувається компіляція і які саме директиви використовуються можна встановлювати BUILD правила.
Нижче наведений уривок коду з класу GraphicsDevice, де за допомогою препроцесорних директив підключаються графічні бібліотеки для кожної з підтримуваних платформ : #if OPENGL #if MONOMAC using MonoMac.OpenGL; #elif WINDOWS || LINUX using OpenTK.Graphics.OpenGL; #elif GLES using OpenTK.Graphics.ES20; #endif #elif DIRECTX using SharpDX; using SharpDX.Direct3D; #if WINDOWS_PHONE using SharpDX.Direct3D11;
З метою повної підтримки на Windows 8, MonoGame використовує бібліотеку SharpDX, проект з відкритим кодом, що дає доступ до DirectX з керованого коду. SharpDX є безкоштовним і розповсюджується під ліцензією MIT. Також використувуються бібліотеки OpenTK та LidGren. OpenTK надає доступ до бібліотек OpenGL та OpenAL. LidGren — бібліотека для роботи з мережею. Система управління контентом агалогічна системі XNA 4. Команда MonoGame створила систему побудови контенту яка може бути інтегрованою з Microsoft Visual Studio і надає можливості побудови контенту на Windows 8 аналогічні до тих які користувачі мали на Windows 7 з Microsoft XNA.
Робота в комбінації з іншими рушіями/фреймворками
MonoGame може працювати в комбінації з іншими фреймворками та бібліотеками. Наприклад, як фізичний рушій для гри на MonoGame можна використовувати бібліотеки FarseerPhysics та BEPUphysics для 2D та 3D фізики відповідно. Для створення інтерфейсу користувача — бібліотеку Runimate . Також можна використовувати MonoGame у зв'язці з Windows Forms або WPF. MonoGame використовується у деяких ігрових рушіях, як, наприклад, YNA Engine та DigitalRune .
Підтримувані платформи та IDE
Windows Windows 8 iOS Android Mac OS X Linux Є інсталятор Так Так Ні Ні Ні Ні Пристрій PC PC Mac Mac або PC Mac PC IDE Visual Studio Visual Studio MonoDevelop Visual Studio або MonoDevelop MonoDevelop MonoDevelopЄ приклади Так Так Так Так Так Так
Підтримка мережі
Для підтримки мережі MonoGame використовує бібліотеку LidGren . Підтримується лише локальна мережа та платформи Windows, Mac, Linux, Android та iOS.
Ефекти та шейдери
Через те, що різні підтримувані платформи використовують різні мови шейдерних програм (GLSL, HLSL та спеціальні шейдери PlayStation Suite), команда MonoGame розробила власну мову для написання шейдерних ефектів — MGFX, яка має наступні властивості:
Програми шейдерів мають таку ж структуру як і Microsoft FX файли Мають текстовий формат для простоти редагування Мають компільовний, оптимізований бінарний формат для використання безпосередньо під час роботи програми Кросплатформна, підтримує багато шейдерних мов Підходить для подальшого розширення та вдосконалення
Для роботи з MGFX команда MonoGame створила утиліту 2MGFX, яка дозволяє компілювати програми MGFX шейдерів. Як і в XNA, в MonoGame є вбудовані шейдерні ефекти, які підтримуються на всіх платформах:
BasicEffect AlphaTestEffect DualTextureEffect EnvironmentMapEffect SkinnedEffect
Згадування в пресі, новинах та деякі факти
MonoGame використовувався при розробці Skulls of The Shogun, гри, що була випущена Microsoft Studios. За допомогою MonoGame гра була портована на Windows Phone 8.
Протягом Xamarin Evolve 2013, Скот Хансельман разом з засновниками Flying Dev Studios обговорює як MonoGame допоміг у портуванні гри Infinite Flight на iOS.
Можливості незалежних розробників для настільної версії Windows дуже великі. Тепер, за допомогою MonoGame, вони можуть розробляти ігри не тільки для настільної версії Windows, а й для багатьох інших платформ.
Зустріч з командою MonoGame на Microsoft Build 2012. Домінік Луї і Том Шпільман дають інтерв'ю Channel 9 про направленість MonoGame на XNA та підтримку ігор для Windows 8 Store. Розповідається про архітектуру MonoGame та те як він використовує DirectX та SharpDX.
MonoGame був використаний у ігровому рушії DigitalRune. За допомогою MonoGame була досягнута підтримка Windows Phone 7.1, Windows Phone 7.8, Windows Phone 8, Windows Desktop (DirectX 11), Windows Store (ARM та x86)http://www.digitalrune.com/Support/Blog/tabid/719/EntryId/177/Sponza-Scene-on-Tablets-Phones
Ігри що використовують MonoGame Це лише частковий перелік ігор, що використовують MonoGame на одній або декількох платформах. Гра Рік Платформа Розробник ВидавецьARMED! 2011 Windows Store, Windows Phone, iOS Sickhead Games Sickhead GamesSkulls of the Shogun 2013 Windows Store, Windows Phone, Xbox 360 17-BIT Microsoft StudiosDraw a Stickman : Epic 2012 Windows Store, iOS, Android Hitcents.com Hitcents.comBastion 2011 Windows, Xbox 360, Chrome, iOS, Linux Supergiant Games Warner Bros. Interactive EntertainmentInfinite Flight 2011 iOS, Windows Phone Flying Development Studio Flying Development StudioWizorb 2011 iOS, Linux, Steam, Mac, Xbox 360, PS Minis Tribute Games Tribute GamesFez 2013 Xbox 360, Microsoft Windows, Linux, Mac OS X Polytron Corporation Microsoft Studios, Trapdoor, Polytron
Історія версій Поточна версія MonoGame v3.0.1 (станом на 05.14.13). Починаючи з версії 3.0 MonoGame підтримує 3D графіку.
Версія Дата релізу Примітки 0.0 2 вересня, 2009 Хосе Антоніо Фаріас починає проект XNATouch. 0.7 2 грудня 2009 Перша версія для скачування Codeplex. 2.0 27 жовтня 2011 Перший реліз MonoGame 2.0. 2.1 7 грудня 2011 Виправлення деяких помилок. 2.5 29 березня 2012 Виправлення помилок та оптимізація. 2.5.1 18 червня 2012 Останній реліз версії що підтримує лише 2D. 3.0 beta 17 жовтня 2012 Перший реліз що підтримує 3D графіку. 3.0 21 січня 2013 Повна підтримка XNA 4 в MonoGame 3.0. 3.0.1 6 березня 2013 Підтримка Xamarin 2.0. 3.x — Модульні і функціональні тести, конвеєр ресурсів гри, більше платформ та можливостей.
Зв'язок з Mono Незважаючи на те, що логотип та назва MonoGame походять від прокту Mono, його розробка повністю незалежна від проекту Mono.
Див. також XNA Framework SharpDX MonoXNA ExEn
Джерела
Посилання Офіційний вебсайт Сирцевий код Обговорення Канал на YouTube