آی تی آموزی/ چگونه با Stencyl برای اندروید بازی بسازیم؟

منبع
زوميت
بروزرسانی
زوميت/ روش‌هاي بسياري براي ايجاد بازي براي دستگاه‌هاي اندرويدي وجود دارد. اما اکثر آن‌ها يا مانند يونيتي نياز به آموزش‌هاي تخصصي و کامل دارند يا مثل GameMakerStudio، براي يادگيري آن‌ها بايد هزينه‌ي زيادي بپردازيد. در اين مقاله قصد داريم تا آموزشي ساده و رايگان در رابطه با نحوه‌ي ايجاد بازي‌هاي اندرويدي ارائه کنيم و شما را با نرم‌افزار Stencyl و نحوه‌ي استفاده از آن آشنا کنيم.  Stencyl تمام امکانات GameMakerStudio را به صورت رايگان و با قابليت استفاده‌ي آسان، در اختيار کاربران خود قرار مي‌دهد. ساختن بازي براي اندرويد خيلي سخت و پرهزينه نيست، پس بياييد شروع کنيم. رابط کاربري: اولين قدم دانلود نرم‌افزار Stencyl است. در مرحله بعد بايد Crash Course Kit را دانلود کنيد. اين مجموعه هر آن‌چه براي شروع و ساختن بازي نياز داريد، در اختيار شما قرار مي‌دهد. رابط کاربري اين نرم‌افزار به سه قسمت تقسيم شده‌ است که با سه رنگ متفاوت در تصوير بالا مشخص شده است. از پنل آبي رنگ و بالاي صفحه شروع مي‌کنيم. در اين قسمت برخي از شورت‌کات‌هاي ضروري قرار دارد که شامل، ايجاد يک برنامه‌ي جديد، ذخيره کردن بازي، تغيير پلتفرم و تست و اجراي بازي است. قسمت سبز رنگ، بخشي است که تمامي گزينه‌هايي که با آن‌ها روي يک پروژه‌ي خاص کار مي‌کنيد، نمايش داده خواهند شد. در تصوير بالا، اين بخش براي نمايش همه‌ي شخصيت‌هاي بازي مورد استفاده قرار گرفته است. در نهايت به توضيح قسمت قرمز رنگ مي‌رسيم. اين قسمت از قسمت‌هاي ديگر پيچيده‌تر است. در اين قسمت تمامي پروژه‌ها به همراه گزينه‌هاي مربوط به آن‌ها و همچنين بخش‌هاي منطقي پروژه، مثل کد‌ها، نگهداري مي‌شود. در قسمت زير توضيح مختصري از هر قسمت ارائه شده است. Actor Types (‌انواع کارکتر‌هاي بازي): هر چيزي که مي‌‌تواند حرکت کند يا با آن تعامل داشته باشد يک کارکتر يا Actor ناميده مي‌شود. اين قسمت شامل طراحي ظاهري، نام و همه‌ي انيميشن‌هاي انتخاب شده براي هر کارکتر است. به علاوه گزينه‌هايي براي نحوه‌ي برخورد با هر يک از اجسام اصلي و همچنين کنترل فيزيکي کارکترها وجود دارد. Backgrounds (پس زمينه): همان‌گونه که از نام آن مشخص است، در اين قسمت تصاوير مربوط به پس زمينه قرار گرفته است. Fonts (نوع قلم): Fonts ويژگي بسيار خوبي است. اين گزينه براي شما امکان ايجاد فوت‌هاي خاص را فراهم مي‌کند. همچنين مي‌توانيد نوع، سايز و رنگ فونت ايجاد شده را نيز مشخص کنيد. با اين روش مي‌توانيد، فونت‌هايي را که قبلا ايجاد شده‌اند بدون اين‌که مجبور باشيد بار‌ها و بار‌ها پيکربندي کنيد، مورد استفاده قرار دهيد. Scenes (‌صحنه‌ها‌): در قسمت Scenes مي‌توانيد مراحل يا صحنه‌هاي مختلف بازي را ايجاد کنيد. مثلا سنگ فرش، دشمنان، بازيکنان و هر چيز ديگري را که در بازي وجود دارد، ايجاد کنيد. شما بايد براي هر صحنه نامي انتخاب و سايز آن را نيز مشخص کنيد. نکته: نيازي نيست سايز هر صحنه به همان ابعاد تعريف شده براي بازي باشد. با يک دوربين ثابت، صحنه به وسيله‌ي scrolling، مي‌تواند به راحتي بزرگ‌تر شود. Sounds (‌صداها‌): در قسمت Sounds مي‌توانيد صداها را وارد کنيد. فرمت‌هاي قابل پشتيباني، MP3 (‌براي فلش‌) و OGG (براي ساير ورودي‌ها) هستند. روشي نيز براي ايجاد صدا و همچنين ويرايش صدا در يک ويرايشگر خارجي مثل Adobe Audition وجود دارد که مي‌توانيد به اختيار خود آن را انتخاب کنيد. Tilesets (سنگ فرش‌ها): در قسمت Tilesets مجموعه‌اي از سنگ فرش‌هاي مختلف وجود دارد که مي‌توانيد در صحنه‌هاي مختلف از آن‌ها استفاده کنيد. مي‌توانيد براي هر سنگ فرش، يادداشت بنويسيد. به علاوه مي‌توانيد نحوه‌ي برخورد با آن‌ها را نيز پيکربندي کنيد. Actor Behaviors (رفتار شخصيت‌ها): اگر روي گزينه Actor Behaviors در stencyl کليک کنيد، خواهيد ديد که يک دسته از گزينه‌ها‌ي قابل تنظيم، وجود دارد که شامل همه‌ي موارد لازم براي اجراي بازي ساخته شده است. اغلب آن‌ها واضح هستند و با استفاده از برخي از آيتم‌هاي موجود در آن، شما به سرعت به کاربرد آن‌ها پي‌خواهيد برد. Scene Behaviors (ويژه‌گي‌هاي صحنه‌): در قسمت Scene Behaviors مي‌توانيد روش‌هاي ازدياد دشمنان، سکه‌ها يا امثال آن را مشخص کرده و همانند شخصيت‌هاي بازي، پيکربندي کنيد. Code (‌کد نويسي‌): قسمت Code شامل اسکريپت‌هايي است که احتمالا نياز خواهيد داشت. با اين اسکريپت‌ها تقريبا قادر خواهيد بود هر تغييري که مي‌خواهيد در بازي اعمال کنيد که براي شما بسيار مفيد خواهد بود. اما در اين مقاله‌ي آموزشي ما از اسکريپت‌ها استفاده نمي‌کنيم. Drag and drop (کشيدن و رها کردن): در stencyl مي‌توانيد با استفاده از تکنيک‌ کشيدن و رها کردن، در بازي منطق ايجاد کنيد. مثلا شما با کليک روي رفتار هر کارکتر، بلوک if و شبه کدها‌ي مرتبط با آن‌ را، خواهيد ديد که به آن رفتار موجوديت مي‌بخشند. شايد کمي ترسناک به نظر برسد اما جاي نگراني نيست. همه‌ي آن‌ها از ادراک شما سرچشمه مي‌گيرند. همه چيز رنگي است که اين خود موجب تطابق هر خط با بخش مربوط به آن در نوار ابزار سمت راست، مي‌شود. درباره‌ي اين نوار ابزار مي‌توان گفت که شامل ۱۳ آيتم مختلف است و شما با کليک روي هر کدام از آن‌ها در زيرمنو‌ها و بلوک‌ها، قادريد آن‌ها را جايگزين کنيد. براي دريافت راهنمايي کامل و توضيحات بيشتر به سايت stencyl مراجعه کنيد. Stencyl داراي قابليتي است که مي‌تواند مستقيما از طريق کد مورد استفاده قرار گيرد، البته اگر شما در کد نويسي مهارت داشته باشي،. وگرنه براي اين‌که بهتر بدانيد که نحوه‌ي کار به چه صورت است، مي‌توانيد به کدها دسترسي داشته باشيد و آن‌ها را ببينيد. ( اما در آن‌ها تغييري ايجاد نکنيد). زبان برنامه نويسي مورد استفاده در اين نرم‌افزار، زبان شئ‌گراي بيسيک است. اين زبان بسيار شبيه جاواست و امکانات نامحدودي را براي شما فراهم مي‌کند. نحوه‌ي ايجاد يک بازي ساده: Stencyl را اجرا کنيد و روي گزينه “Click here to create a new game” کليک کرده و “Crash Course Kit” را انتخاب کنيد و ”next” را بزنيد. اگر گزينه‌ي “Crash Course Kit” موجود نيست، مسير File -->Import Game -->import the kit را دنبال کنيد. نام و سايز صحنه بازي را وارد کنيد. من سايز ۷۲۰*۱۲۸۰ را در جهت landscape انتخاب کردم. زماني که بازي ايجاد مي‌شود، ابتدا در قسمت داشبورد قرار مي‌گيرد. جايي که تمامي اتفاقات در آن‌جا اتفاق مي‌افتد. به زودي به توضيح اين قسمت نيز، خواهيم پرداخت. بيايد به مرحله بعدي برويم. اکنون نيازداريد تا يک گروه ايجاد کنيد. که به شما اجازه خواهد داد تا کار‌هاي مورد نظر خود را انجام دهيد. کاري که در ابتدا بايد انجام دهيد، باز کردن پنجره‌ي تنظيمات است. اين پنجره را مي‌توانيد در قسمت آبي رنگ مشخص شد در تصوير ابتدايي مقاله پيدا کنيد. در سمت چپ پنجره‌ي باز شده، روي “Groups” کليک کنيد. براي ايجاد يک گروه جديد، “Create New” را بزنيد و نام آن را “Enemies” بگذاريد. مطمئن شويد که اين نام با “Players” و “Tiles” مطابقت داشته باشد (‌اگر آن‌ها انتخاب شده باشند، سبز رنگ خواهند شد ) سپس کليد OK را بزنيد. اکنون زمان آن رسيده تا براي کارکتر‌ها، رفتار‌هايي را تعيين کنيم. اين کار به بازي روح مي‌بخشد. کاري که بايد انجام دهيد اين است که به صفحه‌ي مربوط به يک کارکتر خاص مثلا “Noni” و “Clown” برويد و “Behaviors” را که در قمست مياني و بالاي صفحه قرار دارد، انتخاب کنيد. در وسط صفحه کليک کرده و براي “Noni” انيميشن مربوط به راه رفتن را اضافه کنيد. پس از اضافه کردن يک صفحه نمايش، درخواست‌هايي مبني بر اضافه کردن انيميشن به آن نيز، ارائه خواهد شد که عباراتي توضيحي هستند و با کليک روي آن‌ها مي‌توانيد انيميشن مربوطه را اضافه کنيد. اين مرحله را تکرار کنيد. ( روي “Add Behavior” در سمت چپ و پايين صفحه کليک کنيد) اما اين بار انيميشن مربوط به پريدن (jumping ) را انتخاب کنيد. اطمينان حاصل کنيد که کليدي با نام “action1” براي پريدن بازيکنان اضافه کرده باشيد. به علاوه مي‌توانيد از ليست کشويي موجود براي آن، صداي مورد نظر خود را نيز انتخاب کنيد. هنوز کارمان در اين قسمت تمام نشده و رفتار‌هاي ديگري را نيز بايد به بازي اضافه کنيم مثلا مردن براثر سقوط در گودال و شروع مجدد بازي يا از بين بردن دشمنان. به “enemies” يک گروه، و به “action1” نيز يک کليد براي پرش اضافه مي‌کنيم. آخرين قسمت از کار نيز بخش مربوط به مردن براثر سقوط در گودال و شروع مجدد بازي است که براي اين قسمت هيچ چيز براي پيکربندي وجود ندارد. حالا به سراغ “Clown” مي‌رويم. براي پيدا کردن “Clown” روي داشبورد کليک کرده و مطمئن شويد که “Actor Types” انتخاب شده باشد. پيکربندي “Clown” بسيار ساده است و تنها در دو مرحله انجام مي‌شود. در تب “Clown” ؛ “properties” را انتخاب کنيد و گروه آن را به “Enemies” تغيير دهيد. سپس به تب “Behaviors” برويد و رفتار “stompable” را اضافه کرده و انيميشن و صداي مرتبط با “Stomped” را انتخاب کنيد. اکنون کار ما براي پيکربندي بازيکنان و دشمنان به اتمام رسيده است. آخرين کارکترهايي که نياز داريم به بازي اضافه کنيم، کليد‌هايي هستند که بازيکنان را قادر مي سازند که با لمس آن‌ها ساير کارکترها را کنترل کنند. آن‌ها مي‌توانند به هر نحوي طراحي شوند اما من تصميم گرفتم آن‌ها را به شکل دو کليد جهت‌دار و يک کليد براي پرش، طراحي کنم. اگر مي‌خواهيد از تصاوير مورد نظر خودتان براي طراحي استفاده کنيد، به StencylForge برويد و پک “Virtual Mobile Button” که در زير قسمت “Actor Types” قرار دارد را دانلود کنيد. اولين کاري که بايد انجام دهيد، ايجاد سه کارکتر جديد است. “LeftButton”، “RightButton” و “JumpButton”. به تب داشبورد برويد، “Actor Types” را انتخاب کرده و روي “create a new Actor Type” کليک کنيد. به “Virtual Mobile Button” برويد و روي فلش “Left” و سپس “Copy Frame” که در نوار ابزار خاکستري رنگ و جلوي کليد مربوط به بخش “Frames” قرار دارد، کليک کنيد. اکنون به تب “LeftButton” برويد و “add an animation” را انتخاب کرده روي “Paste Frame” کليک کنيد. حال به بخش “Physics” در همان تب برويد و دکمه‌ي “Cannot move” را انتخاب کنيد. با اين کار دکمه از اثرات گرانشي صفحه در امان خواهد بود. اين مرحله را براي دکمه‌هاي right و jump، نيز تکرار کنيد. گام بعدي کمي وقت‌گير و پيچيده است بنابراين آن‌را به دقت مطالعه کنيد و مطمئن شويد که براي انجام آن به اندازه‌ي کافي وقت داريد. در ابتدا به تب “Events” در صفحه‌ي مربوط به “LeftButton” برويد. روي “Add Event” کليک کنيد. روي “Input” رفته و از منوي باز شده “On Actor” را انتخاب کنيد. با اين کار يک بلوک کوچک در قسمت مياني و سمت راست صفحه ايجاد خواهد شد. حالت آن‌را به “is pressed on” تغيير داده و روي منوي کشويي که درست بعد از “when the mouse” در قسمت قهوه‌اي رنگ قرار دارد، کليک کنيد. به “Attributes” در قسمت بالا و راست صفحه برويد ( نزديک Flow،Scene، Numbers & Text) درست در زير آن، “Game Attributes” را کليک کنيد. اکنون يک ويژگي جديد براي بازي ايجاد مي‌شود. در حال حاضر ما به سه ويژگي جديد نياز داريم. آن‌ها را به ترتيب “move_left”؛ “move_right” و “jump” مي‌ناميم. اين‌ها متغييرهاي بولي هستند و ما با کليک برروي هر کدام، مقدار false را به عنوان مقدار پيش فرض آن‌ها انتخاب مي‌کنيم. شما سه “Boolean Setter” مشاهده خواهيد کرد. اين‌ها بلوک‌هاي عملياتي هستند که به رويداد‌ها (events ) اضافه شده و موجب مي‌شوند تا رفتار‌ها اتفاق بيفتند. از set move_left setter براي تنظيم پرچم‌ها ( بولي) استفاده مي‌شود. move_left نيز مي‌تواند true يا false باشد. کاري که ما مي‌خواهيم انجام دهيم اين است که مقدار بولي مناسب هنگام لمس يکي از آيکن‌هاي فلش‌هاي جهت‌دار به صورت خودکار تنظيم شود. براي “LeftButton” دو زير مجموعه‌ي بولي با نام‌هاي “set move_left to…” و “set move_right to…” تعيين کنيد و آن‌ها را با موس به داخل بلوک قهوه‌اي بکشيد. براي “move_left” مقدار true و براي ساير متغيير‌ها مقدار false را تنظيم کنيد. اين بدين معني است که هرگاه فلش سمت چپ لمس شود پرچم move_left؛ true مي‌شود. يک رويداد جديد ديگر ايجاد کنيد. اکنون مي‌خواهيم رويدادي ايجاد کنيم که وقتي موس روي هيچ کدام از کليد‌هاي جهت‌دار قرار نگرفته است، مقدار “move_left” و “move_right” هر دو false باشد. اين مخالف رويدادي است که در بالا ايجاد کرديم. اکنون زماني که کليد براي مدت کوتاهي لمس شود پرچم move_left ؛ false خواهد شد. با اين دو رويداد، پرچم move_left با توجه به اين‌که کليد چپ يا راست لمس شده يا نه، مقدار دهي مي‌شود. اکنون همان کارها را براي “RightButton” انجام مي‌دهيم و براي “move_right” مقدار true، و براي “move_left” مقدار false را تعيين مي‌کنيم. براي “JumpButton” نياز داريد تا مراحل بالا را مجددا تکرار کنيد. اما اين‌بار شما فقط به يک متغيير نياز داريد، “jump”. براي زماني که با موس روي آن کليک مي‌کنيم، مقدار true و براي زماني که کليک موس را رها مي‌کنيم، مقدار false را تنظيم کنيد. تا به اين جا کليه‌ي کارهاي مربوط به دکمه‌ها را انجام داده‌ايم و اکنون زمان آن رسيده تا رفتار‌هاي کارکتر‌هاي “Walking” و “Jumping” را مشخص کنيم. در زير “Actor Behaviors”؛ “Walking” را باز کنيد و روي رويداد “Updated” کليک کنيد. اين کار ممکن است کمي خسته کننده به نظر برسد اما ما تنها نياز داريم تا بخشي از دو خط کد موجود را تغيير دهيم. خبر خوش اين‌که کامنت‌هايي براي کمک به ما وجود دارند. در زير کامنت “Walk Right”، بلوک دستور if را خواهيد ديد. تنها قسمت مشخص شده (‌قسمت سبز رنگ‌) را به وسيله‌ي موس انتخاب کرده و به خارج از بلوک دستور if منتقل کنيد. روي آن راست کليک کنيد و با زدن دکمه‌ي “remove” آن‌را حذف کنيد. در زير “flow” در سمت راست، به دنبال کليد “anything = anything” بگرديد و آن را با موس گرفته و به جاي قسمتي که به تازه‌گي حذف کرده‌ايد ( در بدنه دستور if ) قرار دهيد. مطمئن شويد آن‌را در جاي درست قرار داده‌ايد. اگر اين چنين باشد در مکان f به خوبي قرار خواهد گرفت. سپس روي ليست کشويي کليک کرده و مسير Boolean-->Game Attributes-->move_right را دنبال کرده و move_right را انتخاب کنيد. سپس روي ليست کشويي ديگر کليک کرده، navigate to Boolean را انتخاب و مقدار Comparison را true کنيد. همين کار را براي “move left” نيز انجام دهيد. به قسمت زيرين مربوط به کامنت “move left” رفته فرآيند بالا را تکرار کنيد. بعد از اتمام مراحل فوق به سراغ رفتار‌هاي مربوط به کاراکتر “Jumping” برويد. اين مرحله خيلي آسان است. درست زير کامنت “Jump”؛ FIRST را در بدنه‌ي دستور if حذف کنيد. همه چيز را حذف نکنيد، تنها قسمت‌هايي را حذف کنيد که قبل از “and” هستند. سپس “anything = anything” را به جاي قسمت حذف شده در دستور if، قرار دهيد و فقط مقدار “jump” را براي آن true کنيد (“jump = "true ). مي‌توانيد مطمئن باشيد که همه‌ي اين‌ها در مرحله بعد کار مي‌کنند. پس از آن، زير قسمت داشبورد با کليک روي “Scenes” صحنه‌ي جديدي ايجاد کنيد. مي‌توانيد براي آن هر نامي که مي‌خواهيد انتخاب کنيد. مثلا شايد “Level1” مناسب باشد. مي‌توانيد مرز‌هاي صفحه را نيز مشخص کنيد. گزينه‌هايي در اختيار شما قرار داده شده که مي‌توانيد حدود را با استفاده از پيکسل يا tiles مشخص کنيد، البته با توجه به شرايط. من اندازه‌ي صفحه را ۷۲۰*۱۲۸۰ در نظر گرفتم. آخرين گزينه، گزينه‌ي مربوط به اضافه کردن رنگ پس زمينه است. من از طيف رنگي آبي آسماني استفاده کردم. بعد از انتخاب رنگ مورد نظر خود، کليد “ok” را بزنيد. هنگامي که صفحه براي اولين بار لود مي‌شود، مي‌توانيد صفحه را به همراه تمامي آيتم‌هايي که مي‌توانند در صفحه قرار بگيرند، ( سمت راست صفحه ) مشاهده کنيد. روي کف‌پوش چمني کليک کنيد و يک پلتفرم ايجاد کنيد و کارکتر Noni را به همراه چند کارکتر دشمن (Clowns) اضافه کنيد. در اين‌جا مي‌توانيد همه‌ي دکمه‌ها را با هر نحوي که مي‌خواهيد پيکربندي کنيد. در آخرين مرحله بايد جاذبه را اضافه کنيد تا اگر کارکتر‌ها در هوا معلق هستند، به روي زمين برگردند. در همان صفحه‌، به تب “Physics” برويد و vertical gravity را برابر ۱۰۰۰ قرار دهيد. اکنون تنظيمات مربوط به اين صفحه به صورت کامل انجام شده است. به منظور تست بازي روي پلتفرم دلخواه خود، در بالاي صفحه و سمت راست “Test Game” را بزنيد. البته به خاطر داشته باشيد که بايد دستگاه اندرويدي خود را به سيستم متصل کنيد. به علاوه به Java JDK نسخه‌ي ۱.۶ يا بالاتر نياز خواهيد داشت. Android SDK نيز به صورت اتوماتيک موقعي که شما سعي مي‌کرديد بازي را براي اولين بار روي اندرويد اجرا کنيد، دانلود شده است. نتيجه‌گيري: روش‌هاي بسياري به منظور ساخت بازي براي اندرويد وجود دارد، اما من به اين نتيجه رسيدم که براي استفاده از گزينه‌ها و امکانات رايگان، Stencyl بهترين نرم‌افزار است. يادگيري اين نرم‌افزار خيلي سخت نيست و ساخت بازي با آن نيز بسيار آسان است. درک رابط کاربري آن بسيار ساده بوده و با کمي تمرين، رويدادها و بلوک‌هاي مربوط به شبه کد‌ها، به آساني قابل يادگيري هستند. اگر سوالي پيرامون مطالب بالا داشتيد با ما در بخش ديدگاه‌ها در ميان بگذاريد. شما با چه روشي براي اندرويد بازي مي‌سازيد؟! با کانال تلگرامي «آخرين خبر» همراه شويد