Engine

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

במשפט אחד#

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

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

הפריסה#

Engine, עם גרף הסצנה, חלון התצוגה, ה-inspector והקונסולה

סרגל תפריטיםFile · Edit · View · Windows · Run · Plugins
סרגל כליםשם הפרויקט, ביטול/ביצוע מחדש, מתג מצב חלון התצוגה (3D · 2.5D · 2D · TXT), בורר הסצנה, ארבעת כפתורי הפאנל, FX Master, HUD, תיבת הרזולוציה, ההובלה (play, pause, stop) ו-Build
שמאלמסילת אייקונים, גרף סצנה, רשימה, שמע, קונסולה, והפאנל שהיא פותחת
מרכזחלון התצוגה, עם סרגל הגיזמו שלו (הזזה, סיבוב, קנה מידה, world/local, רשת, הצמדה, מסגור) ובורר איכות
ימיןהinspector לישות הנבחרת
תחתיתConsole ו-Profiler, זה לצד זה
שורת מצבמצב, מימד חלון התצוגה, ספירת entities, מצב רשת

ארבעת כפתורי הפאנל#

סרגל הכלים של Engine: שם הסצנה, ביטול, מתג מצב חלון התצוגה, ארבעת כפתורי הפאנל וההובלה

הם לא מתנהגים כולם באותו אופן, וההבדל שווה לדעת לפני שיוצאים לחפש משהו:

כפתורהתנהגות
Systemsפותח מגירה
Toolsפותח את אותה מגירה, Systems ו-Tools סוגרים זה את זה
Assetsמחליף dock קבוע
Scriptsפותח מודאל

Systems ו-Tools חולקים חריץ אחד בכוונה; הם ממוקמים זה לצד זה כדי שיהיה גלוי שהם עושים זאת.

Systems#

תת-המערכות של המנוע עצמו: הדברים שלסצנה יש, במקום הדברים שיוצרים איתם.

קבוצהפאנלים
Pluginsדפדפן התוספים
RenderingRendering · Rendering Pipeline · Look Presets · Shader Lab · Render Style · Shadows · Mesh LOD · Post Process Volumes
Gameplayחדר Multiplayer · Physics · AI & Navigation · Gameplay Zones
WorldScene Graph · Level Streaming · Baking · Light Probes · Decals

Rendering#

מתג ה-FX Master על סרגל הכלים מדליק ומכבה את כל צינור הפוסט בלחיצה אחת: הדרך המהירה ביותר לראות כמה זה עולה לכם. בנפרד: bloom, depth of field, SSR, SSAO, GTAO, SSGI, temporal AA, FXAA, motion blur, ערפל נפחי, contact shadows, דירוג צבע, film grain, סטייה כרומטית, וינייטה ו-tonemapping, בתוספת גאומטריה בסגנון Nanite ו-Hi-Z occlusion.

Look Presets הן תצורות שלמות של כל הנ"ל. Render Style משנה את הרישום, מסוגנן במקום פוטוגרפי. Shader Lab הוא המקום שבו כותבים משלכם. Mesh LOD ו-Post Process Volumes הם השניים שמחזירים את עצמם על סצנה גדולה: רמת פירוט לפי mesh, ועיבוד פוסט שחל רק בתוך נפח.

המרנדר הוא Babylon.js. הוא מתחיל על WebGL ועובר בעצמו ל-WebGPU כשלדפדפן יש את זה, ונופל חזרה בעצמו אם זה נכשל.

מערכות Gameplay#

Physics מכסה גם את הפותר התלת-ממדי (Havok) וגם את הדו-ממדי. AI & Navigation הוא ה-navmesh והסוכנים עליו. Gameplay Zones הם נפחי trigger עם התנהגות מחוברת. חדר Multiplayer מחבר את הסצנה לשרת Colyseus (ראו למטה).

מערכות World#

Level Streaming טוען ופורק חלקים מרמה תוך כדי תנועת השחקן. Baking מחשב תאורה מראש; Light Probes לוכדים תאורה עקיפה והשתקפויות בנקודות במרחב. Decals מטילים פרט על משטחים בלי להוסיף גאומטריה.

