(1396/6/7، 05:36 عصر)Dr.AR نوشته است: یه مشکل دیگه هست که یادم رفته- من چند هفته بعد از اینکه برای اولین بار تاپیک رو دیدم با این پلاگین سروکله زدم. حالا شایدم من نتونستم شما امتحان کنید . ولی مشکلی که نا امیدم کرد خروجی بود !
Export your game
Export the game as a usual HTML5 game. AirConsole will request a
As soon as your game is ready make a zip file of the whole directory (screen.html and controller.html in the root) and publish it on AirConsole.
تشکر حالا بازم امتحان میکنم.
بله یکی لز دوستنا گفتند میسازم-گفتم شما شاید زودتر ساختید... چون ایشون فعلا سرشون شلوغه
تست کردم، نتیجه:
بررسی سایت و پلاگین airconsole:
با airconsole میشه روی کامپیوتر یا تلویزیون متصل به اینترنت یه بازی رو اجرا کرد، و با دو تا گوشی اندروید بعنوان دسته، دونفره بازی کرد، مثل یه کنسول بازی، که نه کنسول میخواد نه نصب بازی و ... .
میتونید همین حالا بازی کنید:
pong:
https://www.airconsole.com/#https://stor...-14-06-20/
بازی ماشینی پرتاب کردن هم:
https://www.airconsole.com/#https://dl.d...irconsole/
حالا سایت میخواد دولوپر ها براش بازی بسازن و کسب درآمد کنن، یه سری پلاگین برا انجین های مختلف از جمله کانستراکت گذاشته، که دولوپر بازی های این شکلی بسازه.
روند پلاگین به این صورته:
قراره روی یه دستگاه، بازی اجرا شه، و پلیر ها با موبایل هاشون بعنوان کنترلر بازی کنند.
روند کارکرد پلاگین: بازی رو توی کانستراکت میسازیم، یه قالب html هم برای کنترلر (فایل جدا) تعریف میکنیم و توابع js مینویسیم کنار فایل html برای دسته، که مثلا روی کنترلر هر دکمه ای رو زد چی بشه. البته این فایل js و بازی توی کانستراکت به هم وصلند و میتونن پیام رد و بدل کنن. یعنی از یه طرف باید یه بازی بسازی، از یه طرف یه دسته، و یه سری توابع ارتباطی بینشون.
حالا ما میخوایم :
1. بجای اینکه توی سایت خودش بازیمون رو publish و اجرا کنیم، توی اندروید اجرا کنیم.
2. بجای اینکه یکی صفحه بازی نشون بده یکی فقط کنترلر باشه، هر دو هم کنترلر باشن، هم بازی رو نشون بدن.
مورد 2 شدنیه، بجای اون فایل html کنترلر(دسته بازی)، فایل html بازی رو جای گذاری میکنیم، یعنی بجای اینکه پلیر دو بشه کنترلر، اونم بازی رو اجرا کنه، و یه متغیر js اولش تعریف میکنیم و میگیم این بازیکن شماره 2 است، و توی کانستراکت با execjs میتونیم اینو چک کنیم که بازیکن شماره 1 است یا 2.
مورد 1 هم که میگیم خوب میشه، export اندروید میگیریم دیگه، یا حتی توی preview... ولی:
آیا واقعا سایت local کار میکنه؟ یعنی موقع بازی، اگه اینترنت رو قطع کنیم، باز هم میشه بازی کرد؟ مسلمه که نه، با قطع شدن اینترنت ، اتصال دو دستگاه قطع میشه...
ولی اگه ما بجای اینکه بازی رو روی سایت خودش اجرا کنیم، میتونیم اونو روی lan، یعنی مثلا 192.168.1.10 اجرا کنیم؟ این بستگی به پیاده سازی داره، اگه کد ها، از api توی سایت استفاده نکرده باشن، و همه چیز فقط html و js باشه، چرا که نه... ولی اگه داده هاشون رو به سرور بفرستن، شدنی نیست... چون با قطع شدن اینترنت، دیگه داده ای بینشون نمیتونه رد و بدل بشه....
ولی چجوری پیاده سازی شده؟ جواب : بصورت api پیاده سازی شده...
چرا؟ طبق گفته خودش:
Browsers can not directly communicated with eachother
یعنی دو تا مرورگر نمیتونن با هم مستقیم وصل بشن...
پس سیگنالینگ سرور چجوریه؟ دو تا مرورگر به یه سیگنالینگ سرور وصل میشن، بعد آیپی هم رو میفهمن و با هم مستقیم وصل میشن... یعنی اولا یه سرور میخواد که روش سیگنالینگ سرور نصب کنیم، دوما بعد از قطع شدنشون از اینترنت، دیگه به هم وصل نیستن، چون آیپی اینترنتی هم رو میدونن نه آیپی local هم رو...
خلاصه چون کانستراکت رو بروزر کار میکنه و به native دستگاه دسترسی نداره ، یعنی نمیشه توش سوکت یا سرور مجازی یا ... ساخت (کارایی که توی برنامه نویسی اندروید، یا انجین های غیر مرورگری، میشه کرد)، قابلیت اتصال لوکال دو دستگاه به هم رو نداره، یعنی اصلا تو مرورکر این تعریف نشده و غیر ممکنه...
حالا راه حل ها چیه:
0. تغییر ایده: چرا اصرار دارین لوکال باشه؟ درسته خیلی از کاربرا نمیتونن بازی آنلاین بازی کنن، ولی خیلیا هم میتونن... من خودم بازی لوکال با وای فای یا بلوتوث خیلی کم دیدم، تو انجین هایی مثل یونیتی که اینکار راحته هم خیلی دولوپر ها رغبت نشون نمیدن به لوکال مولتی پلیر، چه برسه به کانستراکت که بدلیل نبودن پلاگین اش ، دردسره...
1. تعویض انجین، مثلا یونیتی این قابلیت رو داره، و آموزشش توی یوتیوب و ... هست پلاگین آماده = android-bluetooth-multiplayer (البته پولی(نسخه بیسیک اش 30 دلار)، که کرک شده(pirate) اش رو دیدم هست)، یا مثلا flash as3 که با ادوب ایر میشه اینکارو کرد و آموزش و پلاگین و ... داره، یا حتی تو خود اندروید استادیو، میشه از گیم انجین هایی که بصورت لایبرری هستن استفاده کنین...
(اگه با یونیتی بخاطر کد نویسی راحت نیستین، میتونین playmaker که برنامه نویسی بصورت ویژوال تو یونیتی است استفاده کنین، ولی این برا قسمت بازی سازیشه، ولی بهر حال باید برنامه نویسی بلد باشین برای کار با اکثر پلاگین ها)
2. یه سورس برنامه اندروید که بتونه ارتباط وای فای یا بلوتوث برقرار کنه، رو برداریم، یه webview یا یه مرورگر پیشرفته تر (مثلا بر مبنای chromium ) هم میذاریم که بازی کانستراکتمون رو لود کنه، حالا اندروید و بازی کانستراکت با js ، با هم ارتباط برقرار میکنن، یعنی هر وقت کسی وصل شد اندروید به کانستراکت خبر بده و... ...
3. یه پلاگین native برای cordova بنویسین که ارتباط wifi اندروید رو هندل کنه، و خروجی cordova بگیرین. ( که فک نکنم کار آسونی باشه) ( میتونین توی سایت ponisha یا ... پول بدین براتون بنویسن، ولی فک کنم حداقلش نزدیک 500 تا 1 بشه)
4. اول بازی به بازیکن لینک یه فایل apk بدین که نصب کنه، بنویسین برا بازی لوکال آفلاین با وای فای این لازمه... یه فایل apk که سوکت یا سرور درست کنه رو گوشی ( میشه پیدا کرد همچین برنامه apk ای، مثلا یه برنامه چت که با wifi کار کنه) ، حالا با هر فریم، تو کانستراکت اون آدرس رو لود میکنیم، تا ببینیم چه پیامهایی تا حالا بینشون رد و بدل شده... و یا یه پیام تو آدرسش براش بفرستیم، اینجوری به هم وصل میشن...
خلاصه : من خودم همیشه علاقه به مولتی پلیر نویسی لوکال داشتم، ولی توی کانستراکت اصلا کار عاقلانه ای نیست... من خودم اول راه 0 بعد راه 1 رو پیشنهاد میدم، یعنی یا بی خیال آفلاین و لوکال شین و برین سمت آنلاین یا بازی روی یک گوشی، یا برنامه نویسی اتون رو تقویت کنین و برین سمت یونیتی.