wybor-technologii-silnika

Wybór technologii do pisania gier

Allegro vs SFML vs Unity vs Unreal Engine.

We wstępie chciałbym zaznaczyć, że ten wpis jest dla osób, które chcą zacząć pisać gry lub też zastanawiają się nad przejściem z 2D do 3D i zastanawiają się znowu: jakiego silnika użyć?

W swoim obiektywnym zestawieniu wybrałem 4 obiektowe i chyba najbardziej popularne „silniki” do gier, które jednocześnie są darmowe.

Pierwsze kroki: 2D czy 3D?


Jeżeli właśnie stawiasz swoje pierwsze kroki w tym cudownym zajęciu jakim jest gamedev to zdecydowanie odradzam ci zaczynać od 3D.

Mimo, że obecnie silniki do pisania gier trójwymiarowych są naprawdę dość proste w obsłudze, to osoba, która nigdy wcześniej nie miała do czynienia z pisaniem gier prawie na pewno się w nim zagubi i zniechęci (oczywiście są wyjątki).

Wcześniejsze zrobienie gry 2D dość mocno pomaga intuicyjnie zrozumieć wiele mechanizmów zastosowanych w silnikach wysokopoziomowych, co ważne wiedza zdobyta w technologii 2D przenosi się (w sporej części przypadków) na gry 3D, które robi się analogicznie.

Pierwsze kroki: Allegro czy SFML, a może Unity?


Kolejnym pytaniem przed jakim stają osoby jest wybór technologii, czy też silnika (to określenie pasuje tutaj jedynie do Unity).

Zdecydowanie odradzam Unity na początek z tych samych powodów dlaczego odradzam zaczynać od 3D. Jasne można zacząć od Unity, wiele osób tak robi, ale znowu: po napisaniu gry w Allegro czy SFML, wiele rzeczy w Unity na start wyda wam się oczywistych, napisanie gry w bibliotece niższego poziomu pomaga lepiej zrozumieć jak działają poszczególne mechanizmy, czego nie doświadczycie w pełni w UE, czy Unity.

Pozostał nam wybór Allegro vs SFML.

Mi osobiście Allegro nie przypadło do gustu, gdy ja zaczynałem nie posiadało zbyt wielu przykładów, a dokumentacja pozostawiała wiele do życzenia.

Myślę, że gdybym zaczynał pisać gry dzisiaj to dalej bym wybrał SFML. Jest to nakładka na openGL, dzięki czemu uzyskujemy multiplatformowość, jest to biblioteka wciąż wspierana i rozwijana, dokumentacja i przykłady na stronie są na bardzo wysokim poziomie.

SFML umożliwia także nieco więcej niż dość prymitywne Allegro, ale to są raczej osobiste preferencje.

2D ⇒ 3D, Unity vs UE


W tym paragrafie ciężko stwierdzić jednoznacznie, który silnik jest lepszy. Pomijam tutaj różnice wynikające z „darmowości” tych produktów.

Jeżeli chcecie pisać gry na komputery osobiste to wybrałbym Unreal Engine 4, który jest dużo bardziej rozbudowany niż Unity 5. Na desktopach jest też nieco wydajniejszy.

Jeżeli chcielibyście pisać gry mobilne to polecam Unity, które jest sporo lżejsze i mniej wymagające dla urządzeń mobilnych.

Podsumowując


Zaczynamy od pisania gier 2D, gdzie wybieramy Allegro lub SFML, następnie w zależności od preferowanej platformy wybieramy silnik Unreal Engine (desktopy) lub Unity (urządzenia mobilne).

