Najłatwiejszy i najfajniejszy sposób programowania gier 2D? Lampa błyskowa? XNA? Jakiś inny silnik? [Zamknięte]

20

jest to post opisujący moje poszukiwania najbardziej przyjemnego sposobu dla hobbystycznego programisty gier, aby osłodzić swój wolny czas tworzeniem gry.

Moje wymagania: najpierw spojrzałem na Flash, stworzyłem kilka małych gier, ale wątpię w wydajność. Chciałbym stworzyć dość dużą grę strategiczną, w której kilkaset jednostek walczy jednocześnie, w tym wybuchy i animacje. Również mapy z możliwością powiększania. Widziałem, że Adobe ma nowe 3D API dla Flasha, ale nie wiem, czy poprawi to również wydajność 2D, nie mogłem znaleźć niczego związanego z tym pytaniem w ich sesjach MAX10. Czy powiedziałbyś, że Flash jest dobrą technologią do łatwego tworzenia dużych gier 2D? Naprawdę lubię ActionScript i uwielbiam to, jak łatwo wszystko działa we Flashu. Dostępnych jest kilka silników, dzięki którym jest to jeszcze łatwiejsze.

Robię to dla zabawy i byłoby jeszcze lepiej, gdyby były dostępne odpowiednie edytory animacji / cząstek i gdyby silnik, którego miałbym użyć, byłby dostępny na wielu platformach. (aby więcej osób mogło grać w moją grę po zakończeniu). Chciałbym również, aby był dostępny na wielu platformach mobilnych. (ponieważ z jakiegoś powodu uwielbiam wprowadzanie dotykowe)

Dobrze znam framework XNA, ale nie ma dla niego dobrych silników i będzie działał tylko w systemie Windows, co jest ogromnym wyłączeniem. Jeszcze większe jest to, że musisz zainstalować redystrybucję XNA za każdym razem, gdy chcesz komuś dać grę. Gdybym używał XNA, musiałbym sam zrobić wszystkie narzędzia i prawdopodobnie musiałbym je wykonać przy pomocy WPF. (Chciałbym tworzyć narzędzia w środowisku Adobe AIR, ale niestety interfejsy API do manipulacji obrazami itp. Są znacznie gorsze we Flashu niż w XNA / WPF.) Teraz wiem, że mógłbym stworzyć własny silnik, który obsługuje każdą z tych platform, ale szczerze mówiąc, byłoby to zbyt wiele pracy przy API. W końcu chcę stworzyć grę, a nie silnik.

Pojawia się więc pytanie: czy może dostępny jest silnik wieloplatformowy (darmowy lub darmowy?), Którego mógłbym użyć do programowania 2D? Wolę: C #, Actionscript. Nie mam nic przeciwko użyciu c ++, jeśli zestaw narzędzi jest powyżej średniej, ale bardzo wątpię, czy istnieje coś takiego. Proszę, udowodnij, że się mylę :) Podsumowując: Chciałbym użyć Flasha, ale nie wiem, czy skaluje się wystarczająco dobrze. Nie jestem scripterem, chcę kilka prawdziwych interfejsów API, z którymi mogę pracować w odpowiednim środowisku IDE.

Tylko dla informacji, szukałem kilku alternatyw, właściwie już od dawna szukam. W końcu bardzo byś mi pomógł w podjęciu decyzji.

  • Pod względem funkcji silnik Flatredball byłby idealny. Ale wypróbowałem ich narzędzia i, szczerze mówiąc, są okropne. Absolutnie bezużyteczne, na pewno będę musiał zrobić własny. Nie spojrzałem na ich interfejs API, ale jeśli ich narzędzia są tak złe, nie jestem skłonny szukać dalej.

  • Unity3D. Ten jest całkiem fajny, ale tak naprawdę nie potrzebuję 3D i jest to ... dużo pracy do nauki. Nie podoba mi się również to, że jest tak drogi w użyciu dla różnych platform i że mogę go kodować tylko za pomocą skryptów. Każdą platformę musisz kupić osobno. Użyteczność edytora jest przeciętna, ogólnie produkt jest wystarczający do większości celów, ale samodzielne nauczenie się tego byłoby przesadą.

  • Shiva 3D. Wygląda wystarczająco dobrze, ale znowu: tak naprawdę nie potrzebuję 3D. Moim zdaniem użyteczność edytora jest nieco gorsza niż Unity3D i nie było dla mnie jasne, jak zacząć programować. Myślę, że wymaga C ++ do kodowania, więc to też jest negatywne. Chcę się dobrze bawić, a c # to zabawa;)

  • SDL. Szczerze mówiąc, nadal musiałbym przenieść się na wszystkie te różne implementacje SDL. I nie lubię programowania w stylu OpenGL, to po prostu brzydkie. I potrzebuje c ++, wiem, że mogą być dostępne jakieś opakowania, ale nie lubię używać opakowań, ponieważ ...

  • Irrlicht. Wiele funkcji, ale obsługa wydaje się niska i jest skierowana do entuzjastów. Wiązania C # są wielokrotnie usuwane. Nie jestem entuzjastą silników, chcę tylko stworzyć grę. Nie widzę, żeby tak się działo z Irrlicht.

  • Ogre3D. O wiele za dużo pracy, to tylko silnik graficzny. Brak obsługi wielu platform i c ++.

  • Torque2D. Kosztuje coś w użyciu i nie słyszałem wiele dobrych rzeczy na temat wsparcia i dokumentacji. Dodatkowo kosztuje dodatkowe dla każdej platformy.

