شروع به کار
موتور بازیسازی توت فرنگی
ساده. سریع. دوبعدی.
توت فرنگی چیست؟
توت فرنگی یک موتور بازیسازی دوبعدی است که از پایه برای توسعه ساده و سریع بازی طراحی شده است. چه در حال ساخت نمونه اولیهای از یک ایده سریع باشید، چه در حال ساخت یک بازی دوبعدی کامل، توت فرنگی یک چارچوب تمیز و سبک ارائه میدهد که سر راهتان قرار نمیگیرد و به شما اجازه میدهد روی آنچه مهم است تمرکز کنید — ساختن بازیتان.
مستندات هسته — نه ویرایشگر
این مستندات مربوط به هسته توت فرنگی — رابط برنامهنویسی موتور — است. این مستندات برای توسعهدهندگانی نوشته شده که میخواهند بازی بسازند فقط با کد، بدون وابستگی به یک ویرایشگر بصری.
توت فرنگی همچنین دارای یک ویرایشگر (Editor) مجزا است که رابط گرافیکی برای ترکیب صحنهها، مدیریت داراییها و پیشنمایش زنده ارائه میدهد. مستندات ویرایشگر در جای دیگری قرار دارد و در این راهنما پوشش داده نمیشود. اگر به دنبال مستندات مربوط به ویرایشگر هستید، لطفاً به بخش مناسب سایت مستندات مراجعه کنید.
هسته و ویرایشگر مستقل از یکدیگر هستند. شما میتوانید بازیهای کامل و قابل انتشار را فقط با استفاده از رابط هسته بسازید — ویرایشگر کاملاً اختیاری است. بسیاری از توسعهدهندگان گردشکار فقطکد را به خاطر کنترل کاملی که ارائه میدهد ترجیح میدهند، و این مستندات با همان گردشکار در نظر نوشته شده است.
این فقط توضیحی درباره چیستی توت فرنگی و نحوه کارکرد آن است. میتوانید از این مستند عبور کنید و مستقیماً به ساخت بازی بپردازید!
مبتنی بر C# و .NET
توت فرنگی به طور کامل بر روی C# و محیط اجرایی .NET ساخته شده است. هیچ زبان اسکریپتنویسی سفارشی و هیچ زبان اختصاصی برای یادگیری وجود ندارد. اگر C# بلدید، از قبل میدانید چگونه با توت فرنگی کار کنید.
این موتور .NET 8+ را هدف قرار داده، به این معنی که به تمام امکانات مدرن زبان C# دسترسی دارید — از الگوی تطبیق (Pattern Matching) و رکوردها (Records) تا تولیدکنندگان کد (Source Generators) و انواع مرجع Nullable. محیط اجرایی .NET همچنین موارد زیر را فراهم میکند:
- عملکرد بالا — محیط اجرایی .NET دارای کامپایلر JIT پیشرفته، درونخطیسازی تهاجمی و رابطهای مبتنی بر Span است که مسیرهای داغ مانند رندر و فیزیک را برای بازیهای بلادرنگ به اندازه کافی سریع میکند.
- اکوسیستم بالغ — میتوانید از هر بسته NuGet در بازیتان استفاده کنید. به سریالایزر JSON نیاز دارید؟ رمزگشای صوتی سفارشی؟ همه اینها از طریق NuGet، مدیریت بسته .NET در دسترس هستند.
- ابزار قوی — Visual Studio، Rider و VS Code همگی از C# با IntelliSense، اشکالزدایی و بارگذاری داغ پشتیبانی درجه یک ارائه میدهند.
- ایمنی نوع — خطاها را در زمان کامپایل بگیرید، نه در زمان اجرا. سیستم نوع قوی C# دستههای کاملی از باگها که در زبانهای اسکریپتنویسی پویا رایج هستند را پیشگیری میکند.
کد بازی شما به یک اسمبلی بومی کامپایل میشود — هیچ لایه تفسیر و هیچ سربار ماشین مجازی اسکریپت وجود ندارد. آنچه مینویسید همان چیزی است که اجرا میشود.
چندسکویی
توت فرنگی یک موتور چندسکویی با پشتیبانی درجه یک از چهار هدف اصلی است:
| سکو | وضعیت | توضیحات |
|---|---|---|
| ویندوز | کاملاً پشتیبانی شده | سکوی توسعه اصلی. x64. |
| لینوکس | کاملاً پشتیبانی شده | آزمایش شده روی اوبونتو. x64. |
| اندروید | کاملاً پشتیبانی شده | ARM64 و x64. ورودی لمسی و سنسورها به سیستم ورودی نگاشت شدهاند. |
| وباسمبلی | کاملاً پشتیبانی شده | در هر مرورگر مدرنی اجرا میشود. بدون نیاز به افزونه. |
همان پایگاه کد C# در هر چهار سکو کامپایل و اجرا میشود بدون اینکه نیاز به دستورالعملهای #ifdef مختص سکو در کد بازی خود داشته باشید. تفاوتهای سکویی (دسترسی به سیستم فایل، روشهای ورودی، مدیریت پنجره) توسط لایه سکویی موتور انتزاع شدهاند.
وباسمبلی — بازی در مرورگر
وباسمبلی (Wasm) یک قالب دستورالعمل باینری است که به کدهای نوشته شده به زبانهایی مانند C# اجازه میدهد مستقیماً در مرورگرهای وب با سرعت نزدیک به بومی اجرا شوند. برخلاف فناوریهای قدیمیتر بازی وب که به افزونهها (Flash، Unity Web Player) یا ترجمه به جاوااسکریپت وابسته بودند، وباسمبلی درون سندباکس امنیتی موجود مرورگر بدون هیچ نیازی به نصب برای کاربر نهایی اجرا میشود.
وقتی بازی توت فرنگی را برای وباسمبلی بیلد میکنید، محیط اجرایی .NET و کد بازی شما به یک فایل .wasm و کد چسبانه .js همراه کامپایل میشوند. مرورگر این فایلها را دانلود و مانند هر برنامه وب دیگری اجرا میکند. نتیجه بازیای است که:
- بدون نیاز به نصب — بازیکنان روی یک لینک کلیک کرده و فوراً بازی میکنند.
- با سرعت نزدیک به بومی اجرا میشود — عملکرد وباسمبلی معمولاً ۱۰ تا ۳۰ درصد کمتر از کد بومی برای حجمهای کاری محاسباتی سنگین است، و این شکاف با بهبود موتورهای مرورگر به بسته شدن ادامه میدهد.
- همهجا کار میکند — هر دستگاهی با مرورگر مدرن (Chrome، Firefox، Safari، Edge) میتواند بازی شما را اجرا کند، از جمله Chromebookها و کامپیوترهای سازمانی محدود.
- کاملاً سندباکس شده — بدون مجوز ویژه، بدون هشدار امنیتی، بدون محدودیت از فروشگاههای اپلیکیشن.
بکند رندر OpenGL موتور به طور خودکار به WebGL 2.0 هنگام اجرا در وباسمبلی نگاشت میشود، بنابراین کد رندر شما بدون هیچ تغییری به طور یکسان روی وب کار میکند.
برای جزئیات فنی بیشتر درباره پشتیبانی وباسمبلی در .NET، به مستندات وباسمبلی .NET مراجعه کنید.
رندر OpenGL
توت فرنگی از OpenGL به عنوان بکند رندر در تمام سکوها استفاده میکند. OpenGL پرپشتیبانترین رابط گرافیکی در جهان است — هر GPU دسکتاپ، هر چیپست موبایل و هر مرورگر وب مدرن آن را پیادهسازی کرده است. این انتخاب عمدی است: به توت فرنگی اجازه میدهد یک مسیر رندر واحد و سازگار در ویندوز، لینوکس، اندروید و وباسمبلی بدون پیچیدگی مدیریت چندین رابط گرافیکی داشته باشد.
این برای شما به عنوان توسعهدهنده به این معناست:
- رفتار سازگار — چهرهها (Sprite)، شیدرها و حالتهای ترکیب شما در هر سکو یکسان به نظر میرسند زیرا همگی از همان خط لوله رندر OpenGL عبور میکنند. هیچ شگفتیای از نوع «در DirectX کار میکند ولی در OpenGL نه» وجود ندارد.
- شیدرهای سفارشی — توت فرنگی یک سیستم شیدر ارائه میدهد که به شما اجازه میدهد مستقیماً شیدرهای GLSL بنویسید. اگر قبلاً شیدر برای OpenGL نوشتهاید، از قبل میدانید چگونه برای توت فرنگی شیدر بنویسید.
در اندروید و وباسمبلی، از OpenGL ES 3.0 / WebGL 2.0 استفاده میشود. در ویندوز و لینوکس، موتور OpenGL 3.3 Core Profile را هدف قرار داده است. این نسخههای مورد تأیید هستند که تقریباً تمام سختافزارهای تولید شده در یک دهه اخیر از آنها پشتیبانی میکنند.
برای اطلاعات بیشتر درباره OpenGL، به ویکی رسمی OpenGL یا LearnOpenGL — یک منبع رایگان عالی برای یادگیری OpenGL مدرن — مراجعه کنید.
قدم بعدی چیست؟
حالا که میدانید توت فرنگی چیست و برای چه چیزی ایستاده، وقت آن است که محیط توسعه خود را راهاندازی کنید و اولین خط کد بازی خود را بنویسید.