Tools#

הדברים שיוצרים איתם.

קבוצהפאנלים
EditorsScripts · Blueprint Editor · UI Editor · Tilemap
WorldSky Studio · Terrain · Water · Tree Generator · Plant Generator · Rock Generator · Kitbash
GameplayInventory · טבלאות נתונים · Dialogue Trees
AnimationTimeline · Cinematic Sequencer · Camera Tools
AudioAudio Manager
DebugProfiler

מחוללי עולם#

Terrain, water, שמיים וארבעה מחוללי תוכן, עצים, צמחים, סלעים וחלקי kitbash. יש להם פרק משלהם למטה.

כתיבת Gameplay#

Inventory, טבלאות נתונים (Tools → Data) ו-Dialogue Trees הם שלושת העורכים שנותנים למשחק תוכן בלי שהתוכן הזה יחיה בקוד בפירוט למטה.

הנפשה#

Timeline להנפשת entities, Cinematic Sequencer לצילומים, ו-Camera Tools למסגור. ראו הנפשה ומצלמה.

עורכי העולם#

שבעה פאנלים תחת Tools → World. הם הדרך המהירה למלא סצנה, והסיבה שרמה לא חייבת להתחיל בישיבת מידול.

Terrain#

סצנה יכולה להכיל כמה שטחים; כל אחד הוא שורה ברשימת ה-Terrains ונוצר באחת משלוש רזולוציות, 128² (מהיר), 256² (מאוזן) או 512² (מפורט).

לפאנל עשרה מצבים, והם חולקים דבר אחד: המסכה שנצבעת ב-Masks מגבילה כל אחד מהם.

מצבמה הוא עושה
Sculptשבע עשרה מברשות על שדה הגובה
Paintעד שמונה שכבות טקסטורה, על פני שני splatmaps
Generateרעש, טקסטורה אוטומטית, וייבוא גובה מהעולם האמיתי
Sketchציירו רכסים ועמקים, הרכיבו שטח שיתאים
Masksהגבילו כל מצב אחר לחלק מהמשטח
Waterגובה הים, והבחירה בין מי שטח למי אוקיינוס FFT
Pathsכביש בזייה אפוי לתוך הקרקע
Vegetationפיזור במברשת או לפי כלל
SDFשטח raymarched, מרונדר ולא memesh
Biomesקרקע, צמחים, עצים וסלעים במעבר אחד

Sculpt. הרמה 1, הנמכה 2, החלקה 3, השטחה 4, צביטה 5, ניפוח 6, רעש 7, חידוד 8, חותמת 9, מדרגות 0, שחיקה E, מילוי F, שכפול C (Alt-קליק קובע את המקור), טשטוש B, רמפה R, בתוספת שני כלי מים, River מצייר מסלול, Lake ממלא בנקודה.

למברשת עצמה יש דינמיקה: עקומת לחץ, עכבר עצל, דעיכה, סימטריה, תבנית, וג'יטר גם על הגודל וגם על העוצמה. Stamp נושא שש צורות, מכתש, פסגת הר, מישור, עמק נהר, כיפה, גבעת רעש. שחיקה מגיעה בשתי צורות: מברשת ה-E מקומית, בעוד Adjustments מריץ שחיקה הידראולית, תרמית ורוח על השטח כולו.

Paint. שמונה שכבות, כי שני splatmaps מסוג RGBA מחזיקים ארבעה ערוצים כל אחד. ספריית החומרים ממוינת לפי קטגוריה, דשא, אדמה, יער, סלעים, כבישים ומשטחים, צוקים, חול, שלג, געשי, ביצה, פנטזיה, ומשלכם, וכל שכבה נושאת קנה מידה UV, תזוזה, מפת פרט, ותבליט משטח (עוצמת bump ועומק parallax). שבירת ריצוף טקסטורה (cell bombing) היא ההגדרה שעוצרת טקסטורת קרקע חוזרת מלהיקרא כרשת.

