Web appOpen in Telegram
|| کانال توسعه‌دهندگان بازی |

| کانال توسعه‌دهندگان بازی |

@DevelopixGame · channel · Games · indexed since 2026-08-16
499subscribers
223average post reach
44.7%ER — reach to subscribers
4posts in 30 days
|
| کانال توسعه‌دهندگان بازی |
Godot برای بازی‌سازها یه کتابخونه/انجین اوپن‌سورسه که مخصوصاً برای 2D فوق‌العاده‌ست و یادگیریش سریع پیش میره. یکی از چیزهای دوست‌داشتنیش سیستم InputMap ـه که مدیریت کنترل‌ها رو خیلی تمیز می‌کنه 🎮 به‌جای این‌که هرجا مستقیم روی key code کار کنی، یه «اکشن» تعریف می‌کنی (مثلاً move_right) و بعد هر کلیدی رو می‌تونی بهش مپ کنی. این یعنی: • تنظیم راحت کنترل روی PC و موبایل • قابل‌خواندن‌تر شدن کد • تغییر دادن کنترل‌ها بدون دست‌زدن به منطق گیم‌پلی نمونه کد GDScript برای حرکت ساده پلیر: extends CharacterBody2D const SPEED = 200.0 func _physics_process(delta): var dir = Vector2.ZERO if Input.is_action_pressed("move_right"): dir.x += 1 if Input.is_action_pressed("move_left"): dir.x -= 1 velocity = dir.normalized() * SPEED move_and_slide() اکشن‌ها رو توی Project > Project Settings > Input Map تعریف کن، بعد توی هر اسکریپتی مثل بالا مصرفشون کن ✅ مستندات رسمی Godot: docs.godotengine.org سورس و Issuesها: github.com/godotengine/godot چند دقیقه با InputMap بازی کن؛ معمولاً بعدش دیگه برنمی‌گردی به چک‌کردن مستقیم key code ها 😉 🔖 #GameDev #بازیسازی #Godot #GDScript #Input #GameDev #2D 👤 Developix 💎 Channel: @DevelopixGame
1 · 392 ·
|
| کانال توسعه‌دهندگان بازی |
در بازی‌های سریع، تکیه‌کردن به deltaTime خام می‌تونه اختلاف سرعت روی دستگاه‌های مختلف ایجاد کنه؛ مخصوصاً وقتی FPS خیلی می‌افتد یا روی بعضی دستگاه‌ها خیلی بالاست. برای حرکت‌های حساس (مثل گلوله، ضربهٔ شمشیر، یا حرکت دوربین) بهتره deltaTime رو clamp کنیم. ایده اینه که نذاریم یک فریم خیلی بزرگ، ناگهان آبجکت رو تلپورت کنه 🚀 در Unity نمونه ساده: void Update() { float dt = Time.deltaTime; dt = Mathf.Clamp(dt, 0f, 0.03f); // حداکثر ~۳۳ FPS // مثال حرکت ساده transform.position += Vector3.forward * speed * dt; } 👾 نتیجه: - انیمیشن و حرکت‌ها پایدارتر می‌شن. - روی دستگاه‌های ضعیف، افت FPS باعث پرش شدید (stutter/teleport) نمی‌شه. بهتره این کار فقط برای سیستم‌هایی انجام بشه که به دقت بالا نیاز دارن (مثل حرکت یا physics دست‌ساز)، نه برای همه‌چیز. مرجع رسمی Unity در مورد Time.deltaTime: docs.unity3d.com/ScriptReference/Time-deltaTime.html امتحان این الگو روی حرکت کاراکتر یا دوربین، معمولاً خیلی سریع تفاوت روان بودن بازی رو نشون می‌ده ✨ 🔖 #GameDev #بازیسازی #Unity #deltaTime #Performance #Game_Loop #Movement 👤 Developix 💎 Channel: @DevelopixGame
1 · 353 ·
|
| کانال توسعه‌دهندگان بازی |
در بازی‌های موبایل و حتی PC، یکی از قاتل‌های فریم‌ریت، تعداد زیاد Draw Call هست. خوشبختانه در Unity برای آبجکت‌های ثابت صحنه، راه‌حل ساده‌ای وجود داره: Static Batching 🧱 وقتی یک سری Mesh که حرکت نمی‌کنن رو Static می‌کنی، Unity می‌تونه اون‌ها رو توی چند Mesh بزرگ‌تر ترکیب کنه و به‌جای ده‌ها Draw Call، فقط چند تا بفرسته سمت GPU. نتیجه: CPU سبک‌تر، فریم‌ریت پایدارتر ✅ نمونه استفاده (C#): using UnityEngine; public class MarkStatic : MonoBehaviour { public GameObject[] staticObjects; void Start() { foreach (var go in staticObjects) { // فقط برای آبجکت‌هایی که حرکت، مقیاس یا چرخش ندارن go.isStatic = true; } } } نکته‌ها 📝 • برای دیوار، ساختمان، سنگ، درخت‌های ثابت و… عالیه. • برای آبجکتی که قرارِ حرکت کنه، از Static Batching استفاده نکن؛ باعث هزینه اضافی و باگ‌های عجیب می‌شه. موقع پروفایل گرفتن، قبل و بعد از فعال‌کردن Static Batching، تعداد Draw Call رو توی Stats یا Profiler چک کن و تفاوتش رو ببین. مرجع رسمی: Unity Manual – Draw Call Batching امتحانش روی یک صحنه شلوغ باعث می‌شه تاثیرش رو خیلی سریع حس بشه 🚀 🔖 #GameDev #بازیسازی #Unity #Performance #DrawCall #StaticBatching #GameDev #Optimization 👤 Developix 💎 Channel: @DevelopixGame
2 · 369 ·
|
| کانال توسعه‌دهندگان بازی |
Photo
click to show
در کد زیر برای پیاده‌سازی زمان‌بندی شلیک در یک بازی دوبعدی، از delta time به‌صورت نادرست استفاده شده است و ممکن است نرخ شلیک روی سیستم‌های مختلف (fpsهای متفاوت) ناسازگار شود: import pygame class Player: def __init__(self): self.fire_rate = 0.5 # ثانیه بین هر شلیک self.time_since_last_shot = 0 def update(self, dt): self.time_since_last_shot += 1 # استفاده اشتباه از dt def can_shoot(self): return self.time_since_last_shot >= self.fire_rate def shoot(self): if self.can_shoot(): print("Shoot!") self.time_since_last_shot = 0 clock = pygame.time.Clock() player = Player() running = True while running: dt = clock.tick(120) / 1000.0 # dt بر حسب ثانیه player.update(dt) player.shoot() در این کد چه چیزی باید اصلاح شود تا زمان‌بندی شلیک روی fpsهای مختلف یکسان و قابل‌اعتماد باشد؟ 🔖 #GameDev #بازیسازی 👤 Developix 💎 Channel: @DevelopixGame
1 · 362 ·
|
| کانال توسعه‌دهندگان بازی |
🎯 کنترل دقیق برخوردها در Unity با LayerMask خیلی وقت‌ها افت فریم بازی از تعداد بالای collision check می‌آد، نه از گرافیک. مخصوصاً وقتی برای هر چیز کوچیکی از Physics.Raycast یا Overlapها استفاده می‌شه. یک ترفند ساده ولی خیلی تاثیرگذار اینه که برخوردها رو با Layer‌ها و LayerMask محدود کنی تا فیزیک فقط روی چیزهای مهم حساب کنه 🚀 مثلاً برای تیر اسلحه فقط دشمن‌ها رو چک کن، نه کل صحنه: public LayerMask enemyLayer; void Shoot() { Ray ray = new Ray(transform.position, transform.forward); if (Physics.Raycast(ray, out var hit, 100f, enemyLayer)) { // فقط اگر به enemy خورد // Damage logic... } } 📌 نکته‌ها: - برای هر system (مثل تیر، AI، interactableها) یک یا چند Layer مشخص کن. - در منوی Project Settings → Physics، ماتریس برخورد (Layer Collision Matrix) رو تنظیم کن تا بعضی Layerها کلاً با هم برخورد نداشته باشن. این کار هم CPU رو سبک‌تر می‌کنه، هم دیباگ برخوردها رو خیلی تمیزتر و قابل‌فهم‌تر نگه می‌داره 😌 ℹ️ مرجع رسمی: Unity LayerMask Documentation 🔖 #GameDev #بازیسازی #Unity #Physics #Collision #LayerMask #Performance #GameDev 👤 Developix 💎 Channel: @DevelopixGame
343 ·
|
| کانال توسعه‌دهندگان بازی |
Video
magnific_this_image_does_not_change_the_text_it_just_transf_ · 4.8 MB · click to show
🏆آفرهای جام جهانی ۲۰۲۶ هاست‌ایران فعال شد! با کمپین «ترکیب برنده سایتت»، زیرساخت سایتت رو برای روزهای پرترافیک آماده کن: 🔥 ۲۵٪ تخفیف روی پلن‌های ۳ ماهه هاست اشتراکی ایران ⚡ ۵۰٪ تخفیف روی پلن‌های یک‌ماهه سرویس ابری در دیتاسنترهای تهران، مشهد و اهواز 🧠 مشاوره رایگان زیرساخت توسط کارشناسان هاست‌ایران فرصت استفاده از تخفیف‌ها و ثبت فرم مشاوره محدود است. 📌 برای کپی کدهای تخفیف و ثبت‌نام در فرم مشاوره، روی لینک زیر کلیک کنید: 📌صفحه فرم مشاوره 📌تلگرام هاست‌ایران 📌بله هاست‌ایران #هاست_ایران #سرور_ابری_هاست_ایران #هاست_اشتراکی #دیتاسنتر #مشاوره_زیرساخت #جام_جهانی2026
369 ·
|
| کانال توسعه‌دهندگان بازی |
Photo
click to show
💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است 🔸 ارتقا از نسخه 6000.3.18f1 به 6000.0.78f1 🔹 لیست تغییرات این نسخه: 🔖 #unity, #game, #release 💎 @DevelopixGame
1 · 309 ·
|
| کانال توسعه‌دهندگان بازی |
Photo
click to show
💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است 🔸 ارتقا از نسخه 6000.0.78f1 به 6000.3.19f1 🔹 لیست تغییرات این نسخه: 🔖 #unity, #game, #release 💎 @DevelopixGame
292 ·
|
| کانال توسعه‌دهندگان بازی |
در Godot اگر برای AI دنبال کردن پلیر و حرکت روی زمین‌های پیچیده می‌خواهی، کلاس NavigationAgent3D توی Godot 4 خیلی کمک می‌کند 🚀 این سیستم روی NavigationServer3D سوار است و مشکل pathfinding روی meshهای پیچیده، رمپ، پله و… را حل می‌کند، بدون این‌که خودت الگوریتم A* پیاده‌سازی کنی. چند نکته جذاب: • استفاده از navmesh اتوماتیک یا دستی • جلوگیری از گیر کردن AI به دیوارها و لبه‌ها • پشتیبانی از avoidance ساده برای برخورد نکردن Agentها به هم • کارکرد مستقیم در Inspector، بدون boilerplate زیاد نمونه‌کد ساده برای دنبال‌کردن پلیر: extends CharacterBody3D @onready var agent = $NavigationAgent3D @onready var player = $"../Player" func _physics_process(delta: float) -> void: agent.target_position = player.global_transform.origin var next_point = agent.get_next_path_position() var dir = (next_point - global_transform.origin).normalized() velocity = dir * 4.0 move_and_slide() مستندات رسمی Godot 4 در مورد Navigation و NavigationAgent3D: Navigation Docs امتحانش کن روی یک صحنه ساده دشمن/پلیر؛ خیلی سریع یک AI قابل قبول برای پروتوتایپ می‌گیری 😎 🔖 #GameDev #بازیسازی #Godot #Navigation #AI #GameDev #Pathfinding #Godot4 #NavigationAgent3D 👤 Developix 💎 Channel: @DevelopixGame
3 · 325 ·
|
| کانال توسعه‌دهندگان بازی |
Photo
click to show
💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است 🔸 ارتقا از نسخه 6000.3.19f1 به 6000.0.79f1 🔹 لیست تغییرات این نسخه: - به‌روزرسانی Gradle به ۹.۱ و AGP به ۹.۰ - رفع مشکل نسخه‌کد اشتباه در split APKهای اندروید - آپدیت بسته‌های خدمات آنلاین Unity (Cloud Code، Economy، Leaderboards و …) - بهبود مستندات و رفتار استریم مِیپ‌مپ‌ها در گرافیک - به‌روزرسانی Netcode و ابزارهای چندنفره برای پایداری بهتر - سایر رفع باگ‌ها و بهبودهای جزئی و غیره 🔖 #unity, #game, #release 💎 @DevelopixGame
319 ·
|
| کانال توسعه‌دهندگان بازی |
Photo
click to show
💠 نسخه جدید نرم‌افزار بلندر (Blender) منتشر شده است 🔸 ارتقا از نسخه 5.1.2 به 5.2.0 🔖 #blender, #game, #release 💎 @DevelopixGame
270 ·
| کانال توسعه‌دهندگان بازی |
Photo
click to show
💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است 🔸 ارتقا از نسخه 6000.0.79f1 به 6000.3.20f1 🔹 لیست تغییرات این نسخه: 🔖 #unity, #game, #release 💎 @DevelopixGame
298 ·
|
Photo
click to show
در کد زیر حرکت کاراکتر بر اساس frame rate محاسبه شده و نه بر اساس delta time، که می‌تواند روی سیستم‌های مختلف باعث تفاوت سرعت حرکت شود. سؤال: چه تغییری باید در منطق به‌روزرسانی سرعت/موقعیت داده شود تا سرعت حرکت کاراکتر مستقل از تعداد فریم و فقط وابسته به زمان واقعی (delta time) باشد؟ public class PlayerController : MonoBehaviour { public float speed = 5f; private Vector3 direction; void Update() { float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical"); direction = new Vector3(horizontal, 0f, vertical); // Anti Pattern: وابسته به frame rate transform.position += direction * speed; } } 🔖 #GameDev #بازیسازی 👤 Developix 💎 Channel: @DevelopixGame
1 · 342 ·
|
| کانال توسعه‌دهندگان بازی |
Photo
click to show
با Migration Boost هاست‌ایران، برای مهاجرت به سرور ابری دوباره هزینه ترافیک نده! 🚀 با خرید اولین سرور ابری غیرساعتی از **هاست‌ایران**، بسته ترافیک هدیه مهاجرت به‌صورت خودکار برای سرویس شما فعال می‌شود: ✅ حداقل ۱۰۰ گیگابایت ترافیک هدیه مهاجرت ✅ افزایش حجم هدیه متناسب با ظرفیت دیسک اولیه ✅ ترافیک آپلود رایگان ✅ بدون محدودیت زمانی سرور ابری هاست‌ایران را راه‌اندازی کنید و بکاپ‌ها، فایل‌ها و پایگاه داده خود را بدون دغدغه هزینه‌های پنهان ترافیک منتقل کنید. 👇 مشاهده پلن‌های سرور ابری هاست‌ایران hostiran.club/Migration hostiran.club/Migration
284 ·
|
| کانال توسعه‌دهندگان بازی |
Photo
click to show
💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است 🔸 ارتقا از نسخه 6000.0.80f1 به 6000.3.21f1 🔹 لیست تغییرات این نسخه: 🔖 #unity, #game, #release 💎 @DevelopixGame
1 · 254 ·
|
| کانال توسعه‌دهندگان بازی |
Photo
click to show
در کد زیر (C# برای Unity) یک سیستم ساده رویداد برای وقتی که دشمن می‌میرد پیاده‌سازی شده است، اما در طول اجرای طولانی بازی باعث Memory Leak و افت عملکرد می‌شود: public class Enemy : MonoBehaviour { public static event Action OnAnyEnemyDied; private void OnEnable() { OnAnyEnemyDied += HandleAnyEnemyDied; } private void OnDisable() { // عمداً خالی گذاشته شده } private void OnDestroy() { if (OnAnyEnemyDied != null) { OnAnyEnemyDied(); } } private void HandleAnyEnemyDied() { Debug.Log("Enemy heard another enemy died"); } } در این پیاده‌سازی چه چیزی باید اصلاح شود تا از Memory Leak و فراخوانی‌های ناخواسته رویداد در طول بازی جلوگیری شود؟ 🔖 #GameDev #بازیسازی 👤 Developix 💎 Channel: @DevelopixGame
2 · 310 ·
|
| کانال توسعه‌دهندگان بازی |
Photo
click to show
💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است 🔸 ارتقا از نسخه 6000.3.21f1 به 6000.0.81f1 🔹 لیست تغییرات این نسخه: 🔖 #unity, #game, #release 💎 @DevelopixGame
382 ·
|
| کانال توسعه‌دهندگان بازی |
Photo
click to show
💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است 🔸 ارتقا از نسخه 6000.0.81f1 به 6000.3.22f1 🔹 لیست تغییرات این نسخه: 🔖 #unity, #game, #release 💎 @DevelopixGame
1 · 331 ·
|
| کانال توسعه‌دهندگان بازی |
کتابخانه‌ی Cinemachine در موتور Unity عملاً تبدیل شده به استاندارد دوربین‌های هوشمند در بازی‌ها؛ بدون این‌که لازم باشد برای هر حرکت دوربین کلی کُد سفارشی بنویسی. 🎮📷 مشکل چی را حل می‌کند؟ دوربین تعقیب کاراکتر، کات‌سین‌ سینمایی، لرزش هنگام شلیک، تمرکز روی چند هدف… همه‌اش با کلی Camera Controller دست‌نویس درنمی‌آید. Cinemachine یک سیستم کامپوننت‌محور می‌دهد که این رفتارها را ترکیب کنی. ویژگی‌های مهم: • Virtual Camera برای هر نما (تعقیب، ثابت، اوربیت و…) • سیستم Priority و Blend برای کات و ترنزیشن نرم بین دوربین‌ها • تنظیم خودکار Framing روی کاراکتر/هدف‌ها • نویز و Shake آماده برای شلیک، انفجار، ضربه نمونه استفاده ساده در C#: // فرض: روی یک Virtual Camera کامپوننت CinemachineVirtualCamera داریم using Cinemachine; using UnityEngine; public class FollowPlayer : MonoBehaviour { public Transform player; void Start() { var vcam = GetComponent<CinemachineVirtualCamera>(); vcam.Follow = player; vcam.LookAt = player; } } برای شروع، پکیج را از Package Manager اضافه کن و چند Virtual Camera بساز؛ فقط با تغییر Priority می‌توانی بین نماها کات سینمایی بگیری. 🎬 مستندات رسمی: Docs GitHub امتحانش روی پروژه‌ی بعدی ارزشش را دارد؛ مخصوصاً اگر همیشه درگیر اسکریپت دوربین هستی. 😉 🔖 #GameDev #بازیسازی #Unity #Cinemachine #Camera #GameDev #یونیتی #دوربین #Gameplay 👤 Developix 💎 Channel: @DevelopixGame
4 · 380 ·
|
| کانال توسعه‌دهندگان بازی |
Photo
click to show
🔥 پروژه: ‏LÖVE 2D فریم‌ورک دوبعدی لوا برای پروتوتایپ سریع بازی دوبعدی با Lua، فریم‌ورک LÖVE خیلی جمع‌وجور و خوش‌دست است 🎮 رندر 2D، ورودی، صدا، physics مبتنی‌بر Box2D و مدیریت پنجره را یک‌جا می‌دهد و روی ویندوز، لینوکس، macOS و حتی موبایل قابل اجراست. برای Game Jam، نمونه‌سازی مکانیک، یا آموزش مفاهیم پایه گیم‌لوپ عالی جواب می‌دهد. سورس و داک کاملش اینجاست: github.com/love2d/love ⭐️ 8,648 ستاره 🔖 #GameDev #بازیسازی #توسعه‌دهندگان_بازی #گیم_دولوپمنت #فریم‌ورک_بازی_دوبعدی 💎 @DevelopixGame
2 · 358 ·
|
| کانال توسعه‌دهندگان بازی |
Photo
click to show
این کد کنترل شلیک تو بازی رو ببین، یه چیزی تو مدیریت Coroutineها و رویدادها بوی Memory Leak می‌ده 👀 مشکل این کجاست و تو یه پروژه واقعی چطور درستش می‌کنی؟ (فقط منطق رو بگو، لازم نیست حتما همون ساختار کلاس رو نگه داری) 🔖 #GameDev #بازیسازی 👤 Developix 💎 Channel: @DevelopixGame
3 · 295 ·
|
| کانال توسعه‌دهندگان بازی |
الگوی Observer توی بازی‌سازی یکی از بهترین راه‌ها برای جدا کردن سیستم‌ها از هم و جلوگیری از وابستگی‌های درهم‌برهمه 🔁 به‌جای این‌که هر اسکریپت مستقیم بره سراغ بقیه، فقط به یک «رویداد» گوش می‌دهد. این رویکرد توی پروژه‌های متوسط و بزرگ یونیتی، دیباگ و تغییر گیم‌پلی رو خیلی راحت‌تر می‌کند. مسئله‌ٔ رایج: مثلاً وقتی بازیکن سکه می‌گیرد: - اسکور باید زیاد شود - صدا پخش شود - یوآی آپدیت شود اگر اسکریپت سکه مستقیماً سه کلاس مختلف را صدا بزند، هر تغییر کوچکی مساوی است با ویرایش چند جای متفاوت در کد 😵‍💫 با الگوی Observer فقط یک رویداد فراخوانی می‌شود و بقیه سیستم‌ها خودشـان «مشترک» آن رویداد هستند. نمونه‌ٔ ساده در یونیتی (C#) using UnityEngine; using System; public class GameEvents : MonoBehaviour { public static GameEvents Instance; public event Action<int> OnCoinCollected; void Awake() { Instance = this; } public void CoinCollected(int amount) { OnCoinCollected?.Invoke(amount); } } فرستنده‌ٔ رویداد (مثلاً روی Coin): public class Coin : MonoBehaviour { public int amount = 1; void OnTriggerEnter(Collider other) { GameEvents.Instance.CoinCollected(amount); Destroy(gameObject); } } دریافت‌کننده‌ها (Observerها): public class ScoreSystem : MonoBehaviour { int score; void OnEnable() { GameEvents.Instance.OnCoinCollected += HandleCoin; } void OnDisable() { GameEvents.Instance.OnCoinCollected -= HandleCoin; } void HandleCoin(int amount) { score += amount; } } همین الگو را می‌توان برای سیستم یوآی، افکت صوتی یا حتی آنالیتیکس هم استفاده کرد، بدون این‌که اسکریپت Coin درباره‌ٔ آن‌ها چیزی بداند 🎯 چند نکته‌ٔ عملی: - توی صحنه‌های بزرگ، به‌جای Singleton ساده، از ScriptableObject Event یا سیستم Event Bus تمیزتر استفاده می‌شود (ارجاع: "Game Programming Patterns" و داکیومنت یونیتی درباره‌ٔ ScriptableObject). - حتماً در OnDisable از رویدادها لغو عضویت شود تا Memory Leak یا خطای Null Reference در سوییچ صحنه پیش نیاید. برای مطالعه‌ٔ بیشتر: Ga
2 · 224 ·
|
| کانال توسعه‌دهندگان بازی |
Photo
click to show
🔥 پروژه: اُپن‌ایج؛ موتور بازمتن Age of Empires II اگر روی RTS کار می‌کنی یا همیشه می‌خواستی بدانـی Age of Empires II زیر کاپوت چطور کار می‌کند، پروژهٔ openage خیلی به‌درد می‌خورد 🎮 این یک موتور بازمتن است که منطق AoE2 را بازپیاده‌سازی می‌کند؛ کراس‌پلتفرم، داده‌محور و مناسب بررسی طراحی سیستم‌های واحدها، pathfinding و بالانس. برای الهام گرفتن از معماری، ساخت prototype RTS یا تمرین Modding گزینهٔ جذابی است. سورس و مستنداتش اینجاست: github.com/SFTtech/openage ⭐️ 14,437 ستاره 🔖 #GameDev #بازیسازی #توسعه‌دهندگان_بازی #Game_Development #موتور_بازی 💎 @DevelopixGame
4 · 268 ·
|
| کانال توسعه‌دهندگان بازی |
Link
click to show
پروژه: موتور بازی سازی توت فرنگی (موتور بازی‌سازی دو بعدی و چندسکویی بر پایه دات‌نت) موتور بازی سازی توت فرنگی یک موتور نگاشته شده در زبان C# مبتنی بر پلتفرم dotnet است که امکان ساخت بازی های دو بعدی را در با استفاده از سیستم اجزاء (Component System) می دهد نسخه اولیه این موتور جهت تست و رفع اشکال در قالب یک فریمورک برنامه نویسی منتشر شده و فاقد ادیتور می باشد شما می توانید با استفاده از این نسخه اولی در زبان سی شارپ بازی های خود را بسازید، این نسخه کاملا متن باز می باشد سایت موتور: sb-engine.ir لینک سورس روی گیت هاب: https://github.com/koosha72/strawberry لینک سورس روی گیت محلی: git.sb-engine.ir لینک پکیج منیجر محلی: nuget.sb-engine.ir @strawberry_engine 🔖 #GameDev #بازیسازی 👤 کوشا 💎 Channel: @DevelopixGame
5 · 245 ·
|
| کانال توسعه‌دهندگان بازی |
🎮 حرکت نرم، بدون زبالهٔ اضافه اگر کاراکتر در هر فریم کمی مکث می‌کند، فقط سراغ فیزیک نرو؛ ساختن مداوم آبجکت هم می‌تواند باعث فعالیت بیشتر Garbage Collector شود. در یونیتی، حرکت ساده را می‌شود بدون تخصیص آرایه یا لیست تازه در هر فریم نوشت. 🛠 این نمونه جهت ورودی را می‌گیرد و حرکت را با زمان فریم هماهنگ می‌کند: using UnityEngine; public class SimpleMover : MonoBehaviour { [SerializeField] float speed = 5f; void Update() { float x = Input.GetAxisRaw("Horizontal"); float z = Input.GetAxisRaw("Vertical"); Vector3 direction = new Vector3(x, 0f, z).normalized; transform.position += direction * speed * Time.deltaTime; } } 💡 اینجا Vector3 یک ساختار مقداری است؛ ساختنش به‌تنهایی تخصیص حافظه روی heap ایجاد نمی‌کند. نرمال‌سازی هم نمی‌گذارد حرکت مورب از حرکت مستقیم سریع‌تر شود. اگر از Rigidbody استفاده می‌کنی، جابه‌جایی فیزیکی را با روش مناسب فیزیک انجام بده، نه با تغییر مستقیم transform.position. این الگو را روی حرکت ساده امتحان کن و هنگام بررسی افت فریم، بخش GC Alloc را در Profiler هم ببین. 🔍 📚 راهنمای رسمی یونیتی دربارهٔ تخصیص حافظه 🔖 #GameDev #بازیسازی #Unity #GC #Vector3 #GameDev 👤 Developix 💎 Channel: @DevelopixGame
4 · 155 ·

An open public feed from the search index ChatCrawler — “Google for public Telegram”; refreshed as the venue is crawled. Times are UTC.

Public content only, official Telegram API. About · FAQ · What we do not do · Remove a page · Catalog · Search · How we count