→ تمام گائیڈز
گائیڈ 4

اپنا پہلا tower defense بناؤ

دشمن راستے پر چلتے ہوئے تمہارے اڈے کی طرف جاتے ہیں، اور ایک ٹاور سب سے قریبی دشمن پر گولی چلاتا ہے۔

مفت60 منٹ · ابتدائی · Roblox Studio
1
قدم 1 / 8

place تیار کرو

  1. Roblox Studio کھولو، New Experience پر کلک کرو اور Baseplate ٹیمپلیٹ چنو۔
  2. Explorer میں Workspace پر ماؤس لے جاؤ، + پر کلک کرو اور Folder شامل کرو۔ اس کا نام Path رکھو۔
  3. Workspace میں دوسرا Folder ڈالو اور اس کا نام Enemies رکھو۔ اسے خالی چھوڑ دو۔ دشمن گیم کے دوران اس میں آئیں گے۔

مزید تفصیل

  • Baseplate ٹیمپلیٹ شروع والی اسکرین پر ٹیمپلیٹس کی فہرست میں ہے۔
  • + پر کلک کرنے کے بعد جلدی ڈھونڈنے کے لیے Folder لفظ لکھو۔ F2 سے Folder کا نام بدلو۔
  • نام بالکل Path اور Enemies ہونے چاہییں، پہلے حرف بڑے کے ساتھ۔ اسکرپٹس انہی ناموں کو ڈھونڈتی ہیں۔
  • Mac پر جہاں بھی گائیڈ Ctrl کہے، وہاں Cmd کلید استعمال کرو۔
یہ قدم میرے لیے کام نہیں کر رہا

پہلے یہ تین باتیں دیکھو

  • ہر part اور اسکرپٹ کا نام بالکل گائیڈ جیسا ہو، بڑے حروف سمیت۔
  • اسکرپٹ صحیح چیز کے اندر ہو۔ کوڈ والے خانے کے اوپر لکھا لیبل دیکھو۔
  • Window مینو سے Output ونڈو کھولو۔ سرخ متن اسکرپٹ اور وہ لائن دکھاتا ہے جس میں مسئلہ ہے۔

پھر بھی اٹکے ہو؟ ہمیں لکھو ←

2
قدم 2 / 8

راستہ بناؤ

  1. ایک Part ڈالو۔ Size کو 6, 1, 6 کرو، Anchored آن کرو اور اسے Path فولڈر میں کھینچ دو۔ اس کا نام 1 رکھو۔
  2. Ctrl+D سے اس کی کاپی بناؤ اور کاپی کو تقریباً 30 studs دور لے جاؤ۔ اس کا نام 2 رکھو۔
  3. تب تک دہراؤ جب تک 1، 2، 3، 4 اور 5 نام کے 5 parts نہ ہو جائیں۔ انہیں ایسے رکھو کہ راستے میں کچھ موڑ ہوں۔
  4. دشمن 1 سے 2، پھر 3 اور اسی طرح آگے جائیں گے، ہر جوڑے کے بیچ سیدھی لکیر میں۔

مزید تفصیل

  • کسی part کو Folder میں ڈالنے کے لیے Explorer میں اس کے نام کو Path کے نام پر کھینچو۔
  • Ctrl+D سے بنائی گئی کاپی پہلے ہی Path فولڈر کے اندر ہوتی ہے۔ تمہیں بس اسے ہلانا اور اس کا نام بدلنا ہے۔
  • نام صرف نمبر ہیں: 1, 2, 3, 4, 5۔ نہ کوئی حرف اور نہ کوئی خالی جگہ۔
  • ٹکڑوں کو فرش پر پڑا رہنے دو۔ دشمن ان سے 2 studs اوپر تیرتے ہیں۔
عام غلطی. کوئی نمبر چھوڑ دینا۔ اگر part 3 نہ ہو تو دشمن part 2 پر رک جاتے ہیں اور اسکرپٹ غلطی دکھاتی ہے۔
یہ قدم میرے لیے کام نہیں کر رہا

پہلے یہ تین باتیں دیکھو

  • ہر part اور اسکرپٹ کا نام بالکل گائیڈ جیسا ہو، بڑے حروف سمیت۔
  • اسکرپٹ صحیح چیز کے اندر ہو۔ کوڈ والے خانے کے اوپر لکھا لیبل دیکھو۔
  • Window مینو سے Output ونڈو کھولو۔ سرخ متن اسکرپٹ اور وہ لائن دکھاتا ہے جس میں مسئلہ ہے۔

