Jaka jest dobra platforma startowa dla nastoletniego programisty gier? [Zamknięte]

32

Mój syn (15) zdecydował, że chce kontynuować karierę jako programista gier. Powiedziałem, że powinien zacząć od prostej gry. Nie ma jeszcze doświadczenia w programowaniu, ale jestem programistą (aplikacje biznesowe, nie gry), więc mogę nauczyć go programowania, ale jaka byłaby dla niego dobra platforma? Początkowo szukam czegoś, co może zapewnić szybkie rezultaty, aby podtrzymać jego entuzjazm.

Co byś zasugerował?

gkrogers
źródło
13
Zamknięte? Ty chyba żartujesz! Zadałem to pytanie przed rokiem, ma co najmniej 19 głosów pozytywnych, jego pozytywne odpowiedzi mają co najmniej 86 głosów pozytywnych, 5 osób oceniło je jako ulubione. Odpowiedzi obejmują fakty, referencje lub określoną wiedzę specjalistyczną. Wreszcie, było to dla mnie niezwykle przydatne i, sugerowałbym, także inni ludzie. Jak mogę odwołać się od tej decyzji?
gkrogers
1
Jeśli naprawdę chcesz, możesz napisać o tym post na Meta. meta.gamedev.stackexchange.com
Tetrad

Odpowiedzi:

30

XNA to dobre rozwiązanie dla dość pewnego programisty. Byłoby dobrym celem do osiągnięcia w przyszłości.

Zestaw Unreal Development Kit to sposób na uzyskanie wyników znacznie szybciej i łatwiej, i może być dobrym miejscem do rozpoczęcia. Komentarze wskazują, że UDK jest naprawdę złą alternatywą, więc nie mogę tego polecić.

Jedność jest alternatywą, będzie działać na telefonach, czego UDK nie może zrobić (o ile wiem). Więc jeśli zajmuje się programowaniem gier na telefony, być może jedność byłaby lepsza?

Jaskółka oknówka
źródło
4
Zgadzam się z tym. Jedność jest alternatywą dla UDK, choć myślę, że trudniej jest to rozgryźć. Sprawdź, czy możesz zmusić go do zepsucia się za pomocą UnrealScript (języka skryptowego Unreal Development Kit). XNA jest jednak zdecydowanie pierwszym prawdziwym językiem programowania gier, którego powinien używać; jest najłatwiejszy (relatywnie rzecz biorąc; nie dla absolutnie początkujących) i uwielbiam go do prototypowania, ponieważ możesz dość szybko zacząć rysować rzeczy na ekranie.
Ricket
2
+1 za sugestię XNA. Jeśli stara się go dobrze nauczyć i ma dobre pomysły, może łatwo zarobić pieniądze na sprzedaży gier na Zune / WP7 / XBOX 360.
2
Unity działa na iPhonie i przeglądarce, więc jest to dobry sposób na rozprowadzanie gry, aby ludzie mogli ją przetestować i przyzwyczaić się do wczesnego rozpalenia
Chris S
4
Unikaj UDK. Może być bardzo silny, ale także ogromny ból. Jest pełen „problemów” i nieudokumentowanych ograniczeń.
Peter Ølsted
4
Też mam 15 lat, nauczyłem się najpierw paskal na 10, potem C, a potem C ++. Próbowałem zaprogramować niektóre gry w C ++ i allegro na poziomie 12+ - nie był to duży sukces, mogłem zrobić wiele rzeczy, ale nie mogłem wymyślić, jak zbudować całą grę. To mnie utrzymywało. Dzięki XNA rzeczy były o wiele łatwiejsze, a także łatwa obsługa błędów w wyjątkach C # pokazanych w czasie debugowania bardzo pomaga ci wiedzieć, gdzie robisz coś źle. Oczywiście istnieją też inne języki, ale myślę, że Visual C # ma najlepsze dostępne narzędzie do debugowania.
Gustavo Maciel
20

Mam również 15 lat, więc myślę, że to może pomóc? : P

