Jakie są niebezpieczeństwa związane z samouczącymi się grami? [Zamknięte]

58

Zaraz wyruszam w podróż do tworzenia gier. Po odpowiedziach na moje ostatnie pytanie będę używać C # i XNA.

Jednak nie znam osobiście innych twórców gier i nie pracuję w branży, więc jako taka będzie samoukiem. Wyjątkiem jest oczywiście zadawanie pytań i czytanie informacji online / drukowanych, ale nadal uważałbym to za samouka.

W związku z tym chcę być przygotowany na problemy, które mogę napotkać, ponieważ nie mam kogoś, kto „trzymałby mnie pod swoim skrzydłem”.

Analogicznie, samoucząc się gry na gitarze, grałem akord A-dur w taki sposób, że utrudniałem przejście do akordu, którego nauczyłem się później.

Byłbym wdzięczny za podzielenie się wyciągniętymi doświadczeniami i poradami na temat tego, co może pójść nie tak podczas uczenia się tworzenia gier.

Zdaję sobie sprawę, że popełnianie błędów jest największą częścią uczenia się, ale jeśli wystąpią błędy, mogę się na nie przygotować, wtedy byłbym z tego zadowolony.

Ste
źródło
Spójrz, lekcje udostępniania mogą zmienić pytanie na nieskończone i unieważnić je, więc może zostać zamknięte.
Gustavo Maciel
Trafne spostrzeżenie. Wszystkim odwiedzającym planuję zaakceptować wyczerpującą odpowiedź.
Ste
Ste, pamiętaj, że możesz przesunąć znacznik wyboru na inną odpowiedź, jeśli uważasz, że nowa jest lepsza. Przepraszam Gustavo, nie próbując go kosztować :) Ale celem tych stron, głosowania i zaznaczania jest podkreślenie najlepszej odpowiedzi na pytanie. Ponadto, mimo że to wspaniałe, że nie akceptuje odpowiedź, to nie jest konieczne, aby przyjąć taki, który szybko - godzinę po zaksięgowane pytanie jest nieco wkrótce. Zwykle czekam co najmniej dzień, a może dłużej, zanim przyjmę odpowiedź. Zobacz, co się pojawi.
Cyklop
@Cyclops - tak, nie spodziewałem się, że pytanie okaże się tak popularne. Dokonam przeglądu w przyszłym tygodniu. Dziękujemy wszystkim za wspaniałe odpowiedzi do tej pory.
Ste
Dziękuję za wszystkie świetne odpowiedzi. Przeniosłem zaakceptowaną odpowiedź na tę, która ma najwięcej pozytywnych opinii. Zrobiłem to, aby odzwierciedlić opinię społeczności. Mam nadzieję, że rozumiesz @Gustavo
Ste

Odpowiedzi:

54

Tworzenie gier przypomina inżynierię strukturalną

Istnieją minimalne wymagania dotyczące funkcjonalności. Minimalne wymagania nie są wyjątkowo trudne i wiele osób może nauczyć się je spełniać. To część funkcji . To mała część. W tym momencie podejmowane są decyzje dotyczące tego, jakiego języka użyć, platformy do opracowania lub jakich bibliotek użyć.

Następna część to duża część. Część formularza . Forma naprawdę odróżnia dobre gry od wspaniałych. To jest część sztuki tworzenia gier. Nie mówię tylko o zasobach sensorycznych (grafika, dźwięk itp.). Mówię o tworzeniu doświadczenia. To jest najtrudniejsza część.

Część funkcji pochodzi z samouczków, bibliotek i trochę czasu. Każdy może to zrobić.

