ساخت بازی با کانواس و جاوا اسکریپت

saalek110

Well-Known Member
اشکال اجرا در لپ تاپ:
یک دوستی ، در لپ تاپ بازی کرده بود ، می گفت دکمه های ردیف پایین بیرون صفحه می مونه.
دنبال این هستم این مشکل را رفع کنم.
من تابحال حواسم به گوشی های کوچک بود ، که گوشی درازه ولی کامپیوتر و لپ تاپ پهن است ، من یاد لپ تاپ نبودم.
فعلا ورژن هایی که روی سایتم است را می خواهم اصلاح کنم. saalek110.fast-page.org
 

saalek110

Well-Known Member
اینکه چطور برای بازی من آپشن درست کردم که دکمه های بازی را کوچک و بزرگ کردم را در پست بعدی می گویم.
 
آخرین ویرایش:

saalek110

Well-Known Member
کد زیر را نگاه کنید:
چون کد شلوغه، در پست بعدی کد خلوت شده را هم گذاشتم. تیبل بندی و استیل ها را حذف کردم.
JavaScript:
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>


</head>
<body>

 <script type='text/javascript'>

var t_arz1;
var t_tool1;
var t_arz2;
var t_tool2;
</script>


<center>

<table><tr><td>
<button type="button" id="up_down1" style=" font-size:20px;  " onclick="accelerate(-1)">up</button>
<button type="button" id="middle"  style=" font-size:12px;   " onclick="accelerate(0)">stop</button>
<button type="button" id="up_down2" style=" font-size:20px;  " onclick="accelerate(1)">down</button>
</td></tr><tr><td>
<button type="button" id="take_off" style=" font-size:12px;  " onclick="start(1)">exit</button>
</td></tr>
</table>
</center>

<script>
function myFunction13() {
document.getElementById('up_down1').style.width =  t_arz1;
document.getElementById('up_down1').style.height =  t_tool1;
document.getElementById('up_down2').style.width =  t_arz1;
document.getElementById('up_down2').style.height =  t_tool1;
document.getElementById('middle').style.width = t_arz2;
document.getElementById('middle').style.height = t_tool2;

}

   document.getElementById('up_down1').style.width =  window.innerWidth/ 3;
   document.getElementById('up_down1').style.height =  window.innerHeight/ 6;
   document.getElementById('up_down2').style.width =  window.innerWidth/ 3;
   document.getElementById('up_down2').style.height =  window.innerHeight/ 6;
   document.getElementById('middle').style.width =  window.innerWidth/ 5;
   document.getElementById('middle').style.height =  window.innerHeight/ 10;

</script>


<center><h2>
 <form id='myform' action="<?php echo $_SERVER['PHP_SELF']; ?>"  method = 'POST'>

<center>
<p>tool va arze dokmeh ra bedahid </p>
 
   <table border=1>
   <tr>
    <td id='h1' >tool va arze dokmeye up and down radif aval ? :

arz: <input   id="up_down_arz" value="100" style=" font-size:20px; height:40px; width:120px;" >

    </td>
<td id='h2' >
tool: <input   id="up_down_tool" value="100" style=" font-size:20px; height:40px; width:120px;" >
</td>
    </td>
   </tr>
 
<tr>
<td id='h5' > baghie dokmeh ha ?
arz: <input   id="baghi_arz" value="100" style=" font-size:20px; height:40px; width:120px;" >

 
</td>
<td id='h5' >
tool: <input   id="baghi_tool" value="100" style=" font-size:20px; height:40px; width:120px;" >

</td>
</tr>
 <tr>
  <td id='h5' colspan='4' >
   <center>
</center>
 </td>
</tr>
<tr>
<td colspan='2'   >
masalan size dokmeh ra 2 ta 30 bedahid<br>

</td>
</tr>
</table>
</center>

<button type="button"  style=" font-size:16px; height:70px; width:250px;" onclick="myFunction11()">taghire size dok mehaye bazi</button>


