Zaczynając od zera - czy to błąd, jeśli ponownie wymyślę koło?

31

Zwykle za każdym razem, gdy chcę rozpocząć grę, pomyślę o dobrej podstawowej architekturze do renderowania i lepszej pętli gry od zera. Zwykle nie chcę używać istniejących silników. Powodem tego jest to, że chcę go wdrożyć samodzielnie, aby się czegoś nauczyć.

Ale wiele blogów i deweloperów twierdzi, że nie jest to dobra opcja, aby ponownie wynaleźć koło.

Czy coś brakuje?

Ayyappa
źródło
Jak często faktycznie „zaczynasz grę”? Jeśli szybko iterujesz pomysły, rób wszystko, co działa. Jeśli robisz film magnum, w którym błąd jest kosztowny lub czas jest ograniczony, po co marnować czas na wynalezienie koła? Jeśli chcesz dowiedzieć się, jak to działa, dlaczego nie napisać własnej technologii? Jakie są twoje cele tutaj?
ChrisE

Odpowiedzi:

16

Nie, to wcale nie jest takie złe. Uczenie się i umiejętność uczenia się są absolutnie fundamentalne dla bycia dobrym programistą.

ALE
Ważną rzeczą przy budowaniu czegoś od zera jest ukończenie go do końca. Nie ma znaczenia, jak hackerski i niezoptymalizowany jest, jeśli go ukończysz, poczujesz satysfakcję jak nikt inny. Wszystko to zapewni Ci cenne doświadczenie i zawsze możesz uczynić kod bardziej eleganckim lub działać lepiej później, gdy masz coś funkcjonalnego. Ostatecznie jedynymi rzeczami, które oddzielają wspaniałych programistów od miernych, są doświadczenie i praktyka.

Oczywiście, gdy masz już coś do zrobienia i chcesz stworzyć kolejne gry, nie ma powodu, aby ponownie używać starej bazy kodu.

Jeśli chcesz rozpocząć karierę w tworzeniu gier lub naprawdę w jakikolwiek sposób, doświadczenie zabierze Cię bardzo, bardzo daleko. Ale jeśli chcesz szybko i łatwo rezygnować z gier (stosunkowo łatwo, w porównaniu do pisania własnych rzeczy), użyj istniejącego silnika.

Szczerze mówiąc, połączenie doświadczenia w korzystaniu z własnego kodu ORAZ korzystania z różnych bibliotek i silników sprawi, że będziesz znacznie lepszym programistą.

Ray Dey
źródło
Dzięki Ray, to jest pomocne! ale czy możesz też wymienić mechanikę gry ...
Ayyappa
Nie ma problemu. Nie jestem do końca pewien, co masz na myśli w kontekście twojego pierwotnego pytania. Czego w szczególności szukasz?
Ray Dey,
Mogę zrobić z tego osobne pytanie. Inne pytanie w tym poście zostało usunięte (zredagowane), ponieważ nie ma związku z kontekstem.
Ayyappa,
+1 za linię mety - ukończenie projektu to dobre doświadczenie.
Cyklop
36
i want to implement it on my own to learn stuff.

To chyba najważniejsza rzecz. Jeśli Twoim celem jest nauka, pisanie od podstaw własnych silników renderowania i pętli do gier jest w porządku i zapewnia doskonałą naukę. Jeśli Twoim celem jest szybkie i łatwe ukończenie gry, użyj istniejącej struktury.

