דפוס מוט

המדריך הזה מתאר את הרכיבים שמהם מורכבת חוויית הטמעה פשוטה, בצורה של משחק Charades. משחקים הם תרחישים לדוגמה שמתאימים לטבילות, כי לרוב נדרש ממשק משתמש ופקדי קלט מותאמים אישית.

לאורך הדרך, תקבלו גם טיפים לתכנון, לפיתוח ולהפצה, שהם כלי חשוב לבניית כלי זכוכית משלכם.

לפני שמתחילים

המקור המלא של משחק הניחושים זמין ב-GitHub. כדאי לייבא את הקובץ ל-Android Studio לפני שמתחילים, כי המדריך הזה מאוד מיועד.

  1. במסך 'התחלה מהירה', לוחצים על יציאה מהגרסה 'בקרה' > Git.
  2. מעתיקים את כתובת ה-URL המשוכפלת מ-Chardes.
  3. מדביקים את כתובת ה-URL המשוכפלת בכתובת ה-URL של מאגר ההמרות ולוחצים על שכפול.
  4. במסך הבא לוחצים על כן.
  5. במסך הבא לוחצים על אישור.
  6. לוחצים על הלחצן Play כדי ליצור את הפרויקט ולהריץ אותו ב-Glass המחובר אליו. יש לבדוק את README של הדוגמה לקבלת פרטי הפעלה.

מה תלמדו

תלמדו איך להשתמש ברכיבים מ-Android SDK כדי לבנות את המיטב של מוטת ה-Chardes, ואז את ה-GDK כדי להתנסות ב-Glass. הנה רשימה של נושאים שעליהם תלמד:

  • תכנון זרימת ממשק המשתמש עם משאבי העיצוב שאנו מספקים
  • תכנון של טריגרים קוליים להפעלת Glassware
  • שימוש בפעילויות של Android להגדרת מבנה ממשק המשתמש של המשחק
  • יצירת אפשרויות בתפריט ב-Android שמאפשרות למשתמשים לבחור אפשרויות משחק
  • שילוב בחוויה של Glass עם טריגר קולי בתפריט הראשי
  • שימוש בגלאי תנועות של GDK שמזהים קלט של משתמשים ומבצעים פעולות מותאמות אישית
  • הטמעות פשוטות של ממשק המשתמש של Android ומוסיפות ליטוש בהתאם לסגנון Glass
  • מידע על תהליך ההפצה ועל מה שאנחנו מחפשים בעת השקת Glassware

עיצוב

לפני שאתם מתחילים לפתח, כדאי להקדיש זמן ולתכנן את Glassware שלכם. כך תוכלו לדעת אילו זרימות בממשק המשתמש הכי מתאימות ל-Glass, באילו פקודות קוליות תשתמשו ואיך הכרטיסים שלכם ייראו.

כמובן שעיצוב ה-Glassware הוא תהליך שחוזר על עצמו, וחלק מהדברים שאתם מעצבים עכשיו ישתנו, אבל חלק גדול מהיצירה הזו בהתחלה הוא חיוני ליצירת חוויה מעולה.

זרימה של ממשק המשתמש

תכנון של זרימת ממשק המשתמש הוא תרגיל פשוט שמאפשר לכם לראות את Glassware שלכם באופן חזותי לפני שכותבים שורת קוד. אנחנו עושים זאת כל הזמן בעזרת ה-Glassware שאנחנו בונים!

בואו נדון ברכיבים העיקריים של ממשק המשתמש של הצ'ראדס, כדי שתדעו איך ממשק המשתמש פועל ואיך הוא יכול לעזור בתהליך יצירת ה-Glassware שלכם.

מסך פתיחה

המסך הזה הוא הראשון שהמשתמשים רואים כשהם מתחילים את הצלילה ב-Chardas. היא מאפשרת למשתמשים להתמצא לפני שהם עוברים לחוויית משחק, והיא מבנה משחק כללי שהמשתמשים מכירים.

כשמשתמשים מקישים על לוח המגע, מופיעה מערכת תפריטים עם שני פריטים: משחק חדש והוראות.

מצב הוראות