پھر بھی اٹکے ہو؟ ہمیں لکھو ←

3
قدم 3 / 8

دشمن بناؤ

  1. ایک Part ڈالو۔ Shape کو Ball اور Size کو 3, 3, 3 کرو، اور اسے سرخ کرو۔ Anchored آن کرو، CanCollide بند کرو اور نام Enemy رکھو۔
  2. Enemy پر ماؤس لے جاؤ، + پر کلک کرو اور IntValue شامل کرو۔ اس کا نام Health رکھو اور Value کو 3 کرو۔
  3. Enemy کو ServerStorage میں کھینچ دو۔ اب یہ ایک نمونہ ہے۔ گیم اس کی کاپیاں بنائے گی۔

مزید تفصیل

  • Shape Properties میں ایک فہرست ہے۔ اس پر کلک کرو اور Ball چنو۔
  • CanCollide Properties میں ایک چیک باکس ہے۔ نشان کے بغیر کھلاڑی اور دوسرے parts دشمن کے آر پار گزر جاتے ہیں۔
  • + پر کلک کرنے کے بعد IntValue لکھ کر اسے ڈھونڈو۔ نئے IntValue پر کلک کرو، پھر Properties میں Name کو Health اور Value کو 3 کرو۔
  • Enemy کو ServerStorage میں کھینچنے کے بعد وہ Viewport سے غائب ہو جاتا ہے۔ یہ ٹھیک ہے۔
مشورہ. دشمن anchored ہے کیونکہ اسے اسکرپٹ ہلاتی ہے۔ Anchored parts پر کشش ثقل اور دھکوں کا اثر نہیں ہوتا۔
یہ قدم میرے لیے کام نہیں کر رہا

پہلے یہ تین باتیں دیکھو

  • ہر part اور اسکرپٹ کا نام بالکل گائیڈ جیسا ہو، بڑے حروف سمیت۔
  • اسکرپٹ صحیح چیز کے اندر ہو۔ کوڈ والے خانے کے اوپر لکھا لیبل دیکھو۔
  • Window مینو سے Output ونڈو کھولو۔ سرخ متن اسکرپٹ اور وہ لائن دکھاتا ہے جس میں مسئلہ ہے۔

پھر بھی اٹکے ہو؟ ہمیں لکھو ←

4
قدم 4 / 8

اڈا بناؤ

  1. راستے کے آخر میں، part 5 کے برابر میں ایک بڑا Part ڈالو۔ Anchored آن کرو اور نام Base رکھو۔
  2. Base پر ماؤس لے جاؤ، + پر کلک کرو اور IntValue شامل کرو۔ اس کا نام Health رکھو اور Value کو 10 کرو۔
  3. Base میں BillboardGui ڈالو جس کا Size {0, 200}, {0, 50} اور StudsOffset 0, 8, 0 ہو۔ اس کے اندر TextLabel ڈالو جس کا Size {1, 0}, {1, 0} ہو اور TextScaled آن ہو۔
  4. Base میں Script شامل کرو اور یہ کوڈ پیسٹ کرو۔
Base > Script
local base = script.Parent
local health = base.Health
local label = base.BillboardGui.TextLabel

local function update()
	if health.Value > 0 then
		label.Text = "Base: " .. health.Value
	else
		label.Text = "Game over"
	end
end

health.Changed:Connect(update)
update()

ہر حصہ کیا کرتا ہے

  • Changed ہر بار چلتا ہے جب Health کی ویلیو بدلتی ہے۔
  • update فنکشن نیا نمبر اڈے کے اوپر والے لیبل پر لکھ دیتا ہے۔
  • جب Health 0 پر پہنچتی ہے تو لیبل پر Game over دکھائی دیتا ہے اور Waves اسکرپٹ دشمن بھیجنا بند کر دیتا ہے۔

