Przez pewien czas pracowałem z Unity3d i stwierdziłem, że jest to część 2D z OnGUI () lub GUITextures zbyt niezdarna. Co więcej, nawet najmniejsza gra wykonana na Unity3d wymaga pobrania co najmniej 10 MB, co jest po prostu zbyt dużo jak na grę 2D.
Obecnie szukam silnika do 2D. Próbowałem Cocos2D, ale to tylko iOS i nie chciałbym przepisywać wszystkiego na inny język dla Androida (więc np. Port Java Cocos2d dla Androida nie jest opcją). Zamiast tego chcę napisać kod raz i bezproblemowo wdrożyć go na iOS, Android i ewentualnie Windows Phone 7. Mam zarówno Maca, jak i Windowsa.
Aby być bardziej szczegółowym, oto moje wymagania dotyczące silnika:
- musi być wieloplatformowy
- musi być wydajny
- powinienem być C ++, Java, C # lub Objective C, ponieważ czuję się z nimi dobrze i NIE Flash, JavaScript, HTML5, ponieważ nie jestem programistą
- musi mieć dużą społeczność, samouczki, dodatkowe biblioteki, które obejmują większość rzeczy, które można mieć podczas programowania bezpośrednio na iOS lub Android (rozliczenia w aplikacji, facebook itp.)
- ostatecznie dostarczona paczka nie może być zbyt duża
- silnik może być darmowy, ale nie miałbym nic przeciwko zapłaceniu rozsądnej ceny
Znalazłem następujące silniki:
- Marmalade (i silnik IwGame na nim) - C ++, znalazł ogólnie bardzo pozytywne recenzje Marmalade, ale nie ma pewności co do IwGame. EDYCJA (marzec 2013) : Wygląda na to, że pakiet Marmalade SDK zawiera teraz Cocos2Dx i niektóre wbudowane IDE, co czyni go znacznie lepszym (i kosztuje 150 USD rocznie dla niezależnego dewelopera, co jest w porządku).
- Corona SDK - Lua (wątpliwa wydajność), również potrzebuje połączenia z Internetem, aby skompilować kod
- Cocos2d-x - C ++, otrzymał wiele recenzji od programistów, głównie pozytywnych i wielu uważa, że najlepiej dla 2D
- Kod cząstek - Java + Eclipse, nie znaleziono żadnych recenzji ani komentarzy
- Moai - Lua, nie mogę znaleźć żadnych recenzji / opinii na ten temat
- Silnik małpy - wydaje się mieć za mało funkcji
- Haxenme - to Flash, nigdy go nie użyłem i nie chcę
- używaj Unity3d, ale z pakietami 2D, takimi jak 2D Toolkit
- porty SDL na Androida (także tutaj ) i iOS - nie wygląda na to, by miał dużo wsparcia lub rozwoju (?)
- GLBasic - Podstawowy język, nie podoba mi się
- playN - wydaje się być na wczesnym etapie rozwoju (?)
- Gamvas - HTML5, nie wygląda dla mnie jak dojrzały silnik
- Ignifuga - Python, również nie wygląda na dojrzały
- ORX - nie jestem pewien, czy nadal jest rozwijany (?)
- Construct 2 - przypomina GameMaker, może być odpowiedni do szybkich prototypów, ale zdecydowanie nie do gier na poziomie branżowym
- XNA, a następnie przenieś grę za pomocą ExEn (wymagałby Mono Touch, aby przenieść do iOS i Mono dla Androida, aby przenieść do Androida) - C # i prawdopodobnie jest bardziej przemyślany dla osób pochodzących z produktów Microsoft, takich jak xBox (pochodzę z Androida). Ponadto te narzędzia Mono kosztują w sumie 800 USD dla małych programistów
- Wpływ - JavaScript, używa HTML5. Nie przepadam za JavaScriptem (np. Preferowanym C # na Unity3d), również nie jestem pewien wydajności, ponieważ działa w przeglądarce (?)
- GameMaker - własny język skryptowy GML i tak naprawdę pamiętam ten jako narzędzie dla nie-programistów. Czy rzeczywiście wyrósł na prawdziwy silnik, mam na myśli poważny rozwój?
- AppGameKit - C ++, ale wciąż wydaje się być całkiem nowy. Nie znalazłem na nim żadnych recenzji
- używaj Cocos2D i Objective C do programowania tylko na iOS, a następnie stwórz z niego APK dla Androida za pomocą Stella SDK . Czy ktoś to zrobił? Jestem pewien, że będą ograniczenia, a co z rozliczeniami Google w aplikacji, AdMob i integracją z Facebookiem na Androidzie?
- Moscrif - JavaScript, wygląda na to, że jest bardziej dla byłych programistów
- Starling - Flash 11, nie przepadam za Flashem
- ND2D - jeszcze nie 1.0, czy ma wiele funkcji?
Byłbym szczęśliwy, gdybyś mógł skomentować swoje doświadczenia z silnikami i zasugerować, który z nich (lub cokolwiek innego, czego mi brakowało) jest najlepszy dla opisanych wymagań. Mogę się również mylić z moimi pierwszymi wrażeniami na temat niektórych silników.
Obecnie myślę o Marmalade + IwGame jako najlepszej opcji, ale ponieważ nie mam wielu informacji na temat Cocos2d-x i kodu cząstek, nie jestem do końca pewien.
Dziękuję Ci!
EDYCJA (czerwiec 2013): Do tej pory stworzyłem 2 wieloplatformowe gry 2D i dla obu korzystałem z Unity3D z wtyczką 2D Toolkit. Do gry z prostym GUI użyłem prostego, własnego systemu GUI opartego na własnym Unity. W przypadku bardziej złożonego (np. Gdzie elementy GUI mogą się pokrywać) użyłem wtyczki NGUI. Ostatnio 2D Toolkit dodał kilka dodatkowych klas dla GUI, co jest bardzo przydatne, ponieważ podczas łączenia NGUI z 2D Toolkit trzeba było używać 2 różnych systemów do atlasów tekstur. Zdecydowanie spróbuję tego w następnej grze 2D. Głównym powodem wyboru Unity3D do gier 2D było to, że już byłem głęboko w Unity3D zarówno pod względem doświadczenia, jak i zgromadzonych fragmentów kodu do ponownego użycia. Ponadto kupiłem Unity3D pro (z Androidem Pro i iOS Pro) do gier 3D i warto było po prostu zapłacić dodatkowo 60 USD za zestaw narzędzi 2D, aby objąć również gry 2D. Do tej pory nie Żałuję mojej decyzji, wydaje się, że była optymalna dla mojej sprawy. Jedyne, co sprawiło mi ból głowy, to dodanie funkcji społecznościowych za pomocą wtyczek Prime31 (wtyczki społecznościowe dla Androida i iOS), ale zakładam, że ich błędy nie są winą Prime31, ale Twittera / Facebooka, więc prawdopodobnie zobaczyłbym te same błędy na jakikolwiek inny silnik lub wtyczka.
EDIT (styczeń 2014) : Wydaje mi się, że w Unity 4.3 odpowiedź na moje pytanie jest teraz dość oczywista: nowy system duszków Unity, a może także 2DToolkit, całkowicie pokonał wszystko inne, szczególnie dla osób, które (jak ja) są w Unity przez jakiś czas i kupiłem wersję Pro z dodatkami.