לפעמים, כשמטמיעים מוטות עומק, מנגנוני הקלט הם חדשניים, ולכן כדאי ליידע את המשתמשים איך הם צריכים לתקשר עם התוכן, במיוחד עם המשחק.

ערכת קלפים זו מכילה את הוראות המשחק ומנחה את המשתמשים כיצד לשחק ודרך ממשק המשתמש. המשתמשים יכולים להגיע אליה על ידי הקשה על האפשרות בתפריט הוראות במסך הפתיחה.

מצב מהלך המשחק

מסכים אלה יוצרים את מהלך המשחק העיקרי. המשתמשים יכולים להגיע לתהליך הזה על ידי הקשה על האפשרות בתפריט משחק חדש במסך הפתיחה.

קבוצת הכרטיסים הזו מציגה מילה אקראית (עד 10). המשתמשים מדלגים על מילה באמצעות החלקה קדימה והקשה על לוח המגע כשהם מתארים את המילה כראוי.

מסך תוצאות המשחק

במסך הזה מוצגות תוצאות המשחק. המסך "המשחק נגמר" מופיע בתחילה והמשתמשים יכולים להחליק קדימה כדי לראות את תוצאות המשחק. כשהמשתמשים מקישים על כרטיסי תוצאות, פריט התפריט משחק חדש מוצג ומאפשר למשתמשים להתחיל משחק נוסף.

פקודה קולית

עליכם להבין פקודה קולית בשלב די מוקדם בתהליך העיצוב. במידת הצורך, הפקודות הקוליות מאפשרות למשתמשים להפעיל את Glassware מתוך התפריט הקולי של Glas Home (כרטיס שעון), והוא חלק חשוב מהתכנון של Glassware.

לדוגמה, הפקודה פרסום עדכון פועלת היטב במודל "אש ושכח", שבו המשתמשים אומרים את הפקודה וטקסט כלשהו, ו-Glassware מעבד אותה ללא התערבות המשתמש. כך המשתמשים יכולים לחזור במהירות לפעילות.

מצד שני, כשמדובר במשהו כמו הפעלת משחק, בדרך כלל כדאי להפנות את המשתמשים למסך פתיחה כדי שהוא יהיה ראשון. סביר להניח שהפקודה הקולית הזו מקפיצה את התוכן, כך שאתם יכולים לצפות שמשתמשים יוכלו לראות מסכים ותפריטים נוספים כדי להתחיל את המשחק. הוצאה מיידית של משתמשים לחוויית משחקים מיד לאחר שהפקודה הקולית היא חוויה גרועה למשחקים.

ב-Charade נעשה שימוש בפקודה הקולית הפעלת משחק . אחרי שהמשתמשים מפעילים את הפקודה הקולית, מסך הפתיחה של Charades מופיע, ומבקשים מהמשתמשים להקיש כדי להציג אפשרויות נוספות (משחק חדש או הוראות במקרה זה).

פריסות כרטיסים

בין אם אתם מפתחים אפליקציות עומק או כרטיסים בשידור חי, כדאי להשתמש ב-CardBuilder או ב-XML Layouts כשאפשר.

לפעמים תצטרכו ליצור פריסה משלכם, אז כדאי לפעול לפי ההנחיות שלנו בנושא ממשק משתמש כדי לקבל את ה-Glassware שנראה טוב.

שעון העצר פועל לפי ההנחיות הכלליות לפריסה, אבל לפריסות שלו יש ממשק משתמש מותאם אישית שמבוסס על רכיבים סטנדרטיים של Android, כמו תצוגות ופריסות.

פיתוח

כדי לפתח אפליקציות עומק, משתמשים באותם כלים שבהם השתמשתם לפיתוח ה-Android כדי לבנות את רוב הכלים של Glassware, ולאחר מכן משתמשים בממשקי API בתוסף GDK כדי לגשת לפונקציונליות ספציפית ל-Glass, כמו מזהי תנועות ופקודות קוליות.

לעיתים קרובות תשתמשו ברכיבי Android נפוצים כדי ליצור Glassware, אבל חשוב לזכור שלפעמים מושגים מסוימים שונים. לדוגמה, אין להשוות עומק לפעילות ב-Android. חוויות סוחפות הן חוויות שמיועדות ל-Glass, שנבנו בפעילויות מסוימות ב-Android או ברכיבים רבים נוספים של GDK ו-Android SDK.

