Czy warto skakać przed kodem?

17

Zawsze myślałem, że planowanie jest ważne dla gry. Ale nie wiem w którym momencie. Niektórzy mówią mi, żebym kodował zamiast planować, ale wydaje mi się, że to wciąż ważne, ponieważ kiedy będziesz w kodzie, będziesz wiedział, co robić dalej. Obecnie pracuję nad grą, która będzie zawierała wiele treści, więc postanowiłem rozpocząć dokument projektowy przedstawiający te treści, a na poziomie bocznym robię weryfikację koncepcji, aby sprawdzić, czy da się to zrobić. Części każdego dowodu koncepcji mogą być później wykorzystane w prawdziwej grze.

EDYCJA: Pracuję sam nad tym projektem.

Więc moje pytanie brzmi: czy warto skakać przed kodem? Nadal jestem zainteresowany tym, co inni mogą o tym powiedzieć. Ponieważ wciąż mam trochę ludzi mówiących, że powinienem kodować zamiast myśleć ... więc jaka jest twoja opinia na ten temat?

Rushino
źródło
Pracujesz sam czy jako zespół?
nathan
6
-1 Nie wierzę, że to pytanie ma poprawną odpowiedź. To zależy od umiejętności danej osoby i projektu. Jest zbyt zlokalizowany, aby spróbować odpowiedzieć tylko dla Ciebie.
MichaelHouse
3
Wskazówka: nigdy nie planuję swoich gier przed kodowaniem. Ponadto rozpocząłem wiele projektów gier i nigdy nie ukończyłem.
lvella
1
@MarkusvonBroady Naprawdę nie mogę odpowiedzieć. To, czy „warto” coś zrobić, czy nie, zależy od osoby. Zależy to od osoby, projektu i momentu w czasie. Nie wiedziałbym, czy OP byłoby tego warte, czy nie.
MichaelHouse
3
Przepraszam, to naprawdę nie na temat. Zamiast tego spróbuj programmers.stackexchange.com .
Cyklop,

Odpowiedzi:

34

W swoim pytaniu powiedziałeś dwie mądre rzeczy:

  1. „kod zamiast myślenia” - cała filozofia to opisuje: http://gettingreal.37signals.com/toc.php
  2. „dowody koncepcji, aby sprawdzić, czy da się to zrobić” - widziałem i miałem wiele pomysłów, które okazały się niemożliwe lub niezwykle trudne do zrealizowania, gdy były już prawie gotowe. Czasami po prostu nie możesz tego przewidzieć, ponieważ ogranicza Cię twoje środowisko programistyczne (język, biblioteki, wydajność sprzętu).

Dlatego mówię:

  • projektuj, ale nie rób wielkiego projektu-dokumentu, jeśli nie szukasz współpracowników lub inwestorów, chyba że jest to dla ciebie fajne i traktujesz to jako przerwę od programowania;
  • zawsze miej na uwadze to, co chcesz osiągnąć; każdy moduł powinien mieć zaprojektowane wejście i wyjście; w ten sposób możesz łatwo przetestować moduł i nie mieć poczucia wędrówki we mgle;
  • pamiętaj, że i tak projektujesz większość czasu, ponieważ pisanie kodu zajmuje tylko około 5% twojego czasu (przynajmniej wpisywanie końcowego kodu);
  • programowanie nie jest nauką teoretyczną, zamiast sprawdzać, czy coś zadziała na kartce papieru, możesz po prostu to zakodować i spróbować; w produkcie końcowym chodzi przede wszystkim o to, by wkład użytkownika był niezawodny, GUI wyglądał ładnie i zajmował się specjalnymi przypadkami - od razu można wykonać brudny test pomysłu;
  • utwórz listę rzeczy do zrobienia, jeśli boisz się zapomnieć o swoich pomysłach
  • rozmawiaj z przyjaciółmi o swoich pomysłach, ponieważ będą mniej entuzjastyczni i mogą mieć więcej doświadczenia w danej dziedzinie; Kiedyś wpadłem na pomysł, aby zachować parametry jednostki (w grze strategicznej) w tajemnicy, ale mój przyjaciel powiedział mi, że to zły pomysł, ponieważ grał w taką grę i była to straszna frajda dla użytkownika.
