Seattle Game Dev JS: מבט לאחור וצעד קדימה.
בינואר האחרון, קבוצת מפתחי המשחקים ב-HTML5 שלנו חגגה שנה. (הם גדלים כל כך מהר!) וברוח אבן דרך זו, נרצה לומר תודה מכל הלב לכל החברים שלנו, לספונסרים ולכל מי שעזר להפוך את המפגשים שלנו ל’נאגטס’ של ידע מדהים כפי שהם!
השנה הזו נראית מבטיחה אפילו יותר מהקודמת. פתחנו אותה עם הפסקת חשמל, שאחריה הגיעו התאוששות והצגה מדהימות (למרות חוסר החשמל!) על אופטימיזציות ב-HTML5, מצוות המובייל של Double Down. אף פעם לא רגע משעמם!
בשנה שעברה, הקבוצה שלנו גדלה מ-0 ל-380 חברים, הישג ענק! צוות Game Dev JS הוא קהילה מגוונת מלאה במפתחים, אמנים, גיימרים, מנהלי תוכניות, מנהלי רשת וחובבי JS מכל הסוגים. המפתח הצעיר ביותר שלנו הוא רק בן 13! בזכות שמירה על תוכן רענן, דוברים נמרצים וחברים מעורבים, הצלחנו לבנות קהילה חזקה – לא היינו יכולים לעשות זאת בלעדיכם!
אם אתם מעוניינים ב-JS, המפגשים הם הזדמנות מצוינת להשתעשע, ללמוד משהו חדש, לשתף ידע ולפגוש דמויות מעניינות מאוד.
נקודות מפתח
- Seattle Game Dev JS גדלה מאפס ל-380 חברים בשנה הראשונה שלה, על בסיס שילוב של הרצאות, הדגמות בזק (lightning demos) ו-happy hours.
- תוכנית ההרצאות של הקבוצה לשנת 2012 כיסתה את כל ה-stack של HTML5: רינדור, טריקים ב-canvas, אודיו, מעטפות native, Windows 8 וארכיטקטורת שרת ב-node.js.
- קהילה כזו עובדת כי היא נשארת במכוון רב-תחומית – מפתחים, אמנים, מנהלי מוצר (PMs) ומנהלי רשת, כולם בחדר אחד.
- הדרך הטובה ביותר להפיק ערך ממפגש היא פשוט להגיע, לשאול שאלות, ובסופו של דבר להציג משהו בעצמכם.
- התכנון ל-2013 פתוח: אנחנו מחכים לרעיונות שלכם לנושאים, הצעות למקומות והצעות לדוברים.
למה קבוצת מפתחי משחקים ב-JavaScript היא חשובה
כשהקמנו את הקבוצה הזו, “פיתוח משחקים ב-HTML5” היה עדיין ביטוי שגרם להרבה אנשים להרים גבה. אלמנט ה-<canvas> היה צעיר, ביצועי הדפדפנים לא היו עקביים, והרעיון שאפשר להוציא משחק אמיתי – לא הדגמה טכנית – ב-JavaScript נתפס כחידוש ולא כפלטפורמה.
שנה לאחר מכן, השיח השתנה לחלוטין. הסיבה שמפגש מקומי הוא חשוב בתחום כזה היא שהתיעוד מפגר אחרי המציאות. פוסטים בבלוגים מתארים מה עבד לפני שישה חודשים. הרצאות בכנסים מלוטשות עד לרמה שהן הופכות למופשטות. מה שבאמת מקדם מפתח הוא לשבת ליד מישהו שפתר את הבעיה המדויקת שלו בשבוע שעבר – canvas שגמגם במכשיר ספציפי, אלמנט אודיו שלא נפתח במובייל, או pipeline של build שנחנק ממאגר נכסים (asset bundle) גדול.
קשורים: — אמנות מוכנה, כלים ותבניות שנופלים ישר לתוך פרויקט ה-Unity שלך.
זה הפער ש-Game Dev JS ממלאת. זו לא סדרת הרצאות. זה חדר מלא באנשים שנמצאים כולם בעיצומם של בעיות, ומשווים ביניהם הערות.
מה סיקרנו ב-2012
הנה חלק ממה שסיקרנו במהלך השנה:
- 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
כל הנושאים הללו, לצד הרצאות בזק והדגמות רבות של חברי הקבוצה, הוצגו במהלך השנה. וכמובן, אנחנו נפגשים מדי פעם גם ל-happy hour!
אם אתה עושה קניות: — מנוע HTML5 מבוסס דפדפן ללא קוד המייצא לאינטרנט, לנייד ולשולחן העבודה.
תודה מיוחדת ל-Double Down Interactive, Big Fish Games, GameHouse ו-The Makers Space על האירוח!
התמות שמאחורי ההרצאות
במבט לאחור על הרשימה הזו, ניתן לראות כמה קווי דמיון ברורים – וכדאי לציין אותם, כי הם תואמים כמעט בדיוק להחלטות שכל מפתח HTML5 צריך לקבל.
רינדור ושאלת ה-retained-mode. ההרצאה של קווין מור על ספריות גרפיקה במצב שמור (retained mode) ו”טריקי הקנבס המטופשים” של דין הדסון נמצאות בשני צדדים של פיצול ארכיטקטוני אמיתי. ציור ב-canvas במצב מיידי (immediate-mode) מעניק שליטה מוחלטת ותקורה מינימלית, אך אתם מנהלים כל רישום מחדש בעצמכם. ספריות במצב שמור (השושלת שעוברת דרך פריימוורקים כמו CreateJS, PixiJS ומאוחר יותר Phaser) מספקות גרף סצנה, hit testing ו-tweening מהקופסה – במחיר של שכבת הפשטה ביניכם לבין ה-GPU. אף אחת מהן אינה “נכונה”. התשובה הנכונה תלויה בשאלה אם המשחק שלכם מורכב מקומץ ספרייטים או מעולם מורכב עם מצבים (stateful).
בעיית המעטפת (wrapper). שלוש הרצאות נפרדות – המפגש של DDI על UIWebView, המצגת של איקר חמארדו על CocoonJS ו-Co+Pilot – כולן סבבו את אותה שאלה: איך מכניסים אפליקציית ווב לחנות אפליקציות? בשנת 2012 האפשרויות היו בערך:
| גישה | מה זה נותן לך | הפשרה |
|---|---|---|
| אפליקציית אינטרנט רגילה | אפס חיכוך, עדכונים מיידיים | אין נוכחות בחנות, ממשקי API של מכשירים מוגבלים |
| עטיפת Native WebView | הפצה בחנות, כמה ווים (hooks) מקומיים | תקרת ביצועים, חוסר התאמה של ממשק המשתמש ל-chrome מקורי |
| עטיפה מואצת (למשל CocoonJS) | קנבס מואץ GPU, מהירות קרובה יותר למקורית | נעילת ספק (Vendor lock-in), מוזרויות ספציפיות לפלטפורמה |
הטבלה הזו היא עדיין דרך שימושית לחשוב על ההחלטה היום, למרות שהכלים הספציפיים התפתחו.
אודיו. ההרצאה של Chris Khoo על אודיו יעיל למשחקי HTML5 הייתה, ונשארה, אחד הנושאים הכי לא מוערכים בתחום. אודיו הוא המקום שבו משחקי אינטרנט נשברים הכי הרבה: מדיניות הפעלה אוטומטית, הבדלי תמיכה בקודיקים (codecs), והשהייה (latency) בין מחוות משתמש לבין הרגע שבו צליל נשמע בפועל. אם אתם בונים משחק היום, הקצו זמן אמיתי לאודיו — זו לא בעיה של “פשוט להכניס קובץ”.
JavaScript בצד השרת. ההרצאה של דין הדסון ומייסון בראון על עיצוב מנוע משחקים סביב node.js ו-express.js הייתה איתות מוקדם לכך שהשרת והלקוח יכולים לשתף שפה. זה חשוב יותר ממה שזה נשמע: קוד משותף לאימות מצב המשחק, פורמטים משותפים של נתונים, ומודל מנטלי אחד לאורך כל ה-stack.
איך להפיק את המרב ממפגש
אם אתם חדשים בקבוצה מהסוג הזה — או שאתם רק צופים מהצד ועדיין לא הגעתם — הנה העצה המעשית שהיינו נותנים לכל אחד.
- בואו עם בעיה אחת ספציפית. “המשחק שלי איטי” יזכה אתכם בסימפתיה. “הקנבס שלי מוריד פריימים כשאני מצייר יותר מכמה מאות ספרייטים” יזכה אתכם בתשובה.
- דברו עם האדם שלידכם, לא רק עם הדובר. ההרצאה היא התירוץ; השיחות במסדרון הן הערך האמיתי.
- העבירו הרצאת ברק (lightning talk). חמש דקות על משהו שלמדתם הן הדרך המהירה ביותר להפוך לדמות מוכרת בקבוצה. אתם לא צריכים להיות מומחים — אתם רק צריכים להיות כאלה שפתרו דבר אחד.
- שמרו על קשר. החליפו פרטי קשר, ובאמת שלחו את הקישור או את קטע הקוד שהבטחתם.
- הביאו את נקודת המבט של מי שאינו מפתח. האמנים, מנהלי המוצר (PMs) ומנהלי הרשת שלנו שואלים את השאלות שמפתחים שוכחים לשאול, ולעתים קרובות אלו הן השאלות השימושיות ביותר בחדר.
בניית קהילה שנשארת
צמיחה מאפס ל-380 חברים בשנה נשמעת כמו מדד להתרשמות בלבד (vanity metric), אבל המספר שבאמת משנה הוא שימור החברים (retention) — כמה מאותם אנשים חזרו. כמה דברים שלמדנו על שמירה על קהילה טכנית חיה:
- סובבו את התוכן. אם כל פגישה היא מדריך קנבס למתחילים, החברים המנוסים יפסיקו להגיע. אם כל פגישה היא אופטימיזציית GPU עמוקה, תאבדו את המצטרפים החדשים. ערבבו בין סקירות כלליות, צלילות עומק והדגמות.
- שמרו על רף כניסה נמוך לדיבור. הרצאות ברק והדגמות של חברים מורידות את רף הסיכון ומעלות אנשים שלעולם לא היו מתנדבים למשבצת זמן מלאה.
- האכילו אנשים, פשוטו כמשמעו. Happy hours וארוחות משותפות תורמים ללכידות הקהילה יותר מכל תכנון של סדר יום.
- הודו למארחים שלכם בפומבי. Double Down Interactive, Big Fish Games, GameHouse ו-The Makers Space נתנו לנו חדרים, וחדרים הם התנאי המוקדם (הלא-זוהר) לכל השאר.
- הפכו את המקום למזמין לכל גיל ורקע. החבר הצעיר ביותר שלנו הוא בן 13. זה לא חידוש — זו תזכורת לכך שלתחום הזה יש מחסום כניסה נמוך באופן יוצא דופן, והקבוצה צריכה לשקף זאת.
מבט קדימה לשנת 2013
נשמע נהדר, נכון? על מה הייתם רוצים שנדבר ב-2013? איפה תרצו להיפגש?
כמה כיוונים שאנחנו סקרנים לגביהם, ונשמח לקבל עליהם את דעתכם:
- ביצועים ופרופיילינג (profiling) למובייל — איך למדוד בפועל לאן הולכים הפריימים, באמצעות כלי הפיתוח של הדפדפן ובדיקות על מכשירים.
- מולטיפלייר ורשתות — WebSockets, פיצוי השהייה (latency compensation), והמציאות המבולגנת של סנכרון בזמן אמת.
- כלים וזרימת עבודה (workflow) — מערכות בנייה (build systems), צינורות נכסים (asset pipelines), ואיך צוותים קטנים משחררים גרסאות ללא מהנדס כלים ייעודי.
- פיזיקה והתנגשויות — מתי להשתמש בספרייה ומתי לכתוב אחת משלכם.
- נגישות וקלט — פלטפורמות של מקלדת, מגע ובקרת תנועה, ואיך לתמוך ביותר מאחת מבלי להכפיל את העבודה.
הגיבו למטה עם הרעיונות שלכם או צייצו ל-@massivelyfun באמצעות ההאשטאג #GameDevJS. נתראה בקרוב!
שאלות נפוצות
מהו Seattle Game Dev JS?
זוהי קבוצת מפגשים באזור סיאטל עבור אנשים המתעניינים בפיתוח משחקים ב-JavaScript ו-HTML5. היא מפגישה מפתחים, אמנים, מעצבים, מנהלי תוכניות, מנהלי רשת וחובבי JS באופן כללי להרצאות, הדגמות ברק ואירועים חברתיים.
האם אני צריך להיות מפתח מנוסה כדי להשתתף?
לא. הקבוצה מערבבת בכוונה הרצאות סקירה עם צלילות טכניות עמוקות, והחברים נעים בין חובב בן 13 למהנדסים מקצועיים באולפנים מבוססים. אם אתם סקרנים לגבי פיתוח משחקים ב-JS, מקומכם בחדר.
איך אני יכול להציע הרצאה או להציע נושא?
הגיבו בתגובות לפוסט זה, או צייצו ל-@massivelyfun באמצעות ההאשטאג #GameDevJS. אנחנו מחפשים באופן פעיל רעיונות לנושאים, הצעות למקומות והצעות לדוברים לשנת 2013.
באילו סוגי נושאים עוסקת הקבוצה?
היסטורית: טכניקות רינדור וקנבס, ספריות גרפיקה, עטיפות Native והפצה בחנויות אפליקציות, אודיו ב-HTML5, פיתוח ל-Windows 8, וארכיטקטורת שרת ב-node.js/express.js. אנחנו מעוניינים להתרחב לפרופיילינג למובייל, רשתות למולטיפלייר, כלי עבודה, פיזיקה ונגישות.
מי מארח את המפגשים?
התארחנו אצל Double Down Interactive, Big Fish Games, GameHouse ו-The Makers Space, ואנו אסירי תודה לכולם. אם לחברה שלכם יש מקום והיא רוצה לתמוך בקהילת המפתחים המקומית, נשמח לשמוע מכם.
האם הקבוצה הזו עוסקת רק במשחקים?
המיקוד הוא במשחקים, אך המיומנויות חופפות במידה רבה לפיתוח כללי של אתרי אינטרנט ואפליקציות — רינדור canvas, טיפול באודיו, native wrappers וארכיטקטורת node.js, כולם רלוונטיים הרבה מעבר למשחקים. רבים מחברינו עובדים על פרויקטים שאינם משחקים.
שתפו את זה: Twitter Facebook Google Pinterest Reddit
קריאה נוספת
- HTML5 — ויקיפדיה
- Canvas element — ויקיפדיה
- Node.js — ויקיפדיה
- Meetup (service) — ויקיפדיה
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
למד מפתחי משחקים לפי לוח הזמנים שלך
קורסים לפי דרישה המכסים את Unity, Unreal, C++, C# ותכנות shader