Niedawno zacząłem uczyć się języka Python (od około roku pracuję w C ++) i znacznie łatwiej jest mi się uczyć niż C ++. Jest dużo mniej pułapek i potrzebujesz małego kodu, aby dostać coś na ekranie - to, co znajduję, sprawia, że ​​chcesz kontynuować.

Są też opakowania takie jak Pygame i Pyglet nad SDL / OpenGL po stronie graficznej.

Zanim zacznie tworzyć proste gry, radzę uczyć się języka przez co najmniej kilka miesięcy. (Oczywiście gry tekstowe, takie jak zgadywanie numeru i kata, są w tym czasie dobrymi ćwiczeniami)

Kaczka komunistyczna
źródło
9
Python i Pygame były dla mnie powiewem świeżości po wielu latach pisania gier w C. Pomyślałem, że mogę zrobić to samo w około 10% czasu w Pythonie ze względu na wyższy poziom wszystkiego.
dash-tom-bang
Wiem, czuję to samo (i robię C ++ od roku).
Kaczka komunistyczna
+1. Muszę powiedzieć, że pomimo znajomości Pythona jest to moja pierwsza rekomendacja dla początkujących programistów. Teraz potrzebujemy tylko robotów pythonowych! Również dobre sugestie dla np. Kata. =)
leander
Stary, powinieneś nauczyć się języka .net (nie podoba mi się C #, F # nie bardzo, vb.net jest ok. Boo nie jest obsługiwane w studiach wizualnych :(). Języki są mniej podatne na błędy niż C ++ i dostajesz wyjątki, gdy coś robisz źle (bardzo dobrze. C ++ powinien zrobić więcej tego). I możesz nauczyć się, jak używać stosu wywołań, oglądać zmienne, punkty przerwania (zakładam, że punkty przerwania działają w IDE Pythona?) i będziesz mógł szybko debugować Co jest świetne, gdy piszesz niestabilny kod dla początkujących
13

Trochę niekonwencjonalna odpowiedź tutaj:

Edytor Galaxy Starcraft II.

W Starcraft 2 możesz stworzyć prawie każdą grę.

Uczy również większości konstrukcji programistycznych, takich jak pętle i instrukcje if w sposób zorientowany na GUI.

Gdy będzie już pewny podstaw, możesz poprosić go o skrypty.

Jeśli jest w tym dobry i uzna to za interesujące, pokocha odpowiednie programowanie gier.

Mistrz
źródło
3
Już miałem zasugerować Warcraft III. Rozpoczęcie pracy w prostym języku skryptowym to naprawdę dobry sposób. Zarówno Warcraft III, jak i Starcraft II mają graficzny interfejs użytkownika, którego można użyć do wygodnego korzystania, oraz funkcję wyświetlania kodu jako surowego skryptu, aby zobaczyć wewnętrzne funkcjonowanie.
William Mariager
2
Właściwy tor . Najlepszym sposobem jest rozpoczęcie od dowolnego edytora poziomu. Potrafi ominąć wszystkie rusztowania i poziomy trudności i przejść do interesującej części tkania scenariusza i projektowania poziomu.
bobobobo
Zdecydowanie jedna z najlepszych odpowiedzi, jakie kiedykolwiek widziałem na tego typu pytania, zacząłem tworzyć grę, gdy byłem bardzo mały z MS PowerPoint za pośrednictwem hiperłączy i grając w grę o nazwie „klub robota”; który w swojej grze nauczy Cię wielu podstaw programowania giantbomb.com/the-robot-club/3030-29776
Jim Jones
10

Z grubsza podzieliłbym narzędzia do tworzenia gier na trzy szerokie kategorie:

  1. Łatwy do nauki i użytkowania, ale ograniczony. Game Maker, Game Salad, RPG Maker, Adventure Game Studio należą do tej kategorii.
  2. Mocny, ale ze stromą krzywą uczenia się. Pasują tu C ++ i inne „hardkorowe” języki programowania.
  3. Języki pośrednie, ogólnie języki skryptowe, takie jak Lua, Python i ActionScript, które dzielą różnicę, wymagając od Ciebie napisania kodu, ale dbając o bardziej niejasne szczegóły, takie jak zarządzanie pamięcią.

Osobom bez doświadczenia w programowaniu zazwyczaj radzę zacząć od pierwszej kategorii, żeby zacząć robić COŚ. Kiedy czują się dobrze z danym narzędziem autorskim, ale naprawdę czują, że ograniczenia przeważają nad korzyściami, nadszedł czas, aby nauczyć się czegoś w następnej kategorii.

Ian Schreiber
źródło
9

Wiem, że to trochę mnie umawi, ale dorastanie bardzo mi się podobało P-Robots . Istnieje naprawdę prosty cel (pokonanie innych robotów), prosty interfejs API i krótki czas między zmianami w kodzie a wyświetleniem wyników. Wpisuje się w sztuczną inteligencję, wzorce projektowe, a nawet strukturę kodu na większą skalę (niektóre z tych robotów mogą stać się dość duże - a co z udostępnianiem kodu między robotami?). Jeśli możesz znaleźć coś podobnego, ale nowszego, byłby to dobry sposób na uzyskanie części „rozpoczęcie programowania”. Propozycje:

Gdy to zrobisz, zastanów się nad wybraniem naprawdę prostej strzelanki 2D, platformówki lub podobnej gry w stylu arkadowym - możesz użyć SDL lub XNA lub czegoś, co jest najbardziej znane. Nawet uruchomienie w nich klonu ponga nie jest całkowicie trywialne. Daje to małe echo tego, jak to jest budować coś „od podstaw”.

Następnie zbadaj: modyfikację istniejącej gry 3d (nowy obiekt, bot lub coś takiego), aby uzyskać wgląd w większe silniki.

Klucze, z tego co widziałem, wydają się być:

  • szybka iteracja: możliwość szybkiego zobaczenia wyników
  • prototypy: wiele małych eksperymentów, aby uzyskać szerokie doświadczenie i pewność siebie (w porządku, jak zrobilibyśmy marmurową grę? A co z kosmicznymi najeźdźcami itp.)
  • eksploracja: uczenie się miłości, w jaki sposób budowane są gry innych ludzi, ulepszanie ich itp
leander
źródło
2
+1 za burze myśli, ale użyłbym ROBOCODE ( robocode.sourceforge.net ) zamiast P-Robots.
Callum Rogers
@Callum: genialny, zaktualizuje odpowiedź =)
Leander
Chciałbym użyć LegoMindstorms z NXC
Joe the Person
6