Generate בונה מרעש, ואז Generate Textures מקצה חומרים לפי גובה ושיפוע, עם שונות הצללה צפון/דרום וחופי חול או חצץ במקום שיש מים. Real World מייבא אריחי גובה ציבוריים של NASA/USGS: בחרו ציון דרך או הקלידו קואורדינטות, בחרו את הזום, והפאנל מדווח על טווח הגובה שהוא הביא.

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

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

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

ל-Vegetation שני חצאים. המברשת ממקמת ומסירה מופעים ביד; חוקי הפיזור ממקמים אותם לפי תנאי, משקלי שכבה, זרע, קנה מידה מינימלי/מקסימלי, ורצועת הגובה והשיפוע שכל נכס מקבל. דשא ופרחים דוהים מעבר למרחק ציור ניתן להגדרה, ו-Export to Scene הופך את המופעים לאובייקטי סצנה.

Biomes היא הגרסה בלחיצה אחת של כל הנ"ל: בחרו ביום, סמנו את הקטגוריות שאתם רוצים (קרקע, עצים, צמחים ודשא, פרחים, אצות ליד מים, סלעים), קבעו צפיפות, ו-Apply Biome צובע את הקרקע ומפזר הכל, ומדווח כמה מופעים מכל אחד הוא מיקם. גיוון גיל עצים מערבב שתילים עד עתיקים במקום להטביע את אותו עץ בכל מקום, ו-ground blend (RVT) ממזג כל בסיס סלע לתוך צבע השטח מתחתיו.

SDF הוא מרנדר שונה, לא כלי שונה: השטח מיוצג ב-raymarching משדה מרחק, צורה לפי אוקטבות, lacunarity ו-persistence, טקסטורה לפי דשא/סלע/שלג עם קו שלג וסף שיפוע, ותאורה, ambient occlusion וערפל משלו.

לשטחים גדולים יש מערכת LOD עם גאומטריית skirt (וזה מה שסוגר את הפערים בין הרמות), מעברי רמה חלקים, frustum culling ושכבת-על של סטטיסטיקה. מפות גובה מיובאות ומיוצאות כ-PNG 16-bit, PNG 8-bit או RAW 16-bit; splatmaps כ-PNG יחיד מסוג RGBA או קובץ אחד לכל שכבה; והשטח כולו, או רק ההגדרות שלו, כהגדרה מוכנה.

Sky Studio#

האטמוספרה. ארבעה סוגי שמיים, מלא, גרדיאנט, HDRI, ואטמוספרה פיזית עם פיזור Rayleigh ו-Mie, ספיגת Mie, אוזון, אלבדו קרקע, עכירות, רדיוס כוכב לכת ועובי אטמוספרה.

הכל תלוי בשעת היום, שיכולה לרוץ מעצמה: השמש לפי גובה, azimuth ועוצמה, עם עוצמת צל משלה; הירח לפי שלב; כוכבים עם ניצנוץ; וזוהר קוטבי. לעננים ווליומטריים יש עובי, שחיקה, קנה מידה של רעש ועיוות curl, ואור דרך ספיגה, פיזור, אמביינט ואיבר powder; cirrus וחגורת ונוס נפרדים. פרספקטיבה אווירית היא הערפל שמתעבה עם המרחק ומדהה גאומטריה רחוקה לתוך האופק, זו ההגדרה שגורמת לנוף להיקרא כגדול.

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

Water#

שתי לשוניות: Ocean (FFT) לים פתוח, Shore & lakes לכל השאר.

⚠️ מים נוצרים בעורך ה-Terrain: כלי הנהר והאגם, או Show Water, ומכוונים כאן. פתיחת הפאנל הזה על סצנה בלי מים נותנת לכם הגדרות בלי כלום להחיל אותן עליו.

מי חוף נושאים צבע, אטימות, עוצמת גל ומהירות, choppiness, רוחב קצף ו-Fresnel, עם השתקפויות במרחב מסך וטשטוש שבירה. מתחת זה נמצא ה-shader עצמו של WGSL: שני קני מידה נורמל עם כיווני גלילה ומהירות משלהם, סף וריכוך קצף, עוצמת שבירה ומקדם שבירה, והאור בתוך המים, ספיגה, עכירות, פיזור ושקיפות.