مزید تفصیل

  • 10, 10, 10 کا سائز اچھا بیس ہے۔ کوئی بھی رنگ چلے گا۔
  • بیس کا Health دشمن کے Health سے مختلف چیز ہے۔ ہر ایک اپنے اپنے part کے اندر ہے۔
  • Size اور StudsOffset کے لیے نمبر بالکل ویسے ہی لکھو جیسے دکھائے گئے ہیں، بریکٹوں اور کاموں سمیت، اور Enter دباؤ۔
  • آزمانے کے لیے: F5 دباؤ۔ بیس کے اوپر لیبل Base: 10 دکھاتا ہے۔
یہ قدم میرے لیے کام نہیں کر رہا

پہلے یہ تین باتیں دیکھو

  • ہر part اور اسکرپٹ کا نام بالکل گائیڈ جیسا ہو، بڑے حروف سمیت۔
  • اسکرپٹ صحیح چیز کے اندر ہو۔ کوڈ والے خانے کے اوپر لکھا لیبل دیکھو۔
  • Window مینو سے Output ونڈو کھولو۔ سرخ متن اسکرپٹ اور وہ لائن دکھاتا ہے جس میں مسئلہ ہے۔

پھر بھی اٹکے ہو؟ ہمیں لکھو ←

5
قدم 5 / 8

لہریں بھیجو

  1. ServerScriptService پر ماؤس لے جاؤ، + پر کلک کرو اور Script شامل کرو۔ اس کا نام Waves رکھو۔
  2. جو لائن پہلے سے لکھی ہے اسے مٹا دو اور یہ کوڈ پیسٹ کرو۔
  3. Play دباؤ۔ ہر 3 سیکنڈ بعد part 1 پر ایک سرخ گیند آتی ہے اور راستے پر چلتی ہے۔ جب وہ آخر تک پہنچتی ہے تو اڈا 1 health کھو دیتا ہے۔
ServerScriptService > Waves
local TweenService = game:GetService("TweenService")
local ServerStorage = game:GetService("ServerStorage")

local path = workspace:WaitForChild("Path")
local enemies = workspace:WaitForChild("Enemies")
local base = workspace:WaitForChild("Base")
local SPEED = 8

local function walk(enemy)
	for i = 2, #path:GetChildren() do
		local target = path[tostring(i)].Position + Vector3.new(0, 2, 0)
		local distance = (target - enemy.Position).Magnitude
		local info = TweenInfo.new(distance / SPEED, Enum.EasingStyle.Linear)
		local tween = TweenService:Create(enemy, info, {Position = target})
		tween:Play()
		tween.Completed:Wait()
		if not enemy.Parent then return end
	end

	base.Health.Value = math.max(0, base.Health.Value - 1)
	enemy:Destroy()
end

while base.Health.Value > 0 do
	task.wait(3)

	local enemy = ServerStorage.Enemy:Clone()
	enemy.Position = path["1"].Position + Vector3.new(0, 2, 0)
	enemy.Parent = enemies
	task.spawn(walk, enemy)
end

ہر حصہ کیا کرتا ہے

  • Clone ServerStorage میں رکھے Enemy نمونے کی ایک کاپی بناتا ہے۔
  • walk فنکشن دشمن کو ترتیب سے راستے کے ہر part تک لے جاتا ہے۔ distance / SPEED لمبے اور چھوٹے ٹکڑوں پر رفتار ایک جیسی رکھتا ہے۔
  • task.spawn ہر دشمن کو اپنے آپ چلنے دیتا ہے، تاکہ لوپ نئے دشمن بھیجتا رہے۔

مزید تفصیل

  • اسکرپٹ نئے ٹیب میں کھلتی ہے۔ کوڈ کے اندر کلک کرو، Ctrl+A دباؤ اور پھر Ctrl+V دباؤ تاکہ سب کچھ بدل جائے۔
  • گیم چلتے وقت دشمن Enemies فولڈر کے اندر ظاہر ہوتے ہیں۔ تم انہیں Explorer میں دیکھ سکتے ہو۔
  • ابھی ٹاور نہ ہو تو ہر دشمن بیس تک پہنچ جاتا ہے۔ 10 دشمنوں کے بعد لیبل Game over دکھاتا ہے اور مزید دشمن نہیں آتے۔
  • Output میں کسی غائب نام کے بارے میں سرخ متن کا مطلب ہے کہ راستے کے کسی part یا کسی Folder کا نام غلط ہے۔
یہ قدم میرے لیے کام نہیں کر رہا

