Kod

Prawdziwe doświadczenie w tworzeniu gier: droga inżyniera nuklearnego do tworzenia gier

Prawdziwe doświadczenie w tworzeniu gier: droga inżyniera nuklearnego do tworzenia gier

Podstawy języka Python: bezpłatny kurs dla wszystkich poziomów umiejętności Zbuduj imponujące portfolio dzięki czterem wyjątkowym projektom Współpracuj z nauczycielem: możliwość zadawania pytań i uzyskiwania opinii

Dowiedz się więcej

Black Caviar Games zatrudnia programistę Unity, który wcześniej projektował bazy danych dla elektrowni jądrowej i agencji reklamowej. Biegle posługuje się językami programowania takimi jak Visual Basic, C#, C++, JavaScript i PHP. W wolnym czasie tworzy modyfikacje do gier strategicznych i pisze powieści.

Linki

Moja edukacja rozpoczęła się w Oziorsku, położonym w obwodzie czelabińskim. Ukończyłem liceum, a następnie uzyskałem dyplom z inżynierii oprogramowania w Oziorskim Instytucie Technologicznym, który jest filią Moskiewskiego Instytutu Inżynieryjno-Fizycznego (MEPhI).

W Oziorsku fabryki należące do stowarzyszenia produkcyjnego Mayak odgrywają kluczową rolę w gospodarce. Każda z tych fabryk ma swoją unikalną specjalizację, ale wszystkie są w taki czy inny sposób powiązane z przemysłem jądrowym. Jednym z takich obszarów jest kompleks obronny, który odpowiada za produkcję plutonu wykorzystywanego w broni. Ponadto istnieją przedsiębiorstwa zajmujące się przetwarzaniem tego materiału, a także te, które przygotowują go do elektrowni jądrowych. Ważną częścią działalności stowarzyszenia jest również sektor medyczny, gdzie produkowane są izotopy do procedur diagnostycznych, a także laboratoria naukowe specjalizujące się w radiochemii.

W trzecim i czwartym roku wraz z przyjacielem odbyłem staż w przedsiębiorstwie Mayak. Zostaliśmy zauważeni, a gdy przeszliśmy na piąty rok, zaproponowano nam pracę. Moja praca dyplomowa dotyczyła opracowania systemu informatycznego dla firmy.

Jak zostałem naukowcem jądrowym

Nasz dział świadczył usługi informatyczne dla wszystkich obszarów firmy Mayak. Moim zadaniem było stworzenie korporacyjnego systemu logistycznego obejmującego księgowość i przepływ materiałów, transakcje księgowe, amortyzację i inne aspekty.

Prowadziłem tę działalność, korzystając z baz danych i specjalistycznego oprogramowania Alfasystem. Z czasem awansowałem na stanowisko kierownika grupy. Musiałem podpisać umowy o zachowaniu poufności i nie miałem dostępu do wielu rodzajów informacji. Istniały oddzielne sieci i ograniczenia, a wiele zależało od „pierwszego”, tajnego wydziału.

Nie stanowiło to jednak żadnych przeszkód w pracy. Rozumiałem format, w jakim dane będą przechowywane i mogłem zorganizować ich strukturę. Pozostawało mi jednak niejasne, jakie dokładnie dane wypełnią tę strukturę.

W rzeczywistości duże firmy, zarówno prywatne, jak i publiczne, mają wiele wspólnego. Ich struktura hierarchiczna jest podobna, a zasady działania praktycznie identyczne. Na najwyższym szczeblu znajduje się kierownictwo, które z kolei prawie nie reaguje na sygnały płynące z dołu. Nie ma elastyczności, a wszystkie zmiany są inicjowane wyłącznie z góry. W przypadku Majaku wszystkie działania były podporządkowane woli państwa. Głównym celem naszej pracy nie było generowanie zysku ani świadczenie usług, jak w sektorze prywatnym; zamiast tego ściśle przestrzegaliśmy celów wyznaczonych przez państwo.

