Porady dotyczące pierwszego roku CS-dur [zamknięte]


17

Zbliżam się do końca pierwszego roku CS, który był przede wszystkim kursem opartym na Javie. Chciałbym zmoczyć stopy przy tworzeniu gier, ale nie jestem pewien, od czego zacząć.

Niektóre osoby zasugerowały, żebym zaczął od twórcy gry, który ma język skryptowy w stylu C (który powinien być łatwy do opanowania), ponieważ jest to prawdopodobnie najprostszy i pozwala mi skupić się głównie na projektowaniu gry i dopasowaniu całej gry.

Widzę, że wiele osób polecało XNA, ponieważ ma dobrą abstrakcję OpenGL i DirectX poprzez jego interfejsy API. Słyszę również, że C # jest bardzo podobny do Java.

Rozważyłem także programowanie gier w Javie, ponieważ czuję się z tym całkiem swobodnie i robię dodatkowe czytanie na temat wielowątkowości i interfejsów API grafiki 2d.

Wreszcie znajomy pokazał mi ostatnio grę, która również brzmi bardzo dobrze, chociaż nie wiem zbyt wiele na ten temat.

Nie wiem, czy C ++ jest dobrym punktem wyjścia, wiele postów, które widziałem dla początkujących deweloperów gier, nie poleca go do pierwszego projektu gry.

Będę wdzięczny za wszelkie uwagi, szczególnie od tych, którzy zajmują się tworzeniem gier z Java


5
C ++ jest trudny, cholernie trudny, ale na dłuższą metę jest łatwiej, jeśli spróbujesz otoczyć się nim, zanim Java naprawdę go ustawi. Zdecydowanie trudniej jest nauczyć się języka C ++ na tle języka Java niż nauczyć się języka Java na tle języka C ++. joelonsoftware.com/articles/ThePerilsofJavaSchools.html
David Young

1
Umarłbym próbując nauczyć się języka C ++ po rozpoczęciu pracy z Javą, zacząłem od starszego stylu C ++, a potem nauczyłem się języka Java. Jeśli martwisz się przeskoczeniem do wskaźników, polecam po prostu naukę prostego programowania w C i Uniksie. Wprowadza cię w zupełnie nowy sposób myślenia, dzięki czemu mniej prawdopodobne jest zastosowanie nieodpowiednich koncepcji Java.
michael.bartnett

Odpowiedzi:


14

Istnieje wiele dobrych wyborów. (Uczę CS1 i CS2, a także programowania gier.) Najpierw oczywiście uczę się myśleć jak informatyk. Nie angażuj się zbytnio w język, ponieważ pojęcia są naprawdę uniwersalne.

Java jest całkiem dobrym językiem, ale budowanie gry w Javie jest trochę nudne. Istnieje kilka interesujących silników, które ułatwiają ten proces. Niestety podłączenie silnika gry do narzędzia do edycji może być trochę bolesne.

Podoba mi się silnik FANG (niestety nie mogę jeszcze publikować hiperłączy, więc spójrz na Google). Ciekawą częścią tego projektu jest edytor online. Oznacza to, że możesz zacząć od razu, bez bałaganu w ustawieniach zaćmienia.

Naprawdę nie jestem fanem Game Maker. GUI jest w porządku dla osób, które nie chcą nauczyć się programować, i jest przyzwoitym (ale nie świetnym) narzędziem do prototypowania. Są jednak dwie rzeczy, których nie lubię. Po pierwsze, jest to reklama komercyjna. To nie jest złe, ale jeśli istnieją darmowe alternatywy open source, które są tak samo dobre (i istnieją), może powinieneś je najpierw przeanalizować. Większy problem z Game Maker stanowi język skryptowy. W końcu przerosniesz GUI i będziesz chciał zacząć pisać kod. Język skryptowy w GM jest dość zacofany. Ponieważ jesteś specjalistą od CS, jesteś (mam nadzieję) zainteresowany ponownym użyciem kodu, elegancją, klarownością, wydajnością i modułowością. Język GM Cię rozczaruje.