Część formularza pochodzi od ciebie. To pasja sprawiła, że ​​przede wszystkim chcesz tworzyć gry. To tak, jakby opowiadać historię, wymyśloną historię (lub prawdziwą historię, którą upiększasz, dużo). Im więcej opowiadasz historii, tym lepiej. W rozwoju oprogramowania nazywamy to iteracją. Twoja historia to Twój kod. Za pierwszym razem, gdy to powiesz, nie będzie to zbyt dobre. Wszystko będzie nie na miejscu, zdasz sobie sprawę, że ten kawałek powinien tam pójść, a ten tutaj. Przekonasz się, że rzeczy prawdopodobnie będą przebiegać lepiej, jeśli ułożysz je w ten sposób lub rozwiniesz na tym bicie. Tak jak dobra historia, opowiesz ją, ocenisz, jak jest dobra, a następnie zmodyfikujesz. To wymaga poświęcenia, a to wymaga czasu. Nie martw się, jeśli pierwszą rzeczą, którą produkujesz, nie jest złoto. Ja pracowałem długo i ciężko na wielu częściach mojej grze tylko zgrać je później, bo myślał o wielelepszy sposób na zrobienie tego. Nie martw się tym, to część procesu uczenia się. Zawsze uczysz się na własnych błędach i często popełnianie tych błędów prowadzi cię do lepszego sposobu robienia rzeczy.

Więc powinieneś zabrać to:

  • Graj często w test.
  • Nie daj się teraz złapać na tej funkcji. Nie przejmuj się zbytnio optymalizacją lub biblioteką, która będzie najlepsza na dłuższą metę. Po prostu uzyskaj minimalną funkcjonalność, a następnie iteruj.
  • Gdy funkcja zostanie wykonana, pogratuluj sobie, jesteś mały ułamek drogi.
  • Noś osłonę przeciwsłoneczną
  • Jest to umiejętność, która wymaga czasu, aby ją rozwinąć, wiesz, że od nauki gry na instrumencie muzycznym nie będzie inaczej, będzie lepiej.
  • Pamiętaj, po co tu jesteś, radość tworzenia! Jeśli coś się nudzi, przełącz się na coś innego (wypróbuj kilka zacięć w grze, aby skrócić czas programowania). Ale nie poddawaj się tylko dlatego, że jest to trudne.
  • Społeczność twórców gier na SE jest świetna. Znajdziesz tutaj wszystko, czego potrzebujesz. Możesz opublikować pytanie lub wskoczyć na czat i przedyskutować swoje pomysły.

Internet jest pełen informacji w postach na blogach, samouczkach i podobnych społecznościach. Podsumowując, powiedziałbym, że to całkiem niezłe skrzydło. Zasadniczo zagrożenia nie są poważne. Przez pewien czas możesz robić rzeczy w „zły” lub trudny sposób, ale w końcu się nauczysz. Wygląda na to, że masz duże doświadczenie w programowaniu, więc myślę, że szybko zauważysz część funkcji. Błędy popełniane przy tworzeniu gier i „regularnym” rozwoju często się pokrywają. Twoje doświadczenie pomoże ci uniknąć wielu typowych problemów, jakie napotykają nowi twórcy gier. Myślę, że poradzisz sobie dobrze. Powodzenia.

MichaelHouse
źródło
6
+1 za niesamowitość, wszystko czego brakuje w moim poście znajduje się tutaj: D
Gustavo Maciel
1
„Noś osłonę przeciwsłoneczną” Co przez to rozumiesz? idiom „Nosić krem ​​przeciwsłoneczny”?
Łukasz Madon
4
To żart na podstawie artykułu „Nosić krem ​​przeciwsłoneczny” autorstwa Mary Schmich . Zasadniczo: „Długoterminowe korzyści ochrony przeciwsłonecznej zostały udowodnione przez naukowców, podczas gdy reszta moich rad nie ma podstaw bardziej wiarygodnych niż moje własne meandrujące doświadczenie”. Być może bardziej znany w formie tej piosenki .
MichaelHouse
4
Cóż, filtr przeciwsłoneczny wcale nie jest tak dobry 2 . Po prostu zostań w domu i kontynuuj programowanie.
bobobobo
28

Tak, nie mieć nikogo, kto byłby tam wcześniej i powiedziałby ci, co robić, jak to naprawić, itp. Itp. Może być najgorszą rzeczą, jaką zdasz. Ale bez obaw! Nadal możesz czytać DUŻO blogów ludzi, którzy tam byli, dzielą się swoimi doświadczeniami w branży, jak odnieśli sukces, jak zawiodła poprzednia gra i dlaczego, itp.

Dobrymi przykładami są:

I wiele więcej!

Moje ostatnie powiedzenia to: nie bój się. Ja też jestem samoukiem, od 4 lat zapoznałem się z twórcami gier, pojawiło się wiele barier, ale nic, czego nie można rozwiązać w Google i czytaniu niektórych tekstów. Powodzenia w podróży :)

