gohud

واجهة اللعبة كلها يقودها مورد واحد

gohud طقم HUD وواجهات لـ Godot 4.6 وما بعده. النوافذ العائمة والأوراق السفلية ومربعات الحوار والنماذج وأشرطة الإشعار والعلامات الإرشادية وأشرطة HUD والخانات السريعة وعصا التوجيه الافتراضية كلها تعمل بـ سمة واحدة ومجموعة أيقونات واحدة قابلة للاستبدال، وتتكفّل نيابة عنك بالمنطقة الآمنة ولوحة المفاتيح الافتراضية واتجاه RTL ومساحات اللمس. ستة أنماط جاهزة — الافتراضي والخيال العلمي والعصور الوسطى، لكلٍّ منها داكن وفاتح — تغيّر الألوان والأشكال بسطر واحد.

Godot 4.6+ v1.0.1 GDScript خالص لا حاجة إلى autoload MIT 6 أنماط جاهزة 21 لغة 100 أيقونة مضمّنة

كيف يبدو داخل لعبة

نمطا العصور الوسطى والخيال العلمي — صفحات الشخصية والحقائب والمهام؛ النماذج والشبكات وبطاقات السؤال؛ اللوحات المشطوفة وأدوات التحكم باللمس. تبديل النمط الجاهز سطر برمجي واحد.

سمة العصور الوسطى في gohud — صفحة شخصية فيها أشرطة صحة ومانا وقدرة تحمّل، وحقيبة من الخانات السريعة، وسجل مهام داخل إطارات ذهبية مطروقة
العصور الوسطى — الشخصية والحقيبة والمهام
سمة العصور الوسطى في gohud — لوحة إدخال فيها حقل اسم ومفتاح تبديل ومربعات اختيار وشريط مستوى صوت، وشبكة بلاطات، وبطاقة دعوة إلى الفريق فيها قبول ورفض
العصور الوسطى — النماذج والشبكات وبطاقات السؤال
سمة الخيال العلمي في gohud — لوحة تحكم باللمس بزوايا مشطوفة فيها عصا توجيه سداسية، ومبدّل بين الوضع الثابت والمتابع والنسبي، وأزرار حركة دائرية
الخيال العلمي — لوحات حادة الزوايا وتحكّم باللمس

الأنماط الجاهزة الستة وكيف تبدّل بينها ←

ما الذي يتكفّل به بدلًا منك

أكثر ما يستهلك الوقت في واجهات الألعاب ليس شكل الزر — بل كل ما ينحرف بين جهاز وآخر. gohud يعالج هذا الانحراف في مكان واحد.

كل مقاس توكن له اسم

المسافات والزوايا وأحجام النص تُطلب بأسمائها لا تُكتب أرقامًا. بدّل السمة فتتحرك الشاشة كلها معها.

الحجم المرئي ≠ الحجم الملموس

زر الإغلاق يبدو بحجم 36dp لكن مساحة لمسه 48dp. وحيث تتداخل الخانات المتلاصقة، تأخذ الضغطةَ الخانةُ الأقرب مركزًا.

النتوءات ولوحات المفاتيح

قطع HUD تجلس داخل المنطقة الآمنة، وحقل الإدخال يرتفع فوق لوحة المفاتيح الافتراضية حين تظهر.

الرجوع يغلق شيئًا واحدًا

مفتاح Escape وزر الرجوع في أندرويد يغلقان السطح الأعلى فقط. النوافذ المتراكمة لا تختفي دفعة واحدة.

الإشعارات لا تسرق اللمس

اضغط عبر شريط الإشعار فيصل الضغط إلى الزر الذي تحته. ولا يُسلب التركيز أيضًا.

الأيقونات تُطلب بالاسم

الودجات لا تعرف سوى GoIconSet.CLOSE. بدّل المجموعة فتتغير كل الرسوم دون لمس سطر واحد من الكود.

ستة مظاهر بسطر واحد

