مرحباً، نطوّر لعبة عربية ونعمل حالياً على تحسين نظام جانبي داخلها يسمى «معركة بين الشركات أو العصابات
نبحث عن مطور يمتلك خبرة قوية في برمجة وتحريك شخصيات الألعاب، ونريد منه دراسة النظام الحالي واقتراح أفضل حل تقني وبصري طويل الأمد. لا نريد حصر المشروع مسبقاً في صور Sprite Sheets أو نماذج 3D أو تقنية معينة؛ نحن نشرح المشكلة والنتيجة المطلوبة، والمطور يقترح الحل الأفضل من حيث الجودة والأداء وإمكانية التوسع.
طبيعة اللعبة والمعركة
اللعبة الأساسية أكبر بكثير من معركة الشركات، وهذه الشخصيات القتالية لا تمثل اللاعب في جميع أجزاء اللعبة. المعركة مجرد مشهد جانبي اختياري يظهر عند مهاجمة شركة أو الدفاع عنها.
اللعبة تعمل على الهاتف والويب، ومبنية حالياً باستخدام JavaScript/Vite، ونظام المعركة الحالي مرسوم داخل Canvas ثنائي الأبعاد.
عندما يبدأ اللاعب المعركة:
لا يتحكم بالشخصيات يدوياً. لا يحرك المقاتلين ولا يصوب لهم. لا يضغط زر إطلاق النار لكل شخصية. المقاتلون يتصرفون تلقائياً بواسطة منطق المعركة. النظام يختار الأهداف والغطاء والحركة وإعادة التلقيم والانسحاب. اللاعب يشاهد نتيجة القتال وحركات الشخصيات بصورة سينمائية واضحة.
لذلك لا نحتاج نظام تحكم Player Controller تقليدياً، بل نحتاج نظام شخصيات يستجيب للأوامر والحالات التي يرسلها منطق المعركة، مثل:
Idle MoveToCover Run EnterCover StayInCover Aim Fire ReturnToCover Reload LightHit HeavyHit InjuredRun Fall Dead Retreat المشكلة الحالية
لدينا رسومات ثنائية الأبعاد جيدة جداً من ناحية الشكل والألوان، خصوصاً أثناء إطلاق النار، لكننا واجهنا مشاكل عند إنشاء بقية الحركات بصورة منفصلة:
اختلاف حجم الشخصية بين الوقوف والاختباء. تغير نسب الوجه والجسم بين وضعية وأخرى. ظهور شخصية أو أسلوب فني مختلف أثناء الركض. اختلاف الملابس أو لونها بين الحركات. اتجاه السلاح لا يتطابق دائماً مع اتجاه الطلقة. صعوبة إضافة أسلحة وحركات جديدة من دون إعادة العمل. صعوبة المحافظة على Ground Anchor ثابت عند القدمين. عدم وجود أصل موحد نستخرج منه جميع حالات الشخصية.
سنرسل الصور المرجعية لأفضل نسخة بصرية وصلنا إليها. هذه الصور تحدد الهوية والأسلوب المطلوبين، لكنها لا تفرض طريقة التنفيذ.
النتيجة المطلوبة
نريد نظاماً احترافياً ومستداماً يوفر شخصية ثابتة بصرياً في جميع حالاتها، بحيث:
يبقى الوجه والجسم والملابس والسلاح متناسقاً. لا يتغير مقياس الشخصية بين الوقوف والركض والاختباء. ينخفض ارتفاع الشخصية طبيعياً عند الانحناء أو الجلوس من دون أن يتضخم جسمها. تتطابق وضعية الجسم والسلاح مع اتجاه الهدف. نستطيع إضافة سلاح أو حركة جديدة مستقبلاً من دون إعادة بناء كل شيء. تعمل النتيجة بسلاسة على الهاتف والويب. يمكن ربطها بمنطق المعركة التلقائي الحالي. تكون بنية العمل منظمة وقابلة للتعديل بواسطة مطور آخر مستقبلاً. حرية اقتراح الحل
لسنا متمسكين بطريقة واحدة. يمكنك اقتراح التقنية التي تراها أفضل، مثل:
شخصيات 3D تعمل مباشرة داخل مشهد المعركة. نماذج 3D يتم تصويرها وتحويلها إلى أصول 2D. 2D Skeletal Animation. Spine أو Rive أو PixiJS أو Three.js. نظام هجين يجمع 2D و3D. Sprite Sheets مولدة من أصل موحد. أي حل آخر يعطي نتيجة بصرية أفضل وأداء مناسباً.
هذه أمثلة وليست شروطاً. نريد منك مقارنة البدائل واختيار الحل الأنسب، مع شرح سبب اختياره، وتأثيره على:
الجودة البصرية. أداء الهاتف. حجم الملفات. سهولة إضافة الحركات. سهولة تبديل الأسلحة. التكامل مع نظام المعركة الحالي. التكلفة والمدة. الصيانة المستقبلية.
لا نريد استبدال اللعبة كلها أو إعادة بنائها بمحرك مختلف من دون ضرورة. المطلوب حل يمكن دمجه بصورة معقولة مع المشروع الحالي، أو توضيح التغييرات المطلوبة إذا كان الحل المقترح يحتاج تعديلاً في نظام المعركة.
الشخصيات المطلوبة
لدينا في المرحلة الأساسية نموذجان بصريان:
المهاجم بدلة سوداء وقميص أسود. بنية جسم متوسطة رياضية. طابع سينمائي واقعي ومصقول. المدافع حارس شركة بملابس أو بدلة رمادية. مختلف بصرياً بوضوح عن المهاجم. يحافظ على الأسلوب ومستوى الجودة نفسيهما.
لا نحتاج عدداً كبيراً من الشخصيات المختلفة جذرياً. التنوع سيكون أساساً بواسطة:
اختلاف الفريق والملابس. اختلاف السلاح. تحسينات بصرية بسيطة عند تطوير المقاتل. بعض الإكسسوارات القابلة للإضافة أو الإزالة. تغييرات صغيرة تدل على مستوى المقاتل.
قد تكون الشخصية الأساسية واحدة أو أكثر بحسب الحل التقني الذي تقترحه، لكن يجب أن نتمكن من إنشاء المهاجم والمدافع والتعديلات المستقبلية بكفاءة.
الأسلحة
المرحلة الأولى تشمل:
مسدس. بندقية هجومية.
وقد نضيف مستقبلاً:
رشاشاً خفيفاً. شوزن. قناصة. رشاشاً ثقيلاً.
تبديل السلاح يجب ألا يتطلب إنشاء شخصية جديدة بالكامل، إن كان الحل المختار يسمح بذلك. يجب أن يكون السلاح مستقلاً أو قابلاً للتبديل، وأن تتغير وضعية الإمساك والتصويب وإعادة التلقيم بما يناسبه.
الحركات والحالات المطلوبة الحركة وقوف واستعداد. Idle بسيط. ركض طبيعي. ركض مصاب أبطأ. انتقال منخفض بين المصدات. التفات قبل تغيير الاتجاه أو الهروب. التصويب
لكل سلاح:
تصويب مباشر. تصويب نحو خصم يقع أعلى/أبعد في ساحة المعركة. تصويب نحو خصم يقع أسفل/أقرب في الساحة. الاتجاه إلى اليمين واليسار. انتقال طبيعي من الاستعداد إلى التصويب.
الخصم قد يكون أمام الشخصية لكنه ليس أمامها على الخط نفسه؛ لذلك يجب أن يلتف الجسم والسلاح نحو موضع الهدف الحقيقي.
إطلاق النار ثبات منطقي أثناء الإطلاق. ارتداد مناسب للمسدس والبندقية. عدم الانخفاض أو الجلوس عشوائياً أثناء الرمي. تطابق اتجاه فوهة السلاح مع اتجاه الرصاصة. إمكانية تحديد نقطة Muzzle Socket بدقة. مؤثر الشرر والرصاصة والصوت سيضيفها نظام المعركة، إلا إذا كان لديك اقتراح تقني أفضل لتنظيمها. الغطاء الدخول خلف الغطاء. الاختباء. الخروج من خلف الغطاء. التصويب والإطلاق. الرجوع إلى الاختباء. الانتقال إلى غطاء آخر. إعادة التلقيم
المسدس يحمل حالياً 11 طلقة، ثم يعيد المقاتل تلقيمه. نحتاج حركة منطقية تتضمن:
خفض السلاح. الاحتماء عند توفر غطاء. إخراج المخزن. إدخال مخزن جديد. تثبيت السلاح. العودة إلى الاستعداد أو التصويب.
ونحتاج لاحقاً حركة تلقيم منفصلة للبندقية.
الإصابة والسقوط إصابة خفيفة. إصابة قوية. عدة اتجاهات للسقوط. وضعية موت ثابتة. عدم استمرار الجثة أو السلاح بالحركة بعد انتهاء الحالة. حركات مستقبلية
يجب أن يسمح الحل بإضافة:
الانسحاب. دخول السيارة والخروج منها. الهروب بالمركبات. اقتحام باب الشركة. حركات أسلحة جديدة.
هذه ليست كلها مطلوبة في النموذج الأول، لكن يجب ألا يمنع التصميم إضافتها لاحقاً.
منطق الحركة داخل الساحة
الحركة ليست عشوائية. منطق المعركة سيقرر لماذا تنتقل الشخصية:
للوصول إلى غطاء أكثر أماناً. للدخول ضمن المدى الفعال للسلاح. للهرب من غطاء متضرر. لتجنب خط نيران غير مناسب. للانسحاب عند انتهاء المعركة.
المطلوب من نظام الشخصية تنفيذ الانتقال والحركة المناسبة بسلاسة بعد استلام الهدف والحالة من محرك المعركة.
إذا كان لديك اقتراح أفضل لتقسيم مسؤولية القرار بين ذكاء المعركة ونظام الحركة والأنيميشن، نريد سماعه.
متطلبات الأداء التشغيل على الهواتف المتوسطة، وليس أجهزة الحاسوب القوية فقط. وجود عدة مقاتلين في الوقت نفسه، وقد يصل العدد المرئي تقريباً إلى 20 مهاجماً و20 مدافعاً. وجود طلقات وشرر ودخان وأصوات في المشهد نفسه. عدم حدوث تقطيع أو استهلاك ذاكرة كبير. إمكانية تخفيض الجودة تلقائياً للأجهزة الضعيفة إذا احتاج الحل ذلك. مراعاة حجم التنزيل والتحميل من الإنترنت.
نريد منك تحديد عدد الشخصيات المتحركة الذي يستطيع الحل المقترح تشغيله بصورة آمنة، وكيف سيتم اختبار الأداء على الهاتف.
تطوير المقاتل
تطوير المقاتل لا يعني تغيير هويته أو جسمه بالكامل. نحتاج تحسينات بسيطة مثل:
تبديل السلاح. إضافة حافظة سلاح أو قطعة حماية خفيفة. اختلاف قفازات أو نظارات أو تفصيل ملابس. شارة أو لون تفصيلي. مستوى أعلى من التجهيز.
يفضل أن تكون هذه العناصر Modular وقابلة للتبديل، لكننا منفتحون على حل آخر إذا كان أفضل للأداء.
المطلوب تسليمه
يعتمد التسليم النهائي على الحل الذي ستقترحه، لكن بصورة عامة نحتاج:
جميع ملفات المصدر القابلة للتعديل. الكود أو المشروع الخاص بنظام الشخصيات. النماذج والخامات والـRig والحركات إذا كان الحل 3D. ملفات Spine/Rive والمرفقات إذا كان الحل Skeletal 2D. الصور وSprite Sheets ومصدر إنتاجها إذا كان الحل يعتمد الرندر إلى 2D. ملفات الأسلحة والإكسسوارات بصورة منفصلة عند الإمكان. نظام تسمية منظم. توثيق طريقة إضافة حركة أو سلاح أو شخصية مستقبلية. توثيق طريقة الربط مع منطق المعركة. نسخة تجريبية تعمل داخل مشهد مشابه لمعركتنا. حقوق استخدام تجاري وتعديل وتسليم العمل لمطور آخر مستقبلاً. توضيح تراخيص أي أدوات أو أصول أو حركات جاهزة مستخدمة.
لا نريد ملفات نهائية مغلقة لا نستطيع تعديلها أو تطويرها مستقبلاً.
المرحلة الأولى المطلوبة
قبل تنفيذ المشروع الكامل، نريد Prototype صغيراً يثبت نجاح الحل.
يجب أن يحتوي النموذج الأولي على:
المهاجم الأسود أبو مسدس. الهوية البصرية القريبة من الصور المرجعية. وقوف واستعداد. تصويب مباشر وتصويب مائل نحو هدف أعلى أو أسفل. إطلاق النار مع نقطة فوهة صحيحة. ركض قصير نحو نقطة محددة. دخول خلف غطاء. وضعية اختباء. إعادة تلقيم. الرجوع إلى الاستعداد. اختبار تغيير الاتجاه. إثبات أن حجم الجسم ومقياسه لا يتغيران بين الحالات. تشغيل أكثر من نسخة من الشخصية في الوقت نفسه لاختبار الأداء.
إذا نجح الـPrototype، نكمل بقية الحركات والأسلحة والمدافع.
المطلوب منك قبل تقديم السعر النهائي
يرجى إرسال تصور تقني مختصر يتضمن:
الحل الذي تقترحه ولماذا تراه الأنسب. البدائل التي استبعدتها وسبب استبعادها. كيف سيتكامل الحل مع JavaScript/Vite وCanvas أو ما التعديل المقترح على طبقة العرض. كيف ستتم إدارة الحالات وربطها بذكاء المعركة التلقائي. كيف ستضمن ثبات حجم وهوية الشخصية. كيف سيتم تبديل السلاح والإكسسوارات. كيف ستتم معايرة اتجاه السلاح ونقطة خروج الرصاصة. أداء الحل المتوقع على الهاتف مع عدة مقاتلين. الملفات المصدرية التي سنستلمها. المدة والتكلفة للـPrototype منفصلة. المدة والتكلفة للمشروع الكامل. عدد جولات التعديل. الأمور غير الداخلة في العرض. نماذج سابقة لأعمال مشابهة، ويفضل أن تتضمن شخصيات قتالية أو أنظمة Animation داخل ألعاب ويب أو هاتف.
الأولوية لدينا هي الوصول إلى نتيجة بصرية ممتازة ونظام يمكن تطويره مستقبلاً. نحن لا نطلب منك تنفيذ طريقة محددة؛ نريد منك فهم الهدف، فحص النظام الحالي والصور المرجعية، ثم اقتراح وتنفيذ الحل المهني الأنسب.
| تاريخ التسجيل | |
| معدل التوظيف | |
| المشاريع المفتوحة | 1 |
| مشاريع قيد التنفيذ | 0 |
| التواصلات الجارية | 1 |
السلام عليكم ورحمة الله وبركاته، ابعتلي رسالة وأجهز لك نموذج تجريبي على البريف بتاعك انت نسخة من معركة الشركات أو العصابات داخل Canvas تجربه من موبايلك من غير إ...
اشتغلت قبل كده على تطوير ألعاب ويب وموبايل، وعلى أنظمة أنيميشن لشخصيات قتالية بـ pipeline من 3D لـ 2D وهرتب الرد على نفس النقاط اللي طلبتوها. 1. الحل المقترح: 3...
أهلا بك أستاذ سجاد. قرأت تفاصيل معركة الشركات وأستطيع أن أخبرك فورا أين تكمن المشكلة: الاعتماد على صور (Sprite Sheets) مرسومة بشكل منفصل لكل حالة لا يصلح لنظام ...
السلام عليكم ورحمة الله وبركاته،تحياتي لكم جميعا ولفريق العمل. قرأت كراسة الشروط بعناية ودقة شديدة وطبيعة التحدي واضحة تماما: المشكلة الأساسية ليست في جودة الرس...
مرحبا، فهمت المشكلة التقنية تماما: الاعتماد على Sprite Sheets تقليدية رسمت بشكل منفصل هو السبب الأساسي لظاهرة الـ Scale Discrepancy، ضياع الـ Ground Anchor، وعد...
السلام عليكم أستاذ سجاد، لقد اطلعت على كراسة الشروط وتحليل العروض السابقة، وبكل صراحة، المشكلة أعمق بكثير من مجرد تعديل Sprite Sheets العقدة الحقيقية تكمن في غي...