MonoGame na Windows 8

Wreszcie znalazłem czas by zająć się MonoGame dla Windows Store apps.

Ten post jest wstępem do kilku następnych wpisów poświęconych tworzeniu i portowaniu gier dla Windows Store.

Zobacz też

XNA, a Windows Store Apps

Dla porządku i jasności przypominam, że aplikacji Windows Store nie można tworzyć przy pomocy XNA. XNA co prawda jest dostępne w Visual Studio 2012, ale jedynie dla „starych” platform takich jak Xbox 360, Windows (desktop) i Windows Phone (7 i 7.5). Wiem, bardzo to smutne, bo sam mam kilka projektów gier i aplikacji zrobionych w XNA na Windows Phone i do tej pory nie mogłem ich łatwo przepisać na Windows Phone (trzeba było sięgać po czyste C++/DirectX – nie, dziękuję).

MonoGame

MonoGame jest open source’ową implementacją Microsoft XNA 4. Celem powstania projektu było stworzenie narzędzia/frameworka dla programistów Xbox 360, Windows i Windows Phone do łatwego portowania swoich gier na iOS, Android, Mac OS X, Linux‚a oraz (werble… tada!) Windows 8 (Windows Strore). Ponoć trwają też prace nad PlayStation Mobile.

Dla nas najważniejsze jest to, że MonoGame niemal 1 do 1 udostępnia przestrzenie oraz klasy, które dobrze znamy z XNA.

SharpDX

MonoGame pod maską wykorzystuje z kolei inny projekt Open Source. SharpDX udostępnia pełne API DirectX na platformę .NET.

MonoGame dla Windows Store apps

Ostatnia wersja MonoGame 3.0 (Beta) bardzo mnie zainteresowała, ponieważ pojawiło się tam wsparcie dla aplikacji Windows Store. Instalator MonoGame pobrałem z CodePlex’a, a następnie zainstalowałem na swojej maszynie. Wcześniej miałem już zainstalowane Visual Studio 2012 i 2010, więc od razu zainstalowałem szablony projektów MonoGame w obu wersjach VS.

Później szybki test – nowy projekt, uruchom i wystartowała nic nie robiąca gra. Jedyne co w niej było to klasyczne dla XNA tło CornflowerBlue, co mnie ucieszyło, bo wiedziałem, że jestem już domu. Następnie sprawdziłem co zawiera solucja i okazało się, że jest tam wszystko to co powinno być.

Plik Game1.cs to główna klasa gry, która zawiera m.in pętlę Update-Draw, SpriteBatch… jestem tam wszystko z wyjątkiem XNA Content Pipeline, ale o tym jeszcze napiszę w osobnym wątku.

Portujemy!

Download Space Bridge for Windows PhoneDzięki MonoGame w niecałą godzinę przeniosłem SpaceBridge z Windows Phone na aplikację Windows Store, a w kolejną gdzinę poprawiłem to i owo (skalowanie, rotacja i inne rzeczy związane z innym typem urządzenia). Później dodałem auto-centrowanie gry w pionie i poziomie (dodatkowy kod, którego wcześniej nie miałem w Windows Phone, bo na sztywno założyłem, że rozdzielczość to 800×480 pixeli).

Space Bridge for Windows Store

18 thoughts on “MonoGame na Windows 8

  1. Pingback: Instacja MonoGame dla Windows 8 | Wojciech Poniatowski [PL]

  2. Hej!
    Dzięki za wpis, sam szukałem sposobu dostania się do XNA+Windows 8 i nic sensownego nie znalazłem.Jeśli faktycznie tak jak mówisz nie ma różnic to jest to świetna wiadomość!

    • Na razie w moich zastosowaniach nie widzę problemów. Musiałem tylko wyczyścić miejsca gdzie odwoływałem się do klas występujących w Windows Phone, oraz dorobić obsługę z klawiatury i myszki – czyli rzeczy charakterystyczne już dla danej platformy.

  3. Pingback: Pierwszy projekt MonoGame dla Windows 8 | Wojciech Poniatowski [PL]

  4. Pingback: XNA – skalowanie i centrowanie | Wojciech Poniatowski [PL]

  5. A jak sprawa wygląda z WP 8? Teoretycznie to co śmiga w windows store, powinno też działać na WP 8, chociaż nic na ten temat nie mogę znaleźć. Zastanawiam się też czy portowanie gier 3d przebiega równie bezproblemowo, ewentualnie czy będzie w najbliższym czasie, bo póki co gałąź 3d podobno raczkuje.

  6. Pingback: XNA Content Pipeline w MonoGame | Wojciech Poniatowski [PL]

  7. Pingback: dotnetomaniak.pl

  8. Warto napisać coś o ograniczeniach. Czy „teraźniejsza” beta posiada te z ostatniej wersji. Czyli np . problemy z dźwiękiem itd.
    Wykorzystanie monogame na platformach ios cz android wymaga płatnej licencji od Xamarin.

    • Nie zauważyłem problemów z dźwiękiem (używam normalnych SoundEffect). Czytałem, że były problemy z muzyką (że nie było muzyki). Ale ja również tutaj nie widzę problemu (używam klasy MediaPlayer i muza leci).

      A co do licencji. Hm.. codeplex’ie znajduje się licencja Ms-PL. A te źródła i instalka daje projekty na Win8, Androida, iOS itd. Nic nie słyszałem o płatnej licencji od Xamarin. Ale jeśli coś wiesz więcej to chętnie się dowiem.

      • Podczepiam się pod pytanie. Krótko mówiąc, mam grę w XNA, chcę wstawić ją na market iOS, Android i WP8. Jak wygląda tutaj sprawa z Xamarinem?

      • @bartek: Jeśli mogę odpowiedzieć na pytanie… Musisz posiadać licencje na każdą platformę oddzielnie (ios, android). Kupno na stronie https://store.xamarin.com/
        Wersja Professional za $718 (obie licencje). Studenci mogą kupić licencje ze sporym rabatem za $158(obie).

        Trzeba jeszcze pamiętać, ze jeśli chcesz używać MonoTouch (iOS) musisz posiadać Mac’a. Nie da się zainstalować (używać) pełnej wersji na maszynie wirtualnej z MacOS ani na komputerach typu Hakintosh. Sam przekonałem się o tym na własnej skórze, co skończyło się kupnem używanego Maca Mini za 1000zl

      • Dzięki za jasną odpowiedź.
        @flatplanet: Czy mógłbyś powiedzieć jak wygląda sprawa rzeczy takich jak np. użycie isolated storage dla wp7 przy ‚portowaniu’ na inne platformy? Podobnie ciekaw jestem innych szczególnych dla platformy operacji takich jak użycie akcelerometru, MouseState jako ekwiwalent dotyku itp.

      • @bartek: Isolatedstorage działa bez problemów. Jeśli chodzi o inne elementy to są one zwykle specyficzne dla każdej platformy i występują w postaci klas dotnetowych. Jeśli chciałbyś coś bardziej „zunifikowanego” to może: http://xamarin.com/mobileapi . No i zawsze pozostaje napisać wrapper z jakimś interafacem

  9. Pingback: Installing MonoGame for Windows Store apps | Wojciech Poniatowski [EN]

  10. Pingback: Portowanie gier z XNA WP7 na Windows 8 MonoGame | Wojciech Poniatowski [PL]

Możliwość komentowania jest wyłączona.