ويكي HISTORY
ويكي اللاعبين لسيرفر HISTORY الخاص للعبة Metin2: أكثر من 1,600 عنصر ووحش وخريطة ومهمة ومهارة بـ 13 لغة، يحررها المشرف في مكانها مباشرة.
موصى به- العميل
- سيرفر HISTORY للعبة Metin2
- دوري
- مهندس Full-stack & متخصص DevOps
- النوع
- ويكي ونظام لإدارة المحتوى
- الفترة
- يونيو 2025 – حتى الآن
- التقنيات
- JavaScript
- Next.js
- next-intl
- Material UI
- styled-components
- Node.js
- MongoDB
- Mongoose
- Cloudflare
- Nginx
- Coolify
- Telegram
- Git
- GitHub
الشاشات15 شاشة
الشاشة 1 من 15
الصفحة الرئيسية، بـ 13 لغةحاسوب · 1 / 15
اختر الشاشة في المنتصف لعرضها بالحجم الكامل.
نظرة عامة
HISTORY سيرفر خاص للعبة Metin2 بالطابع الكلاسيكي، والويكي هو المكان الذي يرجع إليه اللاعبون: كل سلاح ودرع مع مراحل تطويره من +0 إلى +9، وكل وحش مع ما يسقطه والخرائط التي يظهر فيها، والمهام، والزنزانات، ومهارات الشخصيات الخمس.
بنيت الويكي ونظام إدارة المحتوى المصغّر خلفه، وما زلت أتولى صيانتهما. ويكيات Metin2 لوحات كثيفة من داخل اللعبة لا مقالات، لذلك تعيد كل صفحة رسم لوحة من اللعبة، ويحرر مشرف السيرفر هذه الصفحات نفسها في مكانها بدلًا من ملء النماذج. يقدم الويكي 1,622 مدخلًا في 91 قسمًا، بـ 13 لغة منها العربية من اليمين إلى اليسار.
ما سلّمته
- صفحات ويكي تعيد رسم لوحات اللعبة نفسها: العناصر والوحوش والخرائط والمهام والشخصيات والمهارات
- جداول للأسلحة والدروع والمجوهرات بمراحل التطوير كاملة من +0 إلى +9 وتكلفة كل مرحلة
- نظام مصغّر لإدارة المحتوى يحرر كل صفحة في مكانها، بالمكونات نفسها التي يراها الزائر
- محرر نصوص منسقة (Tiptap) بالجداول وشبكات الأعمدة والألوان والصور بمقاساتها
- 13 لغة برابط مترجم لكل صفحة، والعربية من اليمين إلى اليسار
- بحث فوري في رأس الصفحة عبر كل العناصر والوحوش والخرائط والمهارات، يتسامح مع الأخطاء الإملائية
- أقسام مهارات الشخصيات: 5 شخصيات و63 مهارة مع معاينات متحركة على شبكة CDN
- كل صورة تمثل صفحة ترتبط بها، عبر أكثر من 3,000 صورة
- صفحات مخزنة (Cached) بالكامل، تتحدث لحظة حفظ المشرف
- شجرة أقسام، وترتيب بالسحب والإفلات، ومحرر للصفحة الرئيسية
- نسخة احتياطية بنقرة واحدة تُرسل إلى Telegram، وأخطاء الصفحات تُبلَّغ إلى Telegram
كيف بنيته
مكوّن واحد بوضعين
لا يوجد نموذج منفصل للمشرف. يأخذ كل تخطيط علامة التحرير فيستبدل النصوص بحقول إدخال، فيحرر مشرف السيرفر الصفحة نفسها التي يقرؤها اللاعبون، في مكانها، ويُتحقق من كل حفظ بمخطط ذلك التخطيط قبل أن يصل إلى قاعدة البيانات. اثنا عشر تخطيطًا تغطي الويكي كله. وحين يطلب العميل شيئًا جديدًا، تكون الإجابة الأولى خيارًا خاصًا بالقسم لا تخطيطًا جديدًا، فيصل التغيير إلى الأقسام التي طلبته وحدها.
صفحات تُرسم مرة واحدة ثم تأتي من التخزين
أظهر تحليل أبطأ صفحة أن قاعدة البيانات لا تأخذ سوى 0.8% من الوقت. أما التكلفة الحقيقية فكانت في رسم React وتنسيق الأنماط: صفحة واحدة حوّلت 11,444 كائن تنسيق، 40 منها فقط مختلفة. نقلت هذه الأنماط خارج الحلقات التي تتكرر لكل عنصر، وجعلت كل صفحة عامة ناتجًا مرسومًا مخزنًا بالكامل، بلا مدة انتهاء، يُمسح بالوسم لحظة حفظ المشرف.
| القياس على 33 مسارًا | قبل | بعد |
|---|---|---|
| إجمالي وقت الخادم | 22,030 ms | 1,804 ms (−92%) |
| أبطأ الصفحات | 1.3–3.1 ث | 51–165 ms (أسرع 18–29 مرة) |
| حجم البيانات المنقولة | 180–459 KB | 54–99 KB (−70 إلى −78%) |
وتحققت من أن شيئًا مرئيًا لم يتغير: خرجت 31 صفحة من 33 متطابقة كلمة بكلمة ورابطًا برابط، وتغيرت الصفحتان الأخريان عن قصد.
13 لغة دون 13 نسخة
يُكتب المحتوى مرة واحدة بالرومانية. ويحمل كل مستند ترجمات متفرقة لنصوصه وروابطه فقط، تُدمج عند القراءة (لغة القارئ، ثم الإنجليزية، ثم الرومانية)، فلا تتكرر الصور ولا الأرقام ولا البنية أبدًا. ولكل صفحة رابطها الخاص بكل لغة، وأي رابط بلغة أخرى يُعاد توجيهه إلى الرابط الصحيح، وتعلن الصفحات عن بدائلها الثلاث عشرة لمحركات البحث.
يحوّل مسار الترجمة 30,937 نصًا إلى 6,127 وحدة بعد استخراج الروابط والأرقام منها، فلا يلمس المترجم رابطًا أبدًا، ويُرفض أي ناتج لا تطابق وسومه أو مواضعه الأصل. ونحو 45% من الوحدات تأتي مباشرة من جداول الأسماء الرسمية للعبة. أما ناتج خدمات الترجمة الآلية فمرفوض تمامًا: تسلل مرة إلى 3,152 وحدة.
بحث يجيب في أجزاء من الثانية
يحمّل المتصفح فهرس لغته كاملًا مرة واحدة، نحو 1,700 مدخل في قرابة 60 KB مضغوطة، ويبحث فيه داخل الذاكرة مع كل حرف. يتجاهل البحث علامات التشكيل ويتسامح مع خطأ إملائي، وتُجمع النتائج حسب نوعها، والمدخل الذي ليست له صفحة خاصة يصل بالقارئ إلى بطاقته في صفحة القسم.
نصوص منسقة تصمد أمام المحرر
انتقلت الأوصاف من Markdown إلى HTML منقّى يُحرر في Tiptap، بجداول قابلة لتغيير المقاس وشبكات أعمدة وألوان وصور تأخذ مقاسها من الصورة نفسها. ونقلت سكربتات المحتوى القديم، وأضافت مقاسات الصور، وأثبتت أن الـ HTML المخزن يمر عبر المحرر ويعود دون أي تغيير.
كل صورة رابط
ترتبط الصورة بصفحتها حين يجاورها رابط في النص، أو عبر رابط مخزن في عناصر القوائم. أصبحت 2,340 صورة من أصل 3,249 في النصوص المنسقة روابط. ولا تولّد هذه الروابط صندوقًا خاصًا بها، وتأكدت أن الصفحات المرسومة بقيت متطابقة بايتًا ببايت عدا الروابط الجديدة.
المهارات على شبكة CDN
حصلت خمس شخصيات وتسع شجرات مهارات و63 مهارة على لوحة مهارات كالتي في اللعبة. وتُخزّن صورها ورسومها المتحركة الـ 483 (91 MB من ملفات GIF) على Bunny.net، ولا تُحمّل إلا حين يصل إليها القارئ.
التشغيل
ينشر Coolify التطبيق. وتنزّل النسخة الاحتياطية بنقرة واحدة كل العناصر والأقسام بصيغة JSON وترسل الملف نفسه إلى Telegram، ويُبلَّغ هناك أيضًا عن أي عطل في صفحة عنصر مع تفاصيله.
بالأرقام
| المداخل | 1,622 عنصرًا في 91 قسمًا |
| اللغات | 13، والعربية من اليمين إلى اليسار |
| النصوص المترجمة | 30,937 نصًا في 6,127 وحدة |
| التخطيطات | 12 |
| وقت الخادم، 33 مسارًا | 22.0 ث ← 1.8 ث |
| الصور المرتبطة في النصوص المنسقة | 2,340 |
| الإيداعات (commits) | 279 |