Główną zaletą była stabilność. Państwo nie może pozwolić sobie na zaprzestanie działalności przez Majak – to kwestia o strategicznym znaczeniu. Dlatego niezależnie od okoliczności możesz być pewien, że otrzymasz wynagrodzenie i będziesz mógł kontynuować pracę. Nawet w 2014 roku, kiedy pojawiły się trudności z dostawami wypalonego paliwa jądrowego, a co za tym idzie, z płatnościami za jego przerób, wypłaty wynagrodzeń były kontynuowane bez zakłóceń.

Pracowałem w Mayak do 2017 roku, ale samo posiadanie stabilnej pracy mnie nie satysfakcjonowało. Dążyłem do czegoś więcej.

Matematyczne modelowanie przejścia do nowej pracy

Na trzecim roku studiów zostałem nauczycielem w szkole informatycznej MEPhI. Moja praca polegała na nauczaniu studentów, którzy zamierzali kontynuować naukę na studiach wyższych lub po prostu interesowali się programowaniem.

Następnie zacząłem uczyć studentów studiów licencjackich. Moim zadaniem było zapoznanie ich z projektowaniem baz danych, tworzeniem logiki biznesowej i integracją z ujednoliconym systemem informatycznym firmy. Było to zasadniczo podobne do tego, z czym spotkałem się w Mayak. W firmie otrzymaliśmy ograniczony dostęp do uproszczonej wersji bazy danych i to właśnie z niej korzystaliśmy we wszystkich naszych eksperymentach.

Podczas studiów napisałem kilka prac badawczych z zakresu metafizyki. W MEPhI działa koło filozoficzne, gdzie zaprzyjaźniłem się z jego dyrektorem, co zaowocowało współpracą. Nasza współpraca zaowocowała napisaniem artykułu łączącego koncepcje filozoficzne i matematyczne.

Matematyka to potęga! Zdjęcie: dzięki uprzejmości Igora Syczenki

Istnieje sekwencja nazwana na cześć Feigenbauma, w której każdy nowy element jest obliczany na podstawie poprzedniego za pomocą funkcji elementarnej, która zapewnia minimalny wzrost na każdym etapie. Co zaskakujące, taka pozornie prosta struktura może prowadzić do bardzo nietypowych i złożonych rezultatów.

Jeśli spojrzymy na to z perspektywy życia codziennego, każde nasze działanie powoduje niewielkie zmiany w naszym losie. Jednak w pewnym momencie dzieje się coś, co wykracza poza ten model. Zjawisko to znane jest jako punkt bifurkacji. W takiej sytuacji pojawia się wybór, a dalszy rozwój może przebiegać według dwóch najbardziej prawdopodobnych scenariuszy.

W ten sposób w pewnym momencie skumulowane zmiany osiągają taki poziom, że wskaźniki ilościowe przekształcają się w jakościowe. W naszym życiu takie momenty zwrotne pojawiają się, gdy znajdujemy się na rozdrożu i ukazują nam się różne opcje na przyszłość.

W mojej pracy badawczej z zakresu metafizyki opracowałem model matematyczny, który wyjaśnia, jak radzimy sobie z kryzysami. W rezultacie matematycznie uzasadniłem, jak planuję zmienić swoją przyszłą działalność zawodową.

Motywy mojej decyzji o przejściu na przedsiębiorczość

Chociaż stabilność ma swoje zalety, zawsze pragnąłem większej swobody i możliwości rozwoju. Postanowiłem więc spróbować swoich sił w nowym kierunku. Przeprowadziłem się do Czelabińska i wraz ze wspólnikiem otworzyłem agencję reklamową. On odpowiadał za stronę biznesową, a ja skupiłem się na stronie technicznej. Początkowo chciałem zgłębiać inne obszary, ale ostatecznie wróciłem do mojej poprzedniej działalności – systemów informatycznych, z którymi pracowałem w firmie Mayak.

Opracowałem działający system informatyczny, który działał z powodzeniem aż do zamknięcia firmy. Umożliwiło to standaryzację procesów i zwiększenie ich przejrzystości. W rezultacie mogliśmy zastąpić sześciu pracowników jednym, co znacznie obniżyło koszty płac.

