كيف يبدو داخل لعبة
نمطا العصور الوسطى والخيال العلمي — صفحات الشخصية والحقائب والمهام؛ النماذج والشبكات وبطاقات السؤال؛ اللوحات المشطوفة وأدوات التحكم باللمس. تبديل النمط الجاهز سطر برمجي واحد.
ما الذي يتكفّل به بدلًا منك
أكثر ما يستهلك الوقت في واجهات الألعاب ليس شكل الزر — بل كل ما ينحرف بين جهاز وآخر. gohud يعالج هذا الانحراف في مكان واحد.
كل مقاس توكن له اسم
المسافات والزوايا وأحجام النص تُطلب بأسمائها لا تُكتب أرقامًا. بدّل السمة فتتحرك الشاشة كلها معها.
الحجم المرئي ≠ الحجم الملموس
زر الإغلاق يبدو بحجم 36dp لكن مساحة لمسه 48dp. وحيث تتداخل الخانات المتلاصقة، تأخذ الضغطةَ الخانةُ الأقرب مركزًا.
النتوءات ولوحات المفاتيح
قطع HUD تجلس داخل المنطقة الآمنة، وحقل الإدخال يرتفع فوق لوحة المفاتيح الافتراضية حين تظهر.
الرجوع يغلق شيئًا واحدًا
مفتاح Escape وزر الرجوع في أندرويد يغلقان السطح الأعلى فقط. النوافذ المتراكمة لا تختفي دفعة واحدة.
الإشعارات لا تسرق اللمس
اضغط عبر شريط الإشعار فيصل الضغط إلى الزر الذي تحته. ولا يُسلب التركيز أيضًا.
الأيقونات تُطلب بالاسم
الودجات لا تعرف سوى GoIconSet.CLOSE. بدّل المجموعة فتتغير كل الرسوم دون لمس سطر واحد من الكود.
ستة مظاهر بسطر واحد
GoUi.use_preset() يبدّل السمة والمظهر والأيقونات معًا — إطارات مدوّرة أو مشطوفة بطراز الخيال العلمي أو مطروقة بطراز العصور الوسطى.
وضوح مقيس لا مُقدَّر
كل سمة تُفحص وفق معايير WCAG، بما في ذلك حالات الأزرار ولوحات HUD الشفافة فوق الأبيض الخالص والأسود الخالص.
تثبيت gohud
طريقان. دع وكيل الذكاء الاصطناعي يقوم بذلك، أو ضع المجلد في مشروعك — لا شيء آخر يحتاج إلى إعداد.
بداية سريعة
خمسة أسطر تضع شاشة بسمة جاهزة على العرض. الشرح كاملاً في صفحة التثبيت.
غيّر المظهر — الألوان والشكل معًا
السمة لا تستطيع إعادة تنسيق إلا ما يرسمه المحرك. والزوايا المدوّرة هي الزوايا الوحيدة التي يملكها StyleBoxFlat، أما عصا التوجيه والخانات السريعة والعلامة الإرشادية فيرسمها الكود — ومن ثمّ لا تستطيع السمة وحدها تغيير أشكالها أبدًا. لذلك يأتي gohud بـ أنماط جاهزة: سمة ومظهر ومجموعة أيقونات تُختار وحدةً واحدة.
GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK) # السمة والمظهر والأيقونات معًا
| النمط الجاهز | المظهر |
|---|---|
default_dark | gohud الأصلي — زوايا مدوّرة ولون تمييز أزرق هادئ |
default_light | الأشكال نفسها على لوحة ألوان فاتحة |
scifi_dark | زوايا مشطوفة، وحواف نيون سماوية متوهجة، وعصا توجيه سداسية، وأقواس تصويب |
scifi_light | الأشكال الحادة نفسها بلوحة ألوان مخطط أزرق ساطع |
medieval_dark | حديد وجلد داكنان، وإطارات ذهب عتيق، ومسامير، وأيقونات محفورة، وعناوين بخط Cinzel |
medieval_light | رقّ وحبر وبرونز مع الإطارات المطروقة نفسها |
default_dark — زوايا مدوّرة ولون تمييز أزرق هادئ
default_light — الأشكال نفسها، لوحة ألوان فاتحة
scifi_dark — زوايا مشطوفة ونيون سماوي
scifi_light — الأشكال الحادة نفسها، لوحة مخطط أزرقهذه الأربع هي شاشة المعرض ذاتها. لا يختلف فيها سطر واحد من الكود — إنما اسم النمط الجاهز فقط. زوايا الأزرار وأشكال مفاتيح التبديل وصفوف القوائم وحدود حقول الإدخال تتحرك كلها معًا.
مجموعة العصور الوسطى
medieval_dark يزاوج الحديد والجلد بالذهب العتيق، وmedieval_light يستعمل الرقّ
والحبر. إطارات القوائم تحمل مسمارًا وزخرفة ركن صغيرة، بينما يبقى HUD الدائم الظهور هادئًا؛
و16 أيقونة محفورة تعيد رسم أسماء الأغراض، ولا يستعمل خط Cinzel المضمَّن سوى العناوين والعناوين الفرعية.
medieval_dark — حديد وجلد
medieval_light — رقّ وحبراللقطتان كلتاهما من examples/medieval/medieval.tscn، مبنيّتان من الودجات القياسية.
دليل العصور الوسطى وكيف تصنع مملكتك أنت ←
الشاشة ذاتها على هاتف وعلى سطح مكتب
لقطات المعرض لهاتف بالوضع الطولي. وأدناه الكود نفسه بمقاس 1280×800 — يتوقف المحتوى عند عرض مريح للقراءة (480dp) ويتوسّط، بينما يبقى HUD في الأركان. والنموذج يلتفّ حول قطع HUD العائمة، لكنه لا يتحرك إن كان بعيدًا عنها أصلًا: دفعه رغم ذلك يخرج المحتوى عن مركز الشاشة العريضة.
default_dark · 1280×800
scifi_dark · 1280×800الورقة ذاتها بمظهر مختلف
اختر واحدًا من Project Settings → gohud → Theme → Preset، أو اضبط GoConfig.preset.
وتعبئة theme أو skin أو icons صراحةً تغلب النمط الجاهز،
فبإمكانك أن تأخذ نمطًا جاهزًا وتتجاوز واحدًا منها فقط.
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() حين يجب أن يبقى شكل مخصّص على حاله.
الودجات
القطع كلها في جدول واحد. كل واحدة بالتفصيل ←
| الصنف | الأساس | ما الذي يفعله |
|---|---|---|
GoSurface | Control | قشرة بطاقة عائمة — وضع في الوسط أو الأسفل أو مثبّت بجانب عنصر، ورأس وتذييل ثابتان، وجسم متمرر، وتغيير الحجم بالسحب |
GoSheet | CanvasLayer | صفحات تصعد من الأسفل، على طبقتها الخاصة لتجلس فوق HUD |
GoDialogs | Node | تأكيدات وتنبيهات تنتظرها بـ await؛ وdestructive للإجراءات التي لا رجعة فيها |
GoForm | MarginContainer | نماذج محدودة العرض تتفادى لوحة المفاتيح الافتراضية، وتتفادى HUD أيضًا مع avoid_hud |
GoScroll | ScrollContainer | تمرير باللمس؛ وشريط التمرير ينزوي داخل حشوة البطاقة |
GoNotice | PanelContainer | شريط إشعار لا يأخذ لمسًا ولا تركيزًا |
GoPromptCard | PanelContainer | سؤال لا يوقف اللعبة |
GoCoachMark | Control | جولة إرشادية تشير إلى عناصر تحكم حقيقية؛ والضغط على الهدف ينتقل بها |
GoHudAnchor | Control | يثبّت قطع HUD في واحدة من تسع مواضع داخل المنطقة الآمنة |
GoBar | Control | أشرطة الصحة والمانا والخبرة بتغيّر متدرّج ناعم |
GoSlot | Button | خانة سريعة — أيقونة وكمية ومهلة استعداد واختصار على وجه واحد |
GoJoystick | Control | عصا افتراضية بوضع ثابت أو متابع أو نسبي |
GoIconButton | Button | يبدو صغيرًا ويُضغط كبيرًا |
GoStyle | ساكن | أزرار وصفوف قوائم وحقول إدخال وشرائح وجداول وتبويبات وغيرها، تُصنع كلها بطريقة واحدة متسقة |
الانتظار والإخبار والعدّ
| الصنف | الأساس | ما الذي يفعله |
|---|---|---|
GoSnackbar | Node | الرسالة التي تضع نفسها بنفسها |
GoSpinner | Control | انتظار لا تُرى نهايته |
GoBadge | PanelContainer | نقطة غير المقروء، وعلامة «جديد»، والـ 99+ |
النماذج والقوائم
| الصنف | الأساس | ما الذي يفعله |
|---|---|---|
GoField | VBoxContainer | الصفّ الذي قد يكون خاطئًا |
GoInputGroup | HBoxContainer | إدخال ملحوم بزرّه |
GoCombobox | Button | منتقٍ يبحث |
GoCodeInput | VBoxContainer | رموز القسائم والهدايا |
GoTable | VBoxContainer | رؤوس تُرتَّب وصفوف تُختار |
GoPagination | HBoxContainer | صفحات، أو صفّ «المزيد» |
أشكال تستعملها الألعاب فعلًا
| الصنف | الأساس | ما الذي يفعله |
|---|---|---|
GoRewardCalendar | VBoxContainer | الحضور اليومي |
GoRadar | Control | الإحصاءات بنظرة |
GoCarousel | VBoxContainer | اللافتات واختيار الشخصية |
GoKbd | HBoxContainer | تلميحات مفاتيح لا تكذب |
فوق الشاشة
| الصنف | الأساس | ما الذي يفعله |
|---|---|---|
GoDrawer | CanvasLayer | اللوحة الجانبية |
GoPopover | RefCounted | البطاقة المثبّتة |
GoContextMenu | RefCounted | الضغط المطوَّل والنقر الأيمن |
GoConsole | CanvasLayer | وحدة تحكّم المطوّر |
AI SKILL
يأتي gohud بمهارة ذكاء اصطناعي: واجهة البرمجة كاملة، وقوالب جاهزة للتشغيل، ومشغّل معاينة. الصق الكتلة أدناه في وكيل البرمجة لديك فيثبّت gohud ويعرف كيف يستخدمه.
الوضوح يُقاس ولا يُقدَّر بالعين
"الجميل" مسألة ذوق، أما "الواضح" فيمكن قياسه. النص الرمادي الباهت يبدو جيدًا على شاشة جيدة ويختفي على هاتف في ضوء النهار — والاختيار بالعين يضمن وقوع ذلك عاجلًا أو آجلًا.
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 | روابط هذا الموقع ومراسيه ولغة صفحاته ومسرد مصطلحاته وجداول مقابضه |
إصدارات النشر
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 ينشر ذلك المجلد جذرًا للموقع.