Gustavo Maciel
źródło
3
Aby dodać do tego, nawet profesjonaliści często mają ten problem. Tak długo, jak możesz się uczyć, a Google, możesz dowiedzieć się prawie wszystkiego.
ashes999
Dziwne, że łączysz 2Dboy. O ile mi wiadomo, zrobili niewiele rzeczy, ale porty World of Goo na wszystkich platformach, które istniały przez ostatnie kilka lat. Minęło dużo czasu, odkąd przeczytałem tam coś związanego z grą.
TravisG
@TravisG Proces releasegry nie jest jednak związany tylko z jej rozwojem. W każdym razie to dobra lektura. Linki zamieściłem bardziej jako odniesienie, aby nie śledzić bloga. Jeśli wrócisz do archiwum, istnieje kilka przykładów prototypów i wszystko, co pomogło im w świecie goo i innych „mniej małych” prototypów: D
Gustavo Maciel
18

To podejście. To podejście „nie dotykaj go, dopóki nie będziesz wiedział, jak to zrobić idealnie”. To naprawdę cię powstrzyma.

Widzisz to podejście wśród początkujących programistów wszelkiego rodzaju - nie tylko gier. Strony internetowe również. Hej, strona internetowa to baza danych z interfejsem HTML z jakimś javascript. Poznajesz technologie w dowolny sposób, tworzysz swoją pierwszą witrynę. To nie będzie fantastyczne, ale po zrobieniu rzeczy w sposób nieoptymalny nie jest wielką cholerną sprawą !! Jeśli zrobisz to „daleko” za pierwszym razem, zawsze możesz to zrobić lepiej za drugim razem. Chodzi mi o to, że nie ma niebezpieczeństwa. Może z wyjątkiem tej postawy. Takie podejście powstrzymuje cię przed zrobieniem czegokolwiek, ponieważ zawsze będziesz bał się zadania i powiesz „Jeszcze nie wiem, jak to zrobić”.

Postawa, że ​​istnieje „właściwy sposób” na robienie rzeczy. Nie ma Rzeczy są dokładnie takie, jakie się wydają. Musisz umieścić piksele na ekranie i wydawać dźwięki, gdy coś się wydarzy.

Bobobobo
źródło
3
Tak prawdziwe. To wciąż bardzo mnie powstrzymuje. Chociaż w jakiś sposób się nie zgadzam, pod względem jest więcej „właściwych sposobów” i dużo więcej „złych sposobów”, ale perfekcjonizm i paraliż analizy są z pewnością problemem. Świetna odpowiedź!
Petr Abdulin
6

W zależności od tego, czy chcesz później uczynić to swoim zawodem (zakładam, że myślisz o tym, a to nie jest tylko hobby), oto, co uważam za niezwykle skuteczne:

  1. Zacznij od małego

To zostało powiedziane wcześniej, ale powiem to jeszcze raz - zacznij od małych kawałków, zapoznaj się z silnikiem, strukturą, narzędziem lub programem. Po opanowaniu podstaw -> powiększ się.

  1. Naucz się WSZYSTKO

To może wydawać się nieco ekstremalne, ale mam na myśli, aby dowiedzieć się jak najwięcej o KAŻDYM aspekcie rozwoju gry - bez względu na to, czy jesteś programistą, artystą czy projektantem. Znajomość rurociągu jest kluczem do budowania rzeczy w najbardziej efektywny sposób. Jeśli wdrażasz broń -> zaprojektuj ją, wymyśl, modeluj, implementuj, koduj! Oczywiście nie musisz być artystą koncepcyjnym, projektantem i kujonem Pipeline - ale powinieneś znać wszystkie narzędzia tego procesu i rozumieć każdy etap tworzenia. Sprawdź także strony z grami, aby uzyskać informacje o nowościach i aktualizacjach w branży - gamasutra.com, kotaku itp. Zawierają świetne artykuły na temat biznesu i techniki. Nie ograniczaj się tylko do jednej dziedziny rozwoju - chłonąć CAŁĄ wiedzę, którą możesz zdobyć :)

  1. Często zawodzą, mocno zawodzą.