Tree Generator#

שני מצבים, Tree ו-Trunk. עץ הוא נשיר או ירוק-עד, יש לו גיל משתיל עד עתיק, ויכול להיות חי, מת, גזע יבש או גזע נפול. הכל זרוע, כך ש-Randomize seed היא הדרך המהירה ביותר לקבל עץ שונה עם אותו אופי.

הצורה היא לפי רמת ענף: ילדים, אורך, רדיוס, taper, עקמומיות, פיתול, קטעים, מקטעים, זווית וגובה התחלה, בתוספת שונות טבעית, phototropism ו-gravitropism: שתי התכונות שגורמות לעץ לנטות לאור ולשקוע תחת משקלו שלו, וכוח גלובלי עם עוצמה משלו. לבסיס יש root flare (אונות וגובה) ו-buttress.

עלים הם billboards, חד או דו-צדדיים, עם ספירה, גודל, זווית, שונות, clump, תלתול, שקיעה, ברק ונורמלים מעוגלים. קליפה מגיעה בשישה סגנונות, מחורצת, אספן, אורן, ליבנה, חלקה, דקל, עם תבליט, טחב, בסיס לח, הלבנת שמש, ambient occlusion של הנוף וגוון סתיו. ארבע עונות מחליפות את כל המראה בבת אחת.

Forest מפזר הרבה בבת אחת: ספירה, רדיוס פיזור, שונות קנה מידה, ותמהיל גילאים (יחיד, טבעי, צעיר, זקן, אחיד). Add age progression ממקם את כל חמשת שלבי החיים בשורה, שזו הדרך המהירה ביותר לשפוט אותם זה לצד זה. עץ יוצא כישות סצנה או כ-GLB, וכל הגדרה ניתנת לשמירה כהגדרה מוכנה.

Plant Generator#

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

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

Rock Generator#

שלושה סוגים, סלע, אבן, צוק, בשלושה סגנונות: ריאליסטי, toon, או low poly עם מתאר.

הצורה היא רעש על כדור: קנה מידה, עוצמה, אוקטבות, persistence, warp ואפשרות ridged, בתוספת strata עם תדירות משלה וfacet cuts עם עומק וחדות לאבן זוויתית. רדיוס, פירוט, השטחה, שונות צורה ובסיס שטוח קובעים את הצללית, וארבע הגדרות שחיקה מוכנות, טרי, שחוק, טבעי, נשחק, מזיזות את כולם בבת אחת.

למשטח יש שונות צבע, ורידי מינרל, חזזית וטחב, מפת פרט עם ריצוף ועוצמה, מיזוג triplanar ותבליט parallax. הוא משתמש בחומר Stone מובנה כברירת מחדל; שלחו חומר מ-Matter אל Engine כדי לדרוס אותו.

Kitbash, אותה ספרייה כמו Sculpt#

Kitbash משותף עם Sculpt: הפאנל הזה וה-Edit Forge של Sculpt קוראים מספרייה אחת. חלק שנבנה שם ממוקם כאן, וחלק שנצבע כאן אפשר לשמור בחזרה אליה.

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

חמשו חלק מהקטלוג וכל קליק שמאלי ממקם אותו. שלושה מצבי הצמדה קובעים איפה הוא נוחת: on terrain (חלקים עוקבים אחר גובה הקרקע מתחתיהם), on water (מישור הבנייה יושב בגובה המים), ו-snap to sockets, כוונו נקודת חיבור על חלק ממוקם והחדש מסתובב לפגוש אותה. שרשרת גדלה מהקצה הפנוי שלה, שקעים תפוסים נופלים מהמועמדים, וכל קליק הוא צעד ביטול משלו. Ctrl/Cmd נשאר שמור לבחירה ו-Alt לסיבוב. אוספים שומרים את המקור והגרסה שלהם, כך שמופע ניתן לעדכון כשהמקור משתנה.

