Czy dopracowanie mojego obecnego projektu będzie lepszym doświadczeniem edukacyjnym niż rozpoczęcie nowego? [Zamknięte]

15

Zacząłem programować wiele lat temu. Teraz próbuję tworzyć gry. Przeczytałem wiele zaleceń, aby rozpocząć klonowanie niektórych dobrze znanych gier, takich jak galaga, tetris, arkanoid itp. Przeczytałem również, że powinienem przejść na całą grę (w tym menu, dźwięk, partyturę itp.).

Wczoraj skończyłem pierwszą pełną wersję mojego klonu arkanoidalnego. Ale to jeszcze nie koniec. Nadal mogę nad tym pracować przez wiele miesięcy (w wolnym czasie programuję jako hobby), wdrażając przełącznik rozdzielczości ekranu, mapowanie klawiszy kontrolnych, dopalacze spadające z połamanych cegieł, ogromne itp.

Ale nie chcę wiecznie uczyć się klonowania JEDNEJ gry. Mam ochotę przejść do następnego klonu, aby zastosować kilka pomysłów projektowych, na które natknąłem się podczas tworzenia tego arkanoidalnego klonu (jednocześnie czytam książkę GoF i dużo kodu źródłowego z konkursu gry Ludum Dare 21).

Pytanie brzmi zatem: czy powinienem ciągle ulepszać klon arkanoidalny, dopóki nie będzie on miał wszystkich funkcji, jakie posiadała oryginalna gra? czy powinienem przejść do następnego klonu (są prawie nieskończone gry do klonowania) i zacząć naprawiać to, co zrobiłem źle z poprzednim klonem?

To może być bardzo subiektywne pytanie, dlatego ograniczaj odpowiedzi na najskuteczniejszy sposób, aby nauczyć się tworzyć własne gry (nie klonując pomysłów). Dziękuję Ci!


WYJAŚNIENIE

Aby wyjaśnić, co wdrożyłem, tworzę tę listę:

Zaimplementowane funkcje:

  • Możliwości odbijania się (piłka odbija się od ścian, cegieł i paska).
  • Brzmi, gdy odbija się od cegieł i paska, a gracz wygrywa lub przegrywa.
  • Podstawowe menu tytułów (tylko nowa gra i wyjście). Również menu w grze i menu wygranej / przegranej.
  • Tylko trzy poziomy, ale system map jest tak łatwy, że nie sądzę, że wiele mnie nauczy (czy się mylę?).

Funkcje niezaimplementowane:

  • Dopalacze przy łamaniu cegieł.
  • Złożone klocki (z więcej niż jednym „punktem życia” i niezwyciężonym).
  • Lepsza grafika (nie jestem w tym naprawdę dobra).
  • Programowanie polerowania (intensywniej wykorzystuj wzorce projektowe).

Oto link do jego (minimalnej) strony: http://blog.acamara.es/piperine/ Wstydzę się jej pokazać, więc proszę nie uderzaj mnie zbyt mocno :-)

Moje pytanie dotyczyło niezaimplementowanych funkcji. Zastanawiałem się, jaka była najszybsza (optymalna) ścieżka do nauki. 1) zaimplementuj niezaimplementowane funkcje w tym projekcie, który się powiększa, lub 2) stwórz nową grę, która prawdopodobnie nauczy mnie tych lekcji i nowych.


ODPOWIEDŹ

Wybieram odpowiedź @ ashes999, ponieważ w moim przypadku uważam, że powinienem bardziej dopracować i spróbować „wysłać” grę. Myślę, że wszystkie inne odpowiedzi również należy wziąć pod uwagę, więc jeśli przybyłeś tutaj z tym samym pytaniem, zanim podejmiesz szybką decyzję, przeczytaj całą dyskusję.

Dziękuję wam wszystkim!

