← सभी गाइड
गाइड 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 शब्द लिखो, ताकि वह जल्दी मिल जाए। folder का नाम F2 से बदलो।
  • नाम ठीक 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 folder के अंदर होती है। तुम्हें बस उसे हिलाना और उसका नाम बदलना है।
  • नाम बस संख्याएँ हैं: 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 में एक चेकबॉक्स है। टिक के बिना खिलाड़ी और दूसरे part दुश्मन के आर-पार निकल जाते हैं।
  • + पर क्लिक करके 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 function नई संख्या को बेस के ऊपर वाले लेबल पर लिख देता है।
  • जब Health 0 पर पहुँच जाती है, तो लेबल पर Game over दिखता है और Waves स्क्रिप्ट दुश्मन भेजना बंद कर देती है।

और जानकारी

  • 10, 10, 10 का साइज़ एक अच्छा आधार है। कोई भी रंग चलेगा।
  • base का Health दुश्मन के Health से अलग चीज़ है। हर एक अपने part के अंदर रहता है।
  • Size और StudsOffset के लिए संख्याएँ ठीक वैसे ही लिखो जैसी दिखाई गई हैं, कोष्ठकों और कॉमा के साथ, और Enter दबाओ।
  • टेस्ट करने के लिए F5 दबाओ। base के ऊपर का लेबल Base: 10 दिखाता है।
यह कदम मेरे लिए काम नहीं कर रहा

पहले ये तीन बातें जाँचो

  • हर part और स्क्रिप्ट का नाम बिल्कुल गाइड जैसा हो, बड़े और छोटे अक्षरों के साथ।
  • स्क्रिप्ट सही चीज़ के अंदर रखी हो। कोड वाले बॉक्स के ऊपर लिखा लेबल देखो।
  • Window मेनू से Output विंडो खोलो। लाल लिखावट बताती है कि स्क्रिप्ट में किस लाइन पर गड़बड़ है।

फिर भी अटके हो? हमें लिखो →

5
कदम 5 / 8

वेव भेजो

  1. ServerScriptService पर माउस ले जाओ, + पर क्लिक करो और एक Script जोड़ो। उसका नाम Waves रखो।
  2. वहाँ पहले से लिखी लाइन को मिटाओ और यह कोड पेस्ट करो।
  3. Play दबाओ। हर 3 सेकंड में part 1 पर एक लाल गेंद आती है और रास्ते पर चलती है। जब वह अंत तक पहुँचती है, तो बेस की health 1 घट जाती है।
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 function दुश्मन को रास्ते के हर part पर क्रम से ले जाता है। distance / SPEED लंबे और छोटे हिस्सों पर रफ़्तार को एक जैसा रखता है।
  • task.spawn हर दुश्मन को अपने आप चलने देता है, ताकि लूप नए दुश्मन भेजता रहे।

और जानकारी

  • स्क्रिप्ट एक नए टैब में खुलती है। कोड के अंदर क्लिक करो, Ctrl+A और फिर Ctrl+V दबाकर सब कुछ बदल दो।
  • गेम चलते समय Enemies folder के अंदर दुश्मन दिखते हैं। तुम उन्हें Explorer में देख सकते हो।
  • अभी कोई tower नहीं है, इसलिए हर दुश्मन base तक पहुँच जाता है। 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 दुश्मन को हटा देता है।

और जानकारी

  • tower को रास्ते से 8 से 12 studs दूर रखो। रेंज हर दिशा में 25 studs है।
  • एक tower एक दुश्मन को 3 सेकंड में हराता है, और हर 3 सेकंड में नया दुश्मन आता है। इसलिए एक tower तभी रास्ता रोक सकता है जब दुश्मन काफ़ी देर तक रेंज में रहें।
  • सफ़ेद चमक एक सेकंड के दसवें हिस्से तक रहती है। उसे देखने के लिए ध्यान से देखो।
  • दूसरा tower बनाने के लिए Tower चुनो और Ctrl+D दबाओ, फिर कॉपी को हिलाओ। स्क्रिप्ट उसके साथ आ जाती है।
सुझाव. टावर मोड़ के बगल में सबसे अच्छा काम करता है, क्योंकि वहाँ दुश्मन ज़्यादा देर तक पहुँच के अंदर रहते हैं।
यह कदम मेरे लिए काम नहीं कर रहा

पहले ये तीन बातें जाँचो

  • हर part और स्क्रिप्ट का नाम बिल्कुल गाइड जैसा हो, बड़े और छोटे अक्षरों के साथ।
  • स्क्रिप्ट सही चीज़ के अंदर रखी हो। कोड वाले बॉक्स के ऊपर लिखा लेबल देखो।
  • Window मेनू से Output विंडो खोलो। लाल लिखावट बताती है कि स्क्रिप्ट में किस लाइन पर गड़बड़ है।

फिर भी अटके हो? हमें लिखो →

7
कदम 7 / 8

टेस्ट करो और संतुलन बनाओ

  1. F5 दबाओ और कुछ वेव देखो।
  2. अगर कोई दुश्मन कभी बेस तक नहीं पहुँचता, तो गेम बहुत आसान है। अगर बेस की पूरी health जल्दी खत्म हो जाती है, तो वह बहुत मुश्किल है।
  3. तीन संख्याओं से संतुलन बनाओ: Waves में इंतज़ार का समय, दुश्मन की Health वैल्यू और टावर का DAMAGE।
  4. रोकने के लिए Shift+F5 दबाओ। अगर कुछ गड़बड़ हो, तो Window मेनू से Output window खोलो और लाल लिखावट पढ़ो।

और जानकारी

  • एक बार में सिर्फ़ एक संख्या बदलो, फिर दोबारा खेलो। वरना तुम्हें पता नहीं चलेगा कि किस बदलाव से फ़र्क पड़ा।
  • इंतज़ार का समय Waves स्क्रिप्ट के आख़िर के पास task.wait(3) वाली संख्या है। छोटी संख्या दुश्मनों को जल्दी भेजती है।
  • दुश्मन का Health ServerStorage में, Enemy के अंदर है। tower का DAMAGE Tower स्क्रिप्ट के सबसे ऊपर है।
  • एक अच्छा पहला लक्ष्य: दो tower के साथ base दो मिनट टिका रहे।
यह कदम मेरे लिए काम नहीं कर रहा

पहले ये तीन बातें जाँचो

  • हर 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 घटवाओ।