Ponieważ projekt opierał się na stronie internetowej, byłem również odpowiedzialny za jej utrzymanie. Nie mogę powiedzieć, że jestem wielkim fanem technologii front-endowych czy internetowych, ale musiałem zgłębić ten obszar. Moje umiejętności pozwoliły mi szybko i samodzielnie opanować niezbędne aspekty – Google bardzo mi w tym pomógł. Praca w dużej agencji rządowej i małej firmie prywatnej znacząco się różnią. W biznesie wszystko jest w ciągłym ruchu. Nie da się zaplanować działań długoterminowych. Raczej po wdrożeniu czegoś trzeba natychmiast wprowadzać korekty, ponieważ warunki rynkowe mogą się zmieniać, a zbudowana logika biznesowa okazuje się mniej skuteczna niż oczekiwano. To niekończący się cykl ulepszeń i innowacji, wymagający ciągłej optymalizacji i poszukiwania nowych rozwiązań. Z jednej strony stale się rozwijasz, nigdy nie stoisz w miejscu i ewoluujesz. Z drugiej strony prowadzi to do ciągłej presji i niestrudzonej pracy przez całą dobę. Psychologicznie sytuacja była niezwykle trudna. Pracowałem do upadłego, czasami po 14-18 godzin dziennie przez miesiące. Nie byłem pewien, czy mój wysiłek przełoży się na dobrobyt finansowy, czy też będzie to po prostu bezinteresowny akt.

Podróż pełna strat i poświęcenia dla programowania

Pandemia była ostatnim akordem tego etapu mojego życia. Miała druzgocący wpływ na branżę reklamową: kto byłby zainteresowany reklamą bez sprzedaży i klientów?

W rzeczywistości, dzięki sprawnemu działaniu naszego systemu informatycznego, udało nam się przetrwać znacznie dłużej niż zakładaliśmy, a nawet zamknąć firmę bez narastania długów. Wypełnialiśmy wszystkie nasze zobowiązania i stopniowo wypłacaliśmy pensje pracownikom, więc nikt nie został bez środków do życia.

Dla mnie wszystko skończyło się w sierpniu 2020 roku. Zostało mi tylko półtora tysiąca rubli i żadnych perspektyw na dochód. Zdałem sobie sprawę, że nie chcę już pracować w systemach informatycznych. Miałem nie więcej niż miesiąc, żeby nauczyć się czegoś nowego. Czas uciekał: musiałem zapewnić sobie jedzenie.

Ten miesiąc był trudny. Trudno mi było znaleźć jakieś zajęcie, ponieważ nie jestem przyzwyczajony do bezczynności. Jestem przekonany, że prawdziwa istota człowieka ujawnia się poprzez jego pracę: dla niego samego, dla otoczenia, dla całego społeczeństwa. Praca jest sposobem na samoekspresję.

Kiedy człowiek nie ma konkretnych zajęć, może być postrzegany jako coś bezużytecznego w społeczeństwie. Nie oznacza to, że odpoczynek jest nie do przyjęcia, ale dla mnie niezwykle ważne jest zrozumienie sensu mojego istnienia, moich działań i wkładu, jaki wnoszę w otaczające mnie życie.

Rozpoczął się proces samopoznania: co właściwie chcę robić? Istnieje dość prosta, ale skuteczna technika. Musisz sporządzić listę swoich umiejętności i zdolności, a także rzeczy, za które ludzie są skłonni ci podziękować lub zapłacić. Następnie z tej listy wybierz te umiejętności i obszary, w których chciałbyś się rozwijać. Sam sporządziłem obszerną listę swoich hobby, obejmującą nawet tak proste rzeczy, jak „Uwielbiam oglądać filmy na kanapie”. I to może być również punkt wyjścia do znalezienia nowego kierunku w życiu.

Zacząłem zwracać uwagę na obszary niezwiązane z programowaniem. Przez jakiś czas interesowałem się kreatywnością i opublikowałem nawet kilka dzieł science fiction. Jednak, aby zostać prawdziwym pisarzem, musisz pisać książki z taką samą prędkością, z jaką pieczesz świeże bułeczki – kilka stron dziennie. Próbowałem podążać za tym rytmem, ale szybko zdałem sobie sprawę, że nie da się go utrzymać przez długi czas.

Zadałem sobie pytanie: „Co mnie jeszcze fascynuje? Co skłoniło mnie do zajęcia się programowaniem?”. Za każdym razem, gdy opanowywałem nowy język programowania, tworzyłem małą grę. Ten proces nie tylko przyczyniał się do mojej nauki, ale także przynosił mi radość.

