Co robić po skończeniu kursu SFML?

Co robić po skończeniu kursu SFML (i napisaniu własnej gry)? Jakiej biblioteki się uczyć po napisaniu gry w SFML? Czy warto przy niej zostać czy lepiej spróbować pisać gry w jakiejś innej? Czy można rozwinąć jakoś funkcjonalność SFML?

Jeżeli zadawałeś sobie, któreś z pytań powyżej lub chciałbyś się po prostu dowiedzieć czy warto pozostać przy SFML to zapraszam do przeczytania tego artykułu, w którym odpowiemy sobie na te pytania.

[!] Uwaga [!] Akurat ten wpis zdążył się dość szybko zestarzeć, dziedzina silników jest zbyt płynna by móc coś poradzić na dłużej, oprócz wspomnianych tutaj silników warto też zwrócić uwagę na Unreal Engine 4, który też już jest dostępny za darmo. Code ON!

Zacznijmy od tego, czy warto zostać przy SFML. Moim zdaniem niekoniecznie, ponieważ SFML sam w sobie nie udostępnia nam zbyt zaawansowanych narzędzi (które oczywiście sami możemy napisać) i nie pozwala nam rozwinąć zbytnio swoich zdolności w programowaniu gier. Jeżeli chcemy zostać koniecznie przy SFML to polecam poszerzyć jego funkcje poprzez OpenGL, na którym SFML bazuje i można w stosunkowo łatwy sposób zwiększyć dostępne opcje SFML’a. O niskiej popularności w wyborze SFML’a może świadczyć praktycznie brak bardziej znanych gier. Jedyna „sławna” gra jaka przychodzi mi do głowy to Open Hexagon.

Open Hexagon

Skoro nie SFML, to co należy wybrać do tworzenia gier 2D? Jeżeli poszukujemy silnika/biblioteki czysto 2D to dobrym rozwiązaniem może być nieco stare SDL, na którym powstało więcej bardziej znanych gier (choćby Prison Architect), jednak jak wspomniałem ta biblioteka jest już trochę podstarzała, a czy oferuje więcej niż SFML ponieważ nie miałem z nią zbyt dużej styczności, jednak jest zdecydowanie bardziej popularna (może to być też zasługa tego że jest starsza od SFML, jednak wspomniałem o niej bo by wypadało).

Prison Architect

Jednym z lepszych rozwiązań (moim zdaniem) jest pójście w biblioteki 3D, które zdecydowanie oferują nam dużo więcej wbudowanych narzędzi i pozwolą na tworzenie gier w przyjemniejszy sposób, także gier 2D. Dużym plusem takiego rozwiązania, że mimo używania narzędzi do pisania gier 2D to tych samych narzędzi będziemy używali w podobny sposób do gier 3D co oznacza, że przy pisaniu gry 2D będziemy się też w jakiś sposób uczyli pisać grę 3D.

Tutaj wybór mamy dość spory możemy przebierać pomiędzy bibliotekami: OpenGL jest w pełni darmowy, dzięki czemu możemy wydawać gry i czerpać z nich korzyści bez potrzeby kupienia licencji etc. Jest także multiplatformowy , czyli możemy wydawać gry nie tylko na Windowsa.

Możemy także wybierać spośród DirectX’a, CryEnigne’a, Unity, czy też innych płatnych silnikach.

Ja skupię się na silniku, który ja wybrałem czyli Unity3D, które ostatnio się robi bardzo popularne (przykładowe gry: RimWorld, Rust, Kerbal Space Program). Co ważne Unity jest darmowe dla developerów, dopóki zyski z gier nie przekroczą określonej kwoty i wtedy trzeba wykupić Unity Pro, które daje nam nowe możliwości.

Edytor Unity

To co można dobrego powiedzieć o Unity to to że posiada bardzo przyjemny edytor, a także własny silnik fizyki, co oznacza, że tworzenie gry jest dużo szybsze niż okodowanie tego samemu (co nie oznacza że nie możemy tego zrobić). To co mnie „kupiło” to bardzo przejrzysta dokumentacja i masa poradników. Całość sama w sobie (sposób tworzenia obiektów itd) może być nieco  problematyczna szczególnie dla osób, które nie miały wcześniej styczności z tworzeniem gier w prostszej bibliotece (np. sfml, sdl). Kolejnym plusem jest fakt, że można wydawać tutaj gry na wielu platformach (windows, mac os, linux, android, itd), minusem może być to że skrypty są pisane w języku c# (które jest podobne do c++) lub java script.

Podsumowując:

Po skończeniu kursu i napisaniu jakiejś gry w SFML należy znaleźć bibliotekę, która pozwoli nam rozwinąć swoje zdolności w tworzeniu gier, SFML samo w sobie nam na to niezbyt pozwala, najlepiej by była to biblioteka pozwalająca nam pisanie gier również w 3D. Sam wybór bilioteki nie jest ważny bo to zależy od naszych osobistych preferencji, ważne aby w jakiś sposób się ciągle rozwijać i nie pozostawać w miejscu 🙂