<script>
function myFunction11() {
 
   arz1=document.getElementById("up_down_arz").value;
t_arz1=arz1;

   tool1=document.getElementById("up_down_tool").value;
t_tool1=tool1;

   arz2=document.getElementById("baghi_arz").value;
   t_arz2=arz2;

  tool2=document.getElementById("baghi_tool").value;
t_tool2=tool2;

  myFunction13();

}//func

</script>
 
 </form>

 

</body>                                       
</html>

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

saalek110

Well-Known Member
چون فرم کد پست قبل شلوغ بود خلوت شده اون را در پست زیر می زنم تا قابل فهم تر باشه:
JavaScript:
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
<body>

 <script type='text/javascript'>
var t_arz1;
var t_tool1;
var t_arz2;
var t_tool2;
</script>

<button type="button" id="up_down1" style=" font-size:20px;  " onclick="accelerate(-1)">up</button>
<button type="button" id="middle"  style=" font-size:12px;   " onclick="accelerate(0)">stop</button>
<button type="button" id="up_down2" style=" font-size:20px;  " onclick="accelerate(1)">down</button>
<button type="button" id="take_off" style=" font-size:12px;  " onclick="start(1)">exit</button>

<script>
function myFunction13() {
document.getElementById('up_down1').style.width =  t_arz1;
document.getElementById('up_down1').style.height =  t_tool1;
document.getElementById('up_down2').style.width =  t_arz1;
document.getElementById('up_down2').style.height =  t_tool1;
document.getElementById('middle').style.width = t_arz2;
document.getElementById('middle').style.height = t_tool2;

}

   document.getElementById('up_down1').style.width =  window.innerWidth/ 3;
   document.getElementById('up_down1').style.height =  window.innerHeight/ 6;
   document.getElementById('up_down2').style.width =  window.innerWidth/ 3;
   document.getElementById('up_down2').style.height =  window.innerHeight/ 6;
   document.getElementById('middle').style.width =  window.innerWidth/ 5;
   document.getElementById('middle').style.height =  window.innerHeight/ 10;

</script>



 <form id='myform' action="<?php echo $_SERVER['PHP_SELF']; ?>"  method = 'POST'>

arz: <input   id="up_down_arz" value="100"  >
tool: <input   id="up_down_tool" value="100" >

 arz: <input   id="baghi_arz" value="100"  >
tool: <input   id="baghi_tool" value="100" >


<button type="button"  onclick="myFunction11()">taghire size dok mehaye bazi</button>


<script>
function myFunction11() {
 
   arz1=document.getElementById("up_down_arz").value;
t_arz1=arz1;

   tool1=document.getElementById("up_down_tool").value;
t_tool1=tool1;

   arz2=document.getElementById("baghi_arz").value;
   t_arz2=arz2;

  tool2=document.getElementById("baghi_tool").value;
t_tool2=tool2;

  myFunction13();

}//func

</script>
 
 </form>
</body>                                  
</html>
برنامه بالا ، تمیزتر و قابل فهم تر شد.
فرم پایین برنامه ، به تابع ۱۱ مرتبط است و تابع ۱۱ ، می آید تابع ۱۳ که به دکمه های بازی نزدیک تر است پاس می دهد.
۴ تا متغیر با پیشوند t داریم اول برنامه که تابع ۱۱ اونها را تغییر می دهد و بعد تابع ۱۳ را صدا میزند تا سایز دکمه های بازی را تغییر دهد.
ممکن است محل کدهای جاوا اسکریپت تعیین می کند که به کدام اجزای سایت دسترسی داشته باشند، چون من در تابع ۱۱ نتوانستم به دکمه های بازی دسترسی پیدا کنم در منطقه بالاتری تابعی به نان تابع ۱۳ ساختم تا سایز دکمه های بازی را تغییر دهد.