Radzę tworzyć gry internetowe. Czemu? Po pierwsze, JavaScript jest pięknym językiem, który nauczy go wszystkich podstawowych pojęć związanych z programowaniem i naprawdę możesz stworzyć z niego świetną, kompetentną i wieloplatformową grę. Zakwalifikuje go także do wielu innych rzeczy niż tworzenie gier ... Jeśli z jakiegoś powodu nie chcesz, aby twój syn zajął się tworzeniem stron internetowych, sugeruję użycie Pythona z modułem o nazwie PyGame. Mam z tym także doświadczenie i jestem niesamowity. Co ja nie sugerować się wychodząc z C / C ++, to co zrobiłem i to jest okropne i może się mu motywacji do programowania w ogóle.

Z drugiej strony, prawdopodobnie jesteś niesamowitym ojcem, gratulacje!

jcora
źródło
1
Dobre sugestie. To powiedziawszy, zacząłem od C (nie żeby wtedy istniały prawdziwe alternatywy) i to naprawdę nie było tak bolesne; oczywiście nie jest to powód, aby używać go teraz, gdy istnieją języki wyższego poziomu.
o0 ”.
1
Dzięki! Nie zacząłem też od gier, a moim celem było to, że po nauce języka wyższego poziomu lepiej zrozumie ogólną koncepcję programowania i nie pozbędzie się motywacji. I oczywiście - trochę przesadziłem;)
jcora,
1
W tym wieku motywowanie sprawiało mi możliwość łatwego dzielenia się moimi dziełami z przyjaciółmi. Gry internetowe są łatwiej udostępniane. Publikujesz swój adres URL na Facebooku i prosisz znajomych o wypróbowanie go. Actionscript / Flash lub Javascript / HTML5 to prawdopodobnie najlepsze zakłady, które możesz łatwo udostępniać, a Java lub Unity są na drugim miejscu.
amitp
5