Maxi
źródło
Narzędzia zestawu FRB SDK są złe (w szczególności kleju, nie używam go), ale oszczędzasz czas na pisanie ich, a formaty plików są proste, jeśli pisanie własnych narzędzi jest koniecznością. Interfejs API nie jest taki zły i wydaje się odpowiedni dla tego zakresu, obecnie największym problemem jest brak portu XNA 4.0 na PC i Xbox. Redystrybucja XNA i inne wymagania wstępne mogą również być częścią instalacji - i za pomocą clickonce możesz mieć gotową automatyczną aktualizację i wdrożenie.
Oskar Duveborn,
Chodzi mi o to, że nie używałbym ich, a zatem narzędzia są bezużyteczne. Ciągle mnie atakują oprócz złego interfejsu użytkownika / ogólnego odczucia. Co się stanie, jeśli okaże się, że brakuje określonej funkcji? Nawet gdyby były open source, nie chciałbym iść gdziekolwiek w pobliżu tych baz kodów. Wydaje się trudne, ale tak naprawdę chcę po prostu zrelaksować się w programowaniu, a FRB wydaje się być frustracją. Wyobraź sobie: wypróbowałem edytor cząstek i nie mogłem nawet znaleźć przycisku do otwarcia pliku obrazu. Jest to prawdopodobnie najważniejsza cecha, na której opiera się wszystko inne.
Maxi
Nie jest to pełna odpowiedź, ale Flash skaluje się lepiej, niż mogłoby się wydawać. Jeśli użyjesz stosu wyświetlania bitmapdata zamiast korzystać ze stosu wyświetlania i wykonasz kilka innych prostych optymalizacji, możesz wycisnąć o wiele więcej niż wydaje się to dzięki bardziej naiwnemu rozwiązaniu.
Gregory Avery-Weir
Listitem w Edytorze cząstek nazywa się po prostu „teksturą” na panelu właściwości emitera. ^^ Na wszystkich narzędziach znajdują się samouczki, dzięki którym niekodujący twórcy treści mogą pomóc. Ale tak, interfejsy użytkownika są naprawdę okropne z punktu widzenia projektu interakcji.
Oskar Duveborn
1
Jeśli chodzi o XNA tylko w systemie Windows, istnieje implementacja API XNA o nazwie MonoGame w otwartym kodzie źródłowym, która będzie działać na wszystkich platformach innych niż Windows: cocoa-mono.org/archives/400/… Nie korzystałem z niego osobiście, ale to istnieje.
chaosTechnician

Odpowiedzi:

10

Pygame jest zdecydowanie moim ulubionym. Ponieważ programowanie w Pythonie oznacza, że ​​będziesz programować szybko, a ponieważ rzeczy 2D są szybkie do zrobienia, pygame będzie fajna ...

żart
źródło
Jako bonus, jeśli zdecydujesz, że chcesz przenieść się do świata 3d, jest pirget, który otacza GL skórą węża;)
Wayne Werner
9

Od pewnego czasu korzystam z LÖVE i bardzo mi się podoba. Musisz nauczyć się Lua, ale i tak jest to fajny mały język. Ludzie na forum są niezwykle pomocni.

egarcia
źródło
Jaka jest wydajność? jakiego IDE mogę użyć?
Maxi
1
Popieram to. Użyliśmy Lua i LOVE do naszej gry Global Game Jam i zadziałało to fantastycznie. Zebrali wiele naprawdę świetnych bibliotek open source w ramach jednego wspólnego interfejsu API, a każda wersja jest coraz lepsza. Wydajność jest świetna (Lua płonie szybko!), A wiele zaawansowanych funkcji OpenGL, takich jak FBO, jest widocznych, co jest rzadkością w przypadku wielu silników 2D. Oprócz całej tej dobroci jest wieloplatformowy (Win / Mac / Linux). Zdecydowanie nadałbym temu dobry wygląd.
Bob Somers,
1
@ Maxi: Z miłością potrzebujesz tylko edytora i konsoli do pisanialove .
egarcia
2
Czy Rosjanie zrobili z tym grę? Byłby z Rosji z miłością: P
Bart van Heukelom,
5

