آشنایی با سی پلاس پلاس برای توسعهدهندگان بازی
✅ سرفصل و جزئیات آموزش
آنچه یاد خواهید گرفت:
- اعلانهای متغیر سی پلاس پلاس، انواع داده رایج (از جمله آرایهها، بردارها و نقشهها) و عملیاتهای ورودی و خروجی را به طور صحیح درک و پیادهسازی کنید.
- از دستورهای if و else، دستورهای switch و ساختارهای مختلف حلقه (while ،do-while و for) برای منطق بازی و وظایف تکراشونده استفاده کنید.
- توابع را تعریف، فراخوانی و مدیریت کنید که شامل استفاده از چندین پارامتر، بازگرداندن مقادیر و بهکارگیری مؤثر انواع enum است.
- تفاوت بین حافظه استک و هیپ و اهمیت لغو دستی تخصیص حافظه در هیپ را توضیح دهید.
- از ارجاعهای حافظه (&) و اشارهگرهای raw (*) برای دسترسی به آدرسهای حافظه و ارسال متغیرها به توابع بر اساس ارجاع برای اصلاح موثر استفاده کنید.
- اشارهگرهای هوشمند را برای مدیریت خودکار حافظه پیادهسازی کنید و از مشکلات رایج مانند نشتهای حافظه و ارجاعهای چرخهای جلوگیری کنید.
- کلاسهای موثر سی پلاس پلاس را با توابع عضو، constructorهای کلاس و destructorهای کلاس بسازید تا نماینده اشیا و سیستمهای بازی باشند.
- از specifierهای دسترسی (عمومی، خصوصی و محافظت شده) برای کپسولهسازی صحیح داده و قابلیت استفاده کنید.
- اصول اساسی برنامهنویسی شیگرا، از جمله وراثت، پلیمورفیسم، overloading عملگر را پیادهسازی کنید و "Big Five" را مدیریت کنید.
- یک محیط توسعه یکپارچه (IDE) در سی پلاس پلاس مانند ویژوال استودیو یا CLion نصب و راهاندازی کنید.
- مراحل ساخت در سی پلاس پلاس (پیشپردازنده، کامپایل، اسمبلی، لینکدهی و اجرا) را درک کنید و کد را با فایلهای هدر و Forward Declarations سازماندهی کنید.
- از یک سیستم ساخت مانند CMake برای ایجاد و لینکدهی استاتیک و کتابخانههای مشترک استفاده کنید و کتابخانههای خارجی (مانند SFML) را در یک پروژه سی پلاس پلاس یکپارچه کنید.
- کلاسهای اساسی اپلیکیشن و دنیا را راهاندازی کنید تا یک حلقه موتور بازی و ساختار پروژه اولیه ایجاد کنید.
- کلاس شی را همراه با سیستمهای کلیدی بازی مانند فیزیک، آسیب و سلامت و یک Asset Manager برای بارگذاری منابع تعریف و یکپارچه کنید.
- رفتار دشمن (مانند تعقیب) را برنامهنویسی کنید، برخورد را مدیریت کنید، به کشتیهای بازیکن و دشمن آسیب وارد کنید و مکانیکهای ارتقای سلاح را پیادهسازی کنید.
- یک هدآپ دیسپلی (HUD) و عناصر رابط کاربری (UI) درون بازی، از جمله تعداد کشتار، یک نوار سلامت و صفحه پایان بازی را بسازید.
- تکنیکهای اشکالزدایی را برای فیکس کردن مشکلات رایج اعمال کنید، یک سیستم صدا برای موسیقی پسزمینه و افکتها پیادهسازی کنید و پالیش بصری را اضافه کنید.
پیشنیازهای دوره
سواد اولیه کار با کامپیوتر (نصب نرمافزار و ناوبری سیستم فایلها) و تعهد به یادگیری یک زبان برنامهنویسی بنیادی برای توسعه نرمافزارهای پیشرفته
توضیحات دوره
این دوره یک برنامه جامع و پروژهمحور است که برای راهنمایی شما در ساخت یک موتور بازی دوبعدی کامل و کاربردی و همچنین ساخت یک بازی از ابتدا با سی پلاس پلاس طراحی شده است. به اصول برنامهنویسی مدرن سی پلاس پلاس مسلط شوید و آنها را مستقیماً برای ساخت موتور بازی مقیاسپذیر خود و یک بازی کامل با کتابخانه SFML 3 و سیستم ساخت CMake به کار ببرید.
این دوره برای چه کسانی مناسب است؟
این دوره برای توسعهدهندگانی است که درک اولیه از برنامهنویسی دارند و میخواهند در سی پلاس پلاس برای توسعه بازی تخصص پیدا کنند و از مفاهیم اصلی به سمت معماری موتور حرفهای پیشرفت کنند.
روند دوره و ماژولهای کلیدی:
ساختار برنامه آموزشی مرحلهبهمرحله است و از ویژگیهای اصلی زبان تا سیستمهای پیچیده بازی پیش میرود:
- ماژول 1 - اصول سی پلاس پلاس: پایه محکمی با بررسی عمیق سینتکس اصلی سی پلاس پلاس، انواع داده رایج، کنترل جریان (دستورات If، دستورات Switch و حلقهها)، توابع و ساختارهای استاندارد داده مانند آرایهها، بردارها و نقشهها بسازید.
- ماژول 4 - برنامهنویسی شیگرا (OOP): قلب طراحی حرفهای سی پلاس پلاس را یاد بگیرید. این ماژول شامل کلاسها، Constructorها، Destructorها، Specifierهای دسترسی (عمومی و خصوصی)، وراثت، پلیمورفیسم، Overloading عملگر و مدیریت توابع عضو کلاس با کلیدواژههای Const و Static است.
- ماژول 3 - حافظه و اشارهگرها: از مدیریت حافظه ابهامزدایی میکنیم. شما حافظه استک و هیپ را بررسی میکنید و یاد میگیرید از مشکلات رایج مانند نشتهای حافظه جلوگیری کنید و به اشارهگرهای هوشمند (منحصر به فرد، مشترک و ضعیف) برای مدیریت ایمن و کارآمد منابع مسلط میشوید.
- ماژول 5 - ساخت موتور بازی: این ماژول قلب دوره است، جایی که معماری اصلی را میسازید. شما سیسان ساخت CMake را نصب و پیکربندی میکنید، کتابخانه گرافیک SFML را یکپارچه میسازید، ساختار پروژه را ایجاد میکنید، حلقههای اصلی تیک و رندر بازی را پیادهسازی میکنید و کلاسهای اصلی موتور مانند اپلیکیشن، دنیا و کلاس پایه Actor را طراحی میکنید.
- پیادهسازی ویژگی با (ماژولهای 6 تا 11): دانش موتور خود را برای ساخت یک بازی کامل به کار میگیرید:
- بازیکن و پرتابهها: ورودی بازیکن را پیادهسازی کنید، حرکت را به صفحه محدود کنید و سیستمهای پرتابه مبتنی بر مالک را با منطق حرکت مخصوص خودشان ایجاد کنید.
- سیستم فیزیک: تشخیص برخورد اولیه، کامپوننت سلامت و رفتارهای هوش مصنوعی دشمن مانند تعقیب و Spawn کردن خارج از صفحه را پیادهسازی کنید.
- آسیب و سلامت: تنظیمات آسیب را متمرکز کنید، کلاس آمار کشتی را بسازید و منطق آسیب رساندن به بازیکن و دشمنان را پیادهسازی کنید.
- ارتقای سلاحها و رابط کاربری: ویژگیهایی مانند شلیک پراکنده را توسعه دهید، سیستمی برای ردیابی مرگ دشمنان پیادهسازی کنید و رابط کاربری، شامل منوی اصلی، صفحه پایان بازی، تعداد کشتار و نوار سلامت را بسازید.
- اشکالزدایی و پالیش: بازی را با تاچهایی مانند چرخش اولیه بازیکن، افکتهای لرزش دوربین و یک سیستم صدای کامل برای پالیش صدا نهایی کنید.
در پایان این دوره، شما یک موتور بازی کاربردی و ساختهشده توسط خودتان در سی پلاس پلاس خواهید داشت که به شما تجربه عملی لازم برای انجام پروژههای جاهطلبانهتر را خواهد داد.
این دوره برای چه کسانی مناسب است؟
- این دوره برای افرادی طراحی شده است که تجربه کمی در زبان برنامهنویسی سی پلاس پلاس دارند یا اصلاً تجربهای ندارند، اما به توسعه بازی علاقه زیادی دارند و آمادهاند یک زبان پیچیده و قدرتمند را یاد بگیرند.
- افراد کاملا مبتدی در مطلق سی پلاس پلاس: دانشجویانی که هرگز در سی پلاس پلاس کدنویسی نکردهاند یا به دنبال یک مقدمه جامع و ساختاریافته درباره مفاهیم بنیادی این زبان، از جمله متغیرها، ساختارهای داده (آرایهها، بردارها و نقشهها)، کنترل جریان و توابع هستند.
- توسعهدهندگان بازی مبتدی: افرادی که هدف اصلیشان ساخت موتور بازی خودشان یا کار روی سیستمهای بازی سطح پایین است. این دوره، اصول سی پلاس پلاس را مستقیماً به ساخت اپلیکیشن، دنیا و سیستم فیزیک تبدیل میکند.
- برنامهنویسان از زبانهای دیگر: توسعهدهندگانی که در زبانهایی مانند پایتون، جاوا یا سی شارپ تجربه دارند و میخواهند برای کاربردهای حساس به عملکرد مانند توسعه بازی به سی پلاس پلاس مهاجرت کنند و بهطور خاص باید به مدیریت دستی حافظه و اصول شیگرایی مسلط شوند.
- دانشجویان آماده برای مطالعه عمیق: با توجه به پوشش موضوعات پیچیدهای مانند مدیریت حافظه (استک و هیپ)، اشارهگرهای raw و هوشمند (منحصر به فرد، مشترک و ضعیف) و Big Five در برنامهنویسی شیگرا، داشنجویان باید برای یک تجربه آموزشی دقیق و سختگیرانه آماده باشند.
آشنایی با سی پلاس پلاس برای توسعهدهندگان بازی
-
نصب ویژوال استودیو 02:59
-
ایجاد پروژههای ویژوال استودیو 02:07
-
بررسی رابط ویژوال استودیو 03:10
-
ایجاد فایلهای منبع جدید در سی پلاس پلاس 02:44
-
نصب CLion 03:25
-
ایجاد پروژههای CLion 04:57
-
پیکربندی پروژه و سفارشیسازی محیط توسعه یکپارچه 03:07
-
اعلان و استفاده از متغیرها 04:07
-
بررسی انواع داده رایج 02:55
-
کامنت کردن کد 03:20
-
فرمتبندی خروجیها 03:19
-
خروجی خلاقانه None
-
بررسی چالش: خروجی خلاقانه 06:27
-
اعلان و مقداردهی اولیه آرایهها 02:18
-
دسترسی به داده در آرایهها 03:32
-
اصلاح آرایهها 01:54
-
محاسبه اندازه آرایهها 05:57
-
ماجراجویی با آرایهها None
-
بررسی چالش: ماجراجویی با آرایهها 05:15
-
اعلان و مقداردهی اولیه بردارها 01:51
-
دسترسی به داده در بردارها 01:53
-
اصلاح بردارها 06:04
-
بدست آوردن اندازه یک بردار 01:12
-
موجودی فروشگاه جادویی None
-
بررسی چالش: موجودی فروشگاه جادویی 06:46
-
اعلان و مقداردهی اولیه انواع نقشهها 03:26
-
دسترسی به نقشهها 05:24
-
اصلاح نقشهها 03:05
-
نگاشت آمار کاراکتر بازی نقشآفرینی None
-
بررسی چالش: نگاشت آمار کاراکتر بازی نقشآفرینی 03:50
-
اصول سی پلاس پلاس: سینتکس اصلی و کانتینرها None
-
عملگرهای حسابی 04:57
-
عملگرهای تخصیص 02:38
-
عملگرهای افزایش و کاهش 02:51
-
عملگرهای مقایسهای 02:55
-
عملگرهای منطقی 06:04
-
تقدم عملگرها 06:03
-
اصول سی پلاس پلاس: عملگرها None
-
مبانی ورودی 02:38
-
مدیریت ورودی نامعتبر 04:55
-
ترکیب ورودیها 02:33
-
ماجراجویی بداهه None
-
بررسی چالش: ماجراجویی بداهه 04:12
-
اصول سی پلاس پلاس: ورودی None
-
برنچینگ دستورهای If 03:53
-
عملگرهای منطقی با دستورهای If 04:24
-
حلقههای For 02:27
-
انواع حلقههای For 02:47
-
تکرار در آرایهها 01:51
-
کنترل حلقههای For 03:35
-
اجتناب از خطای Off-by-One 03:52
-
حلقههای For مبتنی بر محدوده 02:29
-
استفاده از حلقههای For با بردارها 03:10
-
استفاده از Iteratorها برای پیمایش بردارها و آرایهها 05:23
-
دنبالههای عددی با حلقههای For None
-
بررسی چالش: دنبالههای عددی با حلقههای For 02:41
-
حلقههای While 04:14
-
حلقههای Do While 03:26
-
بازی حدس عدد None
-
بررسی چالش: بازی حدس عدد 05:15
-
دستورهای Switch 03:39
-
مبانی نوع Enum 03:59
-
Type Casting 03:18
-
انواع Strongly Typed Enum 02:45
-
منوی اکشن مبارزه بازی نقشآفرینی None
-
بررسی چالش: منوی اکشن مبارزه بازی نقشآفرینی 07:02
-
تعریف و فراخوانی توابع 03:03
-
چندین پارامتر در یک تابع 02:39
-
بازگرداندن مقدار در توابع 03:26
-
فراخوانی توابع از توابع دیگر 02:07
-
ترتیب اعلان تابع 01:25
-
بازگردانی بردارها با توابع 05:44
-
ارسال بر اساس مقدار و بر اساس مرجع 05:31
-
مبانی قالب 02:25
-
قالبهای بردار 02:44
-
قالبهای Variadic 04:47
-
جعبه ابزار ماجراجویی None
-
بررسی چالش: جعبه ابزار ماجراجویی 09:11
-
مراحل ساخت در سی پلاس پلاس: پیشپردازندهها 06:12
-
مراحل ساخت در سی پلاس پلاس: کامپایل و اسمبلی 05:23
-
مراحل ساخت در سی پلاس پلاس: لینکدهی و اجرا 04:38
-
دسترسی به توابع با Forward Declarations 04:56
-
درک فایلهای هدر 02:01
-
ایجاد و استفاده از فایلهای هدر 07:30
-
استفاده از درونخطیها 06:08
-
ایجاد پروژه یوتیلیتیها 04:15
-
تبدیل پروژه یوتیلیتیها به یک کتابخانه 05:09
-
لینکدهی کتابخانه استاتیک به پروژههای سی پلاس پلاس 04:36
-
ایجاد پروژه یوتیلیتیها در ویژوال استودیو 04:19
-
تبدیل پروژه یوتیلیتیها به یک کتابخانه در ویژوال استودیو 02:51
-
لینکدهی کتابخانههای استاتیک به سی پلاس پلاس در ویژوال استودیو 06:45
-
ایجاد کتابخانههای مشترک 05:14
-
یکپارچهسازی یک کتابخانه خارجی 10:15
-
یکپارچهسازی یک کتابخانه خارجی در ویژوال استودیو 09:14
-
دسترسی به آدرسهای حافظه 01:58
-
ارجاع به متغیرها 03:53
-
محدودیتهای ارجاع 03:17
-
اعلان اشارهگرها 01:55
-
Dereference کردن اشارهگرها 02:01
-
شاگرد کیمیاگر None
-
بررسی چالش: شاگرد کیمیاگر 12:29
-
پیادهسازی اشارهگرها 02:56
-
Casting اشارهگرهای Void 04:06
-
Dereference کردن آرایهها 03:03
-
حافظه استک 07:01
-
حافظه هیپ 07:31
-
مدیریت نشتهای حافظه و نقض دسترسی به حافظه 04:36
-
مدیریت گنج None
-
بررسی چالش: مدیریت گنج 12:15
-
اشارهگرهای هوشمند: اشارهگر منحصر به فرد 07:16
-
اشارهگرهای هوشمند: اشارهگر مشترک 07:03
-
اشارهگرهای هوشمند: اشارهگر ضعیف 10:55
-
شکار گنج None
-
بررسی چالش: شکار گنج 06:35
-
مبانی برنامهنویسی شیءگرا 01:34
-
معرفی کلاسها 03:45
-
ایجاد شی از یک کلاس 05:47
-
Constructorهای کلاس 07:22
-
Constructorهای پیشرفته 06:54
-
Destructorهای کلاس 06:11
-
توابع عضو 03:53
-
Specifierهای دسترسی 02:55
-
Getterها و Setterها 04:20
-
متغیرها و توابع Const 05:24
-
وراثت 08:32
-
اصلاح کلاسهای Derived 06:38
-
پلیمورفیسم و توابع Pure Virtual 05:34
-
Constructorهای کپی 08:52
-
Constructorهای انتقال 07:49
-
عملگرهای تخصیص کپی و انتقال 07:44
-
overloading عملگر 05:44
-
مهاجرت کلاسها به فایلهای Header و سی پلاس پلاس 09:22
-
کلاسهای قالب 07:23
-
پیادهسازی Big Five 11:36
-
متغیرهای استاتیک در توابع 02:25
-
متغیرهای استاتیک در کلاسها 03:19
-
متدهای استاتیک در کلاسها 02:32
-
متغیرهای استاتیک سراسری 03:26
-
نصب CMake 02:29
-
تأیید نصب CMake 01:29
-
ساخت با CMake 07:07
-
اضافه کردن پروژه بازی به CMake 06:56
-
ریفکتورینگ فایلهای منبع CMake 05:59
-
واکشی SFML 08:36
-
ایجاد یک پنجره با SFML 04:23
-
فرمانهای پس از ساخت با CMake 08:47
-
ایجاد ساختار پروژه 06:48
-
ایجاد کلاس اپلیکیشن 11:36
-
حلقه تیک بازی 07:27
-
حلقه رندر اولیه 05:53
-
ریفکتورینگ توابع تیک و رندر 04:15
-
کپسولهسازی نقطه ورودی 05:58
-
جدسازی کد موتور و بازی 11:12
-
پیادهسازی نقطه ورودی 03:24
-
ایجاد ماکروها 07:57
-
تعریف اشارهگرهای هوشمند و ساختارهای داده 05:53
-
راهاندازی کلاس دنیا 09:36
-
پیادهسازی دنیا در اپلیکیشن 08:55
-
عیبیابی حلقه رندر 02:57
-
ایجاد کلاس Actor 06:00
-
spawn کردن Actorها در دنیا 10:02
-
پیادهسازی کلاس شی 05:38
-
نابود کردن ایمن Actorها 08:03
-
ریفکتورینگ پنجره اپلیکیشن بازی 04:54
-
اضافه کردن اسپرایت به Actor 07:50
-
رندر کردن اسپرایت Actor 04:28
-
رندر کردن اسپرایتها در دنیای بازی 06:31
-
کپی کردن دارایی در فولدر بیلد با CMake 04:37
-
پیکربندی دایرکتوری منابع 09:13
-
کلاس Asset Manager 06:47
-
دریافت مسیر فایل از Asset Manager 05:38
-
رندر کردن اسپرایت Actor از مسیر 11:53
-
پیادهسازی چرخه پاکسازی 10:19
-
اضافه کردن تبدیلات Actor 08:29
-
متمرکز کردن محور Actor 03:07
-
ایجاد کلاس کشتی 07:40
-
اضافه کردن کلاس PlayerShip 02:39
-
ساختاردهی کشتی بازیکن 05:40
-
اعمال ورودی بازیکن 08:41
-
فیکس کردن حرکت مورب 02:43
-
دریافت اندازه پنجره 04:33
-
محدود کردن ورودی بازیکن به پنجره 04:16
-
ایجاد کلاس پرتابه 05:49
-
پیادهسازی تابع آتش 11:42
-
ریفکتورینگ کلاس پرتابه 04:28
-
ایجاد کلاس جدید پروژه 04:52
-
انتقال پرتابهها 04:25
-
spawn کردن پرتابهها 10:35
-
اشکالزدایی حرکت پرتابه 04:16
-
نابود کردن پرتابهها 06:41
-
اضافه کردن چرخه پاکسازی دنیا 06:42
-
مرتبسازی CMakeLists 01:57
-
تشخیص برخورد اولیه 08:26
-
ایجاد کلاس PhysicsSystem 07:58
-
اضافه کردن کلاس EnemyShip 07:53
-
نابود کردن دشمنان با پرتابهها 07:16
-
ایجاد کامپوننتهای سلامت 06:40
-
آسیب رساندن به دشمنان 05:52
-
رفتار تعقیب دشمن 05:25
-
spawn کردن دشمنان خارج از صفحه 11:57
-
شلیک به سمت موقعیت ماوس 13:12
-
کشیدن Bounding Boxها 07:59
-
ایجاد شکلهای برخورد سفارشی 04:58
-
پیادهسازی شکل برخورد سفارشی 09:02
-
حمله اولیه دشمن 04:55
-
پرتابههای مبتنی بر مالک 08:33
-
آسیب رساندن به بازیکن 03:52
-
متمرکز کردن تنظیمات آسیب 03:54
-
ایجاد کلاس آمار کشتی 05:14
-
پیادهسازی آمار کشتی 13:47
-
ایجاد یک نوع سلاح جدید 06:51
-
پیادهسازی شلیک پراکنده 08:30
-
بدست آوردن زاویه هدفگیری 02:04
-
Decouple کردن وقفه شلیک 04:40
-
ردیابی مرگ دشمنان 05:03
-
ارتقای سلاحها 05:22
-
اضافه کردن رابط کاربری تعداد کشتار 09:17
-
ایجاد منوی اصلی 09:19
-
کشیدن صفحه پایاین بازی 03:23
-
راهاندازی State دویدن 04:13
-
اضافه کردن رابط کاربری اولیه سلامت بازیکن 07:26
-
اضافه کردن نوار سلامت 06:24
-
اضافه کردن چرخش اولیه بازیکن 03:31
-
اعمال چرخش نرم به بازیکن 07:12
-
مقیاسدهی spawn کردن دشمن 10:38
-
اضافه کردن افکت لرزش دوربین 10:51
-
اعمال صدای آسیب 08:54
-
دریافت دایرکتوری روت از Asset Manager 02:36
-
ایجاد یک سیستم صدا 08:38
-
بارگذاری و دریافت صداها 06:22
-
اضافه کردن صداهای پرتابه 15:46
-
اشکالزدایی صدای بازیکن 02:26
-
اشکالزدایی رفتار دشمن 11:29
-
اشکالزدایی رابط کاربری بازیکن 13:56
-
رفع باگهای نهایی 08:26
مشخصات آموزش
آشنایی با سی پلاس پلاس برای توسعهدهندگان بازی
- تاریخ به روز رسانی: 1405/04/02
- سطح دوره:مقدماتی
- تعداد درس:235
- مدت زمان :20:59:00
- حجم :4.72GB
- زبان:دوبله زبان فارسی
- دوره آموزشی:AI Academy