W tym momencie mnie olśniło: „Wspaniale! Co mają ze sobą wspólnego gry i literatura? Oczywiście fabuła i narracja. Może powinnam rozważyć zajęcie się projektowaniem narracji?”

W Czelabińsku działał niesamowity zespół, który organizował lunche dla twórców gier. Uczestniczyłam w jednym z takich wydarzeń, rozmawiałam z uczestnikami i zdałam sobie sprawę, że pod żadnym pozorem nie zamierzam rezygnować z programowania.

Kreatywność to zdecydowanie mój żywioł i jest mi bardzo bliska. Programowanie również można uznać za formę kreatywności. Czemu nie połączyć tych dwóch pasji? W ten sposób poznałam silnik gier Unreal, w ciągu miesiąca nauczyłam się z nim pracować i znalazłam pracę w tej dziedzinie.

Ten miesiąc szkoleń okazał się bardzo produktywny. Z każdym kolejnym krokiem coraz wyraźniej uświadamiałam sobie, że to jest dokładnie to, czego potrzebuję. I wciąż w mojej głowie pojawiało się pytanie: „Dlaczego tak długo zajęło mi, żeby wrócić do punktu wyjścia?”.

Dlaczego powrót do punktu wyjścia zajął mi dziesięć lat? W końcu to moja pasja do gier i ich tajników sprawiła, że ​​w ogóle wybrałem programowanie. Teraz jestem z powrotem na początku i koło się zamknęło.

Trudności często niosą ze sobą nowe możliwości – pozwalają mi wyciągać wnioski i wytyczać nowe ścieżki. Stres wywołał „reset” i po dziesięciu latach poszukiwań udało mi się znaleźć coś, co naprawdę lubię i podejść do tego z solidnym fundamentem doświadczenia zawodowego.

Podstawowe wskazówki dla początkujących twórców gier Unreal Game

Aby programista mógł rozpocząć karierę w branży gier, pierwszym krokiem jest wybór silnika gry. Najpopularniejszymi obecnie są Unity i Unreal Engine.

Czy konieczna jest dogłębna znajomość języków, na których zbudowany jest silnik gry? Na przykład Unreal Engine wykorzystuje C++, ale dodaje wiele własnych elementów. Do wykonywania podstawowych zadań w Unreal Engine wystarczy niegłęboka znajomość C++.

Co więcej, programowanie wizualne z wykorzystaniem Blueprint pozwala obejść się bez znajomości języków programowania, co jest całkiem przydatne w przypadku tworzenia prostych gier. Jednak jeśli chcesz osiągnąć poziom profesjonalny, znajomość języka staje się obowiązkowa. Jest to szczególnie ważne, gdy zaczynasz tworzyć własne narzędzia i dążysz do ich optymalizacji.

Unreal oferuje bogaty zestaw narzędzi stworzonych przez swoich twórców. Chociaż są one użyteczne, często są projektowane do konkretnych celów i często brakuje gotowych rozwiązań. W rezultacie użytkownicy są zmuszeni do tworzenia niestandardowych narzędzi.

Unreal opiera się na koncepcjach programowania obiektowego, co nie zawsze jest pozytywnym aspektem w przypadku projektów gier. Zwłaszcza podczas tworzenia złożonych i wielowarstwowych gier, takich jak RPG, stosowanie programowania obiektowego (OOP) może prowadzić do znacznych trudności. Z czasem podejście to traci swoją elastyczność i przestaje być skutecznym narzędziem.

W tym kontekście podejście ECS zyskuje coraz większą popularność. W piątej wersji Unreal Engine tworzone jest unikalne narzędzie do pracy z ECS o nazwie MassEntity.

Dla początkujących programistów ważne jest ogólne zrozumienie systemu. Podczas pracy z Unreal Engine konieczne jest zrozumienie jego organizacji i działania. Należy zrozumieć takie pojęcia, jak stan gry, tryb gry i sposób działania kontrolera postaci. Dodatkowo warto zgłębić aspekty sieciowe, takie jak replikacja i określenie, które obiekty w sieci mogą być replikowane, a które nie, itd.