اگر بخوام توضیح بیشتر بدهم ، یک فرم شامل چند تا محل وارد کردن عدد و یک دکمه ، در آخر صفحه داریم ، که دکمه فرم به یک تابع جاوا اسکریپت به نام تابع ۱۱ وصل است.. تابع ۱۱ از فرم اطلاعاتی دریافت می کند و اونها را در متغیرهای عمومی برنامه ذخیره می کند و بعد تابع ۱۳ که محلش در کدها بالاتر است و به دکمه های بازی نزدیک تر است را صدا می زند تا تابع ۱۳ سایز دکمه های بازی را تغییر دهد. چگونگی نوشتن فرم و صدا زدن یک تابع جاوا اسکریپت در کدهای بالا هست. طرز تعریف کردن متغیرهای عمومی بازی را هم که بلد بودید. طرز صدا کردن یک تابع از داخل یک تابع جاوا اسکریپت دیگر را هم در بالا می بینید.
یک تگ فرم بسته یعنی </form> هم در کدها هست. تگ فرم باز هم داریم که داره خود صفحه را صدا می زنه. البته فکر کنم مهم نیست کجا را صدا بزنه ، چون وقتی مهم است که دکمه اش بخواهد به کدهای php وصل بشه نه به کدهای جاوا اسکریپت. شکل تگ فرم در یک برنامه این جوری بود ، من همین جوری استفاده کردم. شاید ساده هم بنویسید فرقی نکنه، مثلا این طوری:

HTML:
<form>
یا این جوری:
HTML:
<form  method = 'POST'>
اینکه گفته با روش post کار می کنه فکر کنم کاملتره. و اون صدا زدن خود صفحه فکر کنم اضافه است ، یعنی این:
HTML:
action="<?php echo $_SERVER['PHP_SELF']; ?>"
خودتون تست کنید حالات مختلف را.
 
آخرین ویرایش:

saalek110

Well-Known Member
ایجاد آپشن های بیشتر برای بازی:

در کد پست قبلی دیدیم چطور با جاوا اسکریپت و فرم از کاربر اعدادی بگیریم و در متغیرهای کلی بازی ذخیره کنیم.
و می دانید این متغیرهایی که کف یعنی بیرون تابع ها ایجاد می شوند در همه توابع بازی شناخته شده هستند... پس با تعیین متغیرهای مختلف و تنظیم اونها با یک فرم و تابع جاوا اسکریپت مثل کد پست قبل می توانید هر چیزی را در بازی برایش آپشن تعیین کنید.

مثلا نسوختن یا سوختن در بازی را
یا سختی یا راحتی بازی را
یا حتی شکل کاراکتر بازی که زن باشه یا مرد، یا ماشین باشه یا چیز دیگه..
مثلا بازی درخت داشته باشه یا نه
یا رنگ بک گراند صفحه یا رنگ بک گراند بازی چه رنگی باشه...

و خلاصه هر چیز بازی را میشه برایش آپشن تعیین کرد و از کاربر در موردش سوال کرد.
در پست قبل من سایز دکمه های بازی را با کمک بازیکن تنظیم کردم ولی تمام متغیرهای کلی اول بازی را می توان تنظیمش را به بازیکن سپرد.
 

saalek110

Well-Known Member
اسکلت کلی برنامه ، برای تغییر متغیرهای عمومی برنامه ، با یک فرم و تابع جاوا اسکریپت توسط بازیکن:


اگر بخواهیم فقط یک فرم داشته باشیم که متغیرهایی از برنامه را تغییر بده میشه این:
JavaScript:
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
<body>


<script type='text/javascript'>
var t_arz1;
var t_tool1;
var t_arz2;
var t_tool2;
</script>


<form id='myform' action="<?php echo $_SERVER['PHP_SELF']; ?>"  method = 'POST'>

arz: <input   id="up_down_arz" value="100"  >
tool: <input   id="up_down_tool" value="100" >


arz: <input   id="baghi_arz" value="100"  >
tool: <input   id="baghi_tool" value="100" >


<button type="button"  onclick="myFunction11()">taghire size dok mehaye bazi</button>


<script>
function myFunction11() {

 
  arz1=document.getElementById("up_down_arz").value;
t_arz1=arz1;

   tool1=document.getElementById("up_down_tool").value;
t_tool1=tool1;

   arz2=document.getElementById("baghi_arz").value;
   t_arz2=arz2;

  tool2=document.getElementById("baghi_tool").value;
t_tool2=tool2;

}//func

</script>

