Co powinienem wziąć pod uwagę oceniając biblioteki, silniki i ramy tworzenia gry?

10

Zrobię grę. Zauważyłem, że dostępnych jest wiele silników gier, bibliotek i frameworków, i mam problem z wyborem, którego użyć.

Jestem już całkiem dobry w niektórych językach programowania, ale są też inne, których w ogóle nie znam. Nie jestem przeciwny uczeniu się nowych języków programowania, jeśli to pomoże, ale moim prawdziwym celem jest stworzenie mojej gry.

Jakie kryteria powinienem zastosować, aby porównać między sobą silniki, biblioteki i frameworki, abym mógł zdecydować, który pozwoli mi być najbardziej produktywnym do ukończenia gry?

Trevor Powell
źródło
11
Do tego, co warto, stosuję podejście dwuetapowe: (1) wybierz jedno arbitralnie; (2) później żałuję tej decyzji. Zaletą jest to, że szybko pokonujesz pierwszy krok.
Cameron Fredman
2
Czy nie powinno to być pytanie społeczności Wiki?
Marton
Cieszę się, że zostało to przekształcone w pytanie społeczności Wiki, ale nie ma dla mnie takiej możliwości. Zakładam, że CW na pytania jest w dzisiejszych czasach sprawą wyłącznie moderatora.
Trevor Powell
@Marton Dlaczego Twoim zdaniem powinien to być CW?
MichaelHouse
1
@ Byte56 Ponieważ to pytanie pojawia się zawsze, gdy ktoś chce rozpocząć tworzenie gry. Istnieje już wiele frameworków / silników, a taki ogólny wpis „na co zwrócić uwagę” Wiki byłby naprawdę pomocny. Myślę, że odpowiedziałbym na wiele pytań „z którego silnika powinienem skorzystać”, które pojawią się na tej stronie. To ostatnie sformułowanie sprawiłoby, że takie pytania byłyby „mało konstruktywne”.
Marton

Odpowiedzi:

14

To trochę jak wybranie samochodu lub komputera. Lub prawie wszystko, co ma różne funkcje, z których bardzo Ci zależy, innych, którym nie przeszkadza, a niektórych, których możesz nawet nie chcieć uwzględniać.

  1. Zrób listę interesujących Cię funkcji, tj. Obsługa 2D / 3D, oświetlenie, fizyka, używa dobrze znanego języka itp.
  2. Uszereguj je według ważności dla Ciebie, na podstawie bieżącego projektu.
  3. Zbadaj swoje opcje i dla każdej opcji spróbuj uszeregować ich funkcje wsparcia w oparciu o stopień dopasowania do celów projektu.
  4. Użyj tego, który najlepiej pasuje do twoich celów. Alternatywnie możesz wybrać kilka najlepszych i dać im jazdę próbną. Zaimplementuj prostą funkcję swojej gry i zobacz, która bardziej Ci się podoba.

Myślę, że wiele z tego sprowadza się do faktycznej wiedzy, czego chcesz. Co oznacza, że ​​musisz mieć całkiem niezły pomysł na grę, którą tworzysz. Co prawdopodobnie oznacza, że ​​będziesz potrzebować dość szczegółowego planu, w jaki sposób wdrożyć swoją grę i co będzie zawierać. Jako bonus, posiadanie wszystkich tych szczegółowych informacji pomoże ci ukończyć grę. O wiele łatwiej jest przestrzegać planu i sprawdzać rzeczy z listy niż po prostu mieć pomysł na grę i po prostu zacząć pisać kod.

MichaelHouse
źródło
3

Najpierw powinieneś mieć co najmniej ogólne pojęcie o tym, jaka będzie Twoja gra i czego będzie potrzebować. Często pojawiają się pytania, czy Twoja gra będzie wymagała fizyki. Następnie są powiązane pytania, które dotyczą głównie środowiska, w którym twoja gra będzie rozwijana i działała, oraz tego, jak komercyjna jest twoja gra.

  • Jakie platformy będziesz wspierać? Na jakiej platformie rozwijasz swoją grę?
  • W jakich językach programowania zamierzasz wdrożyć swoją grę?
    • Wpływ na to mają platformy, które zamierzasz obsługiwać.
  • Jaką grafikę, dźwięk i wejście będzie miała twoja gra?
  • Czy Twoja gra jest darmowa, czy open source, czy jest komercyjna?
    • Jeśli masz oprogramowanie typu open source, czy zechcesz później przejść na komercję, czy to z grą, czy z inną grą wykorzystującą silnik Twojej pierwszej gry?