Będziesz ssał to, co robisz. Na początku. Zawsze tak jest (wierz mi, wiem.: D), ale będzie tylko lepiej, jeśli będziesz kontynuować i NIGDY nie przestaniesz szukać sposobów na ulepszenie swojej pracy. Internet jest doskonałym źródłem samouczków, referencji i pomocy. Nigdy nie utkniesz naprawdę, więc skorzystaj z najbardziej szalonych pomysłów, ponieść porażkę, uczyć się na błędach i stać się gorszym z tym procesem.

  1. Rozmawiać z ludźmi!

Podczas gdy internet jest doskonałym źródłem, uzyskanie bezpośredniej informacji zwrotnej jest czymś, z czym musisz poradzić sobie ALOT w pracy. Dlatego ważne jest również podnoszenie umiejętności miękkich. Jeśli nie masz jeszcze mentora lub generalnie nie znasz zbyt wielu osób pracujących w branży, powinieneś rozejrzeć się po okolicy w poszukiwaniu niezależnych spotkań, iść na konwencje i sprawdzić inne wydarzenia, w których możesz zacząć budować osobista sieć wiedzy i kontaktów. Pomaga także budować coś z innymi ludźmi - samouk jest świetny, ale tworzenie gier jest grą zespołową, więc sprawdź fora poświęcone projektowi hobbystycznemu - na przykład Epickie Forum dla projektów UDK, forów Unity lub nawet forów CryEngine -wszystkie trzy z tych silników są szeroko rozpowszechnione, jest tam mnóstwo utalentowanych ludzi pracujących nad pobocznymi projektami i „

Myślę, że to prawie cała rada, jaką mogę udzielić. Mam nadzieję, że to ci pomogło :)

Nils Diefenbach
źródło
Wszystkie twoje punkty są tak ważne, że są na pierwszym miejscu na tej liście! :)
bobobobo,
3

W ogóle nie mam doświadczenia w C # i XNA, ale myślę, że nie popełni mnie to w poniższym stwierdzeniu:

Nauka programowania bez nauczyciela jest całkowicie w porządku. Jeśli kod działa *, tak naprawdę nie ma znaczenia, w jaki sposób został zakodowany. Cóż, tak samo jest w przypadku programowania zespołowego, ale wtedy nie będziesz już sam kodować, prawda? Może także sprawić, że Twój kod będzie mniej czytelny w przyszłości, utrudniając korzystanie ze starych komponentów lub debugowanie nowych błędów, ale na dłuższą metę wszystkie Twoje błędy będą twoimi mocnymi stronami. Najtrudniejszą rzeczą w nauce projektowania OOP i MVC jest zrozumienie, dlaczego powinienem robić to „w ten sposób”. Jeśli masz już doświadczenie w tworzeniu złych programów, poznasz zalety wzorców i wykorzystasz je na swoją korzyść. Jeśli zawsze tworzysz dobre programy, kierując się wzorami, których ktoś cię nauczył, będziesz nadal robić dobre (w sensie poprawnego kodu) programy, ale zamiast korzystać z wzorców będziesz przez nich ograniczony, ponieważ nie zrozumiesz ich wystarczająco, aby wprowadzić przydatne modyfikacje. Ostatecznie najważniejsze jest, aby ćwiczyć, a nie jak, więc w obu przypadkach prędzej czy później otrzymasz dość podobne doświadczenie.

* jedno jest jednak ważne! W przypadku bezpieczeństwa naprawdę powinieneś zapytać kogoś doświadczonego, czy Twój kod jest dobrze wykonany, ponieważ dziury w zabezpieczeniach nie wyskakują ostrzeżenia o błędach.

Markus von Broady
źródło
3

Jakoś to świetne pytanie! :-)