</form>
</body>                            
</html>


در برنامه بالا ، یک فرم متصل به یک تابع جاوا اسکریپت داریم که ۴ متغیر عمومی برنامه را داره تغییر می دهد.
متغیر عمومی یعنی این متغیر در همه توابع برنامه شناخته شده و قابل تغییر است چون کف کد و بیرون همه توابع تعریف شده.

در این پست تغییر سایز دکمه های برنامه را حذف کردم تا اصول چگونگی تغییر متغیرهای عمومی برنامه را یاد بگیرید.
بعد که متغیرهای عمومی برنامه تغییر کرد ، می توانید نزدیک دکمه های بازی یک تابع جاوا اسکریپت بسازید و به اون تابع پاس بدهید یعنی صدایش کنید تا سایز دکمه ها را عوض کند. من با بازی با کد می خوام طرز کار کد را شما یاد بگیرید. در این پست کلا تغییر سایز دکمه را حذف کردم تا اسکلت کلی برنامه که شامل یک فرم و یک تابع و چند تا متغیر عمومی است را یاد بگیرید.
اون تگ فرم بسته یعنی این کد:
HTML:
</form>
که الان رفته زیر تابع ، را شاید بهتر باشه بزارید زیر فرم قبل تابع.
 

saalek110

Well-Known Member
ورژن دارای دو عکس gif:



Screenshot_۲۰۲۴-۰۳-۰۳_۱۳۴۸۱۶.jpg

بعد کش و قوس با اون gif خوان ، این ورژن ۸ که دو فایل gif را نمایش می دهد را منتشر می کنم.
در اون یکی تاپیک شرح دادم چه اشکالی با gif خوان پیش می اومد. وقتی برای هر شی یک groove استفاده کردم برنامه سکسکه می کرد... و بعدش اومدم برای هر عکس یک groove ساختم. یعنی کل اشیایی که عکسشون همان gif است ، از همان groove استفاده می کنند.

علائم بالینی برنامه، خخخخ: اگر برنامه سکسکه داشت یعنی بهش فشار اومده.


چگونگی آپلود:

من موقع آپلود فایلهادر هاست که الان ۱۶ فایل است ، هنه فایلها را انتخاب می کنم ، که گاهی یکی دو تایش آپلود نمیشه ، بعدش دوباره همه ۱۶ فایل را انتخاب می کنم و میگم اونهایی که در هاست هست را آپلود نکن...این جوری آپلود معمولا درست انجام میشه.
عکس های بازی در پوشه images است و همه ورژن ها از همون پوشه استفاده می کنند ، پس فقط اگر یک عکس جدید داشته باشم ، اون عکس را به پوشه images اضافه می کنم.
 
آخرین ویرایش:

saalek110

Well-Known Member
روش ساخت ورژن ۹:
یک متغیر مهم مثل فریم نامبر تعریف کردم به نام total_s
الان ۳ متغیر مهم بازی اینها هستند:
JavaScript:
 var total_s=0;
 var s=1;   // Speed
 var frameNo=0;
این متغیر ، s ها را در خود جمع می زند. این جوری:
در تابع آپدیت داریم:

JavaScript:
total_s+=s;

و برای تولید اشیا داریم:

JavaScript:
if (total_s == 1 || everyinterval2(501/s)) {

یعنی به جای فریم نامبر از total_s استفاده کردم...برای اینکه وقتی سرعت زیاد میشه تراکم درخت و توقف گاه کم نشود.

تابع اینتروال ۲ را ساختم که بر اساس total_s است نه فریم نامبر، دو تابع را پیش هم ببینید:

JavaScript:
function everyinterval(n) {
    if ((frameNo / n) % 1 == 0) {return true;}
    return false;
}
function everyinterval2(n) {
    if ((total_s / n) % 1 == 0) {return true;}
    return false;
}

این هم افزایش و کاهش سرعت پله ای:
JavaScript:
function speed1(n)
{
    var z=1;
    if (s<10 && z==1)   { s=s+1;    z=0 }
    if (s==10 && z==1)  {s=20;      z=0 }
if (s==20 && z==1 )     { s=30;     z=0 }
if (s==30 && z==1 )     { s=40;     z=0 }
if (s==40 && z==1 )     { s=50;     z=0 }
if (s==50 && z==1 )     { s=60;     z=0 }
if (s==60 && z==1 )     { s=100;     z=0 }
if (s==100 && z==1 )     { s=200;     z=0 }
if (s>100 && z==1 )      {s=s+50;    z=0 }
}//my_speed
function speed2(n)
{
    var z=1;
  if (s>100  && z==1 )        {s=s-20;    z=0}
  if (s>50 && s<100 && z==1 ) {s=s-10;    z=0}
  if (s==100  && z==1 )       {s=80;      z=0}
  if (s==50  && z==1  )       {s=40;      z=0}
  if (s<50 && s>10  && z==1 ) {s=s-10;    z=0}
  if (s==10  && z==1 )        {s=9;       z=0}
  if (s<10   && z==1 )        {s=s-1;     z=0}
}//my_speed
function my_speed(n)
{
  if (n==0) s=1;
}//my_speed


<button type="button" id="speed1" style=" font-size:12px; " onclick="speed2(1)">down</button>
<button type="button" id="speed0" style=" font-size:12px; color:red; " onclick="my_speed(0)">stop</button>
<button type="button" id="speed2" style=" font-size:12px; " onclick="speed1(1)">up</button>

اون متغیر z اگر نباشه ، به صورت دومینویی وقتی مثلا s بشود ۱۰ خودبه خود میشه ۲۰ و بعد خود به خود میشه ۳۰ و همین جوری میره بالا ، بدون کنترل ما. و این متغیر z باعث میشه وقتی یک افزایش انجام بشه ، از تابع خارج بشه.
 
آخرین ویرایش:

saalek110

Well-Known Member
بازی ماشین جدید که ماشین ها از روبرو می آیند:


دارم جهت حرکت ماشین را عوض می کنم.


کمی تکمیل تر شد:

کمی تکمیل تر شد:


طرز ساختن این ماشین با ماشین قبلی زیاد فرق نداره ، فقط همزمان با تغییر x و y اشیا ، طول و عرض اشیا را هم تغییر می دهیم. در ماشین قبلی فقط x اشیا تغییر داده میشد.
نقطه تولد اشیا در بازی ماشین قبلی ، انتهای سمت راست بود، ولی در این بازی از انتهای جاده اشیا متولد میشوند.

در بازی بالا همه اشیا به سمت راست می آیند.میشه یک صفت به کلاس اضافه کرد به نام direction و وقتی داریم اشیا را جابجا می کنیم اول به صفت direction شی نگاه می کنیم ببینیم راست رو است یا چپ رو...بعد با توجه به صفت دایرکشن اون ، شی را حرکت می دهیم. صفت دایرکشن کنار باقی صفات x و y و طول و عرض شی قرار می گیره.

یا اینکه آرایه اشیای چپ رو از آرایه اشیای راست رو جدا باشه.

روش دوم شاید بهتر باشه، چون پیچیدگی برنامه کمتر است و قابل توسعه تر است.


کار روی این بازی را ممکن است بزارم برای مدتی بعد. نمی دونم چه زمانی باز روی این بازی کار کنم.
 
آخرین ویرایش:

saalek110

Well-Known Member

قبلا این بازی را در تاپیک پست زده بودم. می خوام در هاستم آپلود کنم. چون بازی قشنگیه, آپلود کردم ولی اجرا نشد.


بازی کامل است ، دکمه برای گوشی هم دارد.

موش باید گربه ها را گیر بیاندازد.

لول بعدی هم دارد.


Screenshot_۲۰۲۴-۰۲-۱۶_۱۶۳۱۵۰.jpg


خودتان دانلود کنید بازی کنید.
در سایت گیت هاب دکمه سبز را بزنید و بعد دانلود زیپ را بزنید و بعد آنزیپ کردن در دستگاه خود ، فایل index.html را اجرا کنید.
 
آخرین ویرایش:

saalek110

Well-Known Member
بسته سورس حاوی کلی عکس :


این بسته بازی ساز phaser است ، ولی کلی عکس و آهنگ داره داخلش...برای بازی های دیگه هم خوبه.
حجم دانلود ۵۵۰ مگاست که بعد باز کردن حدود ۸۰۰ مگا میشه.
دکمه سبز را بزنید و بعدش دکمه دانلود زیپ را بزنید.

البته بسته های کوچک تری در تاپیک phaser معرفی شده که اونها هم عکس داره. و شاید عکسهایشان با این بسته یکی باشه. اگر بسته کوچکتر می خواهید اونها را دانلود کنید.
 
آخرین ویرایش:

saalek110

Well-Known Member
من بازی سازهایی را بعد پستهای این تاپیک دارم بررسی می کنم.
بعد تمرینات این تاپیک اونجا من راحت ترم. پس کدهای این تاپیک را کار کنید که جای دیگر هم راحت هستید.
 
آخرین ویرایش:

saalek110

Well-Known Member
بحث فوائد بازی ساز:


امروز۱۹ اسفند ۱۴۰۲ است.
۵ روز است phaser کار می کنم.

در این تاپیک چند تا بازی کار کردم و بعد رفتم تاپیک phaser.

الان که دارم امکانات phaser را می بینم ، یاد کمبودهایی در بازی خودم می افتم که در زیر ذکر می کنم:

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

مشکل دوم ، رسم ماشین رو یا زیر درخت و ساختمان:
در بازی ماشین وقتی ماشین می اومد پایین باید جلوی درخت ظاهر میشد و وقتی می رفت بالا باید می رفت پشت درخت. به این قضیه عمق میگن. من با رسم مشروط قضیه را حل کردم. یک if گذاشتم که اگر y ماشین از حدی بیشتر بشود ، بعد درخت رسم شود. یعنی محلهای رسم ماشین لابلای طبقات اشیای دیگر بود ، و با بررسی y ماشین تصمیم گیری میشد در اون نقطه ماشین رسم بشه یا نه. یعنی در تابع رسم ، رسم ماشین ، چندین جای کد بود ، و در هر نقطه بررسی y ماشین میشد که اونجا رسم بشه یا نشه. همچنین در رابطه با ساختمان توقف گاه ، اگر ماشین می رفت بالاتر ، پشت ساختمان که قرار می گرفت، قبل ساختمان رسم میشد تا ساختمان روی اون بیافتد.
در phaser یک تابعی داریم به نام setdepth یا تنظیم عمق...که میشه برای هر شی ، عمق خاصی تعیین کرد که روی شی بعدی رسم بشه یا زیرش. مثلا اگر عمقش ۲ باشه و دیگری عمقش ۳ باشه ، اون شی روی این شی رسم میشه.

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

در این پست می خواستم ساخت بازی با بازی ساز و بدون بازی ساز را مقایسه بکنم.
فعلا دو نکته را که کار کردم گفتم ولی phaser امکانات بیشتری داره که من هنوز به اون مباحث نرسیدم.

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

saalek110

Well-Known Member
خلاصه ای از کدها را در تاپیک زیر زدم:

 

saalek110

Well-Known Member
بازدید تاپیک به دو هزار رسید.

شروع تاپیک ۱۶ فوریه. امروز ۳ مارس.
حدود دو هفته.

البته من ۵ روزه ، رفتم تاپیک phaser و مشغول کار بر این بازی ساز هستم.
 
آخرین ویرایش:

saalek110

Well-Known Member
ساخت رنگ راندوم :

رنگ را این طوری می نویسند #ffffff یعنی علامت # و بعدش ۶ تا عدد. اون علامت # باید سمت چپ اعداد باشه ، در پست من که فارسی است شاید شما سمت راست ببینید.

در آدرس زیر:


این طوری نوشته:

JavaScript:
const randomColor = "#" + Math.floor(Math.random() * 16777215).toString(16);



عبارت toString(16) گویا به عددی در مبنای ۱۶ تبدیل می کند. اون عدد بزرگ هم احتمالا حداکثر عدد رنگ است .
 

جدیدترین ارسال ها

بالا