Jeśli zamierzasz być tylko systemem Windows, biblioteki oparte na DirectX i C # są silnymi kandydatami. Jeśli chcesz być wieloplatformowy, to spójrz na biblioteki oparte na OpenGL i C / C ++ lub Flash, jeśli twoja gra jest 2D i możesz sobie pozwolić na narzędzia Adobe. Podobnie jak Twoja platforma, język programowania wpłynie na dostępne biblioteki. Program napisany w C ++ będzie miał trudności z wywołaniem biblioteki Java.

Jeśli Twoja gra jest komercyjna, możesz rozważyć zakup silnika takiego jak Unity. Jeśli twoja gra jest darmowa lub open source, będziesz chciał skupić się na bibliotekach, które są również open source lub przynajmniej bezpłatne dla niekomercyjnych projektów. Biblioteki open source są oczywiście również przydatne w projektach komercyjnych. Patrząc na biblioteki typu open source, sprawdź ich licencję. Niektóre licencje wymagają utworzenia części własnego oprogramowania jako oprogramowania typu open source w zależności od sposobu korzystania z biblioteki. Ograniczenie się do bibliotek typu open source spowoduje oczywiście kolejne ograniczenie bibliotek, których możesz używać.

Patrząc na bibliotekę, sprawdź, jak aktywny jest jej rozwój i społeczność. Ufałbym bibliotece, która jest dobrze znana i aktywnie utrzymuje więcej niż jedną, która jest hostowana na czyjejś stronie uniwersyteckiej, która nie była aktualizowana od 1999 roku.

Ostatnie pytanie, zwłaszcza jeśli nie jest to twój pierwszy projekt gry, brzmi: czy istnieją pewne aspekty gry, o których wiesz, że będziesz miał problemy, jeśli spróbujesz to zrobić samemu. Ponieważ w szczególności te aspekty są kandydatami do znalezienia biblioteki. Jeśli twoja gra wymaga wykrywania kolizji i wiesz, że nie możesz samodzielnie wdrożyć wykrywania kolizji (tak jak ja nie mogę), rozważ podniesienie silnika fizyki i skorzystanie z dostępnych w nim funkcji wykrywania kolizji.

Aaron
źródło
1
  • Czy biblioteka robi to, czego potrzebujesz?
  • Czy specjalizujesz się w robieniu tego, czego potrzebujesz? Ile bałaganu jest z tym związane?
  • Jak to jest zaprojektowane? Czy chcesz zwymiotować, gdy to zobaczysz? Jeśli tak, to prawdopodobnie nie jest to najlepszy wybór dla twojego zdrowia i zdrowia psychicznego.
  • Czy jest wystarczająco elastyczny dla twoich potrzeb? Nie jest dobrze zauważać, że biblioteka nie działa po tym, jak napisałeś już połowę swojego kodu.
  • Jaka jest przyszłość biblioteki? Czy programista z czasem dodaje funkcje? Czy on naprawia rzeczy? Czy on coś ulepsza? Może to mieć znaczącą różnicę, jeśli jest prawdopodobne, że rozwój Twojej gry zajmie kilka lat. Nie tak ważne w przypadku małych projektów, które będziesz mieć za miesiąc.
  • Czy rozmiar jest odpowiedni? W przypadku małych projektów może mieć duże znaczenie to, czy odtwarzacz musi pobrać 20 MB, czy 200 MB. Większe projekty są prawdopodobnie na tyle duże, że rozmiar oprogramowania pośredniego nie ma większego znaczenia.
API-Beast
źródło
1

