| کانال توسعهدهندگان بازی |
رفتن به کانال در Telegram
⭕️ کانال توسعهدهندگان بازی دولوپیکس 💠 دولوپیکس | جامعه توسعهدهندگان ایرانی 💎 @Developix 🚀 Developix.ir 📌 پشتیبانی و تبلیغات: @DevelopixSupport
نمایش بیشتر506
مشترکین
-124 ساعت
+27 روز
+430 روز
در حال بارگذاری دادهها
کانالهای مشابه
هیچ دادهای
مشکلی وجود دارد؟ لطفاً صفحه را تازه کنید یا با مدیر پشتیبانی ما تماس بگیرید.
ابر برچسبها
اشارات ورودی و خروجی
---
---
---
---
---
---
جذب مشترکین
اکتبر '26اکتبر '26
اکتبر '26
+254
در 0 کانالها
سپتامبر '260
در 0 کانالها
Get PRO
اوت '260
در 0 کانالها
Get PRO
ژوئیه '260
در 0 کانالها
Get PRO
ژوئن '260
در 0 کانالها
Get PRO
مه '260
در 0 کانالها
Get PRO
آوریل '260
در 0 کانالها
Get PRO
مارس '260
در 0 کانالها
Get PRO
فوریه '260
در 0 کانالها
Get PRO
ژانویه '260
در 0 کانالها
Get PRO
دسامبر '250
در 0 کانالها
Get PRO
نوامبر '250
در 0 کانالها
Get PRO
اکتبر '250
در 0 کانالها
Get PRO
سپتامبر '250
در 0 کانالها
Get PRO
اوت '250
در 0 کانالها
Get PRO
ژوئیه '250
در 0 کانالها
Get PRO
ژوئن '250
در 0 کانالها
Get PRO
مه '250
در 0 کانالها
Get PRO
آوریل '250
در 0 کانالها
Get PRO
مارس '25
+261
در 0 کانالها
| تاریخ | رشد مشترکین | اشارات | کانالها | |
| 29 اکتبر | 0 | |||
| 28 اکتبر | 0 | |||
| 27 اکتبر | 0 | |||
| 26 اکتبر | +1 | |||
| 25 اکتبر | 0 | |||
| 24 اکتبر | +3 | |||
| 23 اکتبر | +1 | |||
| 22 اکتبر | +3 | |||
| 21 اکتبر | +1 | |||
| 20 اکتبر | 0 | |||
| 19 اکتبر | +1 | |||
| 18 اکتبر | +1 | |||
| 17 اکتبر | +1 | |||
| 16 اکتبر | 0 | |||
| 15 اکتبر | 0 | |||
| 14 اکتبر | +1 | |||
| 13 اکتبر | 0 | |||
| 12 اکتبر | 0 |
پستهای کانال
پارامترهای انیمیشن را با شناسه صدا بزن 🎮
وقتی وضعیت دویدن یا سرعت کاراکتر را هر فریم به
Animator میفرستی، لازم نیست هر بار نام متنی پارامتر را هم ارسال کنی. در یونیتی میتوانی نام را یکبار با Animator.StringToHash به شناسه تبدیل و همان را نگهداری کنی.
🔧 این اسکریپت را کنار کامپوننت انیمیشن بگذار و در بخش پارامترهای آن، یک پارامتر از نوع Bool با نام دقیق IsRunning بساز:
using UnityEngine;
[RequireComponent(typeof(Animator))]
public class RunAnimation : MonoBehaviour
{
static readonly int RunningId =
Animator.StringToHash("IsRunning");
Animator animator;
void Awake()
{
animator = GetComponent<Animator>();
}
public void SetRunning(bool running)
{
animator.SetBool(RunningId, running);
}
}
حالا از منطق حرکت، متد SetRunning را با وضعیت دویدن صدا بزن؛ مثلاً هنگام شروع حرکت، مقدار true بده.
💡 این کار تبدیل تکراری نام به شناسه را حذف میکند؛ اما جایگزین درستنویسی نام پارامتر نیست! اگر نام را در انیماتور عوض کردی، رشته داخل کد هم باید تغییر کند.
برای شروع، همین الگو را روی پارامترهای پرتکرار کاراکترت اجرا کن؛ تغییری کوچک و کمدردسر، مخصوصاً وقتی تعداد کاراکترها بیشتر میشود.
📚 مستندات رسمی یونیتی
🔖 #GameDev #بازیسازی #Unity #Animator #Performance #CSharp
👤 Developix
💎 Channel: @DevelopixGame| 2 | 📰 مایکروسافت Xbox Labs را برای بررسی ساخت ماد بازی با کمک هوش مصنوعی راهاندازی میکند
مایکروسافت در حال راهاندازی Xbox Labs است؛ گروهی از بازیسازان، مهندسان و دانشمندان که بررسی میکنند ساخت ماد با کمک هوش مصنوعی چگونه میتواند دنیای بازی را دگرگون کند. آشا شارما، مدیرعامل، گفت این تیم ایدههای نوظهور را آزمایش میکند، ابزار میسازد و آموختههایش را با توسعهدهندگان به اشتراک میگذارد؛ در عین حال به حفاظت از مالکیت فکری خود متعهد میماند. این اقدام پس از نمونههای اخیر دیکامپایل و کامپایل مجدد با کمک هوش مصنوعی صورت میگیرد که بازیهای کلاسیک را به مرورگرها و سختافزارهای جدید آوردهاند و مرزهای سنتی میان نرمافزار و دستگاهها را به چالش کشیدهاند.
🔖 #news
💎 @DevelopixGame | 227 |
| 3 | 🔥 پروژه: موتور بازیسازی گودوت
برای ساخت بازی بدون هزینهٔ لایسنس و با دسترسی به کد موتور، گودوت گزینهای جدی است؛ یک موتور متنباز برای بازیهای دوبعدی و سهبعدی با خروجی برای پلتفرمهای مختلف.
ساختار Scene و Node کمک میکند اجزای بازی را مستقل بسازی و دوباره استفاده کنی. زبان GDScript، پشتیبانی از C# و ابزارهای داخلی انیمیشن و فیزیک هم مسیر ساخت پروتوتایپ تا بازی کامل را پوشش میدهند.
برای شروع، یک مکانیک کوچک را در آن پیاده کن تا با روند کارش آشنا شوی 🎮
کد و راهنمای مشارکت در گودوت
⭐️ 118,310 ستاره
🔖 #GameDev #بازیسازی #Godot #GameDevelopment #OpenSource
💎 @DevelopixGame | 173 |
| 4 | 🎮 حرکت نرم، بدون زبالهٔ اضافه
اگر کاراکتر در هر فریم کمی مکث میکند، فقط سراغ فیزیک نرو؛ ساختن مداوم آبجکت هم میتواند باعث فعالیت بیشتر 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 | 291 |
| 5 | پروژه: موتور بازی سازی توت فرنگی (موتور بازیسازی دو بعدی و چندسکویی بر پایه داتنت)
موتور بازی سازی توت فرنگی یک موتور نگاشته شده در زبان 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 | 330 |
| 6 | 🔥 پروژه: اُپنایج؛ موتور بازمتن 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 | 299 |
| 7 | الگوی 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 در سوییچ صحنه پیش نیاید.
برای مطالعهٔ بیشتر:
Game Programming Patterns - Observer
Unity Learn
از پروژهٔ بعدی، سیستم رویداد گیمپلی را جدا طراحی کن؛ معماری بازی تمیزتر و قابلگسترشتر میشود 🚀
🔖 #GameDev #بازیسازی #Observer #Unity #CSharp #GameArchitecture #Events #CleanCode
👤 Developix
💎 Channel: @DevelopixGame | 248 |
| 8 | این کد کنترل شلیک تو بازی رو ببین، یه چیزی تو مدیریت Coroutineها و رویدادها بوی Memory Leak میده 👀
مشکل این کجاست و تو یه پروژه واقعی چطور درستش میکنی؟ (فقط منطق رو بگو، لازم نیست حتما همون ساختار کلاس رو نگه داری)
🔖 #GameDev #بازیسازی
👤 Developix
💎 Channel: @DevelopixGame | 316 |
| 9 | 🔥 پروژه: LÖVE 2D فریمورک دوبعدی لوا
برای پروتوتایپ سریع بازی دوبعدی با Lua، فریمورک LÖVE خیلی جمعوجور و خوشدست است 🎮
رندر 2D، ورودی، صدا، physics مبتنیبر Box2D و مدیریت پنجره را یکجا میدهد و روی ویندوز، لینوکس، macOS و حتی موبایل قابل اجراست. برای Game Jam، نمونهسازی مکانیک، یا آموزش مفاهیم پایه گیملوپ عالی جواب میدهد.
سورس و داک کاملش اینجاست:
github.com/love2d/love
⭐️ 8,648 ستاره
🔖 #GameDev #بازیسازی #توسعهدهندگان_بازی #گیم_دولوپمنت #فریمورک_بازی_دوبعدی
💎 @DevelopixGame | 383 |
| 10 | کتابخانهی 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 | 408 |
| 11 | 💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است
🔸 ارتقا از نسخه 6000.0.81f1 به 6000.3.22f1
🔹 لیست تغییرات این نسخه:
🔖 #unity, #game, #release
💎 @DevelopixGame | 342 |
| 12 | 💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است
🔸 ارتقا از نسخه 6000.3.21f1 به 6000.0.81f1
🔹 لیست تغییرات این نسخه:
🔖 #unity, #game, #release
💎 @DevelopixGame | 389 |
| 13 | در کد زیر (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 | 327 |
| 14 | 💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است
🔸 ارتقا از نسخه 6000.0.80f1 به 6000.3.21f1
🔹 لیست تغییرات این نسخه:
🔖 #unity, #game, #release
💎 @DevelopixGame | 269 |
| 15 | با Migration Boost هاستایران، برای مهاجرت به سرور ابری دوباره هزینه ترافیک نده! 🚀
با خرید اولین سرور ابری غیرساعتی از **هاستایران**، بسته ترافیک هدیه مهاجرت بهصورت خودکار برای سرویس شما فعال میشود:
✅ حداقل ۱۰۰ گیگابایت ترافیک هدیه مهاجرت
✅ افزایش حجم هدیه متناسب با ظرفیت دیسک اولیه
✅ ترافیک آپلود رایگان
✅ بدون محدودیت زمانی
سرور ابری هاستایران را راهاندازی کنید و بکاپها، فایلها و پایگاه داده خود را بدون دغدغه هزینههای پنهان ترافیک منتقل کنید.
👇 مشاهده پلنهای سرور ابری هاستایران
hostiran.club/Migration
hostiran.club/Migration | 298 |
| 16 | در کد زیر حرکت کاراکتر بر اساس 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 | 351 |
| 17 | 💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است
🔸 ارتقا از نسخه 6000.0.79f1 به 6000.3.20f1
🔹 لیست تغییرات این نسخه:
🔖 #unity, #game, #release
💎 @DevelopixGame | 302 |
| 18 | 💠 نسخه جدید نرمافزار بلندر (Blender) منتشر شده است
🔸 ارتقا از نسخه 5.1.2 به 5.2.0
🔖 #blender, #game, #release
💎 @DevelopixGame | 277 |
| 19 | 💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است
🔸 ارتقا از نسخه 6000.3.19f1 به 6000.0.79f1
🔹 لیست تغییرات این نسخه:
- بهروزرسانی Gradle به ۹.۱ و AGP به ۹.۰
- رفع مشکل نسخهکد اشتباه در split APKهای اندروید
- آپدیت بستههای خدمات آنلاین Unity (Cloud Code، Economy، Leaderboards و …)
- بهبود مستندات و رفتار استریم مِیپمپها در گرافیک
- بهروزرسانی Netcode و ابزارهای چندنفره برای پایداری بهتر
- سایر رفع باگها و بهبودهای جزئی و غیره
🔖 #unity, #game, #release
💎 @DevelopixGame | 325 |
| 20 | در 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 | 330 |
