Jaki podstawowy zestaw umiejętności musi posiadać profesjonalny programista gier? [Zamknięte]

11

Mam bardzo ogólne pytanie, które mnie niepokoi, ale najpierw chcę dodać kilka szczegółów. Jestem głównym programistą Java. Dla zabawy samodzielnie stworzyłem małe gry w Javie. Im bardziej patrzę na profesjonalne tworzenie gier, tym bardziej się mylę. Dzieje się tak, ponieważ ilekroć szukam w Google tematów związanych z tworzeniem gier lub odwiedzam fora itp., Napotykam różne sugestie.

Niektórzy powiedzą, że C ++ jest dobry, niektórzy powiedzą, że JAVA może być lepszy, a jeszcze inni powiedzą, że innym językiem jest język ur, taki jak Python, Lua, UnrealScript itp. Sugeruje się również, że należy mieć wiedzę na temat Silniki gry, takie jak Unreal, Torque, Blender, Panda itp., i wymagana jest znajomość OpenGL, AI, wykrywania kolizji. Stworzyłem nawet grę przy użyciu zestawu Android SDK.

Chcę zapytać:

  • Jaki podstawowy zestaw umiejętności musi posiadać profesjonalny programista gier? Czy jest to 1 język programowania + 1 język skryptowy + 1 znajomość silnika gry + OpenGL? (Uff !!)
  • Jeśli chcę wejść do branży gier jako programista rozgrywek lub programista AI, to czy mogę wziąć w niej udział z moimi obecnymi umiejętnościami i portfolio (jak wspomniano powyżej)?
  • Czy nauka jednego języka programowania wystarcza do tworzenia gier?

Wszelkie wytyczne będą pomocne.

GamDroid
źródło

Odpowiedzi:

6
  1. Powinieneś być biegły i kompetentny w przynajmniej jednym języku programowania. Dzięki temu łatwiej będzie Ci wybrać inne języki. Rodzaj pracy, do której się aplikujesz, zależy od tego, jaki język powinieneś znać wcześniej. Większość potrójnych tytułów A wydanych na PC i konsolę najprawdopodobniej zostanie opracowanych w C ++. Z drugiej strony aplikacje mobilne i gry będą najprawdopodobniej korzystać z Java (Google Android i inne telefony) lub Objective-C (iPhone). Jeśli rozejrzysz się po ofertach pracy inżynierów oprogramowania na stronach programistów, zwykle wspomina, jakie doświadczenie językowe potrzebujesz. Na przykład „Biegły i kompetentny w języku C ++” lub „Doświadczenie w C ++ przez co najmniej dwa lata”. Nauka języka skryptowego cię nie skrzywdzi. Przyniesie ci to tylko korzyść. Uczenie się zawsze przynosi korzyści, i nigdy nie boli. Nie musisz mieć praktycznej wiedzy o żadnym silniku gry, ale jeśli aplikujesz do firmy, która używa tego konkretnego silnika, prawdopodobnie pomoże ci to powrócić. Jeśli jesteś ekspertem w silniku Source, ale aplikujesz do oprogramowania id i nic nie wiesz o silnikach id tech, nie jest to tak naprawdę bardzo pomocne (ale korzystne jest uczenie się przyczyn, ponieważ zawsze jest korzystne).

  2. Jeśli ukończyłeś projekty od początku do końca i wykażesz, że je masz, myślę, że pomogłoby to w wznowieniu pracy. Nie jestem jednak pewien mnóstwa demonstracji technologii. Wydaje się, że wiele osób robi dema techniczne i nie ma ukończonych żadnych projektów gier. Programista gier jest zwykle jr. poziom pozycji, więc tak, w zależności od twojego CV powinieneś być gdzieś w stanie znaleźć pracę.

  3. Myślę, że znajomość jednego języka i umiejętne posługiwanie się nim w sposób kompetentny i kompetentny jest lepsza niż znajomość 5 języków i ledwo umiejętność ich używania.

Uwaga: Nigdy nie pracowałem w przemyśle, to tylko moje opinie, które powstały po przeczytaniu kilku wątków i artykułów na temat zadań związanych z programowaniem gier, w oparciu o to, co uważałem za najbardziej sensowne artykuły / opinie, które przeczytałem.

Krewetki Krakersy
źródło
7
Uzupełnię punkt 1 o „znajomość jednego języka programowania używającego wskaźników ”. Wskaźniki są tak podstawowym wymogiem, aby zrozumieć, co się dzieje z językiem, który nigdy nie mając z nimi doświadczenia może być ogromną wadą, gdy idzie się do języka, który ich potrzebuje. C ++ jest niezwykle rozpowszechniony w grach innych niż internetowe, więc równie dobrze możesz zacząć od niego.
Tetrad,
@ShrimpCrackers Wiesz, że przy pomocy edytora możesz tworzyć rzeczywiste „punkty wypunktowania”, prawda? ;)
Ben,
Powinieneś pokazać, że znasz przynajmniej język programowania, który nie jest szeroko stosowany w przemyśle, ale ma pewną ciekawą osobliwość: przekazuje to, że uczysz się z powodu zainteresowania nad możliwościami, że jesteś poliglotą, który rozumie różne filozofie / podejścia i możesz (mam nadzieję) ) łączą to, co najlepsze z obu światów.
FxIII
2