Alejandro Cámara
źródło
Przepraszamy, ale powiedzenie, że jest to obiektywne pytanie, nie czyni go obiektywnym. Zależy od osoby , jej umiejętności, celów i motywacji, od tego, czy powinni oni zmieniać projekty - wszystko to sprawia, że ​​jest to pytanie subiektywne . Po prostu nie ma jednej „właściwej” odpowiedzi na to pytanie.
Cyclops,
Masz rację, myślałem o „subiektywnym”, ale napisałem „obiektywny” (zdarza mi się również z lewym i prawym…). Zmieniłem to.
Alejandro Cámara,
Wups, przykro mi to słyszeć. Jednak nie chcę tego mówić, ale nadal nie jest to dobre pytanie dla tej witryny. Celem witryn StackExchange jest tworzenie pytań / odpowiedzi przydatnych dla wielu osób, a nie pytań, które dotyczą tylko jednej (lub kilku) osób. Ponadto, powinna (najlepiej) być jedna poprawna odpowiedź - ale dla osób w przyszłości, które znajdą ten post, niektórzy mogą znaleźć jedną odpowiedź najlepszą, a drugą lepszą, sprzeczną odpowiedź.
Cyclops,
1
Czułem, że to nie jest dobre pytanie. Ale i tak to napisałem, ponieważ może ktoś utknął z tym samym dylematem. Nawet jeśli nie ma „dobrej” odpowiedzi, dyskusja może uświadomić innym ludziom, że przyjmą „właściwą” odpowiedź.
Alejandro Cámara,
1
Osobiście uważam, że zakres projektu edukacyjnego powinien obejmować wszystkie funkcje gry (więc zaimplementuj ulepszenia), ale potem zadzwoń do projektu wykonanego i przejdź dalej; nie zawracaj sobie głowy polerowaniem grafiki.
jhocking

Odpowiedzi:

32

Całkowicie nie zgadzam się z odpowiedzią Patricka . Jeśli chcesz odnieść sukces jako twórca gier, najważniejszą umiejętnością, której musisz się nauczyć, jest pomysł i dostarczenie kompletnej, dopracowanej gry.

Z czasem zdasz sobie sprawę (co zdałem sobie sprawę po kilku latach), że programowanie to tylko niewielka część twojej gry. To proste, ponieważ jest fajne. Ale trzymanie się tylko programowania pozostawi po sobie ślad niepełnej weryfikacji koncepcji i wersji demonstracyjnych.

Zamiast tego radzę bardzo mocno założyć stronę internetową i blog (Wordpress jest świetny do tego rodzaju rzeczy), dokończyć gry (poczynając od Arkanoid) i wypuścić je na wolność.

Ważne jest również, aby zdać sobie sprawę, że jeśli to zrobisz, będziesz kontrolować, kiedy gra się zakończy. Jeśli chcesz 1000 poziomów z 10 głównymi funkcjami, w porządku. Jeśli chcesz 10 poziomów z 3 głównymi funkcjami, w porządku. (W rzeczywistości częściej polecam mniejsze projekty, ponieważ uczysz się więcej i dużo koncentrujesz na polerowaniu w ten sposób).

Edycja: W odpowiedzi na ludzi, którzy się nie zgadzają, czuję, że muszę to wyjaśnić. Jeśli stworzyłeś grę tylko dla jednego celu / eksperymentu (co robię cały czas), to zdecydowanie , zmniejsz zakres i wyślij ją. Nikt nie powiedział, że Arkanoid potrzebuje 1000 poziomów, aby być dopracowaną grą; po prostu zrób wystarczająco dużo poziomów, aby Twoim zdaniem było fajnie i iść dalej.

Możliwe jest spędzanie lat na grze i nigdy nie wysyłanie. Ale wydaje mi się, że o wiele łatwiej jest wpaść w inną dziurę, polegającą na tworzeniu technicznych demonstracji i prototypów na zawsze. Ponad 10 lat zajęło mi przestanie tego robić.

ashes999
źródło
3
+1 „wysyłka jest (wymagana?) Cechą”, chociaż w tym przypadku można również zobaczyć klon arkanoidalny jako prototyp, a prototypy mają zostać wyrzucone, gdy koncepcja zostanie udowodniona lub odrzucona.
Oskar Duveborn,
2
@Oskar łatwiej jest wykonać 1000 prototypów niż wysłać jedną grę. Ostatecznie wysyłka zapewni Ci sukces, a prototypy tylko zwiększą niektóre umiejętności kodowania.
ashes999
2
Po co odrzucać „po prostu zwiększać umiejętności kodowania”? Pyta konkretnie o doświadczenie edukacyjne.
jhocking 11.09.11
@jhocking z powodu odpowiedzi Patricka. Moja odpowiedź dotyczy w szczególności skupienia się poza umiejętnościami kodowania.
ashes999
1
@Yannbane Jeśli ludzie w to grają i myślą „tak, to kompletna gra”, nawet jeśli jest to krótka gra, to jest kompletna. Niekompletne to zwykle zepsute gry lub gry z jednym poziomem. Gdy wyślesz go przez drzwi, gotowe.
ashes999
8

