בחודשים האחרונים יצא לי לעבוד על פרויקטים שונים של מציאות מדומה. דמואים לכמה חברות שונות, וגם כמה דברים בשביל הכיף.
אחד מהפרויקטים בשביל הכיף, היה מכונית מקרטון.
בסוף ינואר, חבר בשם יוסי פרמינגר, אירגן אירוע של מציאות מדומה(Virtual Reality או בקיצור VR), כדי שיהיו שם גם דברים שרלוונטיים רק לאירוע שלו, וגם כי רציתי לעשות משהו עם מכוניות קארטינג, הצעתי לו שנעשה משהו לאירוע הזה.
אחרי שיחה קצרה, הגענו לרעיון של להושיב אנשים בעולם האמיתי, בתוך מכונית מקרטון, ובVR הם ינהגו ברכב מקרטון.
והחלטנו שנפתח את זה עבור ערכת הפיתוח של האוקולוס ריפט(DK2), כך גם מי שלא משחק, יוכל לראות במחשב מה השחקן רואה.
זו הייתה הפעם הראשונה שניסיתי לעבוד עם הDK2, אז לקח זמן להתאים את זה למחשב שלי.
לאוקולוס אין תמיכה רשמית במחשבים ניידים, ולכן אם משהו לא עובד על מחשב נייד, הם לא מנסים לתקן.
אז אם במקרה יש לכם מחשב נייד עם חלונות 10, קחו בחשבון את הדברים הבאים:
הגירסת ריצה הכי עדכנית של אוקולוס ריפט שיכולה לרוץ על מחשב נייד עם חלונות 10, זו גירסה 0.6.
אם אתם עובדים עם יוניטי, תהיו צריכים להשתמש בגירסת 32bit של העורך.
הגירסה הכי עדכנית של יוניטי שתומכת בגירסת ריצה 0.6 של הריפט, זו 5.2.0f3 32bit.
לא יצא לי לנסות, אבל הבנתי שהריפט עושה פחות בעיות במחשבים ניידים עם חלונות 7 או 8.1.
מכאן הפיתוח עצמו התחיל,
השתמשתי בדמו מוכן של מכונית קארטינג מהחנות של יוניטי, והחלפתי את המודל של המכונית למשהו שיזכיר יותר ארגז קרטון.
מבחינת שליטה בהגה, השתמשתי בחיישן של Gemsense, שמאפשר בעזרת תקשורת אלחוטית לזהות רוטציה של עצמים בעולם האמיתי.
אפשר להשתמש בחיישן שלהם גם בעורך של יוניטי ובאופן כללי במחשב, וגם באנדרואיד, והיה יחסית מהיר להטמיע את החיישן במשחק.
מבחינת התאמה של הדמו לפרויקט עצמו וגם תמיכה בVR, היו כמה שינויים שהייתי צריך לעשות בדמו:
- מהזוית ראייה של הנהג, המכונית מאוד רעדה, אז דאגתי לעשות החלקה לתזוזה שלה.
- סימנתי ביוניטי שהפרויקט הוא VR, מכאן יוניטי אוטומטית דאג לנושא של מצלמה שמחולקת לשתי עיניים.
- את מד המהירות, העברתי מקדמת המסך, ושמתי אותו במכונית עצמה.
- בתוך המכונית שמתי גם מד זמן שמראה כמה זמן לקח לשחקן לעשות סיבוב.
- כדי לסיים את המשחק, השחקן היה צריך לעבור 3 סיבובים.
- הוספתי סימונים שמציגים למשתמש איזו דרך הוא צריך לעבור על מנת לסיים את המסלול.
- הוספתי סליידר שהשחקן צריך להסתכל עליו לשנייה או שתיים כדי להתחיל את המשחק עצמו.
ואז התברר שלא תהיה משקפת DK2 פנויה באירוע עצמו, אז התאמתי את המשחק עבור Gear VR.
זה לא דרש הרבה עבודה, הסתמכתי על מקש אסקייפ בשביל להתחיל מחדש, וקליק על העכבר בשביל לאפס את המיקום של ההגה, מבחינת הGear VR זה אומר לחצן "חזור" ונגיעה באזור מגע של המשקפת.
לאחר מכן, כדי להיות מוכנים למקרה שלא יהיה Gear VR, התאמתי את המשחק לגוגל קארדבורד.
כאן היה צריך להטמיע את הSDK של הקארדבורד, ולא הספקתי למצוא פתרון לגבי לחצן ה"חזור" שאין אפשרות ללחוץ עליו כשהמכשיר בתוך משקפת הקארדבורד.
ביום של האירוע עצמו, יגאל(השותף שלי ב Total-Viz ובמקרה גם אבא שלי) ואני לקחנו קרטונים, אחד התאמנו לכיסא בתור גוף של מכונית, ואחר גזרנו בתור הגה וחיברנו לו את החיישן.
התחיל האירוע, אנשים ניסו את המשחק, גם עם גוגל קארדבורד וגם עם Gear VR, תוך כדי הבנו שלעבור את המסלול 3 פעמים זה יותר מדי באירוע הזה, אז מהר הוצאנו גירסה של סיבוב אחד.
כמה מסקנות, מהפרויקט הזה ומפרויקטים אחרים של מציאות מדומה:
- להסתמך כמה שפחות על כפתורים פיזיים.
לגוגל קארדבורד יש כפתור אחד או מגנט שמשמש בתור כפתור, אבל יש גירסאות של חברות שונות שאין בהן כפתורים.
לעומת זאת Gear VR מגיע עם כפתור "חזור", ועם אזור נגיעה שיכול לזהות תזוזה של האצבעות או לחיצה.
אם מנסים לכוון לכמה שיותר מכשירים, עדיף להסתמך על כפתור אחד או בכלל לא. - ממשק המשתמש צריך להיות חלק מהעולם הוירטואלי. אם רוצים להציג לשחקן מידע, למקם אותו כחלק מהעולם ובמקום רלוונטי לאותו מידע.
למשל, מד המהירות שמיקמנו בתוך המכונית עצמה. - כשבודקים את המשחק, צריך לדאוג שתהיה דרך לבדוק מה השחקן רואה, כדי להבין מה צריך לשפר. בניגוד למשחק רגיל במחשב או בטלפון, שם אפשר להסתכל על המסך…
- לדאוג שהמשחק ירוץ בקצב פריימים קבוע וגבוהה, אחרת השחקן יקבל בחילה מהר מאוד.
- להזיז את הדמות של השחקן רק בתנאים מסוימים – תזוזה לא נכונה של השחקן יכולה לגרום לבחילות.
יש שיטות שונות איך לדאוג לזה – כמו למשל, לדאוג לעוגנים שונים בעולם שנשארים קבועים ביחס לשחקן. כמו רקע שנשאר סטטי ביחס לשחקן, או להוסיף מודל של אף בשדה הראייה של השחקן, או להושיב את השחקן בתוך רכב כך שהוא יביט על העולם דרך החלונות של הרכב.
ואם כבר פיתוח VR ביוניטי, בתחילת החודש הבא יתקיים מפגש מפתחי יוניטי, ובין השאר, עומרי ברג יעביר שם הרצאה בנושא.
יום טוב,
אורן