Code ON!


  • krecik1334

    Pominąłeś liba do grafiki 2D – SDL 2.0, ta biblioteka jest prosta, do implementacji w czystym języku C. Polecałbym dla kogoś kto zaczyna z GameDev, SDL nie jest rozbudowany i jest dość niskopoziomowy. Dużo lepszy od Allegro, prostszy od SFML.

    • Zdaję sobie sprawę o jego istnieniu, jednak chciałem aby w moim zestawieniu znalazły się biblioteki nastawione głównie pod programowanie obiektowe. Dodatkowo problem z SDL jest taki, że zatrzymał się na wersji 2.2 i już raczej nie jest rozwijany (a przynajmniej na to nie wygląda).

    • Pan Kulomb

      Naprawdę po 1 projekcie w SDL i 0 w SFML jesteś w stanie stwierdzić co jest prostsze? Moim zdaniem SFML jest prostszy, ponieważ jest obiektowy.

      • krecik1334

        Jest prostszy bo zawiera dużo mniejsze API i do tego nie wymusza programowania obiektowego jeśli ktoś jest początkujący i kodzi proceduralnie.

        • Jasne, tuta opinie odnośnie trudności mogą być podzielone, jednakże gdy ja zaczynałem przygodę z SFML to jedynie co wiedziałem o obiektowości, czy ogólnie klasach to że musimy stworzyć obiekt tej klasy, a następnie metody wywołujemy przez nazwa_obiektu.nazwa_metody, z czego wynika że SFML jakoś specjalnie trudny nie jest.
          W SDL z tego co pamiętam używało się wskaźników, a nie każdy lubi pracować na wskaźnikach.

  • filipekczek7

    Krecik? Kulomb? Wy też tutaj? 😀 Specjalnie założyłem konto na Disqus żeby to napisać 😀 Pozdrowienia dla całego forum Mirosława Zelenta 😉

    A tak serio (to już jest do ciebie Szymon ;)), to bardzo podoba mi się twój blog, czytam przede wszystkim kursy SFML-a, tylko że już się skończyły. Ale i tak jeszcze nie przeczytałem 😉 Tak to nie miałem potrzeby nic komentować, ale chciałem powiedzieć, że prowadzisz super bloga 😉 Wiem, że jeśli chodzi o SFML-a to już koniec, bo nie raczej nic więcej na ten temat, ale czasem chętnie wpadnę na stronę główną sprawdzić co nowego 😉

    • Witaj, fajnie że ci się podoba to co robię, a jeżeli chodzi o SFML’a to teoretycznie kurs RPG jest w trakcie pisania, więc faktycznie może jeszcze coś się pojawi nowego jeżeli chodzi o SFML’a.

      • filipekczek7

        A no tak, bo jest SFML – przetłumaczone oficjalne tutoriale, robimy grę w SFML-u i piszemy grę RPG, ale ja na początku myślałem, że ten RPG to nie jest w SFML-u. Już sprawdzam 😉 … No, rzeczywiście, SFML, tylko że tym razem więcej SFML-a. Po przeczytaniu wszystkich poprzednich tutoriali wezmę się za tego RPG-a 😉

        Pozdrawiam i życzę szybkiego rozwoju bloga!

  • tycjan

    Czytam, czytam te twoje kursy i musze pogratulować przejrzystości, (specjalnie po to założyłem disqusa). Dwa weekendy tylko na twoim blogu i SFML w małym palcu i do tego pierwsza bardziej rozbudowana gierka 🙂 btw Pozdrawiam ludzi z forum MZ. Twój blog to teraz u mnie numer jeden ;D Wyprzedziłeś nawet z3s.pl i niebezpiecznika

    • Dzięki, szykują się właśnie dość ciekawe tematy na bloga.
      Pozdrawiam

  • Bohdan

    W ogóle nie dajesz żadnych argumentów. Piszesz ogólnikami. Wygląda na to, że masz zbyt małe doświadczenie, by je przekazywać.

    W tym „2D ⇒ 3D, Unity vs UE” to już pojechałeś 😉

    Unreal ma trochę fajnych rzeczy w standardzie (np. niszczenie obiektów 3D). Jednak w Unity spokojnie to nadgonimy z pomocą Asset Store. Unity daje większy komfort pracy – za sprawą użytego języka C#, oraz ma znacznie wydajniejszy edytor – UE4 mi muli na tegorocznym Macbooku, podczas gry Unity 5 śmiga jak żyleta. Blueprinty można o kant d*** rozbić, ani to wygodne, ani intuicyjne. Do najprostszych rzeczy w UE4 nie znajdziesz takiej pomocy online jak do Unity 5.

    • Ten art do jedynie zestaw wskazówek o jakim silniku warto jest myśleć na start (jako kilka subiektywnych wskazówek), a nie „wady i zalety silników do gier”. Także oczekiwanie po nim głębokiej analizy jest dość dziwne.

      Nie powiedziałbym, też że użycie C# jest czymś pozytywnym, jeżeli pisałbym większą grę to chciałbym użyć języka który daje mi większą władzę nad tym co się dzieje z obiektami, a to że jest trudniejszy i nie każdy sobie z nim radzi – cena wydajności.

      To, że Unity lepiej ci działa na Macbooku to raczej kwestia tego, że Unity pierwotnie powstało na Maca (oraz Unity jakby nie patrzeć ma znacznie prostszy edytor), a w przypadku UE na Macu masz port.

      Do końca twojego komentarza ciężko jest mi się odnieść bo rzucasz ogólnikami.

      (taki mały warn: nie toleruję na blogu wulgaryzmów także zagwiazdkowanych, jeżeli nie umiesz wyrazić swojej opinii bez ich użycia to spodziewaj się, że twój komentarz po prostu zniknie)

      • Bohdan

        To, że Unity lepiej działa mi na Macu to raczej kwestia tego, że jest lepiej napisany. 8GB pamięci ram spokojnie wystarcza dla Unity. UE jest znacznie bardziej wymagający. Na komputerze z Windowsem sprzed 2 lat również Unity dobrze mi działa. Więc teoria o „portach działających gorzej” tu nie pasuje 😉

        Jeśli przez „prostszy” masz na myśli łatwość obsługi, to oczywiście masz rację, Unity jest pod tym względem bardzo dopracowany.

        Jeśli chodzi o język to chyba lepiej się zabezpieczyć przed wyciekami pamięci zanim nasz projekt się rozrośnie do takiego poziomu, że nie będzie opłacalne przepisanie go do Unity 😉