Markus von Broady
źródło
Ciekawe punkty
Rushino
To naprawdę dobrze przemyślana odpowiedź. +1
wolfdawn
1
+1. Szczególnie podoba mi się twoja opinia na temat brudnego testu, który można od razu wyjaśnić. Prototypy są bardzo tanie w porównaniu z projektem, który po prostu nie działa.
Earlz
+1 za listę rzeczy do zrobienia , a jako wskazówkę używam GraphViz, aby moje listy rzeczy do zrobienia były wizualne, ponieważ zwykle mam pomysły, które można zrealizować dopiero po skończeniu innych pomysłów. Pomaga mi skoncentrować się na tym, co muszę najpierw zrobić, aby się nie pomylić.
Izkata
5

Tak, ale tylko trochę .

Do programowania gier, szczególnie programowania gier, ważne jest, aby mieć dobry przypadek użycia przed napisaniem jakiegokolwiek kodu. Np. Co powinien zrobić gracz, dokąd ma iść i jak, jak wchodzi w interakcje ze światem itp. Może to być scenariusz naszkicowany na papierze lub wynik dyskusji z rówieśnikiem ... jest częścią projektowania gry i głupotą byłoby zacząć kodować, nawet nie mając pojęcia o tym, jak powinna być rozgrywana.

Ale gry muszą być tworzone iteracyjnie . Nie możesz stworzyć ogromnej specyfikacji dla swojej gry i mam nadzieję, że będzie fajnie się w nią grało. Potrzebujesz regularnego testowania, aby dowiedzieć się, co działa, a co nie, i powtarzać. Najszybsze uruchamianie działa, najszybszy projekt gry można przetestować, najlepiej gra na końcu. Dlatego zawsze lepiej jest zacząć kodować jak najszybciej, od bardzo nieformalnego projektu gry, zobaczyć, co się wydarza i kontynuować.

Jedno jest pewne, ponieważ kodujesz sam, nie potrzebujesz żadnego wymyślnego dokumentu projektowego ani metodologii, kod źródłowy to projekt.

Laurent Couvidou
źródło
^ Co powinno być oznaczone jako poprawna odpowiedź. "Tak, trochę." Dokładnie.
Inżynier
3

Niektórzy twierdzą, że powinieneś kodować zamiast myśleć? Cóż, aby zakodować, musisz wiedzieć, co chcesz stworzyć, aby wiedzieć, co chcesz stworzyć, najpierw musisz pomyśleć, co chcesz mieć, to znaczy, musisz pomyśleć, zanim zaczniesz kodować;).

I na poważnie, prawdopodobnie nie potrzebujesz szczegółowego planu na samym początku, ale posiadanie konspektu i / lub kamieni milowych jest zawsze korzystne - również dla twojej postawy, gdy przekreślasz rzeczy jako zrobione, będziesz bardziej zachęcany do robienia więcej praca.

Kamil
źródło
3

Potrzebne jest zarówno kodowanie, jak i planowanie. Najpierw plan, potem kod, ale nie planuj wszystkiego naraz. Zaplanuj rdzeń, zakoduj go, w razie potrzeby zaktualizuj swój plan, a następnie zaplanuj funkcje, które składają się na grywalność, grafikę, dźwięki, duszki itp., Dzięki temu tworzona gra będzie wyglądać lepiej i ogólnie lepiej. Oczywiście możesz uruchomić taki cykl więcej niż jeden raz i radzę podejmować decyzje, które będą wspierały skalowanie w razie potrzeby.

Vesper
źródło
2

Musisz wiedzieć, dokąd zmierzasz, zanim napiszesz kod, a pisanie / rysowanie może być dobrym sposobem na zmaterializowanie tego, co chcesz osiągnąć. Mówię rysowanie, ponieważ rysowanie diagramów, szkiców itp. Również może ci bardzo pomóc. Nie musisz tworzyć wspaniałego dokumentu wykonanego za pomocą Worda lub czegokolwiek, po prostu weź ołówek i kawałek papieru (dużo kawałków papieru?) I narysuj, napisz wszystko, o czym możesz pomyśleć.