העורכים האחרים#

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

עורך ה-HUD#

Tools → Editors → UI. שש לשוניות, Templates, Elements, Layers, Preview, Style ו-Script: על תצוגה מקדימה שמחליפה בין שלושה גדלי מכשיר: שולחן עבודה 960×540, טאבלט 768×432, מובייל 375×667.

אלמנטים מגיעים בשלוש קבוצות (Display, Data, Input) ומקננים: panel ו-flex מחזיקים ילדים, כך שהלשונית Layers היא עץ אמיתי ולא רשימה שטוחה. ההיסטוריה עמוקה חמישים צעדים.

⚠️ הלשונית Style היא דמוית CSS, וההבדל חשוב. ה-HUD מצויר על הקנבס על ידי ה-GUI של Babylon, ו-CSS אמיתי לא מגיע אליו. הכללים שאתם כותבים כאן ממופים לתכונות GUI; הבוררים הם #name לאלמנט אחד, .type לסוג (.text, .panel) ו-* לכל דבר.

הלשונית Script היא הדרך השנייה לבנות אחד: ה-API של ui.*, createText, createPanel, createProgress, createButton, עם שתי דרכים להריץ אותו. Build Layout מריץ אותו בזמן עיצוב ומשאיר לכם אלמנטים אמיתיים לזוז ביד; Run Live מריץ אותו במשחק.

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

עורך מפת האריחים#

אחד עשר כלים, מברשת, מחק, מילוי, מלבן, בחירה, טפטפת, חותמת, autotile, prop, zone ו-path, על ארבע הטלות מפה: אורתוגונלית, איזומטרית, איזומטרית משורגת ומשושה.

Autotiling מגיע עם ארבע תבניות, והמספר בכל שם הוא מספר האריחים שהוא מצפה לו: Blob 47 (פינה וקצה מלאים), Wang 16 (מבוסס קצה), Simple 4 (NSEW), ו-RPG Maker A2 (48 אריחים, תואם למפות שנוצרו שם).

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

Inventory, טבלאות נתונים ודיאלוג#

שלושת העורכים שנותנים למשחק תוכן בלי שהתוכן הזה יחיה בקוד.

Inventory עורך קטלוג ומחיל אותו על הסצנה. פריט נושא פעולות, ופעולה היא trigger: use, equip, unequip, בתוספת אחד משמונה types: message, heal, damage, grant, remove, event, toast, scene. לפאנל עצמו שלוש פריסות (grid, list, compact), שלוש הגדרות מראה מוכנות (graphite, midnight, warm), וארבעה חריצים חזותיים, background, slot, equipment, tooltip, שנפתחים במודול אחר לציור מחדש כהלכה.

טבלאות נתונים מוקלדות: עמודה היא text, number, bool או ref. CSV נכנס ויוצא. כל עריכה עוברת דרך פונקציות טהורות, וזה מה ששומר על הטבלה שהייצוא כותב זהה לטבלה שהבנייה קוראת.

Dialogue trees הם צמתים עם דובר ושורה. צומת ממשיך ל-next אחד, או מתפצל לchoices, כל אחת עם הטקסט והיעד שלה, מתג ההסתעפות הוא ההחלטה המבנית היחידה בעורך.

הנפשה ומצלמה#

Cinematic Sequencer בונה רצפים עם משך ודגל לולאה, רצועה אחת לכל entity, ופריימי מפתח שנלכדים בראש הניגון, Add Key לוקח את הערך הנוכחי של ה-entity במקום לבקש מכם להקליד אותו. עורך הגרף מתחת מציג זמן מול התקדמות, עם ידיות עגולות ל-easing: השיפוע הוא המהירות. לצילומים יש משכים משלהם, ומסגור Cinemascope (1.422:1) זמין ל-letterbox.

Camera Tools מכסה FOV, מיקום, יעד, מצב ומהירות, בתוספת סימניות (bookmarks) לנקודות מבט שאתם חוזרים אליהן, ושכבות מצלמה.

שמע#