پہلے یہ تین باتیں دیکھو

  • ہر part اور اسکرپٹ کا نام بالکل گائیڈ جیسا ہو، بڑے حروف سمیت۔
  • اسکرپٹ صحیح چیز کے اندر ہو۔ کوڈ والے خانے کے اوپر لکھا لیبل دیکھو۔
  • Window مینو سے Output ونڈو کھولو۔ سرخ متن اسکرپٹ اور وہ لائن دکھاتا ہے جس میں مسئلہ ہے۔

پھر بھی اٹکے ہو؟ ہمیں لکھو ←

6
قدم 6 / 8

ٹاور بناؤ

  1. راستے کے کسی موڑ کے قریب ایک Part ڈالو۔ Size کو 4, 8, 4 کرو، Anchored آن کرو اور نام Tower رکھو۔
  2. Tower میں Script شامل کرو اور یہ کوڈ پیسٹ کرو۔
  3. Play دباؤ۔ ہر سیکنڈ ٹاور حد کے اندر سب سے قریبی دشمن کو مارتا ہے۔ دشمن سفید ہو کر چمکتا ہے، اور 3 وار کے بعد غائب ہو جاتا ہے۔
Tower > Script
local tower = script.Parent
local enemies = workspace:WaitForChild("Enemies")
local RANGE = 25
local DAMAGE = 1

while true do
	task.wait(1)

	local target = nil
	local closest = RANGE
	for _, enemy in ipairs(enemies:GetChildren()) do
		local distance = (enemy.Position - tower.Position).Magnitude
		if distance < closest then
			target = enemy
			closest = distance
		end
	end

	if target then
		target.Health.Value -= DAMAGE
		if target.Health.Value <= 0 then
			target:Destroy()
		else
			target.Color = Color3.new(1, 1, 1)
			task.wait(0.1)
			target.Color = Color3.fromRGB(255, 60, 60)
		end
	end
end

ہر حصہ کیا کرتا ہے

  • لوپ ٹاور سے ہر دشمن تک کا فاصلہ ناپتا ہے اور سب سے قریبی کو یاد رکھتا ہے۔
  • RANGE ٹاور کی پہنچ ہے۔ DAMAGE بتاتا ہے کہ ایک وار سے کتنی health کم ہوتی ہے۔
  • جب Health 0 ہو جاتی ہے تو Destroy دشمن کو ہٹا دیتا ہے۔

مزید تفصیل

  • ٹاور کو راستے سے 8 سے 12 studs دور رکھو۔ اس کی رینج ہر طرف 25 studs ہے۔
  • ایک ٹاور ایک دشمن پر 3 سیکنڈ لیتا ہے، اور ہر 3 سیکنڈ بعد نیا دشمن آتا ہے۔ اس لیے ایک ٹاور راستہ تبھی روک سکتا ہے جب دشمن کافی دیر رینج میں رہیں۔
  • سفید چمک ایک سیکنڈ کے دسویں حصے تک رہتی ہے۔ اسے دیکھنے کے لیے غور سے دیکھو۔
  • دوسرا ٹاور بنانے کے لیے Tower کو چنو اور Ctrl+D دباؤ، پھر کاپی کو ہلاؤ۔ اسکرپٹ اس کے ساتھ آ جاتی ہے۔
مشورہ. ٹاور موڑ کے برابر میں سب سے اچھا کام کرتا ہے، کیونکہ وہاں دشمن زیادہ دیر حد میں رہتے ہیں۔
یہ قدم میرے لیے کام نہیں کر رہا

پہلے یہ تین باتیں دیکھو

  • ہر part اور اسکرپٹ کا نام بالکل گائیڈ جیسا ہو، بڑے حروف سمیت۔
  • اسکرپٹ صحیح چیز کے اندر ہو۔ کوڈ والے خانے کے اوپر لکھا لیبل دیکھو۔
  • Window مینو سے Output ونڈو کھولو۔ سرخ متن اسکرپٹ اور وہ لائن دکھاتا ہے جس میں مسئلہ ہے۔

پھر بھی اٹکے ہو؟ ہمیں لکھو ←

7
قدم 7 / 8