Sugerowałbym syntezę dwóch poprzednich odpowiedzi. Zasadniczo zgadzam się, że niezwykle ważne jest nauczenie się, jak wpadać na pomysł i wysłać kompletną, dopracowaną grę. Internet jest zaśmiecony niepełnymi projektami, które ktoś zaczął, a potem się nudził. Umiejętność trzymania się projektu od początku do końca, którą nazywam „umiejętnością końcową”, jest rzadka i cenna, a zdobywa się ją, zmuszając się do jej przećwiczenia.

Jednak nie jesteś jeszcze na tym etapie nauki; Nie polecam robienia tego z pierwszą grą, ale raczej zrób kilka mniejszych gier do nauki przed przystąpieniem do pierwszego pełnego projektu.

(na bok: nigdy tak naprawdę nie zdawałem sobie z tego sprawy, ale teraz, gdy o tym myślę, myślę, że umiejętność wykańczania jest najważniejszą rzeczą, jaką widzę, oddzielając doświadczonych programistów od nowicjuszy)


DODATEK: Myślę, że wiele nieporozumień między odpowiedziami sprowadza się do różnych założeń dotyczących tego, gdzie jest w trakcie procesu. Na przykład, kiedy powiedział: „Skończyłem pierwszą pełną wersję mojego arkanoidalnego klonu”, co może oznaczać wiele różnych rzeczy. W moim przypadku, ponieważ wcześniej powiedział „Przeczytałem również, że powinienem przejść na całą grę (w tym menu, dźwięk, partyturę”), zakładam, że rzeczywiście zaimplementował te rzeczy i pyta, czy powinien iść dalej. w przypadku, gdybym powiedział „nie”, nazwij ten projekt zrobiony i przejdź do następnego.

Jest to jednak tylko moje założenie; tak naprawdę nie powiedział, że to zrobił , tylko to przeczytał. Jeśli tego nie zrobił, powiedziałbym, że nie ruszaj się, dopóki tego nie zrobisz.

jhocking
źródło
1
+1 Pokonaj mnie! Wygląda na to, że dopiero zaczynasz, więc ważniejsze jest, aby robić jak najwięcej rzeczy i uczyć się, uczyć się uczyć. W miarę poprawy możesz skupić się na języku polskim. W przeciwnym razie skończysz spędzać 2 lata na swojej pierwszej grze.
NoobsArePeople2
1
Nie zgadzać się. Możesz spędzić dziesięć lat na kodowaniu i nigdy nie dostarczać żadnej gry. Lub możesz wysłać prosty klon arkanoidalny w ciągu pierwszych sześciu miesięcy. Wydaje mi się, że to drugie sprawia, że ​​ogólnie jesteś silniejszym programistą, podczas gdy pierwsze pomaga umiejętności programistyczne (i nie tak bardzo - nigdy nie myślisz o narzędziach, cyklu życia itp. Po prostu o kodowaniu).
ashes999
Cóż, nie powiedziałem, że 10 lat? Pozostaje jednak pytanie, czy spędzenie jednego roku na kodowaniu szeregu ćwiczeń przed ukończeniem 6-miesięcznego pełnego projektu jest lepsze niż bezpośrednie wykonanie 6-miesięcznego pełnego projektu jako pierwszego projektu. To jest główne pytanie w moim nauczaniu; czy lepiej jest dla studentów spędzić semestr, robiąc całą masę małych projektów, czy pojedynczy duży projekt, który zajmuje całą klasę? Osobiście skłaniam się ku „wielu małym projektom dla studentów, pojedynczemu dużemu projektowi w szkole podstawowej”.
jhocking 11.09.11
Moje stanowisko jest takie, że jakkolwiek ważny jest cały projekt, aby ten projekt odniósł sukces, najpierw musisz nauczyć się podstaw wielu wcześniejszych projektów.
jhocking 11.09.11
1
Które 2 poprzednie odpowiedzi? Na chwilę obecną jest na drugim miejscu pod względem liczby głosów
ADB
5