Audio Manager מחזיק אירועי שמע, רצועות ומיקסר עם ערוצים וקטגוריות. אפקטים לפי מקור הם low-pass, high-pass ו-reverb send; מצב random בוחר בין כמה קליפים כך שצליל חוזר מפסיק להיקרא כלולאה. Scrubbing מנגן שמע בזמן שאתם גוררים את ראש הניגון.

ה-Profiler#

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

הקלטה היא מפורשת, והיא מסתיימת ברשימת Issues במקום גרף לפרש: FPS נמוך, draw calls גבוה, משולשים גבוהים, זיכרון גבוה, כנגד קצב הפריימים שקבעתם כיעד.

בניית סצנה#

Entities#

חלון התצוגה של Engine, עם הגיזמו על ה-entity הנבחר

סצנה חדשה מגיעה עם Main Camera, Directional Light, Skybox ו-Ground Plane.

גרף הסצנה, עם ארבעת ה-entities שסצנה חדשה מתחילה איתם

מה שאפשר להוסיף: Empty, Cube, Sphere, Cylinder, Plane, Light, Camera, Script, Mesh, בתוספת שתי משפחות שמגיעות מחווטות מראש:

  • Characters: Third-Person, First-Person (FPS), Top-Down, Platformer, Basic.
  • Props: Pickup (ריפוי) ו-Hazard (נזק).

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

ה-Inspector#

טרנספורמציה (מיקום, סיבוב, קנה מידה), מתג Enabled, ו-components של ה-entity: נוספים, מוגדרים ומוסרים כאן, עם Add Script בתחתית. בחרו כמה entities וה-inspector עובר לעריכה קבוצתית, כך ששינוי שדה אחד נוחת על כולם.

הקונסולה#

לא רק לוג. היא מסננת לפי רמה (הכל, לוגים, מידע, אזהרה, שגיאה), מקשרת הודעה בחזרה ל-entity שהפיק אותה, ונושאת שורת ביטוי: הקלידו ביטוי, Enter מריץ אותו מול הסצנה החיה, מקשי חצים הולכים בהיסטוריה.

נתינת התנהגות#

שלושה מסלולים, והם מתקיימים יחד.

סקריפטים#

JavaScript עם hooks של מחזור חיים, ו- הפניה משלו:

function start() {}                     // once, when the entity starts
function update(dt) {}                  // every frame
function fixedUpdate(dt) {}             // fixed timestep, for physics
function onCollisionEnter(other) {}     // first frame of contact
function onCollisionStay(other) {}      // every frame while touching
function onCollisionExit(other) {}      // contact just ended
function onTriggerEnter(other) {}       // entered a trigger volume
function onTriggerExit(other) {}
function onMessage(msg, data, senderId) {}   // entity-to-entity messaging
function onAnimationEvent(name, data) {}
function onDestroy() {}

התנגשויות וטריגרים נורים גם בדו-ממד וגם בתלת-ממד, וכל צד מקבל את נורמל המגע שלו: other.contact.normal מצביע מה-entity האחר לכיוון הזה. זה מה שנותן לסקריפט להבדיל "נחתתי עליו" מ"הוא נחת עליי": stomp של פלטפורמר קורא other.contact.normal.y > 0.5.

עורך הסקריפטים#

F2, או Add Script על entity. עורך Monaco עם לשוניות, כמה סקריפטים פתוחים בבת אחת, כל אחד שמור במסד הנתונים של הדפדפן עצמו ולא בקובץ הפרויקט, כך שמאגר לא שמור שורד רענון.

חמישה ניבים, תוכנית אחת. מתג השפה מציע JavaScript, BASIC, Python, C# ו-Rust. מה שהוא עושה זה לא מה שהוא נראה: JavaScript הוא מקור האמת, וארבעת האחרים הם תצוגות מתורגמות מה-JS השמור. מעבר מ-Python ל-Rust לא מתרגם את ה-Python, הוא חוזר ל-JS שממנו נוצר ה-Python ומתרגם את זה. תרגום מרובה-קפיצות הוא מה שמשחית תוכנית, והעורך מסרב לעשות זאת.

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

