20 Wrzesień 2018

CodeSkill, czyli zwiększ swój skill w programowaniu!

programowanie spotkania

Autor: Speeder

CodeSkill, czyli zwiększ swój skill w programowaniu!

To niesamowite, że tuż za rogiem (Gdańsk) odbywają się tak rewelacyjne spotkania jak CodeSkill. Wczoraj odbyło się już 15. spotkanie, a organizatorzy starają się, aby odbywały się one regularnie – co miesiąc (z przerwami na wakacje/święta).

CodeSkill to warsztaty dla programistów, z 1 komputerem – prowadzącego. Żeby rozruszać szare komórki uczestników najpierw zawsze odbywa się prelekcja. Prelekcję może wygłosić każdy chętny, tym razem był to Paweł Szutkowski.

VR w grach

Czego się dowiedzieliśmy, czym zajmuje się Paweł? Paweł wraz z firmą Ignibit tworzy gry i aplikacje VR. Ich najnowszą produkcją jest Zero Killed – sieciowa gra VR.
Prelegent przedstawił pokrótce technologię VR oraz opisał zasady działania najpopularniejszego sprzętu (Oculus, HTC Vive, Playstation VR). Oculus mimo, że jest bardzo popularny to został oparty na najprostszej technologii (mamy rozstawione kamerki z filtrami IR, które zbierają dane z kasku), natomiast HTC Vive działa odwrotnie – rozstawiamy latarnie, które dają światło, a sam hełm zbiera i analizuje informacje (jest to bardziej niezawodne rozwiązanie).
Mogliśmy się również dowiedzieć z jakimi problemami zmagają się osoby tworzące pod VR (przezroczystości, generowanie niezależnych obrazów na lewe i prawe oko).
Dodatkowym problemem w tym wypadku był fakt, że Zero Killed jest grą nie tylko VR, ale również sieciową. Wszelkie informacje o położeniu gracza i jego akcjach trzeba natychmiast przesyłać do innych uczestników rozgrywki.

Paweł przedstawił nie tylko informacje o VR, ale również przedstawił pobieżnie architekturę sieciową w grach. Ignibit wybrało ostatecznie rozwiązanie client-server z jednym komputerem gracza jako serwer. Równocześnie nadając priorytety wszystkim innym graczom podłączającym się do rozgrywki. Dzięki takiemu podejściu mimo problemów sieciowych pierwszego gracza, czy jego wykluczenia z gry sama gra może trwać nadal – rolę serwera przejmuje kolejny gracz z listy.
Jest to o wiele prostsze rozwiązanie i często stosowane zamiast bezpośredniego tworzenia architektury peer-to-peer, szczególnie przy grach FPS, gdzie ważna jest szybkość rozgrywki (w tym odświeżanie ekranu).
Sam ruch sieciowy generowany przez taką grę jest minimalny, średnia dla najpopularniejszych tytułów jest w granicach 70-200 kbps. Natomiast duża jest ilość generowanych pakietów, stąd rozwiązanie z jednym centralnym komputerem w roli serwera rozgrywki.

Livecoding

Livecoding – druga część, jak zwykle prowadzona przez Andrzeja. Jeden, dwa tygodnie przed spotkaniem rozsyłane są tzw. zadania domowe dla uczestników. Na wczorajsze spotkanie (#15) były do rozwiązania/implementacji dwa zadania, język wykonania dowolny:

  • zlicz ilość wejść na domenę mając logi (parser logów serwera webowego)
  • jedziesz autem z punktu A do Z, po drodze masz wiele stancji benzynowych (napisz funkcję zwracającą minimalną liczbę wymaganych tankowań)

Interesujące w tych spotkaniach jest to, że spora część osób jest pierwszy raz, duża część uczestników nie jest związana zawodowo z IT. Są to osoby, które chcą zobaczyć kawałek świata programowania, albo są po prostu programistami-amatorami, którym tworzenie kodu sprawia frajdę.

I frajda jest tutaj chyba słowem-kluczem. Mimo, że aktywny jest tylko jeden komputer, Andrzej prowadzi interakcję ze wszystkimi uczestnikami. Co chwila pytając się o warunek w funkcji, poprawność wyrażenia regularnego, czy jakie są założenia zadania. Za każdym razem prowadzący uwrażliwia uczestników, że programista nie powinien zakładać i myśleć za Klienta. A jeśli już to robi, to założenia powinny być spisane i załączone do dokumentacji.

Naszym zdaniem każdy programista, bez znaczenia na doświadczenie, powinien regularnie uczestniczyć w takich spotkaniach jak CodeSkill, które ćwiczą naszą głowę, a nie palce. Kolejne spotkanie już 17 października!

W celu poprawy jakości naszych usług używamy ciasteczek.

Możesz je zablokować poprzez zmianę ustawień przeglądarki.