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?
software-engineering
Trevor Powell
źródło
źródło
Odpowiedzi:
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ć.
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.
źródło
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.
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.
źródło
źródło
Oprócz funkcji związanych z grą, które skomentowali ludzie, należy również rozważyć kilka ogólnych pytań.
źródło
Krótki ściągawki do oceny bibliotek, frameworków, silników i zestawów SDK oraz wybierania najlepszych
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.
źródło
Przejdź tutaj .
Pomimo wielu dostępnych silników do gier, tak naprawdę nie masz tak wielu możliwości.
źródło