عن المشروع

Gamend هو خلفية مفتوحة المصدر لألعاب متعددة اللاعبين، مكتوبة بلغة Elixir. يُقصد به أن يكون مستضافًا ذاتيًا: لا توجد خدمة مستضافة للشراء، ويضع المشروع نفسه كطبقة جانب الخادم حول اللعبة بدلاً من اللعبة نفسها. لا تزال اللعبة تعرض وتحاكي محليًا، بينما تسمح برمجة جانب الخادم بتشغيل المنطق الحقيقي على الخادم، بحيث يتم تحديد النقاط والمكافآت وقواعد التوفيق والتحقق في مكان لا يمكن للاعبين تعديله. كما تعمل المهام الخلفية والمجدولة هناك. مجموعة الميزات الموصوفة في README: - المصادقة: البريد الإلكتروني/كلمة المرور، الرابط السحري، OAuth (Discord وGoogle وApple وFacebook وGitHub وSteam) ورموز JWT لواجهة برمجة التطبيقات. - المستخدمون: الملفات الشخصية والبيانات الوصفية ورموز الأجهزة ودورة حياة الحساب. - الغرف: يديرها المضيف، حد أقصى للمستخدمين، حالات مخفية/مقفلة، كلمات مرور وتحديثات فورية. - المجموعات: مجتمعات عامة أو خاصة أو مخفية مع أدوار وطلبات انضمام ودعوات. - الأحزاب: مجموعات مؤقتة قائمة على الدعوات، من 2 إلى 32 لاعبًا افتراضيًا، مدمجة مع الغرف. - الأصدقاء: الطلبات والقبول/الرفض والحظر. - الدردشة: رسائل مباشرة في الغرف والمجموعات والأحزاب وبين الأصدقاء مع مؤشرات قراءة وعدادات غير المقروء. - الإشعارات: إشعارات مُنمطة للأحداث الاجتماعية، حالة مقروء/غير مقروء وتسليم فوري، بالإضافة إلى دفع محمول عبر FCM وAPNs مباشرة يتم توجيهه حسب رمز الجهاز. - المهام والتقدم: محرك قائم على الأحداث يغطي الإنجازات والمهام اليومية/الأسبوعية ونوافذ الأحداث والسلاسل، مع مكافآت تُمنح مرة واحدة بالضبط إلى الاقتصاد. - لوحات الصدارة: تصنيفات عالمية ولكل مستخدم. - المدفوعات: تدفقات مزودي Stripe Checkout وGoogle Play وApp Store وSteam مع التحقق من الإيصالات والـ webhooks والاستحقاقات والمبالغ المستردة وأدوات الإدارة. - مخزن المفاتيح والقيم: تخزين جانب الخادم مع خطافات التحكم في الوصول. - برمجة الخادم: خطافات على أحداث الخادم مثل تسجيل الدخول أو إنشاء غرفة أو إكمال مهمة، مكتوبة بلغة Elixir أو GDScript (مُجمعة بدلاً من مفسرة) أو أي لغة BEAM. - المهام الخلفية: مهام خلفية ومجدولة متينة وقابلة لإعادة المحاولة من خطافات الخادم، على Postgres أو SQLite. - الاقتصاد والمخزون: محافظ عملات افتراضية مع دفتر أستاذ ذري قابل للتدقيق، بالإضافة إلى أكوام العناصر؛ منح/إنفاق/استهلاك موثوق من الخادم مع تحديثات رصيد مباشرة. - تخزين الكائنات: رفع الصور الرمزية والمحتوى الذي ينشئه المستخدمون مع خلفية قابلة للتبديل، إما قرص محلي أو أي خدمة متوافقة مع S3 مثل AWS S3 أو Cloudflare R2 أو MinIO. - بوابة الإدارة: لوحة تحكم ويب مدمجة لإدارة الموارد. يتم توفير حزم SDK للعملاء لـ Godot (مدرجة أيضًا في مكتبة أصول Godot)، وRune عبر إضافات Balaur، وC++17 مع وسائل نقل قابلة للتبديل، وJavaScript على npm، وحزمة SDK بلغة Elixir من وحدات stub للإكمال التلقائي في بيئة التطوير المتكاملة في الخطافات المخصصة. يتم إعادة بناء حزم SDK الخاصة بـ Godot وBalaur وC++ عند كل تغيير على main وإرفاقها بأحدث إصدار. يتطلب التشغيل محليًا Elixir 1.20 وErlang/OTP 29، وRust لاعتماد WebRTC الأصلي (ex_sctp)، واختياريًا PostgreSQL — يستخدم التطوير SQLite افتراضيًا، مع اختيار محول قاعدة البيانات في وقت الترجمة. التشغيل الأول هو `cp .env.example .env`، `mix setup`، `mix dev.start`، ثم زيارة localhost:4000. تغطي ملفات Docker Compose مثيلًا واحدًا وإعدادًا متعدد المثيلات مع nginx وPostgreSQL وRedis. تستهدف إرشادات النشر وقالب البداية النشر الإنتاجي على fly.io. يتضمن README أيضًا مخطط أداء يقارن اللاعبين الخاملين المتزامنين حسب حجم الجهاز والذاكرة والسعر الشهري، مستشهدًا برقم مُقاس يبلغ 37,854 لاعبًا خاملًا متزامنًا على نواة واحدة مع 3 جيجابايت مقابل رقم مقارنة منشور، مع روابط لوثائق الأداء واختبار الحمل لتفاصيل إعادة الإنتاج. يتم توفير ملف AGENTS.md لأدوات الذكاء الاصطناعي.