Myślę, że masz dobry pomysł, aby przejść teraz do następnego projektu. Myślę, że to dlatego, że już nauczyłeś się od pierwszego i chcesz zastosować to, czego się nauczyłeś! Gdy spowolnisz naukę podstaw, nadejdzie czas, aby sklonować głębsze funkcje, od których możesz się uczyć.

Pamiętaj, że pracujesz nad umiejętnościami programowania, a nie projektowaniem gier, więc po zakończeniu nauki chcesz mieć możliwość zaprogramowania dowolnego projektu gry.

Patrick Hughes
źródło
3
Chociaż zgadzam się z @ ashes999 i tobą w równym stopniu, wydaje mi się, że w kontekście określonym przez OP eksperymentuje z implementacjami, ucząc się pisać różne rodzaje gier. W tym przypadku uważam, że powinien preferować przejście do następnej rzeczy.
Inżynier
W rzeczywistości zasugerował, że chce się uczyć projektowania gier, a nie tylko programowania gier. W ostatnim zdaniu powiedział „najskuteczniejszy sposób na naukę tworzenia własnych gier (nie klonowanie pomysłów)”.
jhocking
2

Dlaczego nie uczynić klonu „twoim”? Dodaj nowe ciekawe zwroty akcji, które Cię zainteresują.

Zaletą rozpoczęcia „własnego” projektu jest poczucie, że nigdy wcześniej go nie realizowano. Rzeczywistość jest taka, że ​​ktoś prawdopodobnie ma już coś podobnego. O ile nie planujesz wynaleźć nowego gatunku gier, proponuję uczynić te „klony” własnymi.

Przykład: mój kolega z college'u stworzył „klon” ponga. Zrobił to sam, dodał zupełnie nowy rodzaj rozgrywki, w którym ulepszenie pozwalało na prowadzenie słodkiego czołgu przez około 15 sekund i niszczenie jak największej liczby klocków!

Najlepszym sposobem na naukę tworzenia gier (grafika, kod, projektowanie) jest po prostu to zrobić. Na początku możesz nie robić tego dobrze, ale kluczem jest po prostu trzymać się go i pisać więcej kodu, rysować więcej animacji i projektować więcej poziomów !! Moim zdaniem nie ma znaczenia, czy „klonujesz” coś tak długo, jak długo tworzysz coś własnego, rób to, spraw, aby było ciekawe i baw się dobrze!

KRB
źródło
2

Aby odpowiedzieć na twoje pytanie, tak , dopracowanie obecnego projektu będzie lepszym doświadczeniem edukacyjnym niż rozpoczęcie nowego.

1) Musisz nabrać zwyczaju kończenia rzeczy. To samo w sobie stanowi doświadczenie edukacyjne.

2) W zadaniach, które jesteś „zbyt leniwy, by je dodać” (z powodu braku lepszego terminu) może znajdować się mnóstwo lekcji dla twórców gier, z których po prostu się pomijasz.

3) Jeśli znudzi cię Arkanoid, zawsze możesz odłożyć go na bok i na razie popracować nad czymś innym. Nie ma w tym nic złego.

1) Zbyt wiele niedokończonych rzeczy jest złe. Naprawdę nie możesz użyć niedokończonego produktu, aby skutecznie pochwalić się swoimi umiejętnościami.

Dzieje się tak, ponieważ posiadanie szeregu niedokończonych rzeczy jest jak szafa pełna śmieci. Niektóre z nich wydają się przydatne, ale w rzeczywistości wszystko jest bardzo bezużyteczne, a rzeczywistość branży gier jest taka, że ​​niewielu doceni twoje „śmieci” (niedokończone gry).

Niedokończone gry są zbyt powszechne. Ludzie je tam umieszczają i mówią: „ta gra była StreetFighter… teraz możesz poruszać się tam iz powrotem…” . Nie imponujące . Nikt nie widzi w twojej głowie, czym była gra „sapposa”. Widzą to tylko takie, jakie jest, niedokończone.