Niedawno rozpocząłem swoją działalność gamedev i będzie to drugi raz, więc mogę podzielić się swoimi przemyśleniami. Masz rację, że dobrze jest mieć mentora. Tym mentorem będzie internet. Im więcej informacji jest udostępnianych w Internecie, tym łatwiej będzie ci się uczyć. Właśnie dlatego XNA / C # jest doskonałym wyborem na początek. Jest wielu amatorskich i profesjonalnych niezależnych graczy, którzy dzielą się artykułami oraz w Internecie. Inne rzeczy do wspomnienia:

  1. Idź open source! Codeplex, GitHub, Google.Code, Bitbucket. Jest tam wiele cennych rzeczy.
  2. Idź do społeczności! Jesteś tutaj i to dobrze. Ale jest też duża społeczność Microsoft XNA z kilkoma oficjalnymi sprawami . Projekt kodowy jest również dobrym zasobem (jednak aktywność gamedev jest tam raczej niska).
  3. Prawdopodobnie będziesz musiał dużo czytać / oglądać . Już wspomniano wcześniej. Rozwój gry to nie tylko kodowanie. Ważny jest także projekt gry. Entuzjazm jest ważny.
  4. Jak zwykle nie próbuj gryźć od razu, pisanie własnej kopii tetris lub breakout jest naprawdę dobrym pomysłem.
  5. Na początku może to być trudne, tworzenie gier jest nie tylko trudne, ale również bardzo różni się od powiedzmy aplikacji „korporacyjnych”. Istnieje wiele nowych aspektów, wykresów, dźwięku itp. Im więcej jedziesz, tym łatwiej jest (jak zwykle).
  6. Pisać bloga. Wyraź swój proces tworzenia (w tym procesie znajdziesz odpowiedzi na własne pytania), przechowuj linki z komentarzami do cennych artykułów.
  7. Nie myśl, że Twój kod jest najgorszą rzeczą, jaką kiedykolwiek widziałeś. Kod gry jest trudniejszy do kontrolowania, zawsze jest trochę bardziej brudny niż jego ładny kod „korporacyjny”. Ale zapewniam cię, że widziałem kilka okropnych kreacji (pod względem jakości kodu źródłowego i organizacji gier), które były udanymi niezależnymi grami. Więc nie bądź dla siebie surowy, szczególnie. na początku.
Petr Abdulin
źródło
1

Dotyczy to każdej dyscypliny związanej z branżą kreatywną:

Największym niebezpieczeństwem jest próba zbudowania czegoś „zbyt dużego” lub „epickiego” z bramy.

Na przykład, jeśli zaczynasz od tworzenia muzyki, nie zaczynasz od stworzenia 50-godzinnej 2-godzinnej symfonii.

W projektowaniu poziomów objawia się to próbą stworzenia „największej mapy w historii” lub wykorzystaniem systemu gry do zbudowania największej, najbardziej złożonej rzeczy, którą może obsłużyć silnik gry. W programowaniu może to popaść w „samodzielne stworzenie całej gry”, zaczynając od zerowego kodu źródłowego. Naprawdę potrzebujesz dużego doświadczenia i dyscypliny, aby zacząć od źródła zerowego, a nawet wtedy jest to niezwykle trudne, a podejmowanie decyzji projektowych nad wszystkim jest trudne przez cały czas, gdy opracowujesz projekt wszystkiego. Nawet uproszczona gra wymaga obecnie dość dużej ilości programowania w nowoczesnym systemie operacyjnym i języku. Również jeśli zaczniesz od kogoś innego, możesz dowiedzieć się, co działa, a co nie działa tak dobrze, więc praca z tak dużą liczbą silników, jak to możliwe, jest również ogromnym plusem.

Na początek polecam coś w rodzaju następujących planów:

  • Projekt poziomu: zbuduj mały pokój, zbuduj połowę budynku, zbuduj pełny budynek itp
  • Sztuka: stwórz czapkę do TF2 lub coś podobnego, albo zamień teksturę dla Skyrim lub innego zadania rozmiaru ugryzienia, aby rozpocząć, zanim zaczniesz tworzyć siatki szkieletowe lub przekształcać i zastanawiać się, jak dobrze animować lub malować je w szczotkowaniu.
  • Programowanie: weź istniejący modyfikowalny lub otwarty silnik gry i zmodyfikuj jego część (np. Broń), a następnie stwórz nową broń. Jeśli nie podoba ci się kod rozgrywki, możesz zacząć hakować silnik graficzny.

Najlepiej jest wziąć istniejący gotowy silnik (albo modyfikowalny, albo inny open source) i zacząć hakować go, i zrobić to kilka razy na kilku różnych silnikach, aż znajdziesz taki, który ci się spodoba.

Strefa
źródło