Mindstorms Roboter są naprawdę fajni. Mamy trochę NXT w szkole, aw zeszłym tygodniu zaczęliśmy programować takie rzeczy jak przestrzeganie linii i tym podobne. Możesz łatwo uzyskać wyniki.

Znalazłem też www.3dgamestudio.de jakiś czas temu. Nie wciągnąłem się w to, ale to było naprawdę interesujące. Możesz programować za pomocą lite-C, który jest:

Lite-C to język programowania dla aplikacji multimedialnych i gier komputerowych, wykorzystujący podzbiór składni języka programowania C z niektórymi elementami języka programowania C ++

Na http://tutorial.3dgamestudio.net/ można się do niego dostać. Są też edytor poziomów, modeli i terenu.

ps: Mam 16 lat i zacząłem od znajomego, który programuje stronę internetową i dostosowuje zaprogramowany serwer gier. To może być dla niego również interesujące.

Melzon
źródło
+1 Bardzo łatwa dokumentacja, jak się wydaje, bardzo łatwo sobie z tym poradzić.
Prix
4

Nie mogę tego wystarczająco zasugerować, ale buduję własne poziomy dla swojej ulubionej gry .

Osoby o tym wieku / poziomie umiejętności powinny zacząć od budowania poziomów w ulubionym silniku gry .

Wiele świetnych gier jest wyposażonych w edytor poziomów, który pozwala na wiele stopni swobody.

RPG : seria zestawów elektronów Obsidian NWN 2 , Elder Scrolls

Edytor poziomów RTS : Warcraft III jest fantastycznym edytorem RTS, a nawet wyodrębnił własną grę ( League of Legends i Heroes of Newerth ).

FPS : Hammer na okres półtrwania 2. Counterstrike był pierwotnie modem na okres półtrwania.

Zacznij tutaj . Budowanie poziomów dla Twojej ulubionej gry jest prawdopodobnie najlepszym miejscem do rozpoczęcia.

Bobobobo
źródło
3

Chociaż wszystkie informacje tutaj są pomocne, chciałem wspomnieć, że STEM Challenge (krajowy konkurs gier promowany przez Biały Dom i ESA) ma pewne sugestie dotyczące platform http://www.stemchallenge.org/about/Default.aspx

Gamestar Mechanic, Gamemaker, Kodu, Scratch, PBS KIDS Ready to Learn Stream

Mam wrażenie, że istnieją zasoby społeczności na temat tych platform, szczególnie w odniesieniu do STEM.

Zobacz także ten doskonały samouczek na temat python i pygame (który jest także książką online) http://inventwithpython.com/chapters/ tutaj znajduje się plik PDF kontynuacji książki o pygame http://inventwithpython.com/blog/making -games-with-python-pygame /

Oto kolejny artykuł NYT http://www.nytimes.com/2011/11/10/technology/personaltech/computer-programming-for-children-minus-cryptic-syntax.html?_r=2&sq=mitchel+resnick&st=cse&adxnnl= 1 i scp = 1 i adxnnlx = 1322489239-tMp1Wjl9FUcI8rLaJ6cbOw

Aktualizacja: oto dyskusja slashdot http://ask.slashdot.org/story/11/12/27/152228/ask-slashdot-tools-for-teaching-high-school-kids-how-to-make-games

idiotprogrammer
źródło
2

Game Maker to doskonały wybór dla osób bez doświadczenia w programowaniu. Ma darmową wersję i stosunkowo tanią wersję płatną. Umożliwia szybkie tworzenie gier z interfejsem „przeciągnij i upuść”, ale zawiera obsługę bardziej zaawansowanych skryptów.