בשאר הקטעים של פיתוח מתוארים המבנה של משחק ה-Charades והרכיבים העיקריים של הפרויקט שייבאתם לפני כן. כדאי להשתמש ב-Android Studio כבר עכשיו כדי שתוכלו לשמור על קשר. הערות לגבי קוד המקור עצמו, ולכן במאמר הזה מתוארת המטרה הגבוהה של כל קובץ וטיפים שימושיים שאפשר ליישם ב-Glassware.

לפניכם סקירה קצרה של הרכיבים העיקריים של חרדות:

  • הצהרת טריגר להפעלת Voice בתפריט הראשי של Glass.
  • פעילות במסך פתיחה מאפשרת למשתמשים להתחיל משחק או לצפות בהוראות. הפעילות הזו מפעילה את פעילות ההוראות או את פעילות המשחקים
  • פעילות המדריך מראה למשתמשים כיצד לשחק במשחק על ידי ביצוע הפעולות העיקריות של המשחק
  • פעילות המשחקים מאפשרת למשתמשים לשחק במשחק בפועל
  • בפעילות התוצאות מוצג ניקוד המשחק, וכן רשימה של מילים שניתן לנחש או שקשה לנחש. הוא גם מאפשר למשתמשים להתחיל משחק חדש עם אפשרות בתפריט.

פקודה קולית

תוכלו ליצור פקודות קוליות בעזרת קובץ משאב של XML שמציין את הפקודה שבה משתמשים, ולאחר מכן לציין את משאב ה-XML בקובץ AndroidManifest.xml.

הקבצים הבאים משויכים לפקודה הקולית של צ'אראדס:

  • res/xml/voice_trigger_play_a_game .xml – הצהרה על הפקודה הקולית שבה רוצים להשתמש.
  • AndroidManifest.xml - מצהירה על הפעילות כשהיא מתחילה כאשר הפקודה הקולית נאמרת.

פעילות במסך פתיחה

מסך הפתיחה הוא הדבר הראשון שהמשתמשים רואים כשהם מתחילים את הניחושים ומכוון אותם לפני שהם מתחילים את המשחק.

הקבצים הבאים משויכים לפעילות זו:

  • res/layout/activity_start_game.xml - מצהיר על הפריסה של מסך הפתיחה.
  • res/menu/start_game.xml - הצהרה על מערכת התפריט למסך הפתיחה, שמכילה את אפשרויות התפריט הוראות ומשחק חדש.
  • res/values/dimens.xml – הצהרה על מידות ומרווחים סטנדרטיים בכרטיסים שבהם נעשה שימוש בפעילויות של הפרויקט הזה כדי לעקוב אחר סגנון ה-Glass.
  • src/com/google/android/glass/sample/charades/StartGameActivity.java – הכיתה הראשית למסך הפתיחה.
  • res/drawable-hdpi/ic_game_50.png – סמל התפריט משחק חדש.
  • res/drawable-hdpi/ic_help_50.png – סמל התפריט הוראות.

דגם המשחק

תמיד כדאי להפריד בין מודל של משחק (מצב המשחק) לבין ממשק המשתמש. הכיתה CharadesModel עוקבת אחר הניקוד של המשחק ואת מספר הניחושים במשחק במצב של משחק, וגם בהתאם להוראות השונות ואם המשתמשים עברו אותם במצב ההוראות.

הקבצים הבאים משויכים למודל המשחק:

  • src/com/google/android/glass/sample/charades/CharadesModel.java

פעילות משחקים בסיסית

מכיוון שמצבי המדריך והמשחק במהלך המשחק חולקים פונקציונליות וממשקי משתמש דומים מאוד, מחלקת הבסיס מגדירה את הפונקציונליות המשותפת של שניהם. הפעילויות לביצוע ההוראות והמצבים של מהלך המשחק (gameplay) מרחיבים את הכיתה.

הקבצים הבאים משויכים לפעילות זו:

  • res/layout/activity_game_play.xml – מגדיר את הפריסה שמשותפים באמצעות מצבי המשחק וההוראות של Charades.
  • src/com/google/android/glass/sample/charades/BaseGameActivity.java – המדיניות הזו מגדירה את הפונקציונליות הבסיסית של מצבי המשחק (gameplay) וההוראות של Charades, המשותפת.