GoUi.use_preset() يبدّل السمة والمظهر والأيقونات معًا — إطارات مدوّرة أو مشطوفة بطراز الخيال العلمي أو مطروقة بطراز العصور الوسطى.

وضوح مقيس لا مُقدَّر

كل سمة تُفحص وفق معايير WCAG، بما في ذلك حالات الأزرار ولوحات HUD الشفافة فوق الأبيض الخالص والأسود الخالص.

كل شيء يعمل دون تفعيل الإضافة. تفعيلها يضيف autoload باسم GoRuntime يتتبّع حجم النافذة ومقياس dp وارتفاع لوحة المفاتيح، إضافة إلى إعدادات مشروع لمورد الإعدادات وللنمط الجاهز — وسائل راحة، لا شروط.

تثبيت gohud

طريقان. دع وكيل الذكاء الاصطناعي يقوم بذلك، أو ضع المجلد في مشروعك — لا شيء آخر يحتاج إلى إعداد.

التثبيت

بداية سريعة

خمسة أسطر تضع شاشة بسمة جاهزة على العرض. الشرح كاملاً في صفحة التثبيت.

بداية سريعة

غيّر المظهر — الألوان والشكل معًا

السمة لا تستطيع إعادة تنسيق إلا ما يرسمه المحرك. والزوايا المدوّرة هي الزوايا الوحيدة التي يملكها StyleBoxFlat، أما عصا التوجيه والخانات السريعة والعلامة الإرشادية فيرسمها الكود — ومن ثمّ لا تستطيع السمة وحدها تغيير أشكالها أبدًا. لذلك يأتي gohud بـ أنماط جاهزة: سمة ومظهر ومجموعة أيقونات تُختار وحدةً واحدة.

GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK)   # السمة والمظهر والأيقونات معًا
النمط الجاهزالمظهر
default_darkgohud الأصلي — زوايا مدوّرة ولون تمييز أزرق هادئ
default_lightالأشكال نفسها على لوحة ألوان فاتحة
scifi_darkزوايا مشطوفة، وحواف نيون سماوية متوهجة، وعصا توجيه سداسية، وأقواس تصويب
scifi_lightالأشكال الحادة نفسها بلوحة ألوان مخطط أزرق ساطع
medieval_darkحديد وجلد داكنان، وإطارات ذهب عتيق، ومسامير، وأيقونات محفورة، وعناوين بخط Cinzel
medieval_lightرقّ وحبر وبرونز مع الإطارات المطروقة نفسها
معرض gohud بالنمط الجاهز default_dark — زوايا مدوّرة ولون تمييز أزرق
default_dark — زوايا مدوّرة ولون تمييز أزرق هادئ
النمط الجاهز default_light — الأشكال نفسها على لوحة ألوان فاتحة
default_light — الأشكال نفسها، لوحة ألوان فاتحة
النمط الجاهز scifi_dark — زوايا مشطوفة ونيون سماوي
scifi_dark — زوايا مشطوفة ونيون سماوي
النمط الجاهز scifi_light — الأشكال الحادة نفسها بلوحة ألوان مخطط أزرق
scifi_light — الأشكال الحادة نفسها، لوحة مخطط أزرق

هذه الأربع هي شاشة المعرض ذاتها. لا يختلف فيها سطر واحد من الكود — إنما اسم النمط الجاهز فقط. زوايا الأزرار وأشكال مفاتيح التبديل وصفوف القوائم وحدود حقول الإدخال تتحرك كلها معًا.

مجموعة العصور الوسطى

medieval_dark يزاوج الحديد والجلد بالذهب العتيق، وmedieval_light يستعمل الرقّ والحبر. إطارات القوائم تحمل مسمارًا وزخرفة ركن صغيرة، بينما يبقى HUD الدائم الظهور هادئًا؛ و16 أيقونة محفورة تعيد رسم أسماء الأغراض، ولا يستعمل خط Cinzel المضمَّن سوى العناوين والعناوين الفرعية.