Gregory Avery-Weir
źródło
5
Nie zamierzam głosować za tym, ale GameMaker i Visual Basic są narzędziami uczącymi złej składni (VB), a GameMaker nie jest naprawdę świetny. Po pierwsze, nie masz dostępu do ładnych IDE, takich jak VS, tworzenie gier metodą przeciągnij i upuść tak naprawdę niczego nie uczy.
Joe the Person
1
Nie jestem pewien, dlaczego wspominasz o VB; Game Maker jest oparty w przybliżeniu na C. Niezależnie od tego Game Maker to dobry sposób na przejście od niewiedzy do zrozumienia sposobu myślenia niezbędnego dla twórcy gry. Reagowanie na zdarzenia, utrzymywanie pętli gry, korzystanie z relacji między zasobami graficznymi a kodem, przenoszenie projektu od pomysłu do publikacji; to wszystko, czego możesz się nauczyć dzięki rozwojowi metodą przeciągnij i upuść. Zgadzam się, że GML jest językiem ograniczonym, ale system jako całość jest dobrym punktem wyjścia.
Gregory Avery-Weir
1
Wspominam o VisualBasic z powodu DarkBASIC, który jest kolejnym strasznym narzędziem programistycznym.
Joe the Person
Game Maker to zdecydowanie dobry sposób na nauczanie zorientowane na wyniki. Nie musisz uczyć się fizyki ani renderowania. Wystarczy skorzystać z wbudowanych funkcji. Przejście do C ++ jest łatwe, ponieważ możesz zacząć od tworzenia bibliotek dll i używania ich w Game Maker, a później całkowicie porzucić Game Maker.
William Mariager
Nigdy, nigdy nie sugeruj GameMaker komuś starszemu niż jedenaście lat ... Jeśli ma piętnaście lat, równie dobrze może zająć się programowaniem.
jcora,
2

Jak wspomniał Martin, UDK jest prawdopodobnie najszybszym sposobem, aby coś działało, ponieważ ma tyle gotowych rzeczy, takich jak sztuczna inteligencja, modele, a także bogactwo książek. Ma bardzo dobry edytor map, a językiem jest Java-esque (i podobny do skryptu ECMA).

Alternatywą może być wypróbowanie gier we Flashu lub Silverlight - zacznij od prostych gier 2D. Jakikolwiek gatunek gier lubi, dyktuje zestaw narzędzi.

Chris S.
źródło
1
Nie! Nie UDK! Jest to: błędny, wolny, podatny na błędy, złożony itp. Zamiast tego wybierz Unity.
Joe the Person
@ firedude67 UDK buggy, podatny na błędy? żartujesz?
Quazi Irfan
z mojego doświadczenia wynika, że ​​było to niewiarygodnie opóźnione, wszystko, co zbudowałem, dało BSOD i nie mogłem znaleźć żadnej pomocnej dokumentacji. Nie uruchomiono nawet przykładowych projektów.
Joe the Person,
1
Nigdy nie znalazłem błędów UDK, ale zdecydowanie NIE polecam go dla programisty gier. Artysta, tak, ale programista, nie. „Dokumentacja” to żart. Aby znaleźć klasy, które należy podklasować, trzeba otworzyć klasę nadrzędną, ponieważ zdecydowali się nie podawać odwołania do interfejsu API. Potrzebne jest również dużo pracy, aby tworzyć różne rodzaje gier, ponieważ jest to silnik FPS w sercu.
DMan
1

Ta rada, pochodząca od 14-latka, może być przydatna. Uważam, że najlepszym sposobem na wybór platformy jest platforma najlepiej dostosowana do tego celu. Pisałem ten post wiele razy wcześniej.

Od Reddit -

Wybierz język, który odpowiada twojemu celowi. Większość graczy nie dba o to, w jakim języku jest zaprogramowana gra. Dbają o to, czy mogą w nią grać, czy nie. Dbają o to, czy działa szybko na ich komputerze. Dbają o to, czy gra nie ma rozmiaru 10 GB. Nie obchodzi ich, czy to exe czy słoik.

Spójrz na gry takie jak Minecraft. Na pewno napisany w Javie, języku, który ma bardzo mały udział w rynku w branży deweloperów gier. Czy to jednak obchodzi konsumentów? Nie. Dbają o funkcjonalność.

