حول الكتاب





ما هي طبيعة هذا الكتاب؟

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

من يمكنه قراءة هذا الكتاب والاستفادة منه؟
 
الجميع دون استثناء! سواء كنت طالبا جامعيا أو في مرحلة الدراسة الإعدادية أو الثانوية، أو حتى كنت موظفا وتحمل مؤهلا لا علاقة له بالحاسب والبرمجة، فإن هذا الكتاب يقدم لك ما تحتاجه من معرفة للدخول في عالم تطوير الألعاب، على الأقل من الناحية البرمجية؛ حيث أنه من الصعب أن يحيط كتاب واحد بكل الفنون المتعلقة بتطوير الألعاب نظرا لتنوعها وتشعبها، فكل فن من هذه الفنون يحتاج كتبا لتحيط ببعضه فكيف بكتاب واحد.

هل هذا الكتاب خاص بتعليم محرك معين أو لغة برمجة معينة؟

على الرغم من أن الكتاب يتعامل من الناحية التقنية مع محرك واحد فقط وهو Unity3D، ولغة برمجة واحدة هي #C إلا أن رؤية الكتاب تنطلق من كونه موجها لكل راغب بتعلم تقنيات تطوير الألعاب من المنظور البرمجي تحديدا. لذا فإن معظم أمثلة الكتاب لا ترتبط إلا بالوظائف الأساسية المتعلقة بمحرك Unity3D وتبتعد قدر الإمكان عن الدخول في تفاصيل المحرك الخاصة. هذا سيجعل من السهل على القارئ الاستفادة من الكتاب بغض النظر عن المحرك الذي يستعمله، فما عليه إلا أن يتعرف على مقابل هذه الوظائف في المحرك الذي يرغب باستخدامه. ونظرا لكون هذه الوظائف أساسية جدا، فلا يمكن تخيل وجود محرك ألعاب يخلو منها؛ فقراءة مدخلات اللاعب عبر لوحة المفاتيح والفأرة، وتحريك وتدوير الكائنات في الفضاء ثلاثي الأبعاد واستخدام أنواع الإضاءة المختلفة، كلها تعتبر أساسيات لا يخلو منها أي محرك ألعاب حديث، وإن تغيرت الطريقة التي يوفر بها هذه الخدمات للمستخدم.

هل أحتاج لقراءة الكتاب كاملا من الغلاف للغلاف حتى أتمكن من تطوير لعبة؟

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

هناك الكثير من دروس الفيديو والدروس المتنوعة لمحرك Unity على الإنترنت، فما هو المميز في هذا الكتاب؟

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

لدي أسئلة أو استفسارات، أو وجدت أخطاء في الكتاب، أو أنني أرغب بالتواصل مع الكاتب، كيف يمكن ذلك؟

يمكنك ذلك من خلال صفحة الكتاب على الفيسبوك: https://www.facebook.com/3dgd.intro
كما يمكنك متابعتي على تويتر: https://twitter.com/yjaffal