medieval_dark — صفحة الشخصية وحقيبة الخانات السريعة وسجل المهام
medieval_dark — حديد وجلد
medieval_light — شاشات الشخصية والحقيبة والمهام نفسها على رقّ
medieval_light — رقّ وحبر

اللقطتان كلتاهما من examples/medieval/medieval.tscn، مبنيّتان من الودجات القياسية. دليل العصور الوسطى وكيف تصنع مملكتك أنت ←

الشاشة ذاتها على هاتف وعلى سطح مكتب

لقطات المعرض لهاتف بالوضع الطولي. وأدناه الكود نفسه بمقاس 1280×800 — يتوقف المحتوى عند عرض مريح للقراءة (480dp) ويتوسّط، بينما يبقى HUD في الأركان. والنموذج يلتفّ حول قطع HUD العائمة، لكنه لا يتحرك إن كان بعيدًا عنها أصلًا: دفعه رغم ذلك يخرج المحتوى عن مركز الشاشة العريضة.

default_dark بمقاس 1280x800 — محتوى متوسّط وHUD في الأركان
default_dark · 1280×800
scifi_dark بمقاس 1280x800 — التخطيط نفسه بلوحات مشطوفة ونيون
scifi_dark · 1280×800

الورقة ذاتها بمظهر مختلف

ورقة سفلية بنمط default_dark
الافتراضي — بطاقة مدوّرة، وصف بحث وتذييل ثابتان
ورقة سفلية بنمط scifi_dark — حافة تمييز نيون على طول الأعلى
الخيال العلمي — حافة تمييز علوية وزوايا مقطوعة وتوهّج

اختر واحدًا من Project Settings → gohud → Theme → Preset، أو اضبط GoConfig.preset. وتعبئة theme أو skin أو icons صراحةً تغلب النمط الجاهز، فبإمكانك أن تأخذ نمطًا جاهزًا وتتجاوز واحدًا منها فقط.

السمة الجديدة ملف JSON واحد. الأمر new_theme.py kingdom --from medieval_dark يكتب لوحة ألوان تسرد كل قيمة موروثة صراحةً، وmake_theme.py kingdom يبني السمة ورسوم عناصر التحكم ومقابض المظهر، فيظهر النمط الجاهز في قائمة الاختيار. كل إعداد وكل مقبض ←

المظاهر — حيث لا تصل السمة

المظهر يملك عصا التوجيه، ووجوه الخانات السريعة، وحلقة العلامة الإرشادية، والشرائح، والهياكل المؤقتة، والتنبيهات، والفواصل، وعناوين الأقسام. اشتقّ منه صنفًا وتجاوز ما تريد تغييره فقط.

class_name MySkin extends GoSkin

func slot_box(accent: Color, lit: bool) -> StyleBox:
    var box := GoStyleBoxCut.new()
    box.bg_color = accent
    box.cut = 6.0
    box.edge_color = accent
    return box
الصنفالأشكال التي يصنعها
GoStyleBoxCutزوايا مقطوعة قطريًا (شطف)، وحافة تمييز واحدة أسمك، وتوهّج خارجي
GoStyleBoxBracketعلامات أركان فقط، دون إحاطة المحتوى
GoStyleBoxMedievalإطار مطروق بمسامير ونقش في الأركان وإبراز مشطوف وحبيبات مادة

الثلاثة كلها تُسلسَل داخل مورد سمة — وهذا بالضبط ما يتيح للسمة أن تغيّر الشكل لا اللون وحده. وGoSkinSciFi وGoSkinMedieval هما الصنفان المشتقّان المرفقان.

GoStyle.box() يعيد دائمًا StyleBoxFlat، لأن الكود المستدعي يستلمه ثم يعدّل bg_color أو corner_radius. استعمل GoStyle.surface() حين يجب أن يبقى شكل مخصّص على حاله.

الودجات

القطع كلها في جدول واحد. كل واحدة بالتفصيل ←

