Engine
محرك الألعاب، شجرة المشهد، المكوّنات، البرمجة النصية، الفيزياء، خط أنابيب PBR، محررات العالم، وبناءات أصلية لسطح المكتب والجوّال.
في جملة واحدة#
محرك ألعاب كامل في المتصفح: ابنِ مشهدًا، امنحه سلوكًا، اضغط تشغيل، وصدّره إلى الويب أو إلى ملف تنفيذي أصلي لسطح المكتب والجوّال.
إنه أكبر استوديو في aukimi بفارق كبير. تُخطِّط هذه الصفحة له بالطريقة نفسها التي تعرضه بها الواجهة، حسب الدرج الذي تعيش فيه كل لوحة، بدلًا من سرد الميزات أبجديًا.
التخطيط#

| شريط القوائم | File · Edit · View · Windows · Run · Plugins |
| شريط الأدوات | اسم المشروع، التراجع/الإعادة، مفتاح وضع منفذ العرض (3D · 2.5D · 2D · TXT)، محدِّد المشهد، أزرار اللوحات الأربعة، FX Master، HUD، صندوق الدقة، أدوات التشغيل (تشغيل، إيقاف مؤقت، إيقاف) وBuild |
| يسار | شريط أيقونات، شجرة المشهد، قائمة، الصوت، وحدة التحكم، واللوحة التي يفتحها |
| الوسط | منفذ العرض، بشريط أدواته الخاص (نقل، تدوير، تحجيم، عالمي/محلي، شبكة، انجذاب، تأطير) ومحدِّد جودة |
| يمين | المفتش للكيان المحدد |
| الأسفل | Console وProfiler، جنبًا إلى جنب |
| شريط الحالة | الوضع، أبعاد منفذ العرض، عدد الكيانات، حالة الشبكة |
أزرار اللوحات الأربعة#

