Seattle Game Dev JS: spojrzenie wstecz i krok naprzód.
W styczniu nasza grupa HTML5 Game Dev Group skończyła rok. (Tak szybko rosną!) Mając na uwadze ten kamień milowy, chcielibyśmy serdecznie podziękować wszystkim naszym członkom, sponsorom i każdemu, kto pomógł sprawić, że nasze spotkania stały się takimi niesamowitymi, wypełnionymi wiedzą perełkami!
Ten rok zapowiada się jeszcze lepiej niż poprzedni. Zaczęliśmy od przerwy w dostawie prądu, po której nastąpił niesamowity powrót do formy i prezentacja (mimo braku zasilania!) na temat optymalizacji HTML5, przeprowadzona przez mobilny zespół Double Down. Nigdy nie ma nudy!
W ubiegłym roku nasza grupa wzrosła z 0 do 380 członków, co jest ogromnym osiągnięciem! Ekipa Game Dev JS to zróżnicowana społeczność pełna programistów, artystów, graczy, program managerów, administratorów sieci i entuzjastów JS wszelkiego rodzaju. Nasz najmłodszy członek-deweloper ma zaledwie 13 lat! Dzięki ciągłemu dbaniu o świeżość treści, energicznym prelegentom i zaangażowaniu członków, udało nam się zbudować solidną społeczność – nie moglibyśmy tego zrobić bez Was!
Jeśli interesuje Cię JS, meetup to świetna okazja, aby dobrze się bawić, nauczyć się czegoś nowego, podzielić się swoją wiedzą i poznać bardzo interesujących ludzi.
Kluczowe wnioski
- Seattle Game Dev JS wzrosło z zera do 380 członków w pierwszym roku, opierając się na mieszance wykładów, błyskawicznych prezentacji (lightning demos) i happy hours.
- Program grupy na 2012 rok obejmował pełny stos HTML5: renderowanie, triki z canvas, audio, natywne wrappery, Windows 8 oraz architekturę serwera node.js.
- Taka społeczność działa, ponieważ pozostaje celowo interdyscyplinarna — programiści, artyści, PM-owie i administratorzy sieci w jednym pomieszczeniu.
- Najlepszym sposobem na wyciągnięcie wartości z meetupu jest pojawienie się na nim, zadawanie pytań, a z czasem samodzielne zaprezentowanie czegoś.
- Planowanie na rok 2013 jest otwarte: czekamy na Wasze pomysły na tematy, sugestie dotyczące miejsc i propozycje prelegentów.
Dlaczego grupa JavaScript Game Dev jest ważna
Kiedy zakładaliśmy tę grupę, „tworzenie gier w HTML5” było wciąż frazą, która sprawiała, że wiele osób mrużyło oczy z niedowierzaniem. Element <canvas> był nowy, wydajność przeglądarek była niespójna, a pomysł, że można wydać prawdziwą grę — a nie demo techniczne — w JavaScript, traktowano jako ciekawostkę, a nie pełnoprawną platformę.
Rok później ta dyskusja całkowicie się zmieniła. Powodem, dla którego lokalny meetup ma znaczenie w takiej dziedzinie, jest fakt, że dokumentacja nie nadąża za rzeczywistością.
Powiązane: — Gotowe grafiki, narzędzia i szablony, które można wrzucić bezpośrednio do projektu Unity.
Wpisy na blogach opisują to, co działało sześć miesięcy temu. Prezentacje konferencyjne są dopracowane do stopnia, w którym stają się abstrakcyjne. To, co faktycznie pcha dewelopera do przodu, to siedzenie obok kogoś, kto rozwiązał dokładnie ten sam problem w zeszłym tygodniu — canvas, który klatkuje na konkretnym urządzeniu, element audio, który nie chce się odblokować na urządzeniu mobilnym, czy pipeline budowania, który dławi się przy dużym pakiecie zasobów.
To właśnie tę lukę wypełnia Game Dev JS. To nie jest cykl wykładów. To pokój pełen ludzi, którzy są w trakcie walki z problemami i wymieniają się doświadczeniami.
Co omówiliśmy w 2012 roku
Oto niektóre z tematów, które poruszyliśmy w ciągu roku:
Jeśli robisz zakupy: — Oparty na przeglądarce, niewymagający kodu silnik HTML5, który eksportuje do Internetu, urządzeń mobilnych i komputerów stacjonarnych.
- Javascript Game Development: an Overview – Grant Goodale, Massively Fun
- Retained Mode Graphics Libraries – Kevin Moore, Pixel Lab
- Stupid Canvas Tricks – Dean Hudson, Massively Fun
- HTML5 port of Zepto Labs’ Cut the Rope – Joel Fillmore, Pixel Lab
- Challenges of building a native UIWebView application around an HTML5 webapp – Jeff Close, Adam Hardtke, Sean Stringer, and Nate Vaughn, DDI
- Native wrapper technology: CocoonJS – Iker Jamardo, Ludei
- HTML5 game development for Windows 8 – Giorgio Sardo, Microsoft
- Game engine design around node.js and express.js – Dean Hudson and Mason Browne, Massively Fun
- Co+Pilot: a tool built using Javascript and a JQuery like syntax to allow users to make native apps – Myron Millin and David Whitlark
- Effective HTML5 Game Audio – Chris Khoo, Wappworks Studios
Wszystkie te tematy oraz liczne błyskawiczne prezentacje i dema członków grupy zostały przedstawione w ciągu roku. I oczywiście spotykamy się również od czasu do czasu na happy hour!
Bardzo specjalne podziękowania dla Double Down Interactive, Big Fish Games, GameHouse i The Makers Space za ugościnie nas!
Tematy przewodnie prezentacji
Patrząc wstecz na tę listę, można dostrzec kilka wyraźnych wątków — warto je nazwać, ponieważ niemal dokładnie odpowiadają one decyzjom, przed którymi staje każdy deweloper HTML5.
Renderowanie i kwestia trybu zachowanego (retained-mode). Wykład Kevina Moore’a o bibliotekach graficznych w trybie zachowanym i „Stupid Canvas Tricks” Deana Hudsona znajdują się po przeciwnych stronach prawdziwego rozwidlenia architektonicznego. Rysowanie na canvas w trybie natychmiastowym (immediate-mode) daje całkowitą kontrolę i minimalny narzut, ale trzeba samodzielnie zarządzać każdym przerysowaniem. Biblioteki w trybie zachowanym (linia rozwojowa frameworków takich jak CreateJS, PixiJS, a później Phaser) oferują graf sceny (scene graph), testowanie kolizji (hit testing) i tweening prosto z pudełka — kosztem warstwy abstrakcji między programistą a GPU. Żadne z tych rozwiązań nie jest „jedynym słusznym”. Właściwa odpowiedź zależy od tego, czy Twoja gra składa się z kilku sprite’ów, czy jest złożonym światem z wieloma stanami.
Problem wrappera. Trzy oddzielne prezentacje — sesja DDI UIWebView, wystąpienie Ikera Jamardo o CocoonJS oraz Co+Pilot — krążyły wokół tego samego pytania: jak wprowadzić aplikację webową do sklepu z aplikacjami? W 2012 roku opcje wyglądały mniej więcej tak:
| Podejście | Co z tego masz | Kompromis |
|---|---|---|
| Zwykła aplikacja webowa | Zero tarcia, natychmiastowe aktualizacje | Brak obecności w sklepie, ograniczone API urządzeń |
| Natywny wrapper WebView | Dystrybucja przez sklep, niektóre natywne hooki | Pułap wydajności, niedopasowanie UI do natywnego chrome |
| Przyspieszony wrapper (np. CocoonJS) | Canvas akcelerowany przez GPU, prędkość zbliżona do natywnej | Uzależnienie od dostawcy (vendor lock-in), dziwactwa specyficzne dla platformy |
Ta tabela jest nadal przydatnym sposobem myślenia o tej decyzji, mimo że konkretne narzędzia ewoluowały.
Audio. Prelekcja Chrisa Khoo na temat efektywnego dźwięku w grach HTML5 była i pozostaje jednym z najbardziej niedocenianych tematów w tej dziedzinie. Audio to element, w którym gry webowe psują się najczęściej: polityki autoodtwarzania, różnice w obsłudze kodeków i opóźnienie między gestem użytkownika a faktycznym uruchomieniem dźwięku. Jeśli budujesz dziś grę, zarezerwuj realny czas na audio — to nie jest problem typu „wrzuć plik i gotowe”.
JavaScript po stronie serwera. Prelekcja Deana Hudsona i Masona Browne’a na temat projektowania silnika gier w oparciu o node.js i express.js była wczesnym sygnałem, że serwer i klient mogą współdzielić jeden język. Ma to większe znaczenie, niż się wydaje: wspólny kod do walidacji stanu gry, wspólne formaty danych i jeden model mentalny dla całego stosu technologicznego.
Jak najlepiej wykorzystać meetup
Jeśli jesteś nowy w tego rodzaju grupie — lub do tej pory tylko obserwowałeś z boku i jeszcze się nie ujawniłeś — oto praktyczne rady, które dalibyśmy każdemu.
- Przyjdź z jednym konkretnym problemem. „Moja gra jest powolna” zapewni ci współczucie. „Mój canvas gubi klatki, gdy rysuję więcej niż kilkaset sprite’ów” zapewni ci odpowiedź.
- Rozmawiaj z osobą obok ciebie, a nie tylko z prelegentem. Prelekcja jest tylko pretekstem; prawdziwa wartość tkwi w rozmowach na korytarzu.
- Wygłoś lightning talk. Pięć minut o czymś, czego się nauczyłeś, to najszybszy sposób, aby stać się rozpoznawalnym w grupie. Nie musisz być ekspertem — musisz po prostu rozwiązać jeden konkretny problem.
- Daj znać po spotkaniu. Wymień się danymi kontaktowymi i faktycznie wyślij obiecany link lub fragment kodu.
- Przynieś perspektywę osoby niebędącej programistą. Nasi artyści, PM-owie i administratorzy sieci zadają pytania, o których programiści zapominają, a te pytania są często najbardziej przydatne dla wszystkich obecnych.
Budowanie trwałej społeczności
pigmented Wzrost z zera do 380 członków w ciągu roku brzmi jak próżna metryka, ale liczbą, która naprawdę ma znaczenie, jest retencja — czyli to, ile z tych osób wróciło. Oto kilka rzeczy, których nauczyliśmy się o utrzymywaniu technicznej społeczności przy życiu:
- Rotuj treści. Jeśli każde spotkanie to samouczek canvas dla początkujących, doświadczeni członkowie przestaną przychodzić. Jeśli każde spotkanie to głęboka optymalizacja GPU, stracisz nowicjuszy. Mieszaj przeglądy, techniczne analizy (deep dives) i dema.
- Obniż barierę wejścia dla mówców. Lightning talki i dema członków zmniejszają stres i pozwalają odkryć osoby, które nigdy nie zgłosiłyby się na pełny slot czasowy.
- Karm ludzi, dosłownie. Happy hours i wspólne posiłki robią dla spójności społeczności więcej niż jakiekolwiek planowanie agendy.
- Podziękuj publicznie gospodarzom. Double Down Interactive, Big Fish Games, GameHouse i The Makers Space udostępniły nam sale, a sale są mało efektownym, ale niezbędnym warunkiem wszystkiego innego.
- Spraw, by grupa była otwarta dla każdego wieku i pochodzenia. Nasz najmłodszy członek ma 13 lat. To nie jest ciekawostka — to przypomnienie, że ta dziedzina ma niezwykle niską barierę wejścia i grupa powinna to odzwierciedlać.
Patrząc w stronę 2013 roku
Brzmi świetnie, prawda? O czym chcielibyście, abyśmy porozmawiali w 2013 roku? Gdzie chcecie się spotykać?
Oto kilka kierunków, które nas ciekawią i o których chcielibyśmy poznać waszą opinię:
- Wydajność i profilowanie urządzeń mobilnych — jak faktycznie mierzyć, gdzie uciekają klatki, korzystając z narzędzi deweloperskich przeglądarki i testów na urządzeniach.
- Multiplayer i networking — WebSockets, kompensacja opóźnień i uciążliwa rzeczywistość synchronizacji w czasie rzeczywistym.
- Narzędzia i workflow — systemy budowania, potoki zasobów (asset pipelines) i to, jak małe zespoły wydają gry bez dedykowanego inżyniera od narzędzi.
- Fizyka i kolizje — kiedy użyć biblioteki, a kiedy napisać własne rozwiązanie.
- Dostępność i input — platformy klawiaturowe, dotykowe i sterowanie ruchem oraz sposób obsługi więcej niż jednej z nich bez podwajania pracy.
Odpowiedz poniżej ze swoimi pomysłami lub tweetuj do @massivelyfun, używając hashtaga #GameDevJS. Do zobaczenia wkrótce!
Często zadawane pytania
Czym jest Seattle Game Dev JS?
To grupa meetupowa z obszaru Seattle dla osób zainteresowanych tworzeniem gier w JavaScript i HTML5. Gromadzi programistów, artystów, projektantów, program managerów, administratorów sieci i ogólnych entuzjastów JS na prelekcje, błyskawiczne dema i wydarzenia towarzyskie.
Czy muszę być doświadczonym programistą, aby wziąć udział?
Nie. Grupa celowo miesza prelekcje wprowadzające z głębokimi analizami technicznymi, a członkowie to osoby od 13-letnich hobbystów po profesjonalnych inżynierów z uznanych studiów. Jeśli interesuje cię tworzenie gier w JS, twoje miejsce jest z nami.
Jak mogę zaproponować prelekcję lub zasugerować temat?
Odpowiedz w komentarzach do tego posta lub tweetuj do @massivelyfun, używając hashtaga #GameDevJS. Aktywnie szukamy pomysłów na tematy, sugestii dotyczących miejsc spotkań i propozycji prelegentów na 2013 rok.
Jakie tematy obejmuje grupa?
Historycznie: techniki renderowania i canvas, biblioteki graficzne, natywne wrappery i dystrybucja w sklepach z aplikacjami, audio HTML5, rozwój pod Windows 8 oraz architektura serwerów node.js/express.js. Chcemy rozszerzyć zakres o profilowanie mobilne, networking multiplayer, narzędzia, fizykę i dostępność.
Kto organizuje spotkania?
Gospodarzami naszych spotkań byli Double Down Interactive, Big Fish Games, GameHouse oraz The Makers Space i jesteśmy im wszystkim wdzięczni. Jeśli Twoja firma dysponuje przestrzenią i chce wspierać lokalną społeczność twórców gier, chętnie z Tobą porozmawiamy.
Czy ta grupa dotyczy tylko gier?
Koncentrujemy się na grach, ale umiejętności w dużym stopniu pokrywają się z ogólnym tworzeniem stron internetowych i aplikacji — renderowanie canvas, obsługa dźwięku, natywne wrappery i architektura node.js znajdują zastosowanie daleko poza grami. Wielu naszych członków pracuje nad projektami niezwiązanymi z grami.
Udostępnij to: Twitter Facebook Google Pinterest Reddit
Dalsza lektura
- HTML5 — Wikipedia
- Canvas element — Wikipedia
- Node.js — Wikipedia
- Meetup (service) — Wikipedia
Frequently asked questions
What is Seattle Game Dev JS?
It's a Seattle-area meetup group for people interested in JavaScript and HTML5 game development. It brings together developers, artists, designers, program managers, network admins, and general JS enthusiasts for talks, lightning demos, and social events.
Do I need to be an experienced developer to attend?
No. The group deliberately mixes overview talks with deep technical dives, and members range from a 13-year-old hobbyist to professional engineers at established studios. If you're curious about JS game development, you belong in the room.
How can I propose a talk or suggest a topic?
Reply in the comments on this post, or tweet @massivelyfun using the GameDevJS hashtag. We're actively looking for topic ideas, venue suggestions, and speaker pitches for 2013.
What kinds of topics does the group cover?
Historically: rendering and canvas techniques, graphics libraries, native wrappers and app-store distribution, HTML5 audio, Windows 8 development, and node.js/express.js server architecture. We're interested in expanding into mobile profiling, multiplayer networking, tooling, physics, and accessibility.
Who hosts the meetings?
We've been hosted by Double Down Interactive, Big Fish Games, GameHouse, and The Makers Space, and we're grateful to all of them. If your company has space and wants to support the local dev community, we'd love to hear from you.
Is this group only about games?
The focus is games, but the skills overlap heavily with general web and app development — canvas rendering, audio handling, native wrappers, and node.js architecture all apply well beyond games. Plenty of our members work on non-game projects. Share this: Twitter Facebook Google Pinterest Reddit <!-- citations:start --> Further reading - [HTML5](https://en.wikipedia.org/wiki/HTML5) — Wikipedia - [Canvas element](https://en.wikipedia.org/wiki/Canvas_element) — Wikipedia - [Node.js](https://en.wikipedia.org/wiki/Node.js) — Wikipedia - [Meetup (service)](https://en.wikipedia.org/wiki/Meetup_(serv
Zaopatrz swoje biurko deweloperskie
Książki o programowaniu gier, klawiatury mechaniczne, monitory i sprzęt komputerowy dla programistów