Konieczna jest znajomość architektury Unreal Engine. Ważne jest również, aby posiadać przynajmniej podstawową wiedzę z zakresu języka C++ i zasad programowania. Najlepszym rozwiązaniem byłoby stworzenie małego projektu, aby wdrożyć zdobytą wiedzę w praktyce.

Jeśli Twoim celem jest zostanie twórcą gier, musisz zanurzyć się w badaniu silników gier, opanować architekturę ECS, zrozumieć podstawy programowania obiektowego i zrozumieć filozoficzne aspekty tworzenia. Ważne jest, aby nie bać się eksperymentować i stale ćwiczyć.

Moje doświadczenie w branży gier wideo

Po zapoznaniu się z Unrealem, zacząłem pracę w AppFox, gdzie spędziłem około roku. To był mój debiut w tworzeniu gier. Najpierw pracowaliśmy nad projektem wirtualnej rzeczywistości, a następnie przeszliśmy do tworzenia gry mobilnej z gatunku mini-strzelanek.

W kolejnym projekcie objąłem stanowisko starszego programisty, ukończyłem przygotowywanie gry do trybu wieloosobowego i zacząłem szukać nowej pracy.

Dołączyłem do Black Caviar Games, gdy rozpoczęły się prace nad mobilną grą RPG. W tamtym czasie projekt dopiero zaczynał nabierać kształtów. Rozpoczęliśmy prace nad rozwojem, korzystając z silnika Unreal Engine i aktywnie korzystaliśmy z Gameplay Ability System, który jest dość uniwersalną wtyczką podobną do ECS.

W nowym miejscu pracy. Zdjęcie: dzięki uprzejmości Igora Syczenki

Mimo to, biorąc pod uwagę, że główne umiejętności naszego zespołu koncentrowały się na Unity, ostatecznie zdecydowaliśmy się na migrację na tę platformę. W ciągu trzech tygodni opanowaliśmy podstawy nowego silnika gry i z powodzeniem dostosowaliśmy do niego naszą grę. Projekt jest obecnie rozwijany z wykorzystaniem Unity.

Moim głównym zadaniem jest tworzenie mechaniki gry. Obecnie koncentruję się na ulepszaniu sztucznej inteligencji, dostosowując ją do nowych wymagań. Istniejąca sztuczna inteligencja nas nie satysfakcjonuje, dlatego staramy się ją udoskonalić, aby projektanci gier mogli samodzielnie, niczym budując zestaw konstrukcyjny, kształtować zachowanie postaci w grze, takich jak moby i NPC-e.

Wersja alfa została już pomyślnie ukończona, a wszyscy klienci byli zadowoleni z rezultatu. Nadal pracujemy nad projektem i mamy nadzieję wkrótce opublikować wersję finalną.

Unikalne aspekty programowania gier w porównaniu z innymi branżami

Praca w branży gier radykalnie różni się od moich poprzednich doświadczeń. Ciągle odczuwam coś podobnego do tego, co czułem, przechodząc z Mayak do prowadzenia własnej firmy. Pracujesz nad czymś, a nagle projektant gier mówi: „Świetnie, to jest naprawdę skuteczne, ale dodajmy coś jeszcze” – lub nawet sugeruje zupełnie inne podejście.

Tworzenie gier to nie proste stwierdzenie: „Zrobimy to i tamto”. To ciągły proces znajdowania elementów, które zaangażują gracza i zapewnią mu pożądane doświadczenie. Nieustannie oceniasz swoje dzieła, myśląc: „To naprawdę działa, ale tutaj, niestety, nie osiąga pożądanego efektu”.

Rozważ zachowanie kamery w grze. Jak powinna ona działać w różnych sytuacjach, gdy gracz nie jest w trybie walki i po prostu eksploruje obszar? Jak reaguje, gdy postać nawiązuje dialog z NPC? I jakie są jego cechy na początku walki?

Istnieją trzy różne typy kamery, z których każdy oferuje graczowi unikalne wrażenia. Podczas ruchu postaci kluczowe jest zrozumienie kierunku jej ruchu. Podczas rozmów gracz musi widzieć, z kim wchodzi w interakcję, a także jak to wygląda z perspektywy kamery trzecioosobowej. W walce nacisk przesuwa się na zrozumienie ustawienia przeciwników, co pozwala unikać ich ataków i skutecznie zadawać własne ciosy.