Oprócz funkcji związanych z grą, które skomentowali ludzie, należy również rozważyć kilka ogólnych pytań.

  1. struktura wsparcia - nawet jeśli silnik gry jest doskonały, być może wsparcie jest zbyt drogie lub nie istnieje.
  2. jak łatwo jest się uczyć - możesz nie chcieć czegoś zbyt dużego, ponieważ czas na naukę może być przeszkodą.
  3. czy obejmuje to twoje przyszłe plany - możesz nie chcieć tracić czasu na naukę idealnego silnika na razie, tylko po to, aby ponownie nauczyć się zupełnie nowego silnika od zera na następny projekt. A może tego chcesz.
  4. licencja - jeśli tworzysz grę z zamkniętym kodem źródłowym, upewnij się, że licencja silnika nie powoduje, że jest ona otwarta.
Alex
źródło
0

Krótki ściągawki do oceny bibliotek, frameworków, silników i zestawów SDK oraz wybierania najlepszych

  • Biblioteki, frameworki, zestawy SDK silników itp. Są narzędziami, które służą do rozwiązywania problemów lub pomagają w rozwiązywaniu problemów i spełniają określone wymagania.
  • Ocena oznacza ustalenie, który z nich spełnia najwięcej wymagań.

Dlatego zanim jeszcze zaczniesz oceniać, musisz jasno określić, w jakim scenariuszu jesteś i jakie masz wymagania, ponieważ na te pytania powinna odpowiedzieć ocena.

Scenariusz określa, skąd pochodzą wymagania (kto decyduje, co jest wymaganiem, a co nie).


Typowe scenariusze to:

Najobszerniejszy scenariusz projektu

Ty sam lub wraz z przyjaciółmi chcesz stworzyć swoją (być może pierwszą) grę. Idealnie, możesz sam decydować o wszystkim i jesteś ograniczony tylko do podstawowych specyfikacji technicznych i wymagań technicznych (czy powinna to być gra mobilna, gra na PC, konsola, gra internetowa ...). Możesz zdecydować, co chcesz.

Domniemane wymagania będą polegać na tym, że możesz chcieć nauczyć się czegoś konkretnego (języka, konkretnego frameworka / silnika)

Scenariusz studencki

Wymagania mogą pochodzić od nauczyciela. Typowe wymagania, jakie miałem w tym przypadku: gra musi mieć pewne elementy fizyki i wsparcie sieci dla wielu graczy. Lub musi być napisany w C ++. Tak więc ocena staje się łatwa. Szukasz silnika gry, który pozwala kodować w c ++ i może już zawierać silnik sieciowy i fizyki.

Bardziej zły (rzeczywisty) wymóg: wszystko musi być napisane od zera (ale korzystanie z bibliotek jest dozwolone). Dlatego edytor nie jest dozwolony (np. Unity3D). Więc nie szukasz silników / sdks, ale bibliotek.

Scenariusz gry niezależnej

Chcesz później zarabiać na grze. Dlatego musisz ją jakoś sprzedać, co spowoduje sprawdzenie, które wymagania pochodzą ze sklepu, w którym chcesz sprzedać swoją grę.

Czy pozwala na gry Java, gry HTML5, ...)

Czy wymaga to dołączenia określonych bibliotek (jeśli tak, w jakich językach są dostępne te biblioteki)

Google Playstore wymaga napisania gry jako gry na Androida, Apple AppStore wymaga napisania gry jako aplikacji na iOS. Lub musisz wybrać silnik wieloplatformowy.

Profesjonalny scenariusz

Masz nie tylko sklep z wymaganiami, ale najprawdopodobniej wydawca lub klient mają własne wyobrażenia o wymaganiach. W tym scenariuszu będziesz miał także większy zespół zatrudnionych programistów. W zależności od zestawu umiejętności pojawiają się nowe wymagania (nasi programiści mogą pisać tylko c ++, więc nie możemy używać czystego silnika gry Java / Android bez potrzeby (dużo) czasu na naukę czegoś nowego).

Nie wchodzę w szczegóły tego scenariusza, kiedy udało ci się zbudować zespół pracowników i znaleźć klienta / wydawcę, którego już wiesz, czego szukasz w ocenie rzeczy.


Jak zdecydować, jakie są moje wymagania, kiedy jestem hobbystą lub indi i nikt mi nie mówi?

