گریزی به دوران کودکی؛ بازی‌ها جذاب هستند!

بله؛ بازی‌ها جذاب هستند! لینوس توروالدز، خالق لینوکس، در کتاب فقط برای تفریح می‌گوید:

اینکه بازی‌ها در لبه‌ی تکنولوژی قرار گرفته‌اند و اولین برنامه‌هایی هستند که برنامه‌نویسان می‌نویسند، دلیلی دارد. بخشی از دلیل مربوط به این واقعیت است که در بسیاری از مواقع، باهوش‌ترین برنامه‌نویس‌ها بچه‌های پانزده، شانزده ساله‌ای هستند که در اتاق خوابشان مشغول ور رفتن با کامپیوتر هستند...

فکر نمی‌کنم باهوش باشم، اما اولین برنامه‌هایی که من هم نوشتم بازی‌ها بودند؛ و در اصل نقش بزرگی در آشنایی من با برنامه‌نویسی داشته‌اند. من کامپیوتر را با بازی شناختم. اولین دیدار رو در روی من با یک کامپیوتر مربوط به زمانی می‌شود که 11 ساله بودم؛ و اولین چیزی که در این دیدار روی مانیتور کامپیوتر به چشمم می‌خورد، یک بازی بود. خب بازی‌های کامپیوتر نسبت به بازی‌های نینتندوی من، گرافیک فوق‌العاده‌ای داشتند. من از آن زمان به کامپیوتر علاقه‌مند شدم. البته نه همیشه برای بازی کردن؛ برای هر نوع کنجکاوی! و چون صاحب کامپیوتر، دایی گرامی بود، من این شانس را داشتم تا هر هفته که به خانه‌ی مادربزرگ می‌رویم در حد یکی دو ساعت با کامپیوتر ور بروم. هر هفته را برای رسیدن به جمعه روزشماری می‌کردم تا بتوانم به کامپیوتر برسم؛ و اگر شانس میاوردم و بین هفته هم به خانه‌ی مادربزرگ می‌رفتیم، خب بی‌نهایت عالی بود!

تصور کنید در حالی که همه، روز آخر هفته دور هم نشسته‌اند و گرم خوردن چای و خوش و بش هستند، یک پسربچه در اتاق، تنها مشغول بازی کردن یا کنجکاوی با کامپیوتر است. عکس‌ها و فیلم‌هایی از آن دوران وجود دارد و به خاطر دارم هنگام گرفتن همین عکس و فیلم‌ها، صدایم می‌زدند که:

احسان! پاشو از پشت کامپیوتر. میخواییم دسته‌جمعی یادگاری بگیریم.

«احسان! پاشو از پشت کامپیوتر» برایم جمله‌ی غریبی نیست و تقریباً در حال تبدیل شدن به یک استاندارد برای صدا زدن من توسط دیگران بود! بگذریم، به هرحال بازی‌های کامپیوتری نقش عمده‌ای در گرایش من به کامپیوتر داشتند.

بازی‌ها را چطور می‌سازند؟

این سؤال من بود. به خاطر دارم روزی دایی‌ام گفته بود:

برای هر حرکت که توی این بازی‌ها میبینی یک برنامه نوشتن.

و نمی‌دانم متوجه برداشت احمقانه‌ی من درمورد ساخت بازی شدید یا نه! تفکر من این بود که احتمالاً بازی‌ها مجموعه‌ای از هزاران عکس هستند که با فشردن یک کلید، یک عکس خاص ظاهر می‌شود و بنابراین هر حرکتی که بازیکن در بازی می‌کند یا هر اتفاقی که در بازی می‌افتد، قبلاً توسط طراح بازی عکس گرفته شده و در بازی قرار داده شده است. خب شاید برای آن سن و سال خیلی هم احمقانه نباشد؛ اما به هرحال برداشت من از حرف دایی‌ام اشتباه بود.

کامپیوتر شخصی خودم

یکسال بعد، زمانی که 12 ساله بودم، و پس از علاقه‌ی زیاد نشان دادن به کامپیوتر، پدر و مادر متقاعد شدند تا برای من یک کامپیوتر بگیرند. امتحانات نوبت اول دوره‌ی اول راهنمایی به پایان رسیده بود. یک روز ظهر در حالی که از مدرسه به خانه رسیدم، با دیدن یک کامپیوتر در اتاقم غافل‌گیر شدم. حس ذوق آن لحظه قابل وصف نیست و لبخند از روی رضایت پدر و مادر که از ذوق من خوشحال بودند.

یک کامپیوتر گرافیک 64، رم 256 و ویندوز XP! البته که من در آن زمان اطلاعاتی از سخت‌افزار کامپیوتر نداشتم اما می‌دانستم این یکی از بهترین کامپیوترهای آن دوران بود که برایم گرفته بودند. و مهمترین چیزی که بی‌نهایت خوشحالم می‌کرد این بود که دیگر نیاز به صبر کردن تا آخر هفته و رفتن به خانه‌ی مادربزرگ برای کامپیوتر بازی نیست! ناگفته نماند که به دلیل نداشتن جنبه در استفاده از کامپیوتر و افت شدید تحصیلی، در نهایت تصمیم بر این شد که اجازه داشته باشم فقط در روزهای پنجشنبه و جمعه تا ظهر ساعت 12 با کامپیوتر مشغول باشم و باقی زمان‌ها را به فکر درس و مدرسه باشم. به این قانون تا سال آخر دوره‌ی دبیرستان پایبند بودم.