Dla mnie dobrą praktyką jest używanie ołówka i papieru, pomaga w urzeczywistnianiu pomysłów, a także pozwala ustalić, gdzie chcesz się udać, aby gdziekolwiek się nie udać, ustalić swój cel. Działa na wszystko, co wymaga refleksji. I w wielu domenach oczywiste jest zapisanie rzeczy przed wykonaniem rzeczywistej pracy.

Natan
źródło
1

Rób wszystko, co dla ciebie działa. Osobiście planuję rzeczy w niewielkim stopniu, ale nie mam dokumentów projektowych, które są bardzo szczegółowymi planami, zanim zacznę coś kodować. Rób wszystko, co jest dla ciebie najbardziej wydajne, zwłaszcza, że ​​pracujesz sam.

tesselode
źródło
1

(Zakładam, że pytanie jest postawione z punktu widzenia projektowania kodu / architektury, a nie projektowania gier, chociaż odpowiedź przynajmniej w pewnym stopniu dotyczy obu).

Jak już powiedziano, potrzebujesz obu i musisz to zrównoważyć. Zarówno przeprojektowanie, jak i za mało zaprojektowanie przepływu / struktury kodu może powodować problemy. Trudno powiedzieć, jaka jest właściwa równowaga, ale ogólnie uważam, że muszę mieć co najmniej niejasne pojęcie, jak reszta kodu połączy się z tym, co programuję w tej chwili, i zastanowić się nad możliwymi problemami, w przeciwnym razie mam tendencję do „zakodowania się w ślepy zaułek” - dostaję się do sytuacji, w której zdaję sobie sprawę „dobrze, teraz dzięki temu, jak rozwiązałem ten problem, stworzyłem nowy problem, który sprawił, że całe moje poprzednie rozwiązanie (lub nawet więcej, w najgorszych przypadkach ) daremny ”.

Generalnie, moim zdaniem, możesz z grubsza ocenić, czy masz właściwą równowagę, myśląc o scenariuszach „co jeśli” jak w „co jeśli później (kiedy wszystko zostanie w pełni zaimplementowane w podobnym paradygmacie, którego używam teraz) dowiesz się ta część A musi działać nieco inaczej, co oznacza, że ​​muszę całkowicie przerobić część B, która się z nią łączy, aby uwzględnić zmiany? ”. Jeśli zmiana architektoniczna w jednej części nie wymaga zmiany więcej niż jednej lub dwóch innych części, a zmiany nie następują kaskadowo (co oznacza, że ​​z kolei trzeba zmienić również kolejne części łączące się z częścią B, a następnie części łączące się z im itp.), kod jest podzielony na przedziały w stosunkowo dobry sposób.

Ale tak naprawdę jest to coś, co można poczuć po zdobyciu doświadczenia. To po części dlatego wszyscy doradzają początkującym graczom, aby najpierw napisali kod czegoś znanego i łatwego (Breakout / Tetris / Snake) i zrobili to całkowicie, ze wszystkimi menu, dźwiękami, efektami, wszystkim, aby gra była w pełni skończona - lepiej zepsuć mniejszy projekt, a zrobienie go (w dobry lub zły sposób) dokładnie pomoże ci zrozumieć, jak daleko sięgają skutki różnych decyzji architektonicznych.

kod sh
źródło
Do wglądu w przyszłości: anegdotyczne dowody są odrzucone na stronach SE. Samo ponowne sformułowanie odpowiedzi (unikanie słów i zwrotów takich jak „znajduję” i „moja opinia jest taka”) lepiej posłuży do uzyskiwania pozytywnych opinii i unikania negatywnych opinii. To nie jest refleksja na temat tego, jak ważne może być twoje doświadczenie, tylko obiektywność jest tutaj kluczowa.
Inżynier
Dziękuję, ale sądzę, że zgodziłbyś się ze mną, gdybym powiedział, że są pytania, na które nie ma obiektywnej odpowiedzi, a wszystkie z nich będą w mniejszym lub większym stopniu oparte na opinii lub doświadczeniu (niezależnie od tego, czy jest to sprawa osobista, czy też inna ), i to jest jeden z nich. Byłem świadomy tej sugestii / reguły i jestem i będę starał się ją stosować, gdy tylko będzie to możliwe. Ale i tak dziękuję za przypomnienie.
kod sh