لا تتصرف جميعها بالطريقة نفسها، والفرق يستحق معرفته قبل أن تبحث عن شيء ما:
| الزر | السلوك |
|---|---|
| Systems | يفتح درجًا |
| Tools | يفتح الدرج نفسه، Systems وTools يغلق أحدهما الآخر |
| Assets | يبدّل رصيفًا (dock) دائمًا |
| Scripts | يفتح نافذة حوار (modal) |
يتشارك Systems وTools فتحة واحدة عن قصد؛ وُضعا جنبًا إلى جنب حتى يكون واضحًا أنهما يفعلان ذلك.
Systems#
الأنظمة الفرعية الخاصة بالمحرك: الأشياء التي يملكها المشهد، لا الأشياء التي تصنع بها.
| المجموعة | اللوحات |
|---|---|
| Plugins | متصفح الإضافات |
| Rendering | Rendering · Rendering Pipeline · Look Presets · Shader Lab · Render Style · Shadows · Mesh LOD · Post Process Volumes |
| Gameplay | Multiplayer room · Physics · AI & Navigation · Gameplay Zones |
| World | Scene Graph · Level Streaming · Baking · Light Probes · Decals |
Rendering#
يبدّل مفتاح FX Master في شريط الأدوات خط أنابيب المعالجة اللاحقة بأكمله تشغيلًا وإيقافًا بنقرة واحدة: أسرع طريقة لرؤية ما يكلّفك. فرديًا: bloom وdepth of field وSSR وSSAO وGTAO وSSGI وtemporal AA وFXAA وmotion blur وvolumetric fog وcontact shadows وcolour grading وfilm grain وchromatic aberration وvignette وtonemapping، إضافة إلى هندسة على طراز Nanite وحجب Hi-Z.
Look Presets هي تهيئات كاملة لما سبق. يغيّر Render Style السجل، أسلوبيًا بدلًا من فوتوغرافي. Shader Lab هو حيث تكتب مظلِّلك الخاص. Mesh LOD وPost Process Volumes هما الأمران اللذان يبرران تكلفتهما في مشهد كبير: مستوى تفصيل لكل mesh، ومعالجة لاحقة لا تُطبَّق إلا داخل حجم (volume).
محرك العرض هو Babylon.js. يبدأ بـWebGL وينتقل من تلقاء نفسه إلى WebGPU عندما يملكه المتصفح، ويعود إلى الخلف تلقائيًا إن فشل ذلك.
أنظمة Gameplay#
يغطي Physics كلًا من الحلّال الثلاثي الأبعاد (Havok) والحلّال الثنائي الأبعاد. AI & Navigation هو الـnavmesh والعملاء (agents) عليه. Gameplay Zones هي أحجام إطلاق (trigger volumes) مرفق بها سلوك. يصل Multiplayer room المشهد بخادم Colyseus (انظر أدناه).
أنظمة World#
يحمّل Level Streaming أجزاء من المستوى ويفرّغها أثناء تحرك اللاعب. تحسب Baking الإضاءة مسبقًا؛ وتلتقط Light Probes الضوء غير المباشر والانعكاسات عند نقاط في الفضاء. تُسقط Decals تفاصيل على الأسطح دون إضافة هندسة.
Tools#
الأشياء التي تصنع بها.
| المجموعة | اللوحات |
|---|---|
| Editors | Scripts · Blueprint Editor · UI Editor · Tilemap |
| World | Sky Studio · Terrain · Water · Tree Generator · Plant Generator · Rock Generator · Kitbash |
| Gameplay | Inventory · Data tables · Dialogue Trees |
| Animation | Timeline · Cinematic Sequencer · Camera Tools |
| Audio | Audio Manager |
| Debug | Profiler |
مولّدات World#
التضاريس، الماء، السماء وأربعة مولّدات محتوى: الأشجار، النباتات، الصخور وقطع kitbash. لها فصل خاص بها أدناه.
تأليف Gameplay#
Inventory وData tables (Tools → Data) وDialogue Trees هي المحررات الثلاثة التي تتيح للعبة أن يكون لها محتوى دون أن يعيش ذلك المحتوى في الكود بالتفصيل أدناه.
Animation#
Timeline لتحريك الكيانات، وCinematic Sequencer للقطات، وCamera Tools للتأطير. راجع Animation and camera.
محررات العالم#
سبع لوحات تحت Tools → World. إنها الطريقة السريعة لملء مشهد، وسبب ألا يبدأ مستوى بجلسة نمذجة.
Terrain#
يمكن أن يحمل مشهد عدة تضاريس؛ كل واحدة صف في قائمة Terrains وتُنشأ بإحدى ثلاث دقات: 128² (سريعة)، 256² (متوازنة) أو 512² (مفصَّلة).
تملك اللوحة عشرة أوضاع، ويتشاركون شيئًا واحدًا: القناع المرسوم في Masks يقيّد كل واحد منها.
| الوضع | ماذا يفعل |
|---|---|
| Sculpt | سبع عشرة فرشاة على حقل الارتفاع |
| Paint | حتى ثماني طبقات نسيج، عبر splatmap اثنين |
| Generate | ضوضاء، تنسيج تلقائي، واستيراد ارتفاع من العالم الحقيقي |
| Sketch | ارسم سلاسل جبال ووديانًا، وركِّب تضاريس تطابقها |
| Masks | تقييد كل وضع آخر بجزء من السطح |
| Water | مستوى سطح البحر، والاختيار بين ماء التضاريس ومحيط FFT |
| Paths | طريق بيزيه مطبوخ (baked) في الأرض |
| Vegetation | تناثر بالفرشاة أو بقواعد |
| SDF | تضاريس raymarched، معروضة لا مُشكَّلة كـmesh |
| Biomes | تربة، نباتات، أشجار وصخور في مرور واحد |
Sculpt. Raise بـ1، Lower بـ2، Smooth بـ3، Flatten بـ4، Pinch بـ5، Inflate بـ6، Noise بـ7، Sharpen بـ8، Stamp بـ9، Terrace بـ0، Erode بـE، Fill بـF، Clone بـC (نقرة Alt تضبط المصدر)، Blur بـB، Ramp بـR، إضافة إلى أداتَي الماء: River يرسم مجرى، وLake يملأ عند نقطة.
تملك الفرشاة نفسها ديناميكيات: منحنى الضغط، الفأرة الكسولة (lazy mouse)، التلاشي (falloff)، التناظر، النمط، والاهتزاز (jitter) على كل من الحجم والقوة. تحمل Stamp ستة أشكال: فوهة بركان، قمة جبل، هضبة، وادي نهر، قبة، تل ضوضاء. يأتي التآكل بشكلين: فرشاة E محلية، بينما تُشغِّل Adjustments تآكلًا مائيًا وحراريًا وريحيًا فوق التضاريس بأكملها.
Paint. ثماني طبقات، لأن splatmap اثنين بصيغة RGBA يحملان أربع قنوات لكل واحد. مكتبة المواد مرتبة حسب الفئة: عشب، تراب، غابة، صخور، طرق وأسطح، منحدرات، رمل، ثلج، بركاني، أراضٍ رطبة، خيالي، وفئتك الخاصة، وتحمل كل طبقة مقياس UV وإزاحة (displacement) وخريطة تفاصيل ونقشًا سطحيًا (قوة النتوء وعمق parallax). Break texture tiling (cell bombing) هو الإعداد الذي يمنع نسيج أرض متكرر من أن يُقرأ كشبكة.
يبني Generate من الضوضاء، ثم تُسنِد Generate Textures المواد حسب الارتفاع والانحدار، مع تفاوت ظل شمالي/جنوبي وشواطئ رملية أو حصوية حيث يوجد ماء. يستورد Real World بلاطات ارتفاع عامة من NASA/USGS: اختر معلمًا أو اكتب إحداثيات، اختر مستوى التكبير، وتُبلغ اللوحة عن نطاق الارتفاع الذي أحضرته.
Sketch هي الطريقة الأخرى للدخول. ارسم ضربات سلاسل ووديان على خريطة ثنائية الأبعاد، اختر حتى ثلاث مناظر طبيعية مصدرية حقيقية، وتُركَّب التضاريس لتطابق الرسم، ممزوجة اختياريًا بما هو موجود بالفعل، ومنسَّجة ومتآكلة تلقائيًا في المرور نفسه.
تُرسَم Masks بفرشاة ثم تُعدَّل ككل: مسح، عكس، تمويه، توسيع، تقليص. تشتق الأقنعة الذكية (smart masks) قناعًا من التضاريس نفسها، حسب الارتفاع، أو الانحدار، أو الطبقة، أو التجويف.
Paths. انقر لإسقاط نقاط تحكم ويمر منحنى ناعم عبرها؛ اسحب النقاط الكهرمانية لتحريكها، والمقابض السماوية لثني المنحنى. Bake Path يسطِّح الأرض تحته، يرسم النسيج، ويرفع الجسور الترابية (embankments).
لـVegetation نصفان. تضع الفرشاة النُّسَخ وتزيلها يدويًا؛ وتضعها قواعد التناثر (scatter rules) حسب الشرط، أوزان الطبقة، البذرة (seed)، الحد الأدنى/الأقصى للمقياس، ونطاق الارتفاع والانحدار الذي يقبله كل أصل. يتلاشى العشب والزهور بعد مسافة رسم قابلة للضبط، ويحوّل Export to Scene النُّسَخ إلى كائنات مشهد.
Biomes هي نسخة النقرة الواحدة من كل ما سبق: اختر بيئة أحيائية (biome)، حدِّد الفئات التي تريدها (تربة، أشجار، نباتات وعشب، زهور، طحالب قرب الماء، صخور)، اضبط كثافة، ويرسم Apply Biome الأرض وينثر كل شيء، مُبلِّغًا عن عدد النُّسَخ التي وضعها من كل نوع. يمزج تنوّع العمر (age variety) للأشجار بين الشتلات والأشجار العتيقة بدلًا من ختم الشجرة نفسها في كل مكان، ويدمج ground blend (RVT) قاعدة كل صخرة في لون التضاريس تحتها.
SDF محرك عرض مختلف، لا أداة مختلفة: تُعرَض التضاريس بـraymarching من حقل مسافة، وتُشكَّل بـoctaves وlacunarity وpersistence، وتُنسَّج بـgrass/rock/snow بخط ثلج وعتبة انحدار، ولها ظلالها الناعمة وambient occlusion والضباب الخاصان بها.
تملك التضاريس الكبيرة نظام LOD بهندسة skirt (وهي ما يغلق الفجوات بين المستويات)، وانتقالات مستوى ناعمة، وfrustum culling، وطبقة إحصاءات علوية. تُستورَد وتُصدَّر خرائط الارتفاع (heightmaps) كـPNG بعمق 16 بت أو 8 بت أو RAW 16-bit؛ وsplatmaps كصورة RGBA واحدة أو ملف واحد لكل طبقة؛ والتضاريس بأكملها، أو إعداداتها فقط، كإعداد مسبق.
Sky Studio#
الغلاف الجوي. أربعة أنواع سماء: صلب، تدرّج، HDRI، وغلاف جوي فيزيائي بتشتت Rayleigh وMie، وامتصاص Mie، والأوزون، وانعكاسية الأرض (albedo)، والعكارة (turbidity)، ونصف قطر الكوكب وسماكة الغلاف الجوي.
يتوقف كل شيء على وقت اليوم، الذي يمكن أن يدور تلقائيًا: الشمس بالارتفاع والسمت والشدة، بشدة ظل خاصة بها؛ والقمر بالطور؛ والنجوم بالتلألؤ؛ وشفق قطبي (aurora). تملك الغيوم الحجمية (volumetric clouds) سماكة وتآكلًا ومقياس ضوضاء وتحوير curl، وضوءًا عبر الامتصاص والتشتت والإضاءة المحيطة وحد (term) بودري؛ وcirrus وBelt of Venus منفصلان. المنظور الجوي (aerial perspective) هو الضباب الذي يزداد سماكة مع المسافة ويُذيب الهندسة البعيدة في الأفق، وهو الإعداد الذي يجعل منظرًا طبيعيًا يُقرأ كبيرًا.
عشرة إعدادات مسبقة للانطلاق منها: يوم صافٍ، فجر، غروب، غسق، ليل، غائم، عاصف، صحراوي، قطبي وفضاء.
Water#
تبويبان: Ocean (FFT) للبحر المفتوح، وShore & lakes لكل شيء آخر.
⚠️ يُنشَأ الماء في محرر Terrain: أدوات النهر والبحيرة، أو Show Water، ويُضبَط هنا. فتح هذه اللوحة على مشهد بلا ماء يعطيك إعدادات ليس لها ما تُطبَّق عليه.
يحمل ماء الشاطئ لونًا وعتامة وقوة موجة وسرعة وتلاطمًا (choppiness) وعرض رغوة وFresnel، مع انعكاسات في مساحة الشاشة وتمويه انكسار. تحته المظلِّل WGSL نفسه: مقياسا normal بمُدد تمرير وسرعات خاصة بهما، عتبة الرغوة ونعومتها، قوة الانكسار ومعامل الانكسار، والضوء داخل الماء: الامتصاص والعكارة والتشتت والشفافية.
Tree Generator#
وضعان، Tree وTrunk. الشجرة نفضية أو دائمة الخضرة، ولها عمر من شتلة إلى عتيقة، ويمكن أن تكون حية، ميتة، جذعًا يابسًا (snag)، أو جذعًا ساقطًا. كل شيء مبذور (seeded)، لذا فإن Randomize seed هي أسرع طريقة للحصول على شجرة مختلفة بالطابع نفسه.
الشكل لكل مستوى فرع: الأبناء، الطول، نصف القطر، التسنّن (taper)، التعقّد (gnarliness)، الالتواء، الأقسام، الشرائح، الزاوية وارتفاع البداية، إضافة إلى تفاوت طبيعي، والانتحاء الضوئي (phototropism) والانتحاء الأرضي (gravitropism): الاثنان اللذان يجعلان الشجرة تميل نحو الضوء وتتدلى تحت وزنها، وقوة عامة بقوتها الخاصة. القاعدة لها توسّع الجذور (root flare) (فصوص وارتفاع) ودعامات (buttress).
الأوراق billboards، أحادية أو ثنائية الجانب، بعدد وحجم وزاوية وتفاوت وتكتّل (clump) وتجعّد (curl) وتدلٍّ (droop) ولمعان (sheen) وnormals مدوَّرة. تأتي اللحاء (bark) بستة أنماط: مضلَّع (ridged) وaspen وpine وbirch وناعم وpalm، مع نقش وطحلب وقاعدة رطبة وتبييض شمسي وambient occlusion للمظلة وتحوّل خريفي. تبدّل الفصول الأربعة المظهر بأكمله دفعة واحدة.
تنثر Forest كثيرًا دفعة واحدة: العدد، نصف قطر الانتشار، تفاوت المقياس، ومزيج عمري (فردي، طبيعي، شاب، عتيق، متساوٍ). يضع Add age progression كل مراحل الحياة الخمس في صف، وهي أسرع طريقة للحكم عليها جنبًا إلى جنب. تخرج الشجرة ككيان مشهد أو كـGLB، ويمكن حفظ أي إعداد كإعداد مسبق.
Plant Generator#
خمسة أنواع: زهرة، عنقود، عشب، سرخس، حشيش، تتشارك جذعًا (العدد، الارتفاع، السماكة، الانحناء، اللون) وأوراقًا (العدد، الحجم، العرض، الزاوية). يضيف السرخس أزواج الوريقات (leaflet)، وامتداد الوريقة، وقوس السعفة (frond arch)؛ ويضيف الحشيش عدد النصل (blade) وقوسه.
الزهرة اختيارية على أي منها: البتلات، صفوف البتلات، الطول، العرض، التجعّد، حدة الطرف، التفتّح، حجم المركز، وثلاثة ألوان: البتلة، طرف البتلة والمركز، بشفافية وroughness لكيفية مرور الضوء عبر الورقة. أضف واحدة إلى المشهد، انثر كثيرًا، أو صدِّر GLB.
Rock Generator#
ثلاثة أنواع: rock وstone وcliff، بثلاثة أساليب: واقعي، توون (toon)، أو low poly بحدّ خارجي.
الشكل ضوضاء فوق كرة: المقياس، القوة، octaves، persistence، التحوير وخيار ridged، إضافة إلى الطبقات (strata) بتردد خاص بها وقطوع الأوجه (facet cuts) بعمق وحدة لصخر زاوي. يحدد نصف القطر والتفصيل والتسطيح وتفاوت الشكل والقاعدة المسطحة الشكل الخارجي، وتحرّك أربعة إعدادات تآكل مسبقة، fresh وweathered وnatural وeroded، كل ذلك دفعة واحدة.
السطح له تفاوت لوني، عروق معدنية، أشن وطحلب، نسيج تفاصيل بتكرار وقوة، مزج triplanar ونقش parallax. يستخدم مادة Stone مُرفَقة افتراضيًا؛ أرسل مادة من Matter إلى Engine لتجاوزها.
Kitbash، المكتبة نفسها كما في Sculpt#
يُشارَك Kitbash مع Sculpt: تقرأ هذه اللوحة وEdit Forge الخاصة بـSculpt مكتبة واحدة. قطعة بُنيت هناك توضع هنا، وقطعة رُسمت هنا يمكن حفظها إليها مرة أخرى.
ما يخزّنه المشهد هو القطعة وأبعادها، لا رؤوسها (vertices): وهذا سبب أن مبنى مبنيًا بـkitbash يكلّف تقريبًا لا شيء في الملف ويمكن تحديثه لاحقًا من مصدره.
سلِّح قطعة من الكتالوج وكل نقرة يسرى تضعها. ثلاثة أوضاع انجذاب تحدد أين تحطّ: on terrain (تتبع القطع ارتفاع الأرض تحتها)، on water (يستقر مستوى البناء عند مستوى الماء)، وَsnap to sockets، صوّب نقطة اتصال على قطعة موضوعة فتدور القطعة الجديدة لتلتقي بها. تنمو السلسلة من طرفها الحر، وتخرج الفتحات (sockets) المشغولة من المرشحين، وكل نقرة خطوة تراجع مستقلة بذاتها. يبقى Ctrl/Cmd محجوزًا للتحديد وAlt للتدوير. تحتفظ المجموعات (collections) بمصدرها ونسختها، بحيث يمكن تحديث نسخة عند تغيّر الأصل.
المحررات الأخرى#
تملأ محررات العالم مشهدًا؛ وهذه تمنحه واجهة، وخريطة، وجداول محتواه، والأدوات للتحقق مما يكلّفه.
محرر 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؛ والمحدِّدات (selectors) هي #name لعنصر واحد، .type لنوع (.text، .panel) وَ* لكل شيء.
تبويب Script هو الطريقة الأخرى لبناء واحدة: واجهة ui.* البرمجية، createText وcreatePanel وcreateProgress وcreateButton، بطريقتين لتشغيله. ينفّذه Build Layout وقت التصميم ويترك لك عناصر حقيقية لتحريكها يدويًا؛ ويشغّله Run Live في اللعبة.
اتصالان للخارج: يُفتَح العمل الفني لـHUD في Inkwell أو Vectra ويُربَط مرة أخرى بدلًا من أن يُنسَخ، ويمكن استيراد مستند Vectra كعناصر HUD. عنصر الخريطة المصغّرة (minimap) شيء قائم بذاته، بمدى وشبكة وعلامات للاعب والأعداء والحلفاء والعناصر والأهداف.
محرر Tilemap#
إحدى عشرة أداة: فرشاة، ممحاة، تعبئة، مستطيل، تحديد، قطّارة ألوان، ختم (stamp)، autotile، prop، منطقة، ومسار، على أربعة إسقاطات خريطة: orthogonal وisometric وstaggered isometric وhexagonal.
يأتي Autotiling بأربعة قوالب، والرقم في كل اسم هو عدد البلاطات التي يتوقعها: Blob 47 (زوايا وحواف كاملة)، Wang 16 (قائم على الحواف)، Simple 4 (NSEW)، وَRPG Maker A2 (48 بلاطة، متوافقة مع الخرائط المؤلَّفة هناك).
تقع طبقتان فوق البلاطات نفسها. تطلي Zones معنى لعبيًا: قابل للبناء، ماء، غابة، طريق، مزرعة، سكني، تجاري، محظور، وتضع props كائنات حسب الفئة: أشجار، صخور، مبانٍ، نباتات، ماء، مسارات. تعيش الخرائط في قاعدة بيانات المتصفح الخاصة، بحيث تنجو خريطة غير محفوظة من إعادة التحميل.
Inventory وجداول البيانات والحوار#
المحررات الثلاثة التي تتيح للعبة أن يكون لها محتوى دون أن يعيش ذلك المحتوى في الكود.
تعدّل Inventory كتالوجًا وتطبّقه على المشهد. يحمل العنصر إجراءات، والإجراء مُحفِّز (trigger): use وequip وunequip، إضافة إلى أحد ثمانية أنواع: message وheal وdamage وgrant وremove وevent وtoast وscene. تملك اللوحة نفسها ثلاثة تخطيطات (grid وlist وcompact)، وثلاثة إعدادات مظهر مسبقة (graphite وmidnight وwarm)، وأربع فتحات بصرية: background وslot وequipment وtooltip، تُفتَح في وحدة أخرى لإعادة رسم صحيحة.
Data tables مصنَّفة بأنواع: العمود إما text أو number أو bool أو ref. تدخل CSV وتخرج. يمرّ كل تعديل عبر دوال نقية (pure functions)، وهذا ما يبقي الجدول الذي يكتبه التصدير مطابقًا للجدول الذي يقرؤه البناء.
Dialogue trees عقد بمتحدث وسطر. تستمر العقدة إما إلى next واحد، أو تتفرّع إلى choices، لكل واحد نصه ووجهته الخاصة، ومفتاح التفرّع هو القرار البنيوي الوحيد في المحرر.
Animation and camera#
يبني Cinematic Sequencer تسلسلات بمدة وعلامة تكرار (loop)، مسار واحد لكل كيان، وإطارات مفتاحية تُلتَقط عند رأس التشغيل (playhead)، ويأخذ Add Key القيمة الحالية للكيان بدلًا من أن يطلب منك كتابتها. يُظهر محرر الرسم البياني تحته الزمن مقابل التقدّم، بمقابض دائرية للتسهيل (easing): الميل هو السرعة. للقطات مددها الخاصة، ويتوفر تأطير Cinemascope (1.422:1) لصندوق الرسائل (letterbox).
تغطي Camera Tools FOV، الموضع، الهدف، الوضع والسرعة، إضافة إلى bookmarks لوجهات النظر التي تعود إليها مرارًا، وطبقات الكاميرا.
Audio#
يحمل Audio Manager أحداث صوت، ومسارات، ومازج (mixer) بقنوات وفئات. تأثيرات كل مصدر هي low-pass وhigh-pass وreverb send؛ ويختار وضع random بين عدة مقاطع بحيث يتوقف صوت متكرر عن أن يُقرأ كحلقة. يشغّل التمرير (scrubbing) الصوت أثناء سحبك لرأس التشغيل.
محلِّل الأداء (Profiler)#
تفصيل للإطار، لا عدّاد إطارات: عرض الكاميرا، تقييم الـmesh، الجسيمات، السبرايتات وتصريف المظلِّلات (shader compilation)، كل واحد موسوم بـreal أو estimated، بحيث لا يُخلَط أبدًا رقم أتى من قياس برقم أتى من نموذج. عدادات بجانبه: الـmesh والـmesh النشطة، الأضواء، الكاميرات، أجسام الفيزياء.
التسجيل صريح، وينتهي بقائمة Issues بدلًا من رسم بياني يجب تفسيره: low FPS وhigh draw calls وhigh triangles وhigh memory، مقابل معدل الإطارات المستهدف الذي ضبطته.
بناء مشهد#
Entities#