פעילות ההוראות

פעילות ההוראות מציגה שלושה קלפים שמסבירים כיצד לשחק במשחק. בכרטיס מצוין אם המשתמשים מבצעים את הפעולה שמוצגת בכרטיס לפני שהם יכולים להמשיך.

הקבצים הבאים משויכים לפעילות זו:

  • src/com/google/android/glass/sample/charades/TutorialActivity.java - מרחיב את BaseGameActivity ומגדיר איזה טקסט הוראה להציג ואיך לטפל בתנועות כאשר משתמשים עוברים על ההוראות במשחק.

פעילות מהלך המשחק

מהלך המשחק (gameplay) מגדיר את הזרימה העיקרית של המשחק. הוא קובע אילו מילים להציג, איך לשמור על הניקוד, מזהה תנועות שמטפל בתנועות, ומפעיל את פעילות התוצאות בסיום המשחק.

הקבצים הבאים משויכים לפעילות זו:

  • GamePlayActivity – מרחיב את BaseGameActivity ומכיל את הלוגיקה הראשית של Gameflow.

פעילות התוצאות

התוצאה שמתקבלת כוללת את המילים שנחושו, המילים ללא ניחושים והניקוד של המשחק. הוא גם מכיל פריט תפריט שמאפשר למשתמשים להתחיל משחק חדש.

הקבצים הבאים משויכים לפעילות זו:

  • res/layout/game_results.xml - הגדרת הפריסה של הכרטיס "משחק נגמר"
  • res/layout/card_results_summary.xml - מגדיר את הפריסה להצגת מילים ניחושיות ולא ניחושות ברשימה.
  • res/layout/table_row_result.xml - מגדיר פריסת שורות בודדת לסיכום התוצאות.
  • src/com/google/android/glass/sample/charades/GameResultsActivity.java – המדיניות הזו מגדירה את הפעילות בפועל שמציגה את הפריסות והתפריטים שהוגדרו על ידי משאבי ה-XML שהוזכרו.
  • res/raw/sad_trombone.ogg – הצליל שמושמע כשמשתמשים לא עוברים על כל המילים.
  • res/raw/triumph.ogg – הצליל שמושמע כשמשתמשים עוברים על כל 10 המילים.
  • res/drawable-hdpi/ic_done_50.png - סמל סימן הווי שמופיע ליד מילים שננחשות כראוי.

משאבי אנימציה

במשאבי האנימציה האלה אנחנו מוסיפים עוד קצת עיצוב ל-Chardes:

  • res/anim/slide_out_left.xml - הגדרה זו יוצרת אנימציה של תצוגת יציאה כדי להחליק שמאלה (לדוגמה, כשמתבצעת העברה של מילה).
  • res/anim/slide_in_right.xml - כך נוצרת אנימציה של תצוגת כניסה כדי להחליק ימינה (למשל, כשמילה חדשה נכנסת לתצוגה).
  • res/anim/tug_right.xml - תכונה זו מגדירה אנימציית גרירה אם מחליקים על תצוגה שלא צורכת את ההחלקה. כך המשתמשים יכולים לדעת שההחלקה לא השפיעה.

מניפסט Android

הקובץ AndroidManifest.xml מתאר את הרכיבים העיקריים של Glassware, כך שהמערכת יודעת כיצד להפעיל אותו. המניפסט של Charasdes מצהיר על הדברים הבאים:

  • הסמל והשם של Glassware. Glass מציג את המידע הזה בתפריט המגע הראשי, אם יותר מ-Glassware אחת מגיבה לאותה פקודה קולית.
  • כל הפעילויות המשויכות ל-Charade. הפעולה הזו נדרשת כדי שהמערכת תדע איך להתחיל את הפעילויות ב-Glassware.
  • הפקודה הקולית ומסנן Intent שמתחילים פעילות ספציפית כאשר הפקודה הקולית נאמרת.
  • קוד גרסה של Glassware. צריך לעדכן את הקוד הזה (ובדרך כלל גם את שם הגרסה) בכל פעם שמועלה גרסה חדשה של ה-APK הזה ל-MyGlass.