Zdecydowałem się na Flash. Nowego interfejsu API Molehill 3D można także używać do znacznie szybszego rysowania duszków 2D w przestrzeni 3D. Nie widzę powodu, dla którego Flash nie powinien być wystarczająco szybki dla opisanej wcześniej gry. Będę musiał sam zbudować narzędzia, ale prawdopodobnie i tak musiałbym to zrobić. Moim zdaniem korzystanie ze środowiska AIR do budowania narzędzi jest również całkiem fajne. Flash ma również największy zasięg dzięki platformom, co jest fajne.

Maxi
źródło
Wypróbuj Cocos2d-x . Tego właśnie używam do tworzenia gier niezależnych.
Stephen Furlani,
1
Flash jest prawdopodobnie dobrym wyborem, ponieważ istnieją bardzo dobre (dojrzałe) narzędzia i biblioteki do flashowania. Interfejs API Molehill odciąży procesor (wcześniej wszystko było obsługiwane przez procesor). Musisz jednak pomyśleć o dystrybucji swojej gry. Flash zwykle oznacza grę opartą na przeglądarce ...
bummzack
I uważaj na gry mobilne, flash i telefony komórkowe to tak kiepska kombinacja.
Gustavo Maciel
I uważaj na gry mobilne, flash i telefony komórkowe to tak kiepska kombinacja ”. @Gtoknu, jakiś powód dlaczego?
NemoStein
@NemoStein Spróbuj przeszukać na youtube niektóre Flash działające na telefonach komórkowych. Ponadto Adobe zaprzestał tworzenia Flasha na Androida i nie ma Flasha na iOS.
Gustavo Maciel
4

Wypróbuj SFML

svenstaro
źródło
Mimo że jest użyteczny, SFML jest tylko interfejsem API grafiki / sieci / dźwięku, ale nie jest w pełni funkcjonalnym silnikiem gry (chociaż jest dość blisko).
a_m0d 30.09.11
2

Wypróbuj Cocos2d-x . Tego właśnie używam do tworzenia gier niezależnych.

To wypróbowana i prawdziwa platforma OpenGL (ES), która ma dźwięk, fizykę, a nawet trochę 3D, która jest już dostępna dla iPhone'a i właśnie nadchodzi na inne platformy.

Stephen Furlani
źródło
2

Ponieważ powiedziałeś, że podoba Ci się ActionScript, ale szukasz platformy wieloplatformowej, spójrz na HaXe + NME . HaXe jest językiem podobnym do ActionScript, ale można go skompilować do Flasha, Javascript, PHP lub C ++. NME to biblioteka podobna do biblioteki graficznej Flasha, ale działa również na innych platformach. Ta kombinacja pozwala na kompilację na wiele różnych platform.

Nie korzystałem jeszcze z NME, ale mój pierwszy test z HaXe + Molehill (zaledwie kilka dni temu) wygenerował 60 klatek na sekundę podczas renderowania 10 000 obracających się duszków na moim laptopie. Używam HaXe tylko od kilku dni i nie mam wystarczającego doświadczenia, aby mieć pewność, że jest to właściwe dla Ciebie, ale warto to sprawdzić.

amitp
źródło
1

Osobiście jestem wielkim fanem Allegro 5 , ale jest to C API. Mimo wszystko jest to prosty interfejs API, który nie przeszkadza i zapewnia dostęp do:

  • Grafika 2D (wspierana przez OpenGL lub D3D, w zależności od platformy)
  • Dźwięk
  • Czcionki (w tym zarówno bitmapa, jak i TTF)
  • Wejście (mysz i klawiatura)
  • PhysicsFS (wirtualizacja systemu plików)
  • Ładowanie obrazu

5.1 będzie również dodawać obsługę modułu cieniującego.

SDL 1.3 również dość dobrze się kształtuje. Wygląda na to, że Sam skończył wprowadzać główne zmiany API, a to, co już jest, jest już dość stabilne. Wciąż ... to jeszcze nie jest wersja beta, a Allegro 5.0 zostało wydane.

To prawda, że ​​w przypadku bardziej złożonych i zaawansowanych gier prawdopodobnie chcesz powiązać Allegro 5 z jakąś biblioteką fizyki ( na przykład Box2D ). Mimo to możesz przejść bardzo długą drogę i dobrze się bawić, korzystając z tego, co Allegro 5, standardowa biblioteka C lub C ++ i własny kod.

Greg Jandl
źródło