קטגוריהתבניות
Basicsסקריפט ריק עם שלדי מחזור חיים
Movementסיבוב אוטומטי · WASD · תנועה תלת-ממדית מבוססת ציר · קפיצה עם פיזיקה וזיהוי קרקע · מעקב מצלמה מגוף שלישי
Gameplayאזור טריגר · פס בריאות עם נזק וריפוי · יוצר עצמים מתוזמן
AIסיור עם התראת קרבת שחקן
Advancedcutscene אסינכרוני בסגנון Verse · concurrency מובנה · בדיקת שטח API מלאה

הגדרות בקר הדמות המוכנות ו-props של מתחיל המשחק (pickup, hazard) מופיעים באותה רשימה, וזו הדרך המעשית להטיל בקר עובד על דמות מיובאת.

הרצה וניפוי. F5 מריץ, F9 קובע breakpoint. הדיבאגר עוצר בשורה, מדלג פריים בודד, ומדווח ערכים חיים דרך watch expressions. Script Lab מריץ תוכנית בלי entity מחובר בכלל, מחברת עבודה ל-API ולא component על אובייקט.

לצד הקוד: הפניית API, רשימת סמלים לקובץ הפתוח, וספריית snippets עם מועדפים ואחרונים. Ctrl+S שומר, Ctrl+F מוצא, Ctrl+H מחליף, והעורך מגיע עם שמונה ערכות נושא.

Blueprints והתנהגויות#

גרף חזותי, ספריית התנהגויות מוכנות, ומכונת מצבים שכבתית מעל ערימת ההתנהגויות.

הגרף נושא 267 צמתים בעשרים ושתיים קבוצות, Math, Scene, Entity, Animation, Flow Control, String, Events, Physics, UI, Array, Vector, Transform, Debug, Input, Utility, Game, Boolean, Camera, Tween, Variables, Audio ומשפחות ה-2D וה-3D. שלוש תכונות מפרידות ביניהם, והן מה שהגרף עשוי ממנו: 17 צמתי אירוע מתחילים ביצוע, 117 צמתים טהורים מחשבים ערך בלי אפקט צד ובלי פין ביצוע, ו-9 צמתים latent מסיימים מאוחר יותר, אלה מה שהופכים השהיה או tween לניתנים לביטוי בלי מכונת מצבים משלכם.

ארבעה כלים: בחירה V, הזזת תצוגה H, הערה C, reroute R, על קנבס שמתמזם מ-0.1× ל-3× עם מפה ממוזערת. משתנים מגיעים בשישה סוגים, בוליאני, מספר שלם, float, מחרוזת, vector3 ואובייקט. התיאור של כל צומת נמצא על ה-tooltip שלו, וזה המקום היחיד שספרייה בגודל הזה יכולה להסביר את עצמה בו.

מכונת המצבים#

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

שבעה תנאים, וכל אחד הוא שאלה על הסצנה: sees (יעד מתויג בטווח, אופציונלית בתוך זווית ובקו ראייה), lost (אין יעד N שניות), distance כנגד סף, health, message received, timer (זמן שהושקע במצב הנוכחי), ו-flag (ערך על הלוח המשותף). שני צירופים, and ו-or, שניהם ברשימה למרות ש-or כבר התקיים באופן משתמע, שני מעברים לאותו מצב הם or, אבל "הוא רואה אותי וגם עדיין יש לי בריאות" לא היה לו שום צורה.

⚠️ בריאות מושווית כשבר מתוך המקסימום, אף פעם לא כערך מוחלט. סף של "מתחת ל-30 HP" לא שורד מעבר איזון מחדש; "מתחת ל-0.3" כן.

בכניסה או ביציאה ממצב, ארבעה אפקטים: send הודעה, set מפתח על הלוח, play קליפ אנימציה, או ירי named effect. אף אחד מהם לא מזיז כלום, תנועה נשארת עם ההתנהגויות, והמכונה מחליטה איזו התנהגות פעילה.

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

BASIC#