Niedokończona gra jest jak na wpół upieczona tarta. Niektórzy ludzie mogą to docenić, ale w rzeczywistości smakuje to obrzydliwie, a 20 minut dłużej w piekarniku może sprawić, że to, co już zrobiliście, jest pyszne dla wszystkich.

2) Funkcje, nad którymi unikasz pracy, mogą zawierać bardzo cenne lekcje.

Rzeczy, które przeszkadzasz w ukończeniu:

Funkcje niezaimplementowane:

  • Dopalacze przy łamaniu cegieł.
  • Złożone klocki (z więcej niż jednym „punktem życia” i niezwyciężonym).
  • Lepsza grafika (nie jestem w tym naprawdę dobra).
  • Programowanie polerowania (intensywniej wykorzystuj wzorce projektowe).

Niektóre z tych rzeczy możesz pominąć. Na przykład „Bardziej intensywnie używaj wzorców projektowych”. Refaktoryzacja tego typu jest stratą czasu dla projektu zwierzaka, aby go zastosować, wystarczy rozpocząć nowy projekt.

Niektóre z nich są łatwe. Np. Złożone cegły. Niektóre z nich to w rzeczywistości dużo pracy . Wzmocnienia nie są łatwe, wymagają użycia funkcji budowania, takich jak pistolety, pociski, wymagałyby dodania kodu skrzyżowania promieni.

Myślę, że to, co widzisz, to „montaż rusztowania na miejscu było tak łatwe ... i wyglądało na to, że prawie gotowe. Wykończenie byłoby tak dużym nakładem pracy, może równie dobrze się teraz skończyć”. Tak, wzniesienie drewnianej ramy domu jest również „łatwe” i może to być połowa pracy. Płyty gipsowo-kartonowe, elektryczność, hydraulika to „detale”. Ale nie dokończąc domu, nikt nie „kupi” tego, jak wspaniały byłby dom , gdybyś tylko go ukończył.

3) Jeśli jesteś znudzony tym, nad czym pracujesz, nie ma nic złego w rozpoczęciu czegoś innego.

Nie oznacza to śmieci, nad którymi pracujesz, ale nie ma nic złego w spędzeniu miesiąca lub dwóch na myśleniu o innych rzeczach lub rozpoczynaniu nowej gry. Możesz wrócić do Arkanoid ze świeżą perspektywą.

Również ostatni punkt. Oprócz budowania wszystkich oczekiwanych cech Arkanoid, jeszcze bardziej interesujące jest nadanie mu własnego charakteru. Zamiast zatrzymywać się na klonie, powinieneś pójść o krok dalej i wprowadzić innowacje w oryginalnej grze.

Bobobobo
źródło
1

Właściwa odpowiedź naprawdę zależy od tego, co chcesz zrobić dalej. Jeśli przejdziesz do czegoś nowego, możesz ryzykować, że będziesz musiał od nowa rozwiązać te same stare problemy i nie poszerzysz swoich umiejętności, ale możesz przejść do czegoś nowego. Jeśli będziesz kontynuować polerowanie, z krótkiej listy, którą podałeś, będziesz się uczyć przydatnych rzeczy, które zapewnią ci dobrą przyszłość, ale nadal pracujesz nad tą samą starą bazą kodu.

To, co poleciłbym, a jest to czysto osobista opinia, to przejść do czegoś nowego i zapisać na to polski. Jednocześnie spróbuj rozciągnąć się na tym czymś nowym. Więc jeśli obecnie nie korzystasz z interfejsu API 3D, naucz się go i używaj. Jeśli używasz jednego, naucz się drugiego i używaj go. Lub przejdź do bardziej zaawansowanego poziomu na tym, którego używasz. Dołącz lepszy dźwięk, fizykę lub silnik wejściowy od samego początku. Niezależnie od tego, co uważam za ważną rzecz, to trochę wyjść poza swoją obecną strefę komfortu i zdobyć więcej umiejętności i wiedzy, jednocześnie dobrze się przy tym bawiąc.

Maximus Minimus
źródło