بازیهای دیجیتال بخش مهمی از صنعت نرمافزار را تشکیل میدهند، با این حال جامعه متشکل از مهندسان نرمافزار به ندرت بازیهای دیجیتال را مورد مطالعه قرار میدهد. به عقیده برخی کارشناسان این عدم تعادل در صورتی مشکلساز است که توسعه بازیهای دیجیتال نسبت به توسعه نرمافزار دارای روندی متفاوت باشد. در مقالهی پیشرو مطالعهای با 14 مصاحبهشونده و 364 پاسخدهنده به نظرسنجی صورت پذیرفته است که تفاوتهای اساسی بین توسعه بازیهای دیجیتال و سایر توسعه نرمافزارها را نشان میدهد. به عنوان مثال، در توسعه بازی، استفاده از شیوه کدنویسی به سبک ” کابوی ” برای مقابله با فعل و انفعال مداوم بین خواستههای خلاقانه و محدودیتهای فنی ضروری است. به همین دلیل، توسعهدهندگان بازی به دلیل منسوخ شدن سریع تستها در برابر تغییر خواستههای خلاقانه طراحان بازی، در استفاده از تست خودکار مردد هستند. این مسئله یکی از تفاوتهای میان بازی و غیر بازی است.
بازیها در حال تبدیلشدن به بخش مهمی از صنعت توسعه نرمافزار هستند. فراتر از سرگرمیهای ساده، بازیهای دیجیتال به طور فزایندهای برای آموزش دانشآموزان، سربازان و متخصصان پزشکی مورداستفاده قرار میگیرند. درآمد بازیهای دیجیتال همگام با اهمیت روزافزون آنها در حال افزایش است. درآمد بازیهای دیجیتال بیش از سه برابر خردهفروشی نرمافزارها در سال 2012 بود.
علیرغم اهمیت بازیها، آنها به ندرت در تحقیقات مهندسی نرمافزار موردمطالعه قرار میگیرند. از 116 پروژه نرمافزار منبع باز و بسته موردمطالعه در دو سال گذشته در حوزه مهندسی نرمافزار، تنها 3 پروژه بازی بودند. فقدان تحقیقات مهندسی نرمافزار در مورد بازیها، علیرغم اهمیت آنها، دو مشکل را ایجاد میکند:
اولاً با درنظرگرفتن این واقعیت که توسعه نرمافزار غیربازی با توسعه بازی متفاوت است، تحقیقات مهندسی نرمافزار گذشته تأثیر کمی بر بازیها خواهند داشت. برای درک بهتر این مسئله به این مثال توجه کنید: جامعه پزشکی به دلیل ثبت بیش از حد مردان در مطالعات بیماری عروق کرونر قلب با انتقادات قابل توجهی مواجه شده است، چرا که روشها و درمانهایی که در حال حاضر برای این بیماری استفاده میشوند، به طور عمده یا منحصراً برای مردان ایجاد شدهاند. رویه محققان مهندسی نرمافزار مبنی بر «ثبت ناکافی» بازیها در مطالعات نیز ممکن است منجر به چنین نتیجهای شود: ابزارها و شیوههایی که برای توسعه بازیها قابل اجرا نیستند.
مطالعات پیشین:
کتابهای زیادی حاوی روشهایی برای توسعه بازیها وجود دارد. برخی نقشهای توسعهدهنده و فرآیند سطح بالایی را که توسعهدهندگان و سازمانها باید هنگام ایجاد بازیها استفاده کنند، توصیف میکنند.
در همین راستا، مقالاتی نیز وجود دارند که به جزئیات مشکلات اساسی در توسعه بازی میپردازند. این آثار بر اساس تجربه نویسندگان است و تا حد زیادی توسعه بازی را به عنوان یک نوع خاص از مهندسی نرمافزار در نظر نمیگیرند. یافتههای این تحقیق مبتنی بر مشاهدات تجربی است که به صراحت بر تفاوتهای بین مهندسی نرمافزار عمومی و توسعه بازی تمرکز دارد. اخیراً چندین محقق بر روی بررسی روند توسعه بازیها تمرکز کردهاند و با اشاره به کمبود مطالعات تجربی، مروری بر فصل مشترک مهندسی نرمافزار و بازیها ارائه میدهند. یکی از این مطالعات، بررسی کیفی 65 پروژه توسعه بازی است که تفاوتهای قابل توجهی را بین توسعه بازی و سایر صنایع خلاق پیدا میکند. همچنین یک نظریه مبتنی بر خلاقیت در توسعه بازی ارائه کرده است.
همچنین همانند پژوهش پیش رو، برخی تحقیقات موجود تفاوتهای بین توسعه بازی و مهندسی نرمافزار سنتی را بررسی کردهاند. یکی از محدودیتهای مهم برای این کار این است که توسعهدهندگان بازی ممکن است در گزارش برخی از جنبههای منفی کار خود تردید داشته باشند، در این کار از مصاحبهها و نظرسنجیهای ناشناس استفاده شده، چرا که به عقیده نگارندههای آن به پاسخدهندگان کمک میکند تا صادقتر باشند.
روش تحقیق:
روش مطالعهی این مقاله شامل دو بخش مصاحبه کیفی و نظرسنجی کمی است که در طول گزارش به توضیح آن خواهیم پرداخت.
برای نگارش پژوهش حاضر با توسعهدهندگانی که هم در توسعه بازی و هم در توسعه غیر بازی تجربه داشتند، مصاحبه شده است. نویسنده اول با توسعهدهندگان مصاحبه کرده و چند سوال جمعیت شناختی در رابطه با میزان تجربه مصاحبهشونده پرسید.
در بخش دوم، مصاحبهکننده سؤالی “باز” پرسید که مصاحبهشونده چه تفاوتهایی بین توسعه نرمافزار برای بازیها و غیر بازیها مشاهده کرده است. این بخش به مصاحبهشوندگان اجازه میدهد تا آزادانه درباره تفاوتها صحبت کنند، بدون اینکه مصاحبهگر برای پاسخهایشان سوگیری کند.
در بخش سوم و چهارم مصاحبه، فهرستی از موضوعات را به مصاحبهشوندگان ارائه کردیم تا آنها را ترغیب کنیم تا درباره موضوعاتی که به صراحت در نظر نگرفته بودند صحبت کنند. ما به نیمی از مصاحبهشوندگان موضوعات 10 حوزه را در مجموعه دانش مهندسی نرمافزار، مانند تعمیر و نگهداری نرمافزار و تست نرمافزار دادیم. ما به نیمی دیگر از مصاحبهشوندگان لیستی از ویژگیهای کلی کار روانشناسی کاربردی از جمله حمایت اجتماعی و حل مسئله را همفری و همکاران ارائه کردیم.
نظرسنجی
ما یک نظرسنجی 10 دقیقهای برای ارزیابی تفاوت بین توسعه بازی و غیر بازی ایجاد کردیم. نظرسنجی ما با هدف تعیین کمیت تفاوتهای کیفی بیان شده توسط مصاحبهشوندگان در مورد طیف وسیعی از توسعه دهندگان انجام شد.
نتایج
در این بخش نتایج را بر اساس موضوعات مصاحبه گزارش میکنیم. در برخی موارد، برای حفظ حریم خصوصی مصاحبهشوندگان، بخشهایی از نقلقولها را ناشناس کردهایم.
موضوعات
نرمافزار موردنیاز
تقریباً هر مصاحبهشونده بیانیهای قوی در مورد تفاوت بین نیازهای بازی در مقابل الزامات سایر نرمافزارها بیان کرد. در اصل، بازیها به طور کلی تنها یک شرط دارند و آن اینکه آنها «سرگرمکننده» هستند.
یکی دیگر از دلایل تفاوت الزامات بین بازیها و غیر بازیها این است که تجربیات کاربران بازی به طور قابلتوجهی با تجربیات غیر بازی متفاوت است.
طراحی نرمافزار
مصاحبهشوندگان توضیح دادند که در بازیها به چند دلیل تمایل کمتری به طراحی به عنوان یک فعالیت برنامهریزیشده دارند. از جمله اینکه نیاز به «سرگرمکننده» بودن بسیار مبهم بوده و از طرفی دیگر تفاوتهای فرهنگی نیز به این مسئله دامن میزند
ساخت نرمافزار، ابزارها و روشها
موضوعی که مصاحبهشوندگان بارها به آن اشاره کردند استفاده مجدد از کد و ابزار بود. مصاحبهشوندگان اشاره کردند که معتقدند در مقایسه با نرمافزارهای غیربازی، استفاده مجدد از کد بین بازیها و درون بازیها کمتر رایج است یکی از دلایلی که به نظر میرسد تمایل به استفاده مجدد کمتری از کد وجود دارد این است که بازیها اغلب تأکید قابلتوجهی بر عملکرد خاص دارند.
پیداکردن راهحل بسیار بهینه شدهای که برای بازی خاص شما کارساز باشد دشوار است زیرا [وضعیت شما] به نوع تجربهای که میخواهید ایجاد کنید خاص است. این مسئله فقط به همه سطوح نفوذ میکند، نوع فیزیکی که در بازی خود دارید، نوع تصاویر بصری که در بازی خود دارید و …
نقلقول بالا نشان میدهد که دلیل دیگری برای استفاده مجدد از کد کمتر در بازیها این است که استفاده مجدد دلالت بر شباهت بین نرمافزار دارد، اما بازیها بر نوآوری تأکید دارند.
با این حال، چندین مصاحبهشونده خاطرنشان کردند که استفاده مجدد اغلب در بازیها انجام میشود، فقط به روشهای مختلف.
تست و کیفیت نرمافزار
اگرچه کیفیت نرمافزار هم در بازیها و هم در غیر بازیها مهم است، اما به نظر میرسد که روش آزمایش به طور قابل توجهی متفاوت است. دلیل اهمیت کیفیت در بازیها این است که همانطور که مصاحبهشونده شماره 10 میگوید:
تقریباً شبیه تماشای یک فیلم است؛ بنابراین این تجربه برای اینکه شما [خود] را در تجربه بازی غرق کنید، نباید عاملی ایجاد کند که شما را از آن غوطهوری خارج کند.
چالش دیگر این است که به سادگی ادعا کنیم رفتار صحیح چیست:
اگر من در حال انجام یک بازی هستم، مثل اینکه به این مرد شلیک میکنم و یک مصنوع بصری مانند پریدن میبینم، آیا برایم مهم است؟
یکی از مصاحبهشوندهها اظهار داشت:
میتوانم … تستهای واحد را بنویسم و بگویم این دشمن در دو ضربه میمیرد، اما واقعاً معنیدار نیست، زیرا این مسئله مهم نیست که او در دو ضربه بمیرد، مهم این است که او در تعداد مناسبی از ضربات که طراح بازی فکر میکند بمیرد. چالش دیگری که برای نوشتن تستها وجود دارد، عدم قطعیتی است که در بازیها به دلیل چندرشتهای بودن، محاسبات توزیعشده، هوش مصنوعی و تصادفی بودن تزریق شده برای افزایش سختی بازی رخ میدهد. همانطور که P5 بیان کرد،
مصاحبهشوندگان گزارش دادند که دلیل استراتژیک برای انجام آزمایشهای خودکار کمتر و آزمایشهای انسانی بیشتر نیز وجود دارد: آزمایش خودکار در برابر تغییرات مکرر شکننده است، در حالی که آزمایش انسانی انعطافپذیرتر است.
مصاحبهشوندگان همچنین اظهار داشتند که یکی دیگر از دلایل رایج بودن تستهای انسانی این است که نسبتاً ارزان است، زیرا تستهای بازی ارزانتر از آزمایشکنندههای نرمافزار هستند
نگهداری نرمافزار
مشابه تاخیر توسعه دهندگان بازی در طراحی معماری، به نظر میرسد تعمیر و نگهداری نیز چیزی است که در بازیها از نرمافزارهای غیر بازی به مراتب بیشتر به تعویق میافتد.
مدیریت پیکربندی نرمافزار
تعدادی از مصاحبهشوندگان خاطرنشان کردند که مدیریت پیکربندی در توسعه بازی در مقایسه با سایر انواع توسعه نرمافزار اهمیت ویژهای دارد. بر این اساس، مدیریت پیکربندی برای بازیها یک چالش است.
مدیریت مهندسی نرمافزار
مصاحبهشوندگان اظهار کردند که تفاوت قابلتوجهی بین مدیریت در بازیها با غیر بازیها این است که افرادی که در موقعیتهای مدیریت بازی قرار دارند، تمایل به پیشینه فنی ندارند.
فرآیند مهندسی نرمافزار
9 مصاحبهشونده از کلمه Agile برای توصیف روند توسعه بازیها استفاده کردند، به نظر میرسد که غیر قابل پیشبینی بودن در بازیها چیزی است که Agile را مناسب میکند.
موضوعات کاری عمومی
در این قسمت به تفاوتهای بازیسازی و غیر بازیسازی از نظر موضوعات کلی کار میپردازیم.
حل مسئله و تنوع مهارت
مصاحبهشوندگان سه تفاوت اصلی را بین توسعه بازی و غیر بازی در پیچیدگی شغل و حل مسئله شناسایی کردند:
اول، مصاحبهشوندگان خاطرنشان کردند که بازیهای درحالتوسعه چالشهای فنی متمایزی را پیشروی آنها قرار میدهند.
دوم، ذهنیت ذاتی در برآوردن نیاز «سرگرمکننده» به توسعه دهندگان بازی مشکلات پیچیدهای را برای حل کردن میدهد.
سوم، مصاحبهشوندگان اظهار داشتند که برای توسعه بازیها به مهارتهای متنوعتری نیاز است
خودمختاری
از میان مصاحبهشوندگانی که از آنها مصاحبه شد، اغلب اذعان داشتند که تفاوتی در میزان استقلال آنها بین توسعه نرمافزار بازی و غیر بازی وجود ندارد. یک استثنای جالب مصاحبهشونده شماره 10 بود که معتقد بود، چون بسیاری از چالشهایی که توسعهدهندگان بازیهای دیجیتال با آنها روبرو هستند، خلاقانه هستند، توسعهدهندگان بازی باید سطح بالایی از استقلال داشته باشند.
تخصص و وابستگی متقابل
اظهارات مصاحبهشوندگان در مورد تخصص و وابستگی متقابل بر طیف گستردهای از مهارتهای موردنیاز برای ساخت بازیها، در مقایسه با توسعه نرمافزار غیر بازی متمرکز بود:
مصاحبهشونده شماره 6: این بخشی از موفقیت من است زیرا ارتباط مهارت بسیار مهمی است تا بتوانم این شکافها را بین رشتههای مختلف از بین ببرم.
تعامل خارج از سازمان
مصاحبهشوندگان نشان دادند که توسعهدهندگان بازی تمایل دارند پیوند قویتری با مشتری داشته باشند، هم به این دلیل که بازیکنان بازی تمایل بیشتری نسبت به کاربران نرمافزار معمولی دارند و هم به دلیل اینکه برآورده کردن نیازهای «سرگرمکننده» بدون درک مشتری دشوار است.
آگاهی از نتایج
مصاحبهشوندگان از نظر شناخت تأثیر نرمافزار خود تفاوتهای کمی را گزارش کردند.
اهمیت و معنادار بودن تجربه
مصاحبهشوندگان گزارش کردند که عمدتاً با جستجوی مشکلات چالشبرانگیز و از طریق نوآوری که هم در بازیها و هم در غیر بازیها وجود دارد، معناداری و اهمیت پیدا کردند. بااینحال، به نظر میرسد که مصاحبهشوندگان نرمافزار غیربازی را دارای تأثیر معنادارتری نسبت به نرمافزار بازی میدانند
منظورم این است که همه ما میدانیم که ما فقط در حال ساخت یک بازی هستیم و … بهاندازه برخی دیگر از نرمافزارهای مهم تجاری مهم نخواهد بود. (مصاحبهشونده شماره 8)
با این وجود، مصاحبهشوندگان احساس کردند که توسعه بازیها به دلایل متعددی هنوز معنادار است.
اول، مصاحبهشوندگان با دانستن تعداد افرادی که از آن استفاده میکنند، معنایی در حزب کاری خود پیدا کردند. برنامههایی مانند مایکروسافت آفیس معمولاً توسط تعداد بیشتری از افراد نسبت به بازیهایی مانند Halo استفاده میشوند، اگرچه این میزان از نرمافزاری به نرمافزار دیگر متفاوت است.
دوم، مصاحبهشوندگان بازیها را از غیر بازیها در انواع تعاملات مردم با آنها متمایز میکردند. پاسخدهندگان عمدتاً بازیها را برای مقاصد سرگرمی ساختهاند (بهاستثنای «بازیهای جدی») در حالی که سایر برنامهها به افراد اجازه میدهند مولد یا خلاق باشند.
تقاضاهای فیزیکی و شرایط کار
در ابتدای این مطالعه، ما در نظر گرفتیم که خواستههای فیزیکی و شرایط کاری را از فهرست موضوعاتی که از مصاحبهشوندگان میپرسیم حذف کنیم، زیرا فرض کردیم تفاوتهای کمی بین توسعه نرمافزار بازی و غیر بازی وجود دارد. در حالی که چندین مصاحبهشونده این فرض را تایید کردند، دیگران ما را با تفاوت در این زمینهها شگفتزده کردند.
صنعت بازیهای دیجیتال به این دلیل که توسعهدهندگان را ملزم میکند ساعتهای طولانی کار کنند، بدنام است و به نوع خاصی از استقامت فیزیکی نیاز دارد. دیگران از فشار احساسی که ساعات طولانی بر توسعه دهندگان وارد میکند صحبت کردند.
دوم، مصاحبهشوندگان به چند اثر محیطی کار در بازیها اشاره کردند که در محیطهای غیر بازی متوجه آنها نشده بودند. مصاحبهشونده شماره 6 کار بر روی یک عنوان بازی را برای یک سیستم بازی مبتنی بر حرکت (مانند Nintendo Wii یا Microsoft Kinect) توضیح داد، جایی که تیم آزمایش توسعه را از نظر فیزیکی سخت میدانست – در واقع، برخی از آزمایشکنندگان در تلاشی که در حال پریدن بودند، مچ پاهای خود را پیچاندند. مصاحبهشونده شماره 13 اشاره کرد که در برخی از سازمانهای سازنده بازی که بازیهای تیراندازی اولشخص میسازند، توسعهدهندگان اساساً در معرض سالها شلیک ثابت شبیهسازی شدهاند، زیرا توسعهدهندگان نرمافزار خود را آزمایش میکنند. به طور مشابه، مصاحبهشونده شماره 6 گفت که تیمهای سازنده بازی معمولاً پرانرژی هستند، جایی که «موسیقی بیشتری پخش میشود و افراد بیشتری صحبت میکنند و تعداد توپهای فوتبال بیشتری در راهرو پرتاب میشوند تا تیمهای غیربازی».
نتیجه:
بازیهای دیجیتال بخش قابلتوجهی از توسعه نرمافزار مدرن را تشکیل میدهند، با این حال محققان مهندسی نرمافزار درگذشته تلاش کمی برای مطالعه تجربی بازیها انجام دادهاند. نتایج این تحقیق نشان میدهد که بازیها تفاوتهای قابلتوجهی با توسعه نرمافزار «سنتی» دارند، و این مقاله به عنوان زمینهای برای درک این تفاوتها کمک میکند. در چشماندازی بزرگتر، این کار نشاندهنده گامی به سوی درک توسعه نرمافزار است، نه بهعنوان یک کل همگن، بلکه بهعنوان مجموعهای غنی از شیوههای متفاوت که شامل افراد متنوع در حوزههای مختلف میباشد.