اولین بازی که ساختم

یکسال بعد، در حالی که در تعطیلات تابستان با اینترنت Dial-up مشغول پیدا کردن یک بازی بودم، اتفاقی چشمم به یک عنوان در یک سایت افتاد:

به راحتی و بدون داشتن دانش خاصی از برنامه‌نویسی، با Game Maker بازی بسازید.

عنوان تحریک‌کننده بود. قسمت عجیب ماجرا هم تصمیم آن زمان من بود که به خودم گفتم:

خب! چرا باید بازی دانلود کنم؟ بازی خودم رو میسازم و بازی می‌کنم!

و شروع کردم به دانلود و نصب Game Maker. نیم ساعت بعد از نصب Game Maker، تصمیم به حذف برنامه داشتم؛ اما مثال‌های پیش‌ساخته‌ای که در Game Maker وجود داشت، مانع شدند. درمورد کدنویسی هیچ چیزی نمی‌دانستم. بزرگترین مزیت Game Maker برای من این بود که نیازی به نوشتن کد برای دستورات ساده نداشتید. تعدادی از کدها به صورت فلوچارت داده شده بود و تنها کار این بود که بر اساس منطقی که در نظر داشتید، این ابزارها را به داخل پنجره‌ی مخصوص می‌کشیدید.

چون از فلوچارت‌ها هم سررشته‌ای نداشتم، یک ایده به ذهنم رسید و آن این بود که مثال‌های Game Maker را باز می‌کردم و کدها و فلوچارت‌های آن را خط به خط در یک پروژه‌ی خالی کپی می‌کردم. سپس دکمه‌ی Run را می‌زدم تا ببینم در خروجی چه اتفاقی می‌افتد. بر اساس خروجی متوجه می‌شدم که این کد چه کاری را انجام می‌دهد. با این شیوه پیش رفتم و در نهایت در پایان سال توانستم اولین بازی کامپیوتری خودم را بسازم.

قطعاً بازی که ساخته بودم از نظر کدنویسی افتضاح بود؛ اما خب از یک پسربچه‌ی 13-14 ساله انتظار نوشتن کد درست و حسابی نبود. به هرحال خروجی به درستی کار می‌کرد و این برای آن زمان من خوب بود!

تلاش برای ساخت بازی‌های دیگر

یکسال بعد از آشنایی با Game Maker، به صورت خیلی ابتدایی برنامه‌نویسی یاد گرفته بودم و پیشرفت کرده بودم و از خودم راضی بودم. تصمیم گرفتم بازی بسازم و بین سایر دوستان همکلاسی به اشتراک بگذارم. و توانستم در سال سوم راهنمایی یک بازی ریاضی بنویسم و از طریق معلم ریاضی آن دوران من، که استقبال زیادی از این فعالیت‌ها می‌کرد، آن را بین سایر دوستان و تعدادی از مدارس راهنمایی شهر معرفی کنم.

تمام این اتفاقات باعث علاقه‌ی بیشتر و بیشتر من به کامپیوتر، برنامه‌نویسی و بازی شد. با گذشت زمان، پیشرفت بهتری در برنامه‌نویسی کردم. یکی از تفریحات من در حوزه‌ی ساخت بازی، تلاش برای کپی کردن و بازنویسی بازی‌های آن زمان بود. این کار باعث می‌شد بیشتر، چالش‌های شرکت‌هایی که این بازی‌ها را می‌سازند، درک کنم؛ و البته پیشرفت بیشتری در برنامه‌نویسی داشته باشم.

طراحی بازی، یک تفریح پر از چالش

امروز من یک مهندس نرم‌افزار هستم و همچنان در حال یادگیری و تجربه. علاقه‌ی زیادی به کامپیوتر و برنامه‌نویسی دارم. و البته همچنان علاقه‌ی زیادی به طراحی بازی. طراحی بازی هنوز هم برای من جذاب است و هنوز در کنار طراحی و توسعه‌ی نرم‌افزار، بخشی از زمان برنامه‌نویسی خودم را به کسب تجربه و توسعه‌ی بازی‌های کامپیوتری می‌گذرانم.

به قول دیوید فولر، یکی از اعضای تیم ASP.Net مایکروسافت و خالق SignalR:

من فکر می‌کنم هر توسعه‌دهنده باید توسعه‌ی بازی را امتحان کند. هیچ چیزی به اندازه‌ی نوشتن کدهایی که به صورت بصری، پیکسل‌های روی صفحه نمایش را حرکت می‌دهد، پاداش ندارد.

با این جمله موافقم و به نظرم این زمینه بی‌نهایت جذاب و چالش برانگیز است. امتحانش ضرری ندارد :)