MonoGame – czyli gry w C#! | Wprowadzenie

Wiele osób chciało kiedyś tworzyć własne gry. W tym także ja, były to co prawda dosyć dawne czasy. Czasy, w których chodziłem do pierwszych klas podstawówki, nie znałem wtedy nawet podstawowej budowy komputera – nie mówiąc już nic o programowaniu. Jednak lata mijały i pewnego dnia zabrałem się za naukę C++. Już nawet nie pamiętam kiedy dokładnie się to zaczęło 😉 Nie myślałem wtedy o pisaniu gier, chciałem po prostu tworzyć jakieś proste programy, poznać coś nowego. Zbiegło się to w czasie z prośbą mojego kolegi o napisanie dla niego pewnego programu… No i zaczęło się 😉 Wtedy pierwszy raz pomyślałem o napisaniu gry. Trafiłem na kurs SFML’a na stronie http://cpp0x.pl. Mój problem polegał jednak na tym, że bez znajomości podstaw chciałem zacząć pisać super grę. Poległem przy tworzeniu MENU… Szybko się zniechęciłem i wróciłem do nauki podstaw, kombinowania coś w WinAPI… Nie trwało to jednak zbyt długo, a przerzuciłem się na C# za radą użytkowników forum. Ogarnąłem w miarę ten język i pisałem proste aplikacje WPF. Po pewnym czasie jednak zadałem sobie pytanie… Czy w tym C# mogę pisać gry?

C#  i gry, czy w ogóle warto?

Jest to dosyć trudne pytanie, na pewno kontrowersyjne. Dlatego nie będę ukrywał, że odpowiem na nie dosyć subiektywnie. Moim zdaniem, jeżeli znamy dobrze C# i nie zamierzamy pisać jakiejś superprodukcji na miarę Crysisa, czy Wiedźmina – tylko jakąś bardziej rozbudowaną grę 2D, czy prostą w 3D to C# jak najbardziej się nada. Jeżeli jednak chcemy zrobić coś naprawdę dużego i zależy nam bardzo na wydajności lepszym rozwiązaniem będzie C++ i jakieś niskopoziomowe API jak np. DirectX, Vulcan czy OpenGL. Dlaczego? A no dlatego, że C# jest językiem wysokopoziomowym i niestety, ale języki niskopoziomowe takie jak np. C++ wyprzedzają go jeżeli chodzi o wydajność. Jednak w dobie dzisiejszego sprzętu ma to na prawdę małe znaczenie, z drugiej strony… w przypadku na prawdę dużych gier różnica będzie widoczna. Jednak, czy duże korporacje pisząc gry niskopoziomowo przejmują się zbytnio ich wydajnością? Sami możecie to ocenić 😉

To pisać gry w C#, czy nie pisać?

Moim zdaniem jak najbardziej pisać! C# jest językiem bardzo przyjemnym i wygodnym. Do tego narzędzie jakie nam udostępnia – MonoGame, dzięki któremu możemy pisać gry na wiele platform jednocześnie sprawia, że dla małych i średnich projektów jest to rozwiązanie idealne, tym bardziej jeżeli nad grą pracujemy sami lub w małym zespole. Ba! W MonoGame powstało nawet wiele gier komercyjnych! Nie są to może jakieś superprodukcje, ale jednak istnieją 😉

Słów kilka o MonoGame

MonoGame to framework stworzony dla C#, bardzo ułatwiający pisanie gier w C#. Jest to opensourcowa implementacja dawnego Microsoft XNA Framework’a. Różnice między nimi są na tyle małe, że właściwie można korzystać z masy poradników stworzonych właśnie dla XNA i z powodzeniem stosować je w MonoGame. Nie polecam jednak używania XNA – gównie z racji tego, że nie jest już rozwijany, a mamy przecież świetny zamiennik. MonoGame jest na tyle fajnym frameworkiem, że umożliwia pisanie gier zarówno na Windowsa, Linuxa, Maca i wszystkie popularne platformy mobilne. Jak to wygląda w praktyce? Pisząc grę przeznaczoną na Windowsa, można przenieść cały jej kod do projektu przeznaczonego dla Andoroida i skompilować… Tylko tyle! Oprócz tego musimy oczywiście zadbać o obsługę np. panelu dotykowego – inaczej naszą grą będzie można sterować tylko za pomocą np. myszki. MonoGame zadba o resztę. Możemy sobie nawet wybrać, czy nasza gra ma być renderowana przy pomocy DirectX’a, czy też OpenGL’a – oczywiście taki wybór mamy tylko na Windowsie, z przyczyn wiadomych 😛

Czy w MonoGame można pisać też gry 3D?

Jak pisałem wcześniej: Tak! Można pisać zarówno gry 2D, jak i gry 3D.

Ale jest jeszcze Unity…

Oczywiście. Jednak Unity nie pozwala na pisanie gier. To co robi się przy jego użyciu to raczej ich generowanie. Do tego Unity nie jest otwarte… Na pewno to rozwiązanie ma wiele zalet, ale też wad. Jednak nie wypowiem się co do nich, bo nigdy z tego rozwiązania nie korzystałem 😉 Jednak jeżeli chcesz nauczyć się pisania gier, a nie ich generowania to teraz nie zaprzątaj sobie tym głowy.

Tyle wstępu chyba wystarczy. W kolejnych wpisach zajmę się kodem 😉

2 przemyślenia nt. „MonoGame – czyli gry w C#! | Wprowadzenie

  1. „Jednak Unity nie pozwala na pisanie gier. To co robi się przy jego użyciu to raczej ich generowanie.”

    No chyba sobie żartujesz. Popełniłem kilka gier w Monogame (Android, iOS, Win8). Da się, ale w porównaniu do Unity to męczarnia.
    Unity jest prostsze, mniej zabugowane, kompletniejsze (np komponenty UI) i ma większą bazę użytkowników (co za tym więcej tutoriali, gotowych komponentów).
    Odkąd Unity jest za free używam go i do Monogame wracać nie myślę.

    • Nie będę się zbytnio wymądrzał, bo z Unity nigdy nie korzystałem. Jednak z tego co wiem, to oferuje ono gotowy silnik graficzny, z którego się korzysta + można pisać do tego jakieś skrypty. Na pewno jest to dzięki temu narzędzie prostsze w obsłudze. Jednakże, na pewno(tak mi się wydaje :P) jest masa rzeczy, których w Unity, nie zrobisz – ze względu na ograniczenia silnika, a w MonoGame nie ma takich ograniczeń. Chyba, że ograniczają nas umiejętności 😉

      Co do „zabugowania” MonoGame. Co masz na myśli? W najnowszej wersji jeszcze nie zauważyłem żadnych błędów. Jedyne, które występowały były spowodowane (moimi)błędami w kodzie 😛

      PS: Tak czy owak, moim zdaniem lepiej zacząć od czegoś w stylu MonoGame/SFML, żeby zrozumieć jak gry działają. Dopiero wtedy przerzucić się na Unity i tego typu rzeczy, bo fakt robienie w tym gier jest znacznie prostsze 😉

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