الصنفالأساسما الذي يفعله
GoSurfaceControlقشرة بطاقة عائمة — وضع في الوسط أو الأسفل أو مثبّت بجانب عنصر، ورأس وتذييل ثابتان، وجسم متمرر، وتغيير الحجم بالسحب
GoSheetCanvasLayerصفحات تصعد من الأسفل، على طبقتها الخاصة لتجلس فوق HUD
GoDialogsNodeتأكيدات وتنبيهات تنتظرها بـ await؛ وdestructive للإجراءات التي لا رجعة فيها
GoFormMarginContainerنماذج محدودة العرض تتفادى لوحة المفاتيح الافتراضية، وتتفادى HUD أيضًا مع avoid_hud
GoScrollScrollContainerتمرير باللمس؛ وشريط التمرير ينزوي داخل حشوة البطاقة
GoNoticePanelContainerشريط إشعار لا يأخذ لمسًا ولا تركيزًا
GoPromptCardPanelContainerسؤال لا يوقف اللعبة
GoCoachMarkControlجولة إرشادية تشير إلى عناصر تحكم حقيقية؛ والضغط على الهدف ينتقل بها
GoHudAnchorControlيثبّت قطع HUD في واحدة من تسع مواضع داخل المنطقة الآمنة
GoBarControlأشرطة الصحة والمانا والخبرة بتغيّر متدرّج ناعم
GoSlotButtonخانة سريعة — أيقونة وكمية ومهلة استعداد واختصار على وجه واحد
GoJoystickControlعصا افتراضية بوضع ثابت أو متابع أو نسبي
GoIconButtonButtonيبدو صغيرًا ويُضغط كبيرًا
GoStyleساكنأزرار وصفوف قوائم وحقول إدخال وشرائح وجداول وتبويبات وغيرها، تُصنع كلها بطريقة واحدة متسقة

الانتظار والإخبار والعدّ

الصنفالأساسما الذي يفعله
GoSnackbarNodeالرسالة التي تضع نفسها بنفسها
GoSpinnerControlانتظار لا تُرى نهايته
GoBadgePanelContainerنقطة غير المقروء، وعلامة «جديد»، والـ 99+

النماذج والقوائم

الصنفالأساسما الذي يفعله
GoFieldVBoxContainerالصفّ الذي قد يكون خاطئًا
GoInputGroupHBoxContainerإدخال ملحوم بزرّه
GoComboboxButtonمنتقٍ يبحث
GoCodeInputVBoxContainerرموز القسائم والهدايا
GoTableVBoxContainerرؤوس تُرتَّب وصفوف تُختار
GoPaginationHBoxContainerصفحات، أو صفّ «المزيد»

أشكال تستعملها الألعاب فعلًا

الصنفالأساسما الذي يفعله
GoRewardCalendarVBoxContainerالحضور اليومي
GoRadarControlالإحصاءات بنظرة
GoCarouselVBoxContainerاللافتات واختيار الشخصية
GoKbdHBoxContainerتلميحات مفاتيح لا تكذب

فوق الشاشة

الصنفالأساسما الذي يفعله
GoDrawerCanvasLayerاللوحة الجانبية
GoPopoverRefCountedالبطاقة المثبّتة
GoContextMenuRefCountedالضغط المطوَّل والنقر الأيمن
GoConsoleCanvasLayerوحدة تحكّم المطوّر

AI SKILL

يأتي gohud بمهارة ذكاء اصطناعي: واجهة البرمجة كاملة، وقوالب جاهزة للتشغيل، ومشغّل معاينة. الصق الكتلة أدناه في وكيل البرمجة لديك فيثبّت gohud ويعرف كيف يستخدمه.

AI SKILL

الوضوح يُقاس ولا يُقدَّر بالعين

"الجميل" مسألة ذوق، أما "الواضح" فيمكن قياسه. النص الرمادي الباهت يبدو جيدًا على شاشة جيدة ويختفي على هاتف في ضوء النهار — والاختيار بالعين يضمن وقوع ذلك عاجلًا أو آجلًا.

python3 addons/gohud/tools/check_contrast.py