Za te zadania odpowiadają projektanci gier. Z kolei moja rola jako programisty polega na zapewnieniu im narzędzi umożliwiających szczegółową i elastyczną personalizację: tworzę „logiczne bloki”, które tworzą rozgrywkę. Na przykład, w przypadku rozwoju sztucznej inteligencji, takie bloki mogą obejmować warunki (np. sprawdzanie zasięgu ataku, obecności wrogów, aktualnego stanu postaci) i akcje (takie jak poruszanie się po poziomie lub wykonywanie ataków).

Dlatego programowanie obiektowe nie zawsze jest optymalnym wyborem, ponieważ wprowadzanie w nim zmian jest często bardziej złożonym zadaniem. W strukturze ECS zazwyczaj wystarczy aktywować tylko jedną funkcję lub dokonać w niej drobnych korekt, co okazuje się w zupełności wystarczające.

W programowaniu obiektowym wszystko jest zazwyczaj ze sobą powiązane. Powiązania te są tak silne, że każda zmiana w jednej części systemu natychmiast wpływa na inne jego elementy. Prowadzi to do reakcji łańcuchowej zmian, która może trwać znacznie dłużej.

Moje postrzeganie aktywności zawodowej

Obecnie moim domem jest Czelabińsk, ale w ciągu mojego życia udało mi się odwiedzić sześć różnych miast. Częste zmiany miejsca zamieszkania nauczyły mnie szybkiej adaptacji do nowych okoliczności. Być może w jakiś sposób przyczyniło się to do rozwoju mojej elastyczności i zdolności uczenia się. A może te cechy były we mnie wrodzone.

Nie boję się radykalnych zmian. Chociaż nie mam szczególnej chęci, by cokolwiek zmieniać, jestem zawsze otwarty na nowe możliwości.

Przejście z jednej pracy do drugiej, zwłaszcza przy zmianie branży, niezmiennie wiąże się ze stresem i pewnym ryzykiem. Jednak zamiast odczuwać strach, staje się to źródłem ciekawości: co nowego pojawi się w życiu?

Już w trakcie mojej kadencji zdałem sobie sprawę, że nie aspiruję do objęcia takiego stanowiska. Nie boję się odpowiedzialności, ale o wiele większą przyjemność sprawia mi uczestnictwo w twórczym procesie kodowania i wspierania aspirujących specjalistów.

Lubię to. Każdy człowiek w życiu ma swoje własne źródła inspiracji – te momenty, które motywują go do działania i pomagają przekształcić doświadczenie w nowe sukcesy. Dla niektórych może to być awans zawodowy; dla innych może to być pogłębienie wiedzy zawodowej.

Nasz zespółZdjęcie: dzięki uprzejmości Igora Sychenko

Dla mnie rozwój kariery nie polega na przejściu ze stanowiska podrzędnego na kierownicze. Koncentruję się na poszerzaniu swojej wiedzy i umiejętności, a także na tym, co mogę wnieść do projektu. To z kolei przekłada się na poziom moich dochodów. Im więcej umiejętności posiadasz, tym lepsza i bardziej produktywna jest twoja praca.

Chociaż nie muszę podejmować kluczowych decyzji, nadal mogę na nie wpływać i służyć radą. Moja opinia jest cenna. Naprawdę wybraliśmy odpowiednie kierownictwo.

Nie jestem w stanie jednoznacznie stwierdzić, czy tracę szanse z powodu mojego podejścia do finansów. Podejrzewam, że moja pensja niewiele różni się od tej, którą mógłbym zarabiać na wyższym stanowisku – i to mi odpowiada. Dla mnie ważniejsze jest czerpanie przyjemności z pracy niż dążenie do dodatkowych 10–20% dochodu.

Przeczytaj także:

  • Zmień to w grę: sześć podstawowych zasad psychologii behawioralnej, które pomogą Ci tworzyć aplikacje.
  • Ankieta: Jak pewnie czujesz się w świecie gier wideo?
  • Tworzenie pierwszej gry w Pythonie i Pygame