מצב חלון התצוגה TXT הוא סביבת BASIC קלאסית עם תוכניות הדגמה מובנות, ולשפה יש הפניה משלה. זו שפה אמיתית כאן, לא צעצוע: מודולים מרובי קבצים (#INCLUDE), נומריקה מוקלדת (חתומה ולא חתומה 8/16/32/64-bit, float32 ו-float64), רשומות מקוננות, שיטות אובייקט עם SELF, references (REF/BYREF), TRY/CATCH/FINALLY מובנה, קומפילציה מותנית, קורוטינות, ידיות מוקלדות, וחישוב WebGPU עם storage buffers ו-WGSL גולמי.

OPTION EXPLICIT הוא opt-in; משתנים משתמעים קלאסיים נשארים ברירת המחדל כדי שתוכניות מיובאות עדיין ירוצו.

ניגון ומסירה#

Play#

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

Build#

Build לוקח סוג משחק (מזוהה מהסצנה, או נקבע ביד: sidescroller/platformer, גוף ראשון/שלישי, מבוסס טקסט) ויעד.

  • Web: WebGPU עם fallback ל-WebGL, WebXR אופציונלי (VR/AR), מזעור, מונה FPS, ואפשרות embed assets שמפיקה קובץ יחיד.
  • Desktop ו-mobile: בניות טבעיות. הסצנה מיוצאת כנתונים (scene.glb
    • scene.json) ומקומפלת דרך פרויקט Bevy (Rust) שנוצר; סקריפטים רצים שם ללא שינוי על סביבת ריצה מוטמעת של QuickJS.

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

בנייה טבעית מכילה רק את מה שהמייצא יודע לייצא. glTF לא לוכד shaders מותאמים אישית, thin instances, את השמיים הפרוצדורליים או עיבוד פוסט, כך שמערכת ריצה שלא הועברה לצד Bevy תיעדר מבנייה לשולחן עבודה או למובייל בעוד היא נראית מושלמת ברשת. בדקו בנייה טבעית לפני שאתם נסמכים עליה.

Multiplayer#

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

קבצים שהוא קורא וכותב#

פורמט טבעי.engine
ייבוא.glb, .gltf, .obj, .fbx, .png, .svg, .mp4, .webm, .mov, .scene
ייצואבנייה לרשת, בנייה טבעית לשולחן העבודה/למובייל, scene.glb + scene.json

שליחת עבודה לסטודיואים אחרים#

מקבל meshים מ-Sculpt, Retopo ו-Pigment, סצנות שלמות מ-Render, פיקסל ארט, אנימציות, ערכות חומרי PBR מ-Matter, ריגים דו-ממדיים, פרויקטי וידאו, תמונות, אמנות וקטורית, ואובייקטי Vectra.

מפיק ריגים דו-ממדיים.

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

קיצורים#

Cmd/Ctrl + K מגיע לפקודות של Engine עצמו מלוח הפקודות, לצד הגלובליות. ל-Engine יש גם פאנל קיצורי מקלדת ייעודי וניתן לחיפוש בהגדרות שלו; יש לו הרבה יותר ממה שהיה נכנס אל עמוד הקיצורים.

מגבלות ותקלות נפוצות#

  • חלון תצוגה ריק הוא בדרך כלל הדפדפן, לא הסצנה. Engine זקוק ל-WebGL 2; בדקו שהאצת חומרה פעילה.
  • Systems ו-Tools חולקים מגירה אחת. אם פאנל "נעלם", הוא כנראה בשני.
  • הקונסולה היא המקום הראשון להסתכל בו, לא האחרון: היא מקשרת שגיאות ל-entity שהעלה אותן.
  • component שנוסף במצב play אולי לא ישרוד עצירה. קראו את הבאנר שמופיע כשאתם עוצרים.
  • פיזיקה שונה בין דו-ממד לתלת-ממד בפותר שלה למרות שה-callbacks של הסקריפט זהים. מגע נח בדו-ממד מזוהה עם עור של 2 מ"מ, כי הפותר מביא את החדירה לאפס בדיוק לפני שהזיהוי רץ.