Od czego zacząć, jeśli chcę napisać grę w C ++ 2d? [Zamknięte]

17

Jestem programistą C # i chcę poszerzyć swój zestaw umiejętności i dobrze się przy tym bawić. Znam niektóre podstawy C ++ i chciałbym napisać dla siebie prostą grę / silnik 2D w C ++. Jakich innych bibliotek lub zestawów SDK potrzebuję i gdzie znajdę tutoriale i zasoby informacyjne, aby przejść dalej?

Zajrzałem już do XNA z C #. Jest na to wiele zasobów, ale wolałbym używać produktów innych niż Microsoft. Chodzi o to, aby dobrze się bawić, stając się lepiej zaokrąglonym programistą.

Pamiętaj, że nie pytam o najlepsze miejsce na rozpoczęcie. Ja tylko z prośbą o A miejscem do rozpoczęcia.

Dzięki za wszelką pomoc!

kwakle
źródło

Odpowiedzi:

27

Standardowe miejsce rozpoczęcia (z mojego doświadczenia) dla deweloperów gier w C ++ to SDL . Musisz trochę zabrudzić sobie ręce niż XNA.

Jeśli chcesz spróbować czegoś nieco wyższego, sugerowałbym SFML . Obsługuje niektóre bardziej wymagające zadania, ale nadal musisz kontrolować zużycie pamięci itp.

Mike Cluck
źródło
1
Zajrzę do nich. Moim największym problemem z XNA jest to, że było to tak proste, że nie czułem, że naprawdę uczę się rzeczy niższego poziomu, które chciałbym zbadać.
quakkels,
6
SFML ma ładny design, ale wciąż jest dość wadliwy i jest w trakcie poważnego przeprojektowywania API - nie używałbym go do bardziej złożonych gier, dopóki następna wersja nie zostanie dobrze dopracowana.
Bitgarden,
Jeśli chcesz czegoś trudniejszego niż SDL, wypróbuj ClanLib . Podobnie jak XNA obsługuje akcelerację sprzętową, ale działa również w systemie Linux, a także w wersji 2D.
ChrisC,
2
Możesz także iść prosto do gardła - OpenGL jest moim ulubionym (możesz go owinąć SDL lub
SFML
9

Sugerowałbym użycie SDL . Minęło już sporo czasu, więc dokumentacja i wsparcie są całkiem dobre, i jest to jeden z najłatwiejszych sposobów na uzyskanie powierzchni do rysowania na ekranie. Pozwoli ci to ćwiczyć pisanie zajęć w C ++ (ponieważ prawdopodobnie będziesz chciał dużo zawinąć wywołania funkcji SDL C), a także da ci trochę doświadczenia w korzystaniu ze wskaźników i referencji oraz w zarządzaniu pamięcią. Zarządzanie własną pamięcią jest jedną z głównych różnic między C ++ i C #.

Steve Blackwell
źródło
9

Osobiście wybrałbym Allegro 5 z następujących powodów:

  1. Ma system kompilacji oparty na CMake. Dzięki temu praca na wielu platformach jest znacznie łatwiejsza niż w większości kompilacji systemów. To wydaje się drobna sprawa, ale ogólnie jest dość ważna. Ułatwia to budowanie biblioteki.

  2. SFML jest nadal w znacznym stopniu zmienny. 2.0 to dość istotna zmiana. Podczas gdy Allegro przeszło już znaczącą zmianę w wersji 5, a teraz chodzi o stabilność.

  3. Obejmuje modułowość w inny sposób niż SFML. W SFML pytasz o określone składniki, ale otrzymujesz je wszystkie. Jeśli poprosisz o element graficzny, otrzymasz cały element graficzny. Dzięki Allegro 5 zawsze otrzymujesz komponent graficzny. Ale jeśli nie chcesz używać ładujących bitmapy Allegro, nie musisz; możesz użyć własnego.

  4. Ma bardzo dobrą dokumentację. SFML korzysta z dokumentacji w stylu Doxygen, ale nawet to dość spartańskie. Podczas gdy Allegro 5 jest bardziej wszechstronny, funkcje są pogrupowane w oparciu o określone systemy, które obejmują. Nie jest idealny, ale ogólnie jest lepszy.

  5. Są wystarczająco inteligentni, aby nie próbować nawiązywać wątków. Dzięki C ++ 11 / Boost.Threads, które są szeroko dostępne lub tuż za rogiem, użycie innego opakowania wątków może być więcej niż problematyczne: może być niebezpieczne dla poprawnego działania kodu.

Nicol Bolas
źródło
Dlaczego wolisz / sugerujesz Allegro zamiast SDL lub SFML?
Quazi Irfan
@iamcreasy: Jeśli nalegasz.
Nicol Bolas,
Nadal nie wspominasz o SDL ...
Inżynier z
@NickWiggill: SDL ma wątki i specyficzne dla platformy systemy kompilacji. Nie czułem potrzeby wzywania go do niczego konkretnego.
Nicol Bolas,
@ nicol-bolas nie wspomniałeś o wadach Allegro. Jak bardzo mała ilość samouczków przy porównywaniu.
Quazi Irfan
4

Myślę, że fantastycznym miejscem na początek jest LazyFoo . To sprawi, że zaczniesz działać z SDL szybciej niż w jakimkolwiek innym miejscu, które widziałem. Poleciłbym szybko wejść w OpenGL (jak tylko będziesz mógł go znieść), ponieważ dostaniesz znacznie więcej za swój programujący dolar - z akceleracją sprzętową. Jeśli wybierzesz tę trasę, polecam ten przewodnik .

ultifinitus
źródło
2

Polecam SFML, jeśli używasz c ++. Szybko dostaniesz coś na ekranie, a używanie go z kodem gry c ++ jest proste.

jmp97
źródło
2
  • SFML - dziecko w grupie, ale potencjalnie najłatwiejsze w użyciu z tego, co przeczytałem.
  • SDL - środkowa droga. Bardzo dojrzała biblioteka, rozsądna, ogólnie zwięzła, choć od czasu do czasu trochę tajemna, i bardzo powszechny wybór. Konfigurowanie formatów wyświetlania może być trochę draniu, skorzystałem z samouczków lazyfoo, aby pomóc na tym froncie.
  • Allegro - geriatryczne, istnieje już od dni Atari ST. Z tego powodu duża część kodu renderowania 2D (który, jak sądzę, jest dostępny tylko w Allegro 4), jest dość cholernie szybka, ponieważ logika została zbudowana dla systemów o znacznie niższej specyfikacji. Osobiście nie uważam tego za bardzo intuicyjne, nawet biorąc pod uwagę dokumentację.

Biorąc pod uwagę, że OpenGL przyspiesza obecnie 2D strony, nie jest tak ważne, aby mieć dostęp do szybkich rendererów oprogramowania, które Allegro i SDL mają (lub miały we wcześniejszych wersjach). Jednak gdy wybieram bibliotekę, koncentruję się na dojrzałości projektu, bazie użytkowników i dokumentach bardziej niż szybkości (o ile prędkość jest rozsądna), i powiedziałbym, że SDL i Allegro wygrywają na tych frontach. SDL wydało także potrójne tytuły AAA, takie jak Civ: Call to Power.

Inżynier
źródło