Zadajesz sobie pytania na temat swoich celów i gry?

  • Jaka powinna być moja gra? mobilne, pc, web (html / Js), których kontrolerów będę używać (ekran dotykowy, żyroskop, pad do gier)

  • Co nowego w mojej grze i co mają też inne gry. Te części, które mają także inne gry (renderowanie, audio, obsługa danych wejściowych), będą wykonywane przez większość narzędzi (silników gier), jakie można znaleźć, lub łatwo jest spakować biblioteki posiadające tę funkcjonalność we własnej grze lub silniku gry.

  • Jaki jest wymiar mojego projektu: wściekłe ptaki lub skyrim? Angry Birds można wykonać w prawie każdym narzędziu, a skyrim byłby ograniczony do narzędzi o wysokiej wydajności z (zakładanymi) latami dodatkowej personalizacji (wysokowydajne silniki terenowe nie są łatwe)

  • Czy moim jedynym celem jest zrobienie gry? tak? idealnie, możesz użyć bardzo zaawansowanych rzeczy, takich jak Unity, Unreal, ... posiadających poręczny edytor i dużą społeczność zapewniającą samouczki i odpowiadającą na pytania. Odciąża cię to od obsługi zadań niskiego poziomu, takich jak ładowanie siatki, wdrażanie własnych funkcji matematycznych ...

  • Czy moim celem jest nauczenie się czegoś konkretnego? tak? czego chcesz się nauczyć?

  • Który język powinienem wybrać? Jeśli celem jest nadal wykonanie gry, wybierz tę, którą Twój zespół zna najlepiej? Jeśli chcesz nauczyć się określonego języka, wybierzesz narzędzie w tym języku.

  • Czy narzędzie X będzie miało wystarczającą wydajność dla mojej gry? Może nigdy się nie dowiesz. Nawet w dużych produkcjach faza optymalizacji i polerowania zajmuje dużo czasu i jest ogromnym wyzwaniem. Zacznij dbać o wydajność, gdy napotkasz problemy z wydajnością. Nie wiesz, jak będzie działać narzędzie, dopóki nie osiągniesz swoich limitów. Wszystko na stronie dewelopera narzędzi to tylko przybliżone przypuszczenie. Po latach oceny narzędzi przestałem wierzyć w cokolwiek ze strony programistów.


Odpowiedzi na takie pytania prowadzą do wymagań. Ocena polega na znalezieniu listy narzędzi i TESTOWANIU (nie tylko czytaniu strony głównej) tego, co narzędzie może dostarczyć, a czego nie.


Wymagania nie są cięte w kamień, ale są dynamiczne. Przyjdą i odejdą podczas rozwoju. Na przykład, czy gra wymaga fizyki, zależy od projektu. Jeśli projekt się zmieni, wymaganie może się również zmienić.

Podejmij wymagania i zacznij. Zmieniającymi się wymaganiami są chleb powszedni cierpienia, ahm, zadowoleni deweloperzy niezależni od wielkości projektu i poziomu doświadczenia.

monty
źródło
0

Przejdź tutaj .

Pomimo wielu dostępnych silników do gier, tak naprawdę nie masz tak wielu możliwości.

  1. ograniczenia licencji. Niektóre silniki utrudniają wypuszczenie produktu bez uprzedniego uiszczenia dużych opłat licencyjnych, np. Unity , które pobierało na przykład dodatkową opłatę za kompilację na iOS ( zmieniło się to w 2016 r. )
  2. platformy. Czy zależy Ci na kierowaniu reklam na wiele platform? Które?
  3. 2D czy 3D? Niektóre silniki obsługują 2D.
  4. Wymaga fizyki? Niektóre silniki zapewniają fizykę
  5. FPS, RTS? Rozsądne może być użycie silnika, który jest wyspecjalizowany dla tworzonego typu gry.
  6. Oczywiście chcesz pracować w swoim ulubionym języku. Nie lubisz C? Więc nie używaj Allegro!
  7. Czy jesteś wielkim wzorcem projektowym, fanem OOP? Dobrze znane wzorce „nadużywa” OGRE
  8. Aktywny rozwój? Należy rozważyć kompromis między dostępnością najnowocześniejszych funkcji (DX11 / OGL 4) a stabilnością silnika, którego rozwój zwężał się kilka lat temu
  9. Baza użytkownika? Duża baza użytkowników oznacza zwykle lepsze fora, więc łatwiej jest odpowiedzieć na pytania
Bobobobo
źródło