Uwielbiam Python i Pygame. (W rzeczywistości napisałem o nich książkę. Zobacz wszystkie moje notatki i filmy online na mojej stronie, jeśli chcesz. Zapraszamy do tych zasobów, niezależnie od tego, czy masz książkę, czy nie.) Python to ładny elegancki język, który nie jest zbyt trudny do nauczenia się (zwłaszcza jeśli już wiesz, jak programować.) Pygame to opakowanie popularnego silnika SDL 2D. W rzeczywistości dodałem drugie opakowanie do gry, aby uczynić ją tak łatwą w pracy jak Flash.

Mówiąc o Flashu, nie sądzę, żeby było warto. (Wiem, że nie pytałeś) To dobra platforma, ale koszt i niepewność co do tego, jak będzie wyglądać na urządzeniach mobilnych, może nie być świetnym narzędziem do nauki. (Napisałem też książkę o twórcach gier we Flashu, ale już jej nie uczę.)

Oto kilka innych wspaniałych rzeczy do wypróbowania. Zdobądź kopię scratchu z MIT: scratch.mit.edu Jest stworzony dla dzieci, ale nie zniechęcaj się. To absolutnie niesamowite narzędzie do gier i animacji. Programowanie wykorzystuje kafelki, więc łatwo jest zacząć. Będziesz całkowicie zaskoczony, co możesz z tym zrobić.

Możesz także wypróbować Alicję z Carnegie Melon www.alice.org Najnowsza (3.) edycja jest w rzeczywistości rozszerzeniem Java, która korzysta z modeli Sims2.

Zarówno Scratch, jak i Alice są bezpłatne.

Jeszcze jednym doskonałym narzędziem do sprawdzenia jest Blender www.blender.org

To narzędzie do modelowania 3D, ale wiele osób nie wie, że jest to także kompletny silnik gry z interfejsem programowania typu przeciągnij i upuść. Po wyrośnięciu z kafelków ma ono wbudowaną obsługę języka Python.

Teraz jestem bardzo zainteresowany HTML5 (który jest ledwo HTML - to naprawdę HTML, CSS i JavaScript.) Nie jest to całkiem środowisko do tworzenia gier, ale wierzę, że będzie dużym graczem. Moja następna książka będzie poświęcona tworzeniu gier w HTML5.

Powodzenia i daj mi znać, jeśli masz więcej pytań.


Dziękuję za Twój wkład, sprawdzam twoją stronę w trakcie rozmowy. Jestem pewien, że nieocenione będzie, aby ktoś z twoim doświadczeniem przyczyniał się tutaj
avatarX