Im dłużej badam ten temat i rozmawiam z profesjonalnymi twórcami gier, tym bardziej myślę, że tak naprawdę sprowadza się to do kilku rzeczy. W szczególnej kolejności:

  • Umiejętność współpracy w atmosferze zespołowej. Budowanie gier wymaga niezwykłej liczby ludzi, samo czytanie kredytów w niektórych grach AAA zajmuje obecnie ponad 10 minut, jeśli nie możesz dobrze współpracować z ludźmi, a Twoim celem jest praca z innymi ludźmi, aby stworzyć świetną grę, to ja obawiam się, że to nie jest odpowiedni przemysł. Jest to jedna z tych umiejętności miękkich, które zwykle rozwijane są w czasie od pracy nad projektami z innymi ludźmi.
  • Znajdź to, co lubisz robić. Jest to rodzaj otwartego, ale dowiedz się, co lubisz w tworzeniu gier i jakich umiejętności potrzebujesz, aby to osiągnąć. Wiem, że jest to odpowiedź, której szukasz, ale mógłbym rzucić wszystkie umiejętności, które mogą być potrzebne, aby zostać programistą silnika, grafikiem lub twórcą rozgrywki, ale możesz znaleźć wiele takich informacji online. Twoje umiejętności będą musiały bardzo ściśle wiązać się z tym, co Cię interesuje. Np .: Nie martw się o wiedzę na temat OpenGL i DirectX, jeśli naprawdę interesujesz się rozwojem po stronie serwera i odwrotnie.
  • Być biegłym w języku niskiego poziomu Biorąc powyższe pod uwagę, zgadzam się z innymi plakatami, że język niskiego poziomu jest dobrym pomysłem do nauki. Wiem, kiedy przeszedłem z C # na C ++, nauczyłem się dużo o tym, jak działa magia C #, jest to wiedza, która pozwala dobrze zrozumieć, jak skutecznie komunikować się z komputerem bez względu na język.
  • Zrozumieć architekturę komputera - nie mam na myśli tego, że musisz mieć dyplom CE lub EE, aby naprawdę zrozumieć każdą część architektury komputera, ale znać podstawy działania pamięci, procesora i karty graficznej. Niezależnie od obszaru rozwoju gry, w który się zaangażujesz, korzystne będzie przynajmniej zrozumienie tego, jak działają. Jeśli chcesz przejść do programowania grafiki lub programowania silnika, musisz zrozumieć jeszcze więcej w tej przestrzeni.
Kyle C.
źródło
5
naprawdę czujesz się stary, gdy ludzie nazywają C ++ językiem niskiego poziomu
dreta
@dreta Nie jestem już tak stary i nie uważam go za język niskiego poziomu. Prawdopodobnie ma to związek z tym, że C ++ jest pierwszym językiem, którego użyłem.
Paul Manta,
2

Wiele zależy od twoich celów zawodowych. Jeśli wszystko, czego chcesz, to „tworzenie pracy” przed ukończeniem wymaganego 5,5 roku, wypaleniem się i odejściem, to myślę, że po prostu patrzysz na oferty pracy na poziomie podstawowym i szukasz tego, czego chcą, uczysz się i aplikujesz. Prosty. (Ale jeśli twoje pytanie naprawdę sprowadza się do „jaki minimalny wysiłek muszę włożyć, aby znaleźć pracę?”, Odpowiedź brzmi: „jeśli włożysz minimalny wysiłek, dostaniesz minimalną pracę! „)

Ale na dłuższą metę nie sądzę, żeby chodziło o znajomość niektórych języków lub naukę konkretnego. Języki się zmieniają - dziesięć lat temu nikt nie korzystał z Objective-C, XNA, C # lub AS3, a dziesięć lat od teraz masz pewność, że każdy język, którego uczysz się dzisiaj, i tak będzie przestarzały.

Tak więc jedną z rzeczy, które należy zabezpieczyć na przyszłość, jest nie tylko „nauka języka”, ale także nauczenie się JAK uczyć się nowych języków. Po opanowaniu około 3 języków przekonasz się, że wybór nowego nie jest taki zły. Zresztą większość podstawowych komponentów jest taka sama - każdy język ma zmienne, tablice, pętle, warunki warunkowe itd., Więc chodzi tylko o naukę składni.

Druga połowa to zrozumienie podstawowych pojęć programowania i informatyki. Poznaj zarządzanie pamięcią, wskaźniki, rekurencję i tak dalej. Jeśli rozumiesz pojęcia, możesz je zastosować w prawie dowolnym języku.

Jeśli chcesz stać się bardziej zbywalny, naucz się specjalizacji programowej związanej z grami, cokolwiek Cię interesuje ... AI, bazy danych, sieci, narzędzia, cokolwiek.

Ian Schreiber
źródło
1

Potrzebna jest jeszcze jedna bardzo ważna umiejętność, która wydaje się nieco przeoczona. Musisz wiedzieć, jak się dopasować i współpracować z zespołem ludzi, od innych twórców gier, po projektantów i kierowników projektów. Nie jest to umiejętność techniczna, ale nadal jest bardzo ważna, ponieważ możesz być najlepszym deweloperem w domu, a jeśli nie możesz dogadać się z ludźmi, tworzenie dużych gier będzie problemem!

Ponadto, ponieważ ShrimpCrackers dobrze znający jeden język jest lepszy niż z grubsza znajomość 5 języków, a zrozumienie tego, co dzieje się pod maską tego jednego języka, w którym jesteś głupcem, jest jeszcze lepsze, ponieważ w przypadku gier musisz wiedzieć, jak uzyskać najlepszą wydajność z języka

Wreszcie, choć trochę wiedząc o sprzęcie, szczególnie GPU nie zaszkodzi!

dotminic
źródło
0

Do programowania gier społecznościowych potrzebne są tylko podstawowe umiejętności.

  1. Skrypt akcji programu (możesz użyć środowiska elipse i svn), jest on używany w interfejsie gry (strona internetowa)

  2. Program java (który można również zrobić zaćmienie i użycie svn), służy do działań po stronie serwera podejmowanych z żądań strony internetowej.

mariana bardziej miękka
źródło