كل زوج ألوان، ونصّ كل حالة من حالات الزر فوق اللوحة التي يجلس عليها، يُقاس وفق معايير WCAG في السمات الست جميعها. والألوان الشفافة تُركَّب أولًا فوق خلفيتها الحقيقية — فقياسها مباشرةً يعطي نسبة أفضل مما تُظهره الشاشة فعلًا.

ولذلك فألوان النصوص مشتقّة لا مختارة: يأخذ البنّاء مدخل لوحة الألوان نقطةَ انطلاق ثم يدفع إضاءته حتى تتجاوز العتبة على كل سطح قد تحطّ عليه. غيّر لوحة الألوان فيتبعها التباين. القواعد والمزالق التي وراءها ←

الفحوص والإصدارات وهذا الموقع

مدخل واحد يشغّل كل الفحوص؛ وكل جزء منها يرى ما لا يراه غيره.

bash addons/gohud/tools/check_all.sh
الفحصما الذي يلتقطه
run_tests.sh بأربعة مقاسات شاشةسلوك الودجات وتخطيطها، ومواضع RTL، وتركيز لوحة المفاتيح، وتباين المظهر أثناء التشغيل، وكل نمط جاهز
new_project_check.shاعتمادات خفية على مشروع مضيف؛ ومع --zip الإصدارَ كما يُشحن، ومع --export بناءً للويب
check_contrast.pyتباين WCAG في كل ملف سمة، بما في ذلك حالات الأزرار واللوحات الشفافة
check_generated.py · check_scaffold.shمطابقة السمات المولَّدة للوحات ألوانها؛ وبناء سمة مؤقتة ونجاحها في فحص التباين
check_package.pyالإصدار المأخوذ من package.json، ونقل سجل التغييرات، ومحتويات ملف ZIP، في نسخ مؤقتة
check_site.pyروابط هذا الموقع ومراسيه ولغة صفحاته ومسرد مصطلحاته وجداول مقابضه
آخر تشغيل مسجَّل — 2026-09-13، Godot 4.7.2، macOS، عارض Compatibility. 438 فحصًا من 438 بمقاسات 390×844 و844×390 و768×1024 و1280×800 في مشروع فارغ؛ ثم 438 من 438 مجددًا مع autoload باسم GoRuntime؛ وتصدير للويب؛ وصفر إخفاقات تباين عبر السمات الست. ولم يشمل هذا التشغيل Godot 4.6 ولا أجهزة أندرويد أو iOS الحقيقية.

إصدارات النشر

cat addons/gohud/package.json       # { "version": "1.1.0" }
bash addons/gohud/tools/package.sh  # 1.1.0 → builds/1.1.0/gohud-1.1.0.zip

الإصدار هو المكتوب في package.json، والتحزيم لا يرفعه أبدًا. لنشر إصدار جديد غيّر هذا الرقم أولًا. التشغيل الناجح يضبط plugin.cfg وGoUi.VERSION على تلك القيمة، وفي أول تحزيم لذلك الإصدار فقط ينقل ملاحظات Unreleased في CHANGELOG.md إلى مدخل مؤرَّخ. وإعادة تحزيم الإصدار نفسه تبني ملف ZIP من جديد وتستبدل به القديم. والتشغيل الفاشل لا يغيّر شيئًا. وملف ZIP لا يحوي هذا الموقع ولا الاختبارات ولا الأدوات ولا package.json.

هذا الموقع

python3 addons/gohud/tools/make_site.py            # المسرد وجداول مقابض المظهر، مولَّدة من المصدر
python3 addons/gohud/tools/check_site.py           # الروابط والمراسي واللغة والمسرد والجداول المولَّدة
bash addons/gohud/tools/site_shots.sh /tmp/shots   # لقطات سطح مكتب وهاتف لكل صفحة

الصفحات ملفات HTML عادية في www/ — الإنجليزية في الجذر، والكورية في ko/. وسير عمل في GitHub Actions ينشر ذلك المجلد جذرًا للموقع.