Obsługa wskaźnika nie jest uniwersalna = (przeklinaj moją Javę.
David Young

Chciałbym wiedzieć, dlaczego uważasz, że tworzenie gry w Javie jest uciążliwe. Wygląda na to, że sugerujesz, że Python jest mniej uciążliwy. Przy tak wielu świetnych frameworkach i bibliotekach opartych na Java, wydaje się to bardzo odważnym stwierdzeniem.
zfedoran

1
Dla początkującego programisty wszystko w Javie może być bardziej nużące. Porównaj coś takiego jak printf. W pythonie jest to część instrukcji print: print "% s, twój wynik to% d"% (student, wynik). W php musisz rzutować wszystkie prymitywy na klasy otoki, rzutować je na obiekty i zbudować anonimową tablicę obiektów. Lubię Javę. (Uczyłem go od lat i napisałem o tym książkę.) Jednak jeśli celem jest nakłonienie kogoś do programowania gier, chcę, aby język był jak najbardziej przeszkadzający.
Dwa pi

Dziękujemy za poświęcenie czasu na komentarz. Pomogło mi zrozumieć, skąd pochodzisz. Jednak nie jestem jeszcze sprzedany, ponieważ Python jest jeszcze lepszym językiem dla studentów, podobnie jak wykładowcy na moim uniwersytecie kwestionują ich niedawną zmianę na Python dla studentów pierwszego roku. Być może uczniowie po prostu utknęli w nowych sprawach. Kiedyś uczniowie robili wszystko „publicznie statycznymi”, teraz trudno im zrozumieć różnicę między typami.
zfedoran

5

To zależy od tego, jaki jest twój cel i do jakiej części rozwoju gry chcesz się włączyć.

Czy bardziej interesuje Cię faktyczny sposób działania silników gier i budowania czegoś od podstaw, czy chcesz jak najszybciej wejść do części rozwoju gry.

Nakrętki i śruby: XNA to dobry sposób, aby zanurzyć palce na tej arenie. Framework robi dla ciebie wiele, ale możesz powoli zastąpić każdy kawałek własnym kodem, gdy poczujesz się bardziej komfortowo z C #. Nauka języka C # jest dobra dla przyszłych pozycji tworzenia gier, ponieważ narzędzia są często budowane przy użyciu języka C #.

Programowanie rozgrywki: Jedność jest tutaj dobrym rozwiązaniem. Bezpłatnie i umożliwia kodowanie w wielu językach, w tym JavaScript i C #. Będziesz w stanie szybko zacząć działać, co jest przyjemną motywacją. Ponadto możesz przejść na inny język, a nawet mieszać języki, aby ćwiczyć poszerzanie swojego zrozumienia.

Zaletą jest to, że oboje mogą swobodnie się bawić i mogą być podłączani do różnych urządzeń za niewielką opłatą.


4

Zawsze można zrobić niektóre gry oparte na Javie, nic złego z tymi (http://zetcode.com/tutorials/javagamestutorial/)

XNA i AS3 są bardzo blisko i mogą tworzyć gry tak skomplikowane lub tak proste, jak to pożądane. (choć to samo dotyczy java)

Jedną rzeczą do zapamiętania jest zawsze ćwiczenie i po prostu baw się kodem.


3

Java Monkey Engine

Jeśli najbardziej Ci odpowiada Java, możesz użyć Java Monkey Engine do tworzenia frameworków podczas tworzenia gier. Posiada również przyzwoitą ilość dokumentacji / samouczków, w tym instrukcje dotyczące integracji z Netbeans i Eclipse.


Muszę powiedzieć, że JMonkeyEngine wygląda dobrze. Na pewno to sprawdzę. Dzięki za wkład
avatarX

2

Jedność

Powiedziałbym spróbować Jedność . Mają darmową wersję i możesz zmoczyć stopy w ciągu kilku godzin, aby uzyskać podstawowy pomysł, wykonując dwa samouczki dostarczone przez Unity:

Inną fajną rzeczą w jedności jest to, że możesz używać JavaScript jako języka skryptowego i możesz publikować swoją grę na Windows, MacOS, Web, iPhone, a teraz także w wersji 3 na urządzeniach z Androidem.

Ponadto używają silnika StackExchange do Unity Answers i mają wspaniałą społeczność na wszystkie pytania związane z Unity.


1

Każdy z nich byłby dobrym początkiem, mówiąc jako twórca, którego początkowa edukacja CS była w Javie.

C # jest bardzo zbliżony do Javy (czasem żartuję, że jest to Java na ograniczonej platformie z lepszymi bibliotekami), więc XNA może być dobrym wyborem. Minecraft jest rozwijany w Javie z biblioteką gier lwjgl, więc jeśli chcesz pozostać przy Javie, to dobra metoda. Oczywiście tworzenie 3D jest dość skomplikowane; w zależności od twojej wiedzy, doświadczenia i wytrwałości, możesz poczekać na 3D (lub nawet 2D w systemie opartym na 3D), aż zdobędziesz więcej edukacji na swoim koncie.

W przypadku rozwiązań 2D: Game Maker jest bardzo prosty i został wykorzystany do stworzenia świetnych gier. Powinieneś być w stanie dość łatwo opanować język skryptowy, ale może to być zbyt proste dla kogoś z wieloletnim doświadczeniem w Javie. Tworzę we Flashu przy użyciu czystego AS3 ( samouczek ), który jest wystarczająco blisko Java, aby twoje umiejętności łatwo tłumaczyć.


1

Zdecydowanie polecam korzystanie z XNA. To całkiem sprawna i dobrze obsługiwana platforma z rosnącą społecznością. XNA naprawdę zaczyna odnajdować swoje „miejsce” w ekosystemie, teraz, gdy platforma jest wysyłana na więcej platform niż kiedykolwiek (w tym Windows Phone 7). Co ważniejsze jednak, użycie XNA zmusi cię do nauki języka C # i ogólnego programowania .NET. Zyskasz doświadczenie z tą platformą, niezależnie od tego, czy zdecydujesz się na tworzenie gier, ponieważ rozwój .NET rozwija się i ma bardzo zdrowy rynek pracy. Z drugiej strony Java powoli umiera od pewnego czasu, a ostatnie wydarzenia jedynie przyspieszyły jej śmierć. Jeśli twój program CS, podobnie jak ten, który ukończyłem, jest silnie zorientowany na Javę, to dobrze by ci pomógł nauczyć się C # / .NET we własnym czasie.

Nawet jeśli Java nadal działa, a ty zdecydujesz się kontynuować karierę w tworzeniu oprogramowania Java, prawdopodobnie i tak będziesz musiał zintegrować się z systemami .NET. Jakkolwiek się jednak okaże, doświadczenie pomoże ci tylko na dłuższą metę.


Rzeczywiście.com/ jobtrends? q = java & l = i rzeczywiście.com/ jobtrends? q= .net & l= są dość reprezentatywne dla popytu na rynku dla obu. Wygląda na to, że Java rzeczywiście rośnie.
David Young,

Nie uważałem, że napływ rozwoju oprogramowania Java jest wynikiem sukcesu platformy Android. Prawdopodobnie ma to wiele wspólnego ze skokiem liczby powiązanych ofert pracy na przełomie 2008 i 2009 roku. Ciekawe będzie, jak WP7 i dostępność MonoTouch na iOS i MonoDroid na Androida wpływają na mobilną obecność Javy.
Mike Strobel

1

Jeśli interesuje Cię projektowanie gier , dlaczego nie zacząć od stworzenia gry karcianej lub czegoś, co w ogóle nie wymaga programowania? Pozwoli ci to skupić się na projektowaniu i mechanice gry, zamiast walczyć o interfejsy API, języki i frameworki, których nie znasz.


1

Możesz także korzystać z http://Processing.org . To świetne środowisko do nauki programowania grafiki. Chociaż nie jest to narzędzie przeznaczone wyłącznie dla twórców gier, ma wiele do zaoferowania. Jego język jest rozszerzeniem / uproszczeniem języka Java i będzie szybki do nauczenia się.


0

Porady niezwiązane z programowaniem ode mnie:

Stwórz zgrabny projekt i pochwal się nim swoim profesorom.

W ten sposób dostałem letnie prace jako programista po pierwszym i drugim roku w szkole.


Może to być przydatne, ale tak naprawdę nie rozwiązuje kryzysu językowego / API, do którego zbliża się OP.
Kaczka komunistyczna

0

Jeśli szukasz tylko gry, po co uczyć się innego języka w tym samym czasie? Trzymałbym się Javy, chyba że chcesz nauczyć się nowego języka.

Główne opcje Java, o których wiem, to jMonkeyEngine, który jest silnikiem graficznym 3D i ogólnie uważany jest za całkiem dobry.

I jest jOGL, który jest opakowaniem Java nad OpenGL. Jest to oczywiście o wiele niższy poziom.

Jeśli dopiero zaczynasz i chcesz pracować z logiką bardziej niż z buforami i wiązaniem modułów cieniujących itp., Skorzystaj z jMonkeyEngine. Jeśli chcesz zagłębić się w grę, skorzystaj z jOGL.

Jeśli chcesz nauczyć się nowego języka, poza C # i Python prawdopodobnie powiedziałbym C #. Składnia jest bardzo podobna do Java, a XNA i SlimDX są bardzo dobre dla grafiki. XNA jest wyższym poziomem i zrobił dla ciebie kilka rzeczy. Jest to jednak ograniczenie tylko do systemu Windows, bez Mono.

Python jest bardzo łatwym językiem do zdobycia (zajęło mi około tygodnia z maksimum uwagi z książki pochodzącej z roku C ++). Pygame to opakowanie wokół bibliotek SDL z C, więc prawdopodobnie nie ma takiej samej funkcjonalności jak XNA.


0

Kolejny głos na Jedność . Będziesz miał dużo czasu w ciągu następnych kilku lat studiów CS, aby zaangażować się w C ++ i inne języki. Jeśli Twoim celem jest opracowanie gry, zajęcie się tym, czym jest praca nad silnikiem, zajmie zbyt wiele czasu. Jeśli chcesz być projektantem silnika, zdecydowanie wróć i wypróbuj implementację niższego poziomu.

Silnik Unity pozwoli ci wyodrębnić większość szczegółów, dzięki czemu możesz skupić się na programowaniu rozgrywki. Społeczność na forach i odpowiedzi Unity oparte na Stack Exchange są niezwykle pomocne. Możesz programować w JavaScript lub C #. Począwszy od Javy, zacząłem od Javascript, ponieważ napisano wiele samouczków, ale przełączyłem się na C # (co było dość łatwym przełącznikiem).

Myślę, że XNA i Pygame mogą być również dobre (ponieważ usuwają niektóre z bardziej uciążliwych rzeczy), ale nie mam z nimi doświadczenia.

Wreszcie, nie celuj zbytnio w pierwszej grze. Bardzo łatwo jest nie docenić czasu poświęcanego na implementację funkcji w grze. Zacznij od podstawowej mechaniki gry, która pozwala szybko doprowadzić grę do stanu grywalnego. Następnie możesz zacząć dodawać inne elementy.

Baw się dobrze!


0

XNA to świetne rozwiązanie, jeśli nie korzystasz z Javy. C # będzie szukał i czytał prawie IDENTYFIKOWalnie dla java dla ciebie, dzięki czemu będziesz w stanie wskoczyć naprawdę szybko bez nauki nowej składni. Struktura XNA zapewnia mnóstwo dobrych interfejsów API do pracy, a jest wiele darmowego otwartego kodu „microsoft permissive licence”, który pomoże Ci rozpocząć niektóre projekty.

Nie polecałbym używać Javy, większość graficznych interfejsów API jest okropna, nie ma mnóstwo wsparcia 3d i ogólnie Java po prostu działa wolno; nie jest to wielka sprawa dla większości aplikacji Java, ale gry wideo wymagają DUŻEJ wydajności.

C ++ to sposób na tworzenie gier wideo, prawie okres. Jednak przejście z java -> C ++ będzie dość denerwujące. Nie wspominając o tym, że większość hardcorowych grafik programujących jest w stylu C, a nie C ++, więc będziesz musiał wykonać szereg arytmetyki wskaźników, aby spróbować wycisnąć większą wydajność. To może być interesujące, ale czasochłonne. Na początek możesz potrzebować dużo.

Istnieje wiele dobrych silników do gier, takich jak Ogre, ale potem musisz poświęcić mnóstwo czasu na naukę, jak to zrobić, najpierw może się to wydawać zbyt skomplikowane.

Bądź ostrożny, choć wiele pomysłów na grę może być niesamowitych, pamiętaj, że gry wideo są drogie, zajmują dużo czasu i mają duże zespoły programistów.

Jeśli chcesz stworzyć grę i być jedyną osobą, która nad nią pracuje, prawie MUSISZ zrobić ją z gry 2D (chociaż i tak powinieneś zacząć od 2D) i musisz NAPRAWDĘ zacząć, NAPRAWDĘ proste.

Prawie wszystko, co można sobie wyobrazić jako zabawne, jest na razie zbyt ambitne.

Moja rada: jeśli nie masz, pobierz bezpłatne studio graficzne 2010 express. Pobierz studio gier XNA i platformę .net 4. Pobierz wersję demonstracyjną XNA. Uruchom wersję demonstracyjną, a następnie przejrzyj kod i zobacz, co robi. Spróbuj przeczytać dokumentację na temat tego, jak XNA robi gry 2D.

Następnie wybierz swoją ulubioną, oldschoolową, super łatwą grę. Pac-man? Pong? Asteroidy Space Invaders? Mario? Wybierz coś Głupiego, GŁUPIE łatwego. Następnie po prostu przerób grę dokładnie tak, jak była. Masz wystarczająco dużo zmartwień związanych z programowaniem i uczeniem się nowego API, którego NIE musisz zawracać sobie głowy projektowaniem gier; tylko cię rozproszy.

Następnie, kiedy już uruchomisz swojego klona Mario lub cokolwiek stworzyłeś, możesz zacząć eksperymentować z grą i próbować dodawać nowe rzeczy.

Rozpocznij małe, małe kroki, a będzie o wiele więcej zabawy, a nauczysz się dużo więcej.

Spróbuj zmodyfikować kod źródłowy Quake3 w C ++, aby stworzyć grę, a będziesz naprawdę sfrustrowany, a nawet jeśli sprawisz, że będzie działała, nie nauczysz się dużo z robienia tego.

Po prostu baw się dobrze: D


0

Lampa błyskowa

Flash AS3 to fantastyczny język do ominięcia ważnych koncepcji OOP bez martwienia się o zarządzanie pamięcią i pisanie plików nagłówkowych. To także prawie kompletny silnik do gier 2D, z drzewem wyświetlania, systemem zdarzeń i wszystkimi innymi przydatnymi funkcjami.

Istnieje ogromna społeczność twórców gier Flash i, wbrew powszechnemu przekonaniu, możesz tworzyć gry Flash za pomocą narzędzi open source. Jeśli korzystasz z systemu Windows, polecam FlashDevelop .

Twierdziłbym, że Flash jest jeszcze bardziej przyjazny dla wielu platform niż Java lub inna technologia z wyjątkiem Unity. 99% ludzi może wyświetlać pliki Flash w przeglądarce na komputerze, więc możesz łatwo dzielić się swoimi dziełami ze światem. Większość smartfonów powoli otrzymuje obsługę Flasha, a na iOS, jedyną platformę, która nie obsługuje Flasha w przeglądarce, możesz tworzyć aplikacje za pomocą Flash CS5 (choć to kosztuje).

Myślę, że wstydem byłoby zmaganie się z czymś bardziej złożonym, takim jak C ++, a nawet C #, kiedy mógłbyś zacząć uczyć się podstaw tworzenia gier teraz z AS3. Gdy zrozumiesz AS3, później będziesz mógł łatwo przejść na inne języki. W moim przypadku byłem programistą Flash, ale nauczyłem się programować w Objective-C i udało mi się stworzyć hitową grę na iPhone'a. Zrób sobie przysługę i odwiedź http://www.flashgamedojo.com/ - Nie sądzę, że będziesz rozczarowany!

Jedność

Unity ma wiele takich samych zalet Flash, ale w 3D.

Z Unity możesz programować w C # lub w UnityScript (który jest javascript-y). To nie jest open source, ale jest darmowe. Jest bardzo dobrze wspierany i jest świetna społeczność. Problem z tworzeniem gier 3D polega na tym, że do większości gier potrzebujesz dużo sztuki i zasobów. Może to być również problemem w przypadku gier 2D, ale generalnie grafika 3D zajmuje dużo więcej czasu i trudniej jest stworzyć „sztukę programisty”.

Uwaga na temat open source

Nie ma nic złego w korzystaniu z oprogramowania typu open source, ale zmieniasz siebie, jeśli używasz go tylko dlatego, że jest to oprogramowanie typu open source. Wybierz najlepszy język i narzędzia, które pomogą Ci najszybciej się uczyć przy najmniejszym tarciu. W tym samym duchu szalona jest mentalność „najpierw naucz się najtrudniejszej rzeczy” (tj. C ++). To, czego naprawdę powinieneś się uczyć, to logika, a nie składnia, więc ucz się, w którym języku jest najmniej bagażu i jakie są bariery wejścia. Moim zdaniem to AS3.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.