BLOGCZEJNalpha

System kontroli wersji GIT [omówienie ogólne] - Tworzenie gier

Tworzenie gier to fajne zajęcie (taaa, jasne), ale nie wszystkie projekty tworzy się w pojedynkę. Jeśli jest jeden programista to tam "pół biedy", jeśli ich jest paru to muszą się jakoś zsynchronizować - i temu po części służy system kontroli wersji.

https://cdn.pixabay.com/photo/2012/02/29/12/26/space-19070_960_720.jpg

Programy (i gry) tworzy się w sposób "klockowy". Ogólnie zaczyna się od pustego programu, później dokłada powoli zmienne, funkcje - każdą taką operację można przyrównać do budowania zamku z klocków. Klocek po klocku aż powstanie gotowy projekt.

Git umożliwia analizowanie różnic między dwoma kawałkami kodu (lokalnie stworzonej na komputerze i globalnie zapisanej na serwerze) i wysłanie takich różnic na główny serwer (jako klocek). Potem inni użytkownicy mogą przeczytać co w danym commit (czyli klocku) się znajduje i zaadaptować do siebie. Jeśli tacy użytkownicy zrobią własny kod to mogą go wrzucić a my ostatecznie możemy go zaakceptować do swojego projektu.

To jakie opcje ma taki system?

Forkowanie

https://cdn.pixabay.com/photo/2018/03/04/21/41/directory-3199323_960_720.jpg

W projektach Open Source (głównie) się to stosuje. Jest to w zasadzie rozdzielenie się kodu (od pewnego momentu) na dwa niezależne. Powiedzmy, że nie podoba nam się wizja projektu tworzonego przez autora - możemy wziąć projekt i od pewnego momentu tworzyć go na własną rękę.

Przykładem niech będzie SteemNova i silnik 2Moons. SteemNova powstała by oczywiście zachęcić ludzi do wspólnych interakcji ze sobą, ale po części musiała mieć inne funkcje, których oryginalny silnik nie ma - np. autoryzacja SteemConnect. Dzięki SteemConnect człowiek może się zarejestrować (i logować) swoim kontem Steem co jest zbędne w oryginalnym silniku. I tak projekt rozdzielił się na dwie wersje. Oczywiście nowe projekty mogą współpracować ze sobą tak jak jest w SN i 2Moons.

"Cofanie się w czasie"

https://cdn.pixabay.com/photo/2017/07/17/23/51/wormhole-2514312_960_720.jpg

Aktualizujemy program i zauważamy błąd - o nie! Oczywiście możemy zgłosić to producentowi, ale wiedząc której wersji używaliśmy i która ma błąd możemy ograniczyć zasięg poszukiwań, gdyż wiadomo które linijki zostały dodane, usunięte lub zmienione. Puff, znaleźliśmy błąd.

"Własne forki"

https://cdn.pixabay.com/photo/2016/11/19/14/00/code-1839406_960_720.jpg

Programy do kontroli wersji mogą tworzyć tzw. "Branches". Powiedzmy, że musimy coś zrobić na nowo - albo przepisać większość kodu, albo dodać funkcjonalność nową (dużą). Modyfikacja głównej linii nie zawsze ma sens. Wtedy można zostawić kod jak jest i zająć się specjalną odnogą programu, która jak będzie skończona - zostanie dodana do głównej funkcjonalności.

Kopia zapasowa

https://cdn.pixabay.com/photo/2015/09/09/17/55/usb-932180_960_720.jpg

Kopię na serwerze można traktować jako kopię zapasową projektu. Przecież nie oszukujmy się - komputery się psują, a taka kopia zapasowa jest bardzo łatwa w stosowaniu, gdyż nie musimy się zastanawiać czy ta wersja na dysku jest aktualna bardzo czy nie. Możemy to sprawdzić po kolei.

Na zakończenie

Różnego rodzaju systemy kontroli wersji są bardzo ważnym i użytecznym oprogramowaniem - W przypadku amatorskiego tworzenia gier nie są może one niezbędne, ale raz wrzucony kod źródłowy może być np. dodany na Utopian.io i może zarobić troszkę pieniędzy (co prawda są z tym olbrzymie problemy, bo zamiast organizację wspierającą programistów idą w stronę urzędu z 12 prac Asteriksa, ale jednak).

Czyli rzecz być może warta zobaczenia ;)

W następnej części spróbujemy w sposób praktyczny pokazać podstawowe rzeczy związane z Git i Github (wymagany w Utopianie - interfejs i serwer dla projektów).

KOMENTARZE

  • imamulkhan

    wonderful pl-gamedev post..
    i appreciate your blog...
    thanks for sharing this every post..

  • kappucino

    Fajny artykuł! Git to naprawdę wporzo narzędzie nawet jak robi się samemu :D Wszystko integruje się w całość, kopia zapasowa, poszczególne zmiany, lista "todo". Pamiętam stare czasy jak nie znałem tego systemu i używałem z kumplem dropboxa. Kod aplikacji był we wspólnym folderze na dropboxie i w sumie dawało to radę xD

  • tipu

    <center><p><strong>Hi @fervi! You have received 0.21 SBD @tipU upvotehttps://i.imgur.com/JFq6JWX.png! from @strefanetu !</strong></p><p><a href="https://steemit.com/steemit/@tipu/upvotes-with-2-5-x-profit-tipu-upvote-service-guide" rel="noopener">@tipU! upvotes with 2.1 x profit</a> and pays <a href="https://steemit.com/steemit/@tipu/just-a-reminder-tipu-pays-out-100-to-steem-power-delegators-0-fees" rel="noopener">100% profit + 50% curation rewards to investors :)</a></p><hr>https://i.imgur.com/zYE5tYm.gif<br></center>