Ponieważ jednak twój syn nie ma żadnego doświadczenia w programowaniu, sugeruję naukę języka, który szybko koduje, takiego jak Python, lub korzystanie z istniejącej platformy, takiej jak XNA. Osobiście uwielbiam Slick2D z Javą, ale myślę, że to moja preferencja ...

liamzebedee
źródło
0

Zostałem wprowadzony do programowania w młodym wieku (poniżej 15 lat), a mój tata postanowił użyć VB (1.0). Zrobiliśmy skręconą wersję ponga, używając obiektu timera i rysunku GDI. Podobało mi się to, ponieważ zaczynaliśmy od pustego płótna i mogliśmy nauczyć się podstaw struktur programistycznych, próbując jednocześnie zrobić coś fajnego.

Dzisiaj myślę, że wybrałbym XNA i wybrałbym prostą grę 2D. C # i XNA są dość proste i dają ci dużo miejsca na rozwój i są bezpłatne.

John McDonald
źródło
-4

Jeśli po prostu chce tworzyć gry, powinien używać XNA, Unreal, Unity itp. Jeśli chce być programistą gier, powinien najpierw nauczyć się C / C ++ i OpenGL / SDL lub D3D.

XNA, Unreal, Unity itp. Są świetne do tworzenia gier, ale naprawdę źle robią dla ciebie zdecydowanie za dużo. Jestem pewien, że ludzie się ze mną nie zgodzą, ale w zasadzie zmieniają cię w leniwego programistę, a kiedy przyjdzie czas na naukę takich rzeczy jak punkty w C ++, będzie trudniej, ponieważ najpierw wybrałeś łatwiejsze opcje.

Peronalnie nigdy nie sugeruję niczego innego C / C ++ jako pierwszego języka do nauki, jeśli chcesz zostać programistą gier. Głównym powodem jest to, że nawet jeśli będziesz uczyć się języka C # / XNA, jeśli poważnie myślisz o zostaniu programistą gier, na pewnym etapie będziesz musiał znać C lub C ++, ponieważ nikt nie zatrudni cię inaczej. Więc jeśli poważnie podchodzą do zawodu, to opóźniasz naukę tego, czego się od ciebie oczekuje.

Nieznane urządzenie
źródło
10
Kiedy 15-latek jest gotowy do profesjonalnego zatrudnienia (za osiem lat), nie widzę powodu, by zakładać, że wszyscy będą używać C ++. Osiem lat temu C ++ dopiero zaczęło być używane w grach i zyskało swój pierwszy naprawdę praktyczny standard, a większość wszystkich wysyłała z C. Osiem lat wcześniej C ++ był w śmiesznie złym stanie dla rozwoju gier i porządku dnia było C i asm. Za osiem lat większość programów do gier prawdopodobnie będzie wyglądać bardziej jak XNA niż C ++ 03. (ciąg dalszy)
8
Kluczowym elementem jest stanie się dobrym programistą , który jest niezależny od dowolnego języka. Dla nowych programistów, C # zwiększy ich motywację szybciej. Wrócą i nauczą się bardziej szczegółowych rzeczy, jeśli chcą być dobrzy, ale musisz je zaczepić wystarczająco długo, aby dostać się do tego etapu.
5
Ważnymi szczegółami w programowaniu gier są SIMD, a nie SSE; wiersze pamięci podręcznej, a nie standardowy układ C ++; hashing, not std :: unordered_map; polimorfizm, a nie funkcje wirtualne. Te ostatnie rzeczy są drobiazgowe i mają charakter przypadkowy, a nie fundamentalny. Kiedy znasz ten pierwszy, ten drugi zwykle trywialnie podąża.
2
Zaczynanie od C ++ jest ogólnie złym pomysłem. To trudny język, a przede wszystkim więcej.
Kaczka komunistyczna
4
Zacząłem C ++ w 15, a ja jestem zadowolony z którym jestem teraz, wychodząc z czymś łatwiej prawdopodobnie byłaby dużo mniej bolesne, i pozwoliło mi skupić się na rzeczywistych dev gier, zamiast wskaźników i zwraca błąd ...
Riley Adams,