Читать книгу Programowanie gier - Robert Nystrom - Страница 23

Osiąganie równowagi

Оглавление

W naszym polu oddziałuje kilka sił:

 Chcemy mieć porządną architekturę tak, aby kod był łatwiejszy do zrozumienia w trakcie życia projektu.

 Chcemy dobrej wydajności i krótkiego czasu wykonania.

 Chcemy szybko uporać się z przewidzianymi na dziś funkcjonalnościami.

Myślę, że to ciekawe, że wszystkie one w jakiś sposób dotyczą szybkości: tempa, w jakim programujemy w długiej perspektywie czasu, szybkości, z jaką wykonuje się gra i naszego tempa programowania w krótkiej perspektywie czasu.

Cele te przynajmniej do pewnego stopnia są sobie przeciwstawne. Dobra architektura zwiększa produktywność w długim okresie, ale jej utrzymanie znaczy, że każda zmiana wymaga dodatkowej odrobiny wysiłku, aby utrzymać porządek.

Implementacja, która jest najszybsza do napisania, rzadko jest tą, która działa najszybciej. Z kolei optymalizacja wymaga poświęcenia dużej ilości czasu na prace inżynieryjne. Gdy już dobiegnie końca, sprawia zazwyczaj, że baza kodu tężeje: dobrze zoptymalizowany kod jest nieelastyczny i bardzo trudny do zmiany.

Zawsze istnieje presja, aby skończyć to, co trzeba skończyć dzisiaj, a o całą resztę pomartwić się jutro. Jednak jeśli będziemy dorzucać funkcjonalności tak szybko, jak jesteśmy w stanie, w naszej bazie kodu zacznie panować bałagan i pojawi się mnóstwo hacków, błędów oraz niespójności, które osłabią naszą produktywność w przyszłości.

Nie ma tu prostej odpowiedzi – tylko „coś za coś”. Z e-maili, które do mnie docierają, wnoszę, że wiele osób to zniechęca. W szczególności nowicjusze, którzy po prostu chcą zrobić jakąś grę, mogą być nieco przestraszni, gdy usłyszą, iż „nie ma dobrej odpowiedzi, tylko różne odcienie złych”.

Dla mnie jest to jednak ekscytujące! Spójrz na dowolną dziedzinę, w której ludzie doskonalą się przez całą swoją karierę, a w jej centrum zawsze znajdziemy jakiś zbiór powiązanych ze sobą ograniczeń. Przecież jeśli istniałoby jakieś proste rozwiązanie, wszyscy po prostu by z niego skorzystali. Dziedzina, którą możemy opanować w tydzień w ostateczności jest nudna. Nie słyszy się o ludziach, którzy zrobiliby nieprzeciętne kariery na kopaniu rowów.

Może inni tak zrobili, ale ja nie zgłębiałem tej analogii. Z tego, co wiem, mogą istnieć gorliwi hobbyści zajmujący się kopaniem rowów, konwencje dotyczące kopania rowów i cała otaczająca je subkultura. Kimże jestem, aby to oceniać?

Jak dla mnie, ma to wiele wspólnego z samymi grami. Gry takiej jak szachy nie da się opanować w doskonały sposób, ponieważ wszystkie figury są ze sobą tak idealnie zrównoważone. Znaczy to, że możemy spędzić życie, zgłębiając rozległe przestrzenie możliwych strategii. Źle zaprojektowana gra wali się za sprawą jednej zwycięskiej taktyki, którą możemy stosować raz za razem, aż nam się to znudzi i damy sobie spokój.

Programowanie gier

Подняться наверх