يصل مشهد جديد بـMain Camera وDirectional Light وSkybox وGround Plane.

ما يمكنك إضافته: Empty وCube وSphere وCylinder وPlane وLight وCamera وScript وMesh، إضافة إلى عائلتين تصلان موصولتين مسبقًا:
- Characters: Third-Person وFirst-Person (FPS) وTop-Down وPlatformer وBasic.
- Props: Pickup (شفاء) وHazard (ضرر).
تبحث شجرة المشهد، وترشِّح حسب النوع، وتضيف أو تكرّر أو تحذف؛ وتتداخل الكيانات، وتغيير الأصل الهرمي (reparenting) هو سحبة واحدة. للوضع انجذاب وفرشاة تناثر (scatter brush) لملء الأرض بسرعة.
المفتش#
Transform (الموضع، الدوران، الحجم)، ومفتاح Enabled، ومكوّنات (components) الكيان: تُضاف وتُضبَط وتُزال هنا، مع Add Script في الأسفل. حدِّد عدة كيانات فيتحول المفتش إلى تعديل دفعي، بحيث يصل تغيير حقل واحد إلى جميعها.
وحدة التحكم (Console)#
ليست مجرد سجل. تُرشِّح حسب المستوى (all وlogs وinfo وwarning وerror)، وتربط رسالة بالكيان الذي أنتجها، وتحمل موجِّه تعبير (expression prompt): اكتب تعبيرًا، ويشغِّله Enter على المشهد الحي، وتتنقل مفاتيح الأسهم في السجل.
منحه سلوكًا#
ثلاثة مسارات، وهي تتعايش.
Scripts#
JavaScript بخطافات دورة حياة، ولها مرجع خاص بها:
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() {}
تُطلَق الاصطدامات والمُحفِّزات (triggers) في كل من 2D وَ3D، ويستقبل كل جانب normal تماسه الخاص: يشير other.contact.normal من الكيان الآخر نحو هذا الكيان. هذا ما يتيح لسكريبت أن يميّز "لقد هبطتُ عليه" عن "لقد هبط عليّ": يقرأ دوس منصة (platformer stomp) القيمة other.contact.normal.y > 0.5.
محرر السكريبت#
F2، أو Add Script على كيان. محرر Monaco بتبويبات، عدة سكريبتات مفتوحة في آن واحد، كل واحد محفوظ في قاعدة بيانات المتصفح الخاصة بدلًا من ملف المشروع، بحيث تنجو ذاكرة مؤقتة (buffer) غير محفوظة من إعادة التحميل.
خمس لهجات، برنامج واحد. يقدّم مفتاح اللغة JavaScript وBASIC وPython وC# وRust. ما يفعله ليس ما يبدو عليه: JavaScript هو مصدر الحقيقة، والأربعة الأخرى عروض (views) مُحوَّلة (transpiled) من JS المخزَّن. التبديل من Python إلى Rust لا يترجم Python، بل يعود إلى JS الذي وُلِّدت منه Python ويترجم ذلك. الترجمة متعددة القفزات هي ما يفسد البرنامج، ويرفض المحرر فعل ذلك.
ثلاثة عشر قالبًا (templates) في خمس فئات، كل واحد موسوم بمستوى الصعوبة:
| الفئة | القوالب |
|---|---|
| Basics | سكريبت فارغ بمنبهات (stubs) دورة حياة |
| Movement | auto-rotate · WASD · حركة ثلاثية أبعاد قائمة على المحاور · قفزة فيزيائية بكشف أرض · متابعة كاميرا الشخص الثالث |
| Gameplay | منطقة مُحفِّز · شريط صحة بضرر وشفاء · مولِّد (spawner) موقوت |
| AI | دورية (patrol) بتنبيه قرب اللاعب |
| Advanced | مشهد سينمائي غير متزامن على طراز Verse · تزامن (concurrency) هيكلي · اختبار سطح API كامل |
تظهر إعدادات متحكم الشخصية المسبقة وأدوات بدء اللعبة (pickup وhazard) في القائمة نفسها، وهذه هي الطريقة العملية لوضع متحكم عامل على شخصية مستوردة.
التشغيل وتنقيح الأخطاء. يشغّل F5، ويضبط F9 نقطة توقف (breakpoint). يتوقف المُنقِّح (debugger) عند سطر، يخطو إطارًا واحدًا، ويُبلغ عن قيم حية عبر تعبيرات المراقبة (watch expressions). يشغّل Script Lab برنامجًا دون أي كيان مرفق على الإطلاق، مسودة (scratchpad) للواجهة البرمجية بدلًا من مكوّن على كائن.
إلى جانب الكود: مرجع API، قائمة رموز للملف المفتوح، ومكتبة مقتطفات (snippets) بالمفضّلة والأخيرة. يحفظ Ctrl+S، ويبحث Ctrl+F، ويستبدل Ctrl+H، ويأتي المحرر بثمانية سمات (themes).
Blueprints والسلوكيات#
رسم بياني مرئي، مكتبة سلوكيات جاهزة، وآلة حالة (state machine) موضوعة فوق مكدس السلوكيات.
يحمل الرسم البياني 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 عقدة أحداث (event nodes) تبدأ التنفيذ، 117 عقدة نقية (pure nodes) تحسب قيمة دون أثر جانبي ودون سنّ تنفيذ (execution pin)، وَ9 عقد كامنة (latent nodes) تنتهي لاحقًا: وهذه هي التي تجعل تأخيرًا أو tween قابلًا للتعبير عنه دون آلة حالة خاصة بك.
أربع أدوات: تحديد بـV، تحريك بـH، تعليق بـC، إعادة توجيه بـR، فوق لوحة تكبّر من 0.1× إلى 3× بخريطة مصغّرة. تأتي المتغيرات بستة أنواع: boolean وinteger وfloat وstring وvector3 وobject. وصف كل عقدة موجود على تلميحها (tooltip)، وهو المكان الوحيد الذي تستطيع فيه مكتبة بهذا الحجم أن تشرح نفسها.
آلة الحالة#
لوحتها الخاصة، وعن قصد ليست لوحة Animator: شروط Animator هي تعداد (enum) مسطَّح بواجهة مكتوبة يدويًا لكل حالة، بينما هذه مُهيكَلة وتتحدث عن العالم.
سبعة شروط، وكل واحد سؤال عن المشهد: sees (هدف موسوم في المدى، اختياريًا ضمن زاوية وفي خط رؤية)، lost (لا هدف لمدة N ثوانٍ)، distance مقابل عتبة، health، message received، timer (الوقت المُمضى في الحالة الحالية)، وَflag (قيمة على السبورة المشتركة blackboard). مُركِّبان (combinators)، and وَor، مذكوران كلاهما رغم أن or موجودة ضمنيًا بالفعل، انتقالان إلى الحالة نفسها هما or، لكن "يراني AND لا تزال لدي صحة" لم يكن له أي شكل على الإطلاق.
⚠️ تُقارَن الصحة كنسبة من الحد الأقصى، لا كقيمة مطلقة أبدًا. عتبة "أقل من 30 HP" لا تنجو من مرور إعادة موازنة؛ بينما "أقل من 0.3" تنجو.
عند الدخول إلى حالة أو مغادرتها، أربعة تأثيرات: send رسالة، set مفتاح blackboard، play مقطع رسوم متحركة، أو إطلاق named effect. لا يحرّك أي منها شيئًا، الحركة تبقى مع السلوكيات، وتقرر الآلة أي سلوك نشط.
يمكن أن يبدأ انتقال من *، أي أي حالة. يعيد المُدقِّق (validator) قائمة المشاكل بدلًا من التوقف عند أول واحدة، بحيث تُرسَم آلة نصف مكتوبة وترى كل ما هو خاطئ دفعة واحدة. مواضع العقد جزء من البيانات: رسم بياني تخطيطه يعيش خارج المشهد يعود مبعثرًا للشخص التالي الذي يفتحه.
BASIC#
وضع منفذ العرض TXT بيئة BASIC كلاسيكية ببرامج عرض توضيحي مرفَقة، وللغة مرجع خاص بها. إنها لغة حقيقية هنا، لا لعبة: وحدات متعددة الملفات (#INCLUDE)، أعداد مُصنَّفة بالنوع (موقّعة وغير موقّعة 8/16/32/64 بت، float32 وfloat64)، سجلات متداخلة، طرق كائن بـSELF، مراجع (REF/BYREF)، TRY/CATCH/FINALLY مُهيكَلة، تصريف شرطي، coroutines، مقابض (handles) مُصنَّفة بالنوع، وَWebGPU compute بمخازن تخزين (storage buffers) وWGSL خام.
OPTION EXPLICIT اختياري (opt-in)؛ تبقى المتغيرات الضمنية الكلاسيكية هي الافتراضي بحيث تستمر البرامج المستوردة بالعمل.
التشغيل والشحن#
Play#
Play وPause وStop. عند الإيقاف، تُبلغ لافتة عن ما غيّرته الجلسة، بحيث لا يُحتفَظ بتعديل وضع اللعب أو يُفقَد بصمت أبدًا. يمكن تسجيل الجلسات وإعادة تشغيلها في تقرير خلل، وتتيح إشارات مرجعية للسيناريو (scenario bookmarks) لاختبار لعب أن يبدأ من منتصف مستوى.
Build#
يأخذ Build نوع لعبة (يُكتشَف من المشهد، أو يُضبَط يدويًا: sidescroller/platformer، first/third person، text-based) وهدفًا.
- Web: WebGPU مع احتياطي WebGL، WebXR اختياري (VR/AR)، تصغير (minification)، عدّاد FPS، وخيار embed assets الذي ينتج ملفًا واحدًا.
- Desktop وmobile: بناءات أصلية. يُصدَّر المشهد كبيانات (
scene.glb+scene.json) ويُجمَّع عبر مشروع Bevy (Rust) مُولَّد؛ وتعمل السكريبتات دون تغيير هناك على بيئة تشغيل QuickJS مدمجة.
الضغط قابل للضبط لكل محور: الخوارزمية، النُّسُج، الـmesh، بإعداد جودة مسبق يربطها معًا. تُحفَظ البناءات في سجل بأحجامها (الأصلي مقابل المضغوط) ويمكن تنزيلها مرة أخرى لاحقًا.
لا يحتوي بناء أصلي إلا على ما يعرف المُصدِّر كيف يصدّره. لا يلتقط glTF المظلِّلات المخصصة، ولا النُّسَخ الرقيقة (thin instances)، ولا السماء الإجرائية، ولا المعالجة اللاحقة، لذا فإن نظام تشغيل لم يُنقَل إلى جانب Bevy سيكون غائبًا عن بناء لسطح المكتب أو الجوّال بينما يبدو مثاليًا على الويب. تحقق من بناء أصلي قبل الاعتماد عليه.
Multiplayer#
تصل لوحة Multiplayer room مشهدًا بخادم لعبة 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 درجًا واحدًا. إذا "اختفت" لوحة، فمن المرجح أنها في الآخر.
- وحدة التحكم هي أول مكان يُنظَر فيه، لا الأخير: تربط الأخطاء بالكيان الذي أطلقها.
- قد لا ينجو مكوّن أُضيف في وضع اللعب من الإيقاف. اقرأ اللافتة التي تظهر عند الإيقاف.
- تختلف الفيزياء بين 2D وَ3D في حلّالها رغم أن استدعاءات السكريبت (callbacks) نفسها. يُكتشَف تماس ساكن في 2D بغلاف (skin) بمقدار 2 مم، لأن الحلّال يجعل الاختراق صفرًا تمامًا قبل تشغيل الاكتشاف.