ٹیسٹ کرو اور توازن بناؤ

  1. F5 دباؤ اور چند لہریں دیکھو۔
  2. اگر کوئی دشمن کبھی اڈے تک نہ پہنچے تو گیم بہت آسان ہے۔ اگر اڈا جلدی اپنی ساری health کھو دے تو بہت مشکل ہے۔
  3. تین نمبروں سے توازن بناؤ: Waves میں انتظار کا وقت، دشمن کی Health ویلیو اور ٹاور کا DAMAGE۔
  4. روکنے کے لیے Shift+F5 دباؤ۔ اگر کچھ ناکام ہو تو Window مینو سے Output ونڈو کھولو اور سرخ لکھائی پڑھو۔

مزید تفصیل

  • ایک وقت میں صرف ایک نمبر بدلو، پھر دوبارہ کھیلو۔ ورنہ تمہیں پتا نہیں چلے گا کہ کس تبدیلی سے فرق پڑا۔
  • انتظار کا وقت Waves اسکرپٹ کے آخر کے قریب task.wait(3) میں موجود نمبر ہے۔ چھوٹا نمبر دشمنوں کو جلدی بھیجتا ہے۔
  • دشمن کا Health ServerStorage میں Enemy کے اندر ہے۔ ٹاور کا DAMAGE Tower اسکرپٹ کے اوپر ہے۔
  • ایک اچھا پہلا ہدف: دو ٹاورز کے ساتھ بیس دو منٹ تک بچا رہے۔
یہ قدم میرے لیے کام نہیں کر رہا

پہلے یہ تین باتیں دیکھو

  • ہر part اور اسکرپٹ کا نام بالکل گائیڈ جیسا ہو، بڑے حروف سمیت۔
  • اسکرپٹ صحیح چیز کے اندر ہو۔ کوڈ والے خانے کے اوپر لکھا لیبل دیکھو۔
  • Window مینو سے Output ونڈو کھولو۔ سرخ متن اسکرپٹ اور وہ لائن دکھاتا ہے جس میں مسئلہ ہے۔

پھر بھی اٹکے ہو؟ ہمیں لکھو ←

8
قدم 8 / 8

اسے پبلش کرو

  1. File → Publish to Roblox چنو۔ گیم کو نام اور مختصر تفصیل دو۔
  2. Creator Hub ویب سائٹ پر اپنا گیم کھولو اور Maturity کا سوالنامہ بھرو۔
  3. گیم کو Public کرو اور لنک کسی دوست کو بھیجو۔

مزید تفصیل

  • پہلی بار پبلش کرتے وقت Studio نام اور تفصیل مانگتا ہے۔ Create پر کلک کرو۔
  • Creator Hub ویب سائٹ create.roblox.com ہے۔ اسی اکاؤنٹ سے سائن ان کرو اور فہرست میں اپنے گیم پر کلک کرو۔
  • گیم کو عام کرنے سے پہلے Roblox مزید کچھ مانگ سکتا ہے، مثلاً اکاؤنٹ پر عمر کی جانچ۔ صفحہ بتاتا ہے کہ کیا کم ہے۔
  • اگر تمہاری عمر 18 سال سے کم ہے تو یہ قدم اپنے امی یا ابو کے ساتھ مل کر کرو۔
مشورہ. گیم دوست کو دکھاؤ اور ایک سوال پوچھو: یہ بہت آسان تھا یا بہت مشکل؟ پھر ایک نمبر بدلو اور دوبارہ ٹیسٹ کرو۔
یہ قدم میرے لیے کام نہیں کر رہا

پہلے یہ تین باتیں دیکھو

  • ہر part اور اسکرپٹ کا نام بالکل گائیڈ جیسا ہو، بڑے حروف سمیت۔
  • اسکرپٹ صحیح چیز کے اندر ہو۔ کوڈ والے خانے کے اوپر لکھا لیبل دیکھو۔
  • Window مینو سے Output ونڈو کھولو۔ سرخ متن اسکرپٹ اور وہ لائن دکھاتا ہے جس میں مسئلہ ہے۔

پھر بھی اٹکے ہو؟ ہمیں لکھو ←

اب اسے خود بدلو

  • دوسرا ٹاور لگاؤ جس کی حد چھوٹی ہو اور DAMAGE 2 ہو۔
  • لہروں کو وقت کے ساتھ تیز کرو۔ اشارہ: انتظار کا وقت ایک variable میں رکھو اور ہر دشمن کے بعد اسے تھوڑا چھوٹا کر دو۔
  • اڈے کو 20 health دو اور ہر دشمن سے 2 کم کراؤ۔