Tesserex
źródło
3
+1. To, że interfejs API lub biblioteka innej firmy może wyodrębnić wszystkie szczegóły implementacji, nie oznacza, że ​​nie musisz ich znać. Korzystanie z „gotowych kół” pomoże szybciej napisać gotowy kod; ale zrobienie własnego koła pomoże ci określić, które z nich są najlepsze, a co najważniejsze, jak je zoptymalizować i debugować, gdy
pojawią
4
+1 Nie wymyślaj koła ponownie, chyba że uczysz się robić koła.
zzzzBov
4
pamiętaj, że poprawi to Twoje umiejętności w zakresie projektowania silnika gry , ale nie w zakresie projektowania gier.
Dave O.
To także godna odpowiedź ... dzięki ... ale szkoda, że ​​nie mogę zaznaczyć dwóch odpowiedzi :(
Ayyappa
10

Nowe odkrywanie koła uczy, jak działają koła.

chaos
źródło
5

Zależy od tego, czego szukasz. Jeśli chcesz się uczyć, wymyśl na nowo tyle kół, ile chcesz. Znam ludzi, którzy napisali własne JVM lub programy ładujące PNG.

Większość blogów prawdopodobnie udziela porad na temat tego, jak szybko dostać pieniądze, ale nie wiem, czy to dobra strategia długoterminowa. Jeśli nie wiesz, z czym się bawisz, skąd wiesz, czy to dobry wybór? Co zrobisz, gdy napotkasz problemy, zaczniesz narzekać na forach lub sam to wymyślisz?

Jari Komppa
źródło
4

Jest dużo zniechęcenia tym zwrotem w ogólnej społeczności programistów, ale myślę, że wszyscy wiemy, że wielu z nas nie lubi niczego więcej niż odkrywanie koła i znalezienie sposobu, aby obrócić go trochę lepiej, szybciej i chłodniej.

Cały czas pojawiają się nowe technologie, które wymagają od ludzi wynalezienia nowego koła. Dobrym przykładem są OpenCL i inne języki obliczeniowe GPU.

Możesz skorzystać z frameworka, który obejmował tegoroczne nowe możliwości, ale robiąc to sam, jeśli naprawdę przeprowadzisz badania i wprowadzisz ulepszenia w tym, co już istnieje, .. możesz naprawdę wypróbować nowy grunt pod względem wydajności i użyteczności.

Kiedy już wymyśliłeś kilka kół, abyś mógł się toczyć, znasz swoje rzeczy całkiem dobrze, a to duży bonus!

A do tego cholernie dobra zabawa.

Garet Claborn
źródło
1

Są też tacy, którzy twierdzą, że są bardziej produktywni właśnie dlatego, że ponownie wynaleźli koło.

Przykład: Eskil Steenberg, twórca World of Love (doskonałe wideo, w którym opowiada o swojej grze, silniku i niesamowitych narzędziach oraz swojej filozofii: http://vimeo.com/18423305 )

Wola
źródło
1

Jeśli jest to twój pierwszy raz, nawet dla nauki, lepiej jest użyć jakiegoś silnika, ponieważ dowiesz się, co silnik może ci zapewnić.

„Koło” użyte w metaforze jest koncepcją, a nie implementacją. Nawet jeśli nie wymyślisz koła na nowo, nadal musisz wybrać, czy je kupisz, czy zrobisz samodzielnie. Dlatego też stworzenie własnego silnika nawet nie wymyśla na nowo koła, po prostu chcesz stworzyć własne koło do jakiegoś celu, na przykład do nauki, taniego, małego rozmiaru lub do konkretnego zastosowania lub wymagań.

tia
źródło
0

Chodzi o to, że dużo czasu zajmuje gra, tworzenie i testowanie zawartości, zasobów, a nie pisanie kodu. Prawdopodobnie dlatego łatwo jest pominąć tę część i użyć istniejącego silnika, aby móc poświęcić więcej czasu na zawartość, projektowanie gry i błędy na wyższym poziomie.

Myślę, że robienie rzeczy od zera, aby się uczyć, zapewni dobre wyczucie pracy za istniejącymi silnikami i poprawi możliwość późniejszego wyboru w razie potrzeby.

Dla zabawy i nauki rób wszystko, co chcesz. Gdybym musiał pisać klasy potoków treści od zera, zajmując się wszystkimi irytującymi szczegółami i przypadkami brzegowymi systemu plików i programów ładujących zasoby, oszalałbym - tak długo, jak nauczyłem się wystarczająco, aby naprawdę dobrze zrozumieć, jak to zrobić, Staram się unikać robienia tego, jeśli ktoś już to zrobił dobrze (choć to prawda, wiele frameworków i silników nie pasuje do mojego własnego pomysłu „dobrego”, co mogłoby spowodować przepisanie czegoś). Jeśli nie wiem, jak to zrobić, naprawdę lubię to robić co najmniej raz, tylko po to, aby uchwycić najdrobniejsze szczegóły tego, co to jest - jak już powiedział Ray Dey.

Oskar Duveborn
źródło
0

To tylko błąd, jeśli nie masz czasu na naukę. Jeśli masz czas, idź. Jeśli nie, to nie rób tego.

Tim Holt
źródło