معرفی ابزار مناسب ساخت بازی
در زمینه بازی های سه بعدی از ابزار #آنریل انجین استفاده کنید و برای بازی های دوبعدی از #گودوت استفاده کنید و درون آن اگر سرعت و بهینه سازی برایتان بسیار مهم است به جای GDscrip از #C استفاده کنید.
#Godot
#Unreal
#Unity
#بازی_سازی
👨💻@iran_skill
آقای مهندس
معرفی ابزار مناسب ساخت بازی در زمینه بازی های سه بعدی از ابزار #آنریل انجین استفاده کنید و برای باز
مزیت استفاده از #گودوت نسبت به #یونیتی در بازی های دو بعدی،رایگان بودن آن و همچنین ابزار های هم سطح آن با یونیتی است.
در زمینه بهینه بودن نیز اگر از زبان سی شارپ استفاده کنید حدود دو نیم برابر سریع تر از حالت mono behavior یونیتی است.
در زمینه سه بعدی هم که آنریل با زبان c++ و همچنین سیستم بلوپرینت و سیستم انیمیشن بسیار قوی و پارتیکل افکت هایش بسیار قوی تر از یونیتی است.
در زمینه ایجاد بازی های جهان باز نیز آنریل بهتر است.
#Godot
#Unreal
#Unity
👨💻@iran_skill
دوره آموزشی عمیق جاوا اسکریپت
اگر دنبال یک دوره مناسب جهت فهم بهتر و عمیق تر از Javascript هستید دورهJAVASCRIPT UNDERSTANDING THE WEIRD PARTS رو پیشنهاد میکنم.
میتونید از برخی از سایت های داخلی به صورت رایگان دانلود کنید.
دقت داشته باشید که قبل از اینکه یک آشنایی پایه و مناسب از جاوا اسکریپ داشته باشید،خوب نیست سراغ این دوره برید.
#javascript
#web
#دوره
👨💻@iran_skill
فعلا قابلیت پخش رسانه در مرورگر فراهم نیست
مشاهده در پیام رسان ایتا
وضعیت من وقتی دارم پروژهای رو میزنم که هنوز از لحاظ ذهنی آمادهاش نیستم
#برنامه_نویسی
#طنز
👨💻@iran_skill
زمان و نحوه استفاده از interface در سی شارپ - قسمت اول
خیلی ها در عمل بین کلاس های انتزاعی(abstract) و کلاس های رابط(interface) دچار سردرگمی میشوند.
آنها احساس میکنند که اگر ما مجموعهای از کلاس ها داشه باشیم که همه آنها دارای یک سری رفتار و فعل مشابه باشند از رابط ها استفاده میکنیم،در حالی که این وظیفه کلاس های انتزاع است.
برای روشن شدن کاربرد رابط ها با یک مثال جلو میرویم.
تصور کنید شما بازیای طراحی کردهاید که در آن بازیکن دارای قابلیت حرکت و مبارزه است.
در اینجا قابلیت مبارزه کردن وابسته به قابلیت حرکت کردن است تا به هدف برسد!
تا اینجا مشکلی نیست،اما زمانی که به هدف رسید باید قابلیت حرکت متوقف شود و قابلیت مبارزه شروع به کار کند سپس تصور کنید بازیکن در وسط مبارزه دوباره قصد حرکت و ترک مبارزه را داشته باشد،در اینجا قابلیت حرکت هم وابسته به قابلیت مبارزه خواهد شد تا بتواند به آن اطلاع دهد که مبارزه را متوقف کند تا بتواند به حرکت ادامه دهد.
این موقعیتی است که از آن به جهنم وابستگی یاد میشود،اگر پروژه بزرگتر شود ۱۰ها قابلیت هر کدام به صورت معکوس به هم وابستهاند و فقط کافی است یک قابلیت تغییر کنید تا قابلیت هایی که وابسته به آن بودند دیگر کار نکنند و تمام پروژه به هم بریزد و زحمات دود شود.
اما راه حل چیست؟
#سی_شارپ
#برنامه_نویسی
#رابط
#interface
👨💻@iran_skill
زمان و نحوه استفاده از interface در سی شارپ - قسمت دوم
در پست قبل یک توضیح اولیه از مشکلی که ما را به استفاده از رابط ها خواهد رساند ارائه دادیم.
در این پست نحوه حل این مشکل را بررسی میکنیم.
در قدم اول برای رهایی از مشکل جهنم وابستگی ها میتوانیم یک کلاس سوم ایجاد کنیم و به جای اینکه قابلیت حرکت و مبارزه مستقیما با هم صحبت کنند،هر کدام هنگامی که کارش را شروع کرد به این کلاس سوم اطلاع دهد،ما نام این کلاس سوم را مرکز کنترل میگذاریم.
در اینجا زمانی که قابلیت مبارزه کار خود را شروع میکند،خود را به مرکز کنترل معرفی میکند تا نشان دهد شروع به کار کرده است،سپس مرکز کنترل ضمن تشخیص کسی که خودش را معرفی کرده باید به قابلیت حرکت اطلاع دهد که کار خود را متوقف کند.
اکنون قابلیت حرکت و مبارزه بدون اینکه هیچ اطلاعی از هم داشته باشند کار خود را انجام میدهند.
اما کار هنوز تمام نشده است،اگر به جای دو قابلیت قبل،قابلیت های صحبت کردن،غذا خوردن،شنا کردن و ده ها قابلیت دیگر اضافه شود،چه بلایی بر سر مرکز کنترل خواهد آمد.
مرکز مجبور است هر بار که نامی رسید با حلقه های شرطی طولانی بررسی کند که چه کسی است که با مرکز ارتباط گرفته تا بعدا وقتی شخص دیگری خود را معرفی کرد،بداند که به چه شخصی باید بگوید کارش را متوقف کند!!
از سمتی با اضافه شدن قابلیت جدید او نیز باید یک حلقه شرطی دیگر برای بررسی اضافه کند...
اینجاست که مرکز کنترل از رابط ها استفاده میکند تا به رنج خود پایان دهد.
#interface
#سی_شارپ
#آموزش
👨💻@iran_skill
زمان و نحوه استفاده از interface در سی شارپ - قسمت سوم
مرکز کنترل برای پایان دادن به رنج خود و بررسی های عریض و طویل اینکه چه شخصی قصد انجام چه کاری را دارد، تمام کلاس هایی که قصد کار مشخصی با هم دارند را تشویق به ایجاد یک رابطه یا قرارداد میکند.
فرض کنید یک کلاس interface تحت عنوان اجازه ساخته میشود،داخل آن یک تابع ایجاد میشود که نام آن (توقف) است هیچ بدنه کدی ندارد، در این مثال ورودی(parameter) نمیگیرد و فرضا هیچ خروجی(return) هم ندارد.
سپس همه کلاس ها(قابلیت ها) از کلاس (اجازه) ارث بری میکنند.
حال تمام کلاس هایی که این کار را کردهاند مجبوراند یک تابع دقیقا با همان نام ،همان نوع ورودی و همان نوع خروجیِ تابع توقفی که درون کلاس اجازه است بسازند.
حالا مرکز کنترل فقط تماس کسانی را پاسخ میدهد که در رابطه یا همان قراردادِ (اجازه) حضور دارند، دیگر نیازی نیست که او بداند دقیقا چه شخصی با او ارتباط گرفته و یا حتی خودش با چی شخصی تماس میگیرد ،مرکز کنترل تنها اطلاع دارد که کسی وجود دارد که قرارداد اجازه را امضا کرده و قبلا نیز شروع کارش را به او اطلاع داده حالا کس دیگری نیز که او نیز در چنین قراردادی است قصد شروع کاری دارد،مرکز کنترل به فرد قبلی اطلاع اجرای قرارداد توقف را میدهد و نفر فعلی را نیز به عنوان فردی که در حال اجرای کار خود است و در قرارداد حضور دارد به خاطر میسپارد تا در تماس بعدی به او نیز اطلاع دهد.
این بود مزیت استفاده از interface در سی شارپ.
#interface
#سی_شارپ
#آموزش
👨💻@iran_skill
معرفی توابع ایستا(static function) در سی شارپ
توابع استاتیکِ داخل یک کلاس در سی شارپ را بدون اینکه نمونهای از آن کلاس را بسازید قابل دسترساند،آنها فقط یکبار توسط سیستم ساخته میشوند و برای دسترسی به آن تنها کافی است پس از نام کلاس با اوپراتور دات( Class.StaticFunction) از آنها استفاده کنید.
آنها چیزی خارج از بدنه خود را در کلاسی که هستند تغییر نمیدهند و عملیات آنها بر روی ورودی که میگیرند شکل میگیرد.
چنین توابعی برای ساختن عملیات های جبری بسیار مفیداند.
اگر کاری را میخواهید انجام دهید که در بخش های گوناگون پروژه بار ها به آن کار نیاز دارید میتوانید از این توابع استفاده کنید.
👨💻@iran_skill