Eğitim · Script temelleri

Roblox Studio'da oyun nasıl yapılır, adım adım

Bir Roblox oyununu sadece ücretsiz olan Roblox Studio ve bir Roblox hesabıyla yapabilirsin. Bu rehber Baseplate şablonundan kısa bir coin parkuru kuruyor: zıplanacak platformlar, seni sıfırlayan lav, oyuncu listesinde coin'ler ve bir galibiyet (Win) veren bitiş çizgisi; hepsi iki sunucu scriptiyle yönetiliyor. Sonra oyunu yayınlıyor ve Roblox'un kimin oynayabileceğine dair güncel kurallarına uyarak oyunculara açıyor.

Güncellendi: 26 Ekim 202616 dk okumaYazan:

Kısa cevap

Roblox Studio'da oyun yapmak için Studio'yu aç, Baseplate şablonunu seç, seviyeni Part'larla kur (hareket etmemeleri için Anchored'ı işaretle) ve kurallar için ServerScriptService'e Script'ler ekle, örneğin coin'ler için bir leaderstats klasörü. Test etmek için Play'e (F5) bas. Sonra hesabına kaydetmek için File > Publish'i seç. Aynı menüden yayına alana (herkese açık hale getirene) ve yaşa göre kısıtlı içerik sorusunu cevaplayana kadar gizli kalır.

  • Oyun kurallarını sunucu Script'lerinde tut. Bir LocalScript'in yaptığı değişikliği sadece o oyuncu görür ve bir oyuncunun cihazındaki her şeyi bir hileci değiştirebilir.
  • Oyunu yayına almak için en az 2 günlük, iyi durumda bir hesap ve bir yaş doğrulaması gerekir. Yaşa göre kısıtlı içerik sorusuna Hayır dersen Roblox oyunu Content May Vary olarak etiketler ve yaşı doğrulanmış 16 yaş ve üstü kullanıcılara açar. Tüm yaşlara ulaşmanın ek gereksinimleri var.
  • Studio Windows ve Mac'te çalışır. Roblox'un kurulum sayfası telefon ya da tablet sürümünden bahsetmiyor.
Bu sayfada
  1. Ne kuracaksın
  2. 1. Studio'yu kur
  3. 2. Kur
  4. 3. PlayerStats scripti
  5. 4. CourseService scripti
  6. Sunucudaki kurallar
  7. 5. Test et
  8. 6. Yayınla
  9. 7. Herkese aç
  10. Arkadaşlarla
  11. Sonraki adımlar
  12. Yaygın hatalar
  13. RoCode ile
  14. Sık sorulan sorular
  15. Kaynaklar ve ek okumalar

Ne kuracaksın

ÇizimÇalışan bir oyunda bitmiş parkur: bir turda üç coin, sonra bitiş bir Win veriyor ve oyuncuyu başa döndürüyor.

Oyun kısa bir parkur. Oyuncular SpawnLocation'da başlar, lav zeminin üzerindeki platformlar arasında zıplar, coin toplar ve yeşil bir bitişe dokunur. Bitiş, sadece en son doğduğundan ya da bitişe ulaştığından beri en az 3 coin toplamış bir oyuncuya Win verir, sonra onu başa döndürür. Coins ve Wins oyuncu listesinde görünür ve tüm kurallar sunucuda çalışır.

Coin parkurunun parçaları
ParçaNeredeNe yapar
SpawnLocationDoğrudan Workspace'te (Baseplate şablonuyla gelir)Oyuncuların girişte ve yeniden doğarken belirdiği yer. Bitiş oyuncuları buraya döndürür.
Course Folder'ıWorkspaceBütün seviyeyi tutar, böylece script her şeyi tek bir yerde bulur.
Lava Folder'ı ve parçalarıCourse'un içindeİçindeki her parça ona dokunan oyuncuyu sıfırlar.
Coins Folder'ı ve parçalarıCourse'un içindeHer coin ona ilk dokunan oyuncuya 1 Coin öder, gizlenir ve 10 saniye sonra geri gelir.
Finish Part'ıCourse'un içindeBu turda 3 coin toplamış bir oyuncuya Win verir, sonra onu başa döndürür.
PlayerStats Script'iServerScriptServiceHer oyuncuya oyuncu listesinde bir Coins ve bir Wins istatistiği verir.
CourseService Script'iServerScriptServiceLavı, coin'leri ve bitişi yönetir. Coins ve Wins'in değiştiği tek yer burası.
Bitmiş parkurla Explorer. İstediğin kadar platform, lav parçası ve coin ekle. Sadece Course, Lava, Coins ve Finish adları sabit.
Workspace
  Baseplate Part
  SpawnLocation SpawnLocation
  Course Folder new
    Platform Part new
    Lava Folder new
      Lava Part new
    Coins Folder new
      Coin Part new
    Finish Part new
ServerScriptService
  PlayerStats Script new
  CourseService Script new

Workspace'teki her şeyi 2. adımda elle kuruyorsun. İki script ServerScriptService'e gidiyor. Roblox bu konteynerdeki scriptleri oyunculara asla göndermez, yani kimse onları kendi cihazından okuyamaz ya da değiştiremez.

Adım 1: Studio'yu kur ve bir Baseplate aç

  1. Roblox Studio'yu Roblox'un Creator Hub'ından indir ve yükleyiciyi çalıştır (Windows'ta RobloxStudio.exe, Mac'te RobloxStudio.dmg). Studio, Windows ve Mac için ücretsiz bir uygulama.
  2. Açılınca Roblox hesabınla giriş yap. Hesabın yoksa önce roblox.com'da oluştur.
  3. Open a Template bölümünde Baseplate'i seç. Sadece iki nesneyle başlar: karakterlerin belirdiği ve yeniden doğduğu bir SpawnLocation ve Roblox'un uzunluk birimi olan stud'lara hizalı, 4'e 4 ızgara dokulu bir zemin olan Baseplate.
  4. Sürekli kullanacağın üç pencereyi aç. Explorer oyunundaki her nesneyi gösterir, Properties de seçtiğin nesneyi değiştirir; ikisi de Window menüsünden ya da Home sekmesinden açılır. Output scriptlerinin hatalarını gösterir ve Window menüsünden ya da Script sekmesinden açılır.

Adım 2: parkuru kur

  1. Explorer'da fareyle Workspace üzerine gel, + butonuna tıkla (ya da Ctrl+I, Mac'te Cmd+I) ve bir Folder ekle. Adını Course yap.
  2. Fareyle Course üzerine gel, +'ya tıkla ve içine iki Folder daha ekle. Adlarını Lava ve Coins yap.
  3. Lav zemini kur. Bir blok eklemek için Home ya da Model sekmesinde Part'a tıkla ve Scale aracıyla onu bütün parkurun altında, her yanda bolca pay bırakan büyük, düz bir levhaya kadar uzat. Properties'te Color'ını kırmızı, Material'ını Neon yap, Anchored'ı işaretle ve onu Lava klasörüne sürükle. Artık herhangi bir yerden düşen bir oyuncu Baseplate'e değil lava düşer.
  4. Platformları kur. Aynı şekilde daha fazla parça ekle ve Move ve Scale araçlarıyla onları lavın üzerine, her biri birkaç stud yukarıda ve aralarında zıplanacak boşluklar bırakarak yerleştir. Properties'te her birinde Anchored'ın işaretli olduğundan emin ol ve onları Course'a sürükle.
  5. Coin'leri kur. Part butonundaki küçük oku basılı tut ve Cylinder'ı seç. Onu küçük ve sarı yap, Anchored'ı işaretle ve oyuncular ona çarpmak yerine içinden geçsin diye CanCollide'ın işaretini kaldır. Onu Coins klasörüne koy, en az 3 tane olana kadar çoğaltmak için Ctrl+D'ye (Mac'te Cmd+D) bas ve onları parkur boyunca platformların üzerine dağıt.
  6. Bitişi kur. Sonda lavın üzerine, üstüne inebileceğin kadar büyük bir parça daha ekle, onu yeşile boya, Anchored'ı işaretle, adını tam olarak Finish yap ve onu klasörlerden birine değil doğrudan Course'a sürükle.
  7. SpawnLocation'ı parkurun başında, ilk platformunun yanında lavın üzerine taşı, böylece levhanın üstünde kalır. Onu Course'un içine değil doğrudan Workspace'e bırak: CourseService oyuncuları başa döndürmek için onu orada arıyor.

Adlar önemli

CourseService parkuru adıyla bulur: doğrudan Workspace'te Course adlı bir klasör, onun içinde Lava ve Coins klasörleri ve onun içinde Finish adlı bir parça. Bunları büyük harfleri de aynı olacak şekilde tam olarak böyle yaz. Lav parçalarının ve coin'lerin adları önemli değil: doğrudan Lava'nın içindeki her parça lavdır, doğrudan Coins'in içindeki her parça da bir coin.

Adım 3: oyuncu listesine Coins ve Wins ekle

Explorer'da fareyle ServerScriptService üzerine gel, +'ya tıkla, bir Script ekle ve adını PlayerStats yap. Tüm içeriğini bununla değiştir:

Script konum: ServerScriptService adı: PlayerStats
-- ServerScriptService içinde PlayerStats adlı Script.
-- Her oyuncuya bir Coins ve bir Wins istatistiği verir. Oyuncunun içindeki leaderstats adlı
-- bir klasör, Roblox'un bu değerleri sağ üstteki oyuncu listesinde göstermesini sağlar.

local Players = game:GetService("Players")

local function onPlayerAdded(player: Player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats" -- tam olarak böyle yazılmalı

	local coins = Instance.new("IntValue")
	coins.Name = "Coins"
	coins.Value = 0
	coins.Parent = leaderstats

	local wins = Instance.new("IntValue")
	wins.Name = "Wins"
	wins.Value = 0
	wins.Parent = leaderstats

	leaderstats.Parent = player
end

Players.PlayerAdded:Connect(onPlayerAdded)
for _, player in Players:GetPlayers() do -- bu satır çalışmadan önce girenler
	onPlayerAdded(player)
end

Klasörün adı tamamen küçük harfle leaderstats olmalı. Roblox içindeki her değeri okur ve değerin adını sütun başlığı yaparak oyuncu listesinde gösterir.

Her oyuncu içinde iki IntValue nesnesi olan leaderstats adlı bir Folder alır. Bir IntValue bir tam sayı tutar, bir coin sayacının ihtiyacı olan da bu kadar. Sondaki döngü, PlayerAdded satırı çalışmadan önce girmiş her oyuncuyu hazırlar, böylece kimse dışarıda kalmaz.

Leaderboard rehberi (İngilizce) aynı klasörü daha ayrıntılı kuruyor, sonra kaydetme ve global bir ilk 10 ekliyor.

Adım 4: lavı, coin'leri ve bitişi çalıştır

ServerScriptService'e ikinci bir Script ekle, adını CourseService yap ve bunu yapıştır. Coins ve Wins'in değiştiği tek yer burası. Üstteki iki ayar, değiştirmen için düşünülmüş sayılar.

Script konum: ServerScriptService adı: CourseService
-- ServerScriptService içinde CourseService adlı Script.
-- Parkuru sunucuda yönetir, böylece herkes aynı şeyi görür ve kimse kendine
-- coin veremez: lav parçaları oyuncuları sıfırlar, coin'ler 1 Coin öder ve geri gelir,
-- bitiş de bu turda yeterince coin toplamış oyunculara bir Win verir.

local Players = game:GetService("Players")

local COINS_TO_FINISH = 3 -- bitiş sayılmadan önce bir oyuncunun bir turda toplaması gereken coin
local COIN_RESPAWN_SECONDS = 10

local course = workspace:WaitForChild("Course")
local lavaFolder = course:WaitForChild("Lava")
local coinFolder = course:WaitForChild("Coins")
local finish = course:WaitForChild("Finish") :: BasePart
local spawnLocation = workspace:FindFirstChildOfClass("SpawnLocation")
if not spawnLocation then
	warn("CourseService: no SpawnLocation directly in Workspace, so the Finish cannot send players back")
end

-- Bu turda toplanan coin'ler: oyuncunun en son doğduğundan ya da bitişe ulaştığından beri
local runCoins: { [Player]: number } = {}

-- Karakteri bir parçaya dokunan oyuncuyu bulur, başka her şey için nil
local function playerFromHit(otherPart: BasePart): Player?
	local character = otherPart:FindFirstAncestorOfClass("Model")
	return if character then Players:GetPlayerFromCharacter(character) else nil
end

local function addStat(player: Player, statName: string, amount: number)
	local leaderstats = player:FindFirstChild("leaderstats")
	local stat = leaderstats and leaderstats:FindFirstChild(statName)
	if stat and stat:IsA("IntValue") then
		stat.Value += amount
	end
end

-- Lav: Lava klasöründeki her parça ona dokunan oyuncuyu sıfırlar
for _, lava in lavaFolder:GetChildren() do
	if lava:IsA("BasePart") then
		lava.Touched:Connect(function(otherPart: BasePart)
			local character = otherPart:FindFirstAncestorOfClass("Model")
			local humanoid = character and character:FindFirstChildOfClass("Humanoid")
			if humanoid and humanoid.Health > 0 then
				humanoid.Health = 0
			end
		end)
	end
end

-- Coin'ler: bir coin'e ilk dokunan oyuncu onu alır, sonra coin yeniden belirene kadar gizlenir
for _, coin in coinFolder:GetChildren() do
	if coin:IsA("BasePart") then
		local shownTransparency = coin.Transparency
		local taken = false
		coin.Touched:Connect(function(otherPart: BasePart)
			local player = playerFromHit(otherPart)
			if not player or taken then
				return -- oyuncu değil ya da bu coin zaten alındı
			end
			taken = true
			coin.Transparency = 1
			addStat(player, "Coins", 1)
			runCoins[player] = (runCoins[player] or 0) + 1
			task.delay(COIN_RESPAWN_SECONDS, function()
				coin.Transparency = shownTransparency
				taken = false
			end)
		end)
	end
end

-- Bitiş: parkuru tamamlayan oyunculara bir Win ve başa dönüş
finish.Touched:Connect(function(otherPart: BasePart)
	local player = playerFromHit(otherPart)
	if not player or (runCoins[player] or 0) < COINS_TO_FINISH then
		return
	end
	runCoins[player] = 0 -- önce bu, böylece bitişe yeniden dokunmak iki kez sayılmaz
	addStat(player, "Wins", 1)
	local character = player.Character
	if character and spawnLocation then
		character:PivotTo(spawnLocation.CFrame + Vector3.new(0, 4, 0))
		player:SetAttribute("MovementCheckSkip", true) -- bir hız kontrol scripti eklersen onun için
	end
end)

-- Yeni bir karakter (sıfırlanma ya da düşüşten sonra) yeni bir tur başlatır
local function onPlayerAdded(player: Player)
	runCoins[player] = 0
	player.CharacterAdded:Connect(function()
		runCoins[player] = 0
	end)
end

Players.PlayerAdded:Connect(onPlayerAdded)
for _, player in Players:GetPlayers() do -- bu script Course'u beklerken girenler
	onPlayerAdded(player)
end

Players.PlayerRemoving:Connect(function(player: Player)
	runCoins[player] = nil
end)

CourseService, Lava ve Coins klasörlerini oyun başladığında bir kez tarar. Play'e basmadan önce her lav parçasını ve her coin'i Studio'da kur: oyun sırasında başka bir scriptin eklediği bir parça bağlanmaz.

CourseService'in her parçası ne yapar
Scriptin parçasıKodNe yapar
AyarlarCOINS_TO_FINISH, COIN_RESPAWN_SECONDSBitiş sayılmadan önce bir oyuncunun bir turda kaç coin toplaması gerektiği (3) ve toplanan bir coin'in ne kadar gizli kalacağı (10 saniye).
Parkuru bulmakWaitForChild, FindFirstChildOfClass("SpawnLocation")Course, Lava, Coins ve Finish'i adlarıyla bekler ve bitişin oyuncuları döndürdüğü, doğrudan Workspace'teki SpawnLocation'ı bulur. Yoksa Output'a bir uyarı yazdırır.
Kim dokunduplayerFromHitDokunan parça bir ayak, bir el ya da bir şapkanın kulpu olabilir. FindFirstAncestorOfClass("Model") karakterin modeline kadar çıkar, GetPlayerFromCharacter da onu bir oyuncuya çevirir; bir oyuncunun karakteri olmayan her şey için nil.
Lavhumanoid.Health = 0Lava klasöründeki bir parçaya dokunan her karakteri sıfırlar.
Coin'lertaken, Transparency = 1, task.delayBir coin'e ilk dokunan oyuncu 1 Coin alır. Coin görünmez olur ve COIN_RESPAWN_SECONDS sonra geri gelene kadar dokunuşları yok sayar. Onu sunucu gizlediği için tüm oyuncular için kaybolur.
Bu turrunCoinsHer oyuncunun en son doğduğundan ya da bitişe ulaştığından beri topladığı coin'leri sayar. Oyuncu listesindeki Coins sayısı artmaya devam eder; bu sayaç her yeniden doğuşta ve her Win'de 0'a döner.
BitişrunCoins[player] < COINS_TO_FINISHBu turda 3'ten az coin'i olan bir oyuncuyu yok sayar. Değilse, bitişin üzerinde durmak iki kez ödemesin diye önce sayacını 0 yapar, 1 Win ekler ve karakteri SpawnLocation'ın 4 stud üzerine taşır.
Yeni turCharacterAdded, GetPlayers()Her yeni karakter yeni bir tur başlatır. Döngü, script hâlâ Course'u beklerken giren oyuncuları kapsar.
TemizlikPlayerRemovingAyrılan bir oyuncuyu unutur.

Lav, Roblox'un kendi lav eğitiminin yaptığı gibi Health'i 0 yapar. Yeni bir karakterin, varsayılan olarak bir SpawnLocation'da belirdikten sonra 10 saniye boyunca bir ForceField'ı vardır ve biri onu korurken Humanoid:TakeDamage hiçbir şey yapmaz. Health'i doğrudan ayarlamak ForceField'ları yok sayar, yani lav yeniden doğduktan hemen sonra bile çalışır.

Bitiş, karakteri Roblox referansının bir modeli scriptten taşımanın ana yolu dediği character:PivotTo(...) ile taşır. Karakterin kök parçasının konumunu değiştirmek ise o parçayı vücudun geri kalanından ayırır.

MovementCheckSkip satırı tek başına hiçbir şey yapmaz. Sprint rehberindeki (İngilizce) sunucu hız kontrolü için orada: o kontrolü sonradan eklersen bitişin ışınlaması aşırı hız olarak işaretlenmez.

Kurallar neden sunucuda çalışıyor

Bu parkurun tüm kuralları bilerek bir sunucu Script'i olan CourseService'te. Coin'i bir LocalScript ekleseydi yeni Coins değeri sadece o oyuncunun cihazında var olurdu: sunucu ve diğer oyuncular onu hiç görmezdi. Ayrıca bir oyuncunun cihazındaki her şey değiştirilebilir. Roblox'un güvenlik rehberi bir exploiter'ın kendi yerel durumu ve ağ trafiği üzerinde tam kontrolü olduğunu söylüyor, bu yüzden önemli olan tüm kararları sunucu vermeli.

Bir hilecinin bu parkurda deneyebilecekleri
Hilecinin denediğiSonuçNeden
Coins ya da Wins'ini kendi cihazında değiştirmekSadece o görürGerçek değerler sunucuda yaşar ve onları sadece CourseService değiştirir.
Doğrudan bitişe ışınlanmakWin yokBitiş bu turda toplanmış 3 coin ister. Roblox'un savunmacı tasarım sayfası tam da bu obby örneğini, ödül toplamak için sona ışınlanan bir exploiter'ı kullanıyor ve ödül vermeden önce sunucunun kontrol ettiği checkpoint'ler öneriyor.
Coin'lere ya da bitişe uzaktan dokunmakMümkünRoblox'un güvenlik rehberi exploiter'ların Touched event'lerini her mesafede ya da sıklıkta tetikleyebildiğini söylüyor. Her coin yine de bir kez, ilk dokunana öder, sonra herkes için 10 saniye gizlenir.
Her coin'e uçmak ya da ışınlanmak, sonra bitişeMümkünHer oyuncunun cihazı kendi karakterini kontrol eder ve Roblox ışınlanmayı ve uçmayı bir istemcinin onunla yapabilecekleri arasında sayıyor.
Lavı yok saymakMümkünKarakterinin dokunuşlarının tetiklenip tetiklenmeyeceğine aynı cihaz karar verir. İlk oyun için kabul edilebilir.

Yani coin kuralı en basit hileyi, doğrudan sona atlamayı durduruyor, fazlasını değil. İlk oyun için bu normal. Sonraki katmanlar şunlar: ödemeden önce bir karakterin gerçekten bir coin'e ya da bitişe yakın olduğunun sunucuda kontrolü (Roblox'un güvenlik rehberinin bir oyuncunun bir mağazaya uzaklığını kontrol ettiği gibi); obby checkpoint rehberindeki gibi sırayla ulaşılması gereken checkpoint'ler; ve sprint rehberindeki gibi bir hareket kontrolü. Neyin replike edilip neyin edilmediği istemci ile sunucu arasındaki ayrımı daha ayrıntılı anlatıyor. Bu rehberler İngilizce.

Adım 5: test et

  1. Test modu açılır menüsünde Test'in seçili olduğundan emin ol ve Play'e (F5) bas. Adın oyuncu listesinde Coins 0 ve Wins 0 ile görünür.
  2. Bir coin'e doğru yürü. Coins 1 olur ve coin kaybolur. 10 saniye bekle, geri gelir. Yine dokun: Coins 2'ye çıkar.
  3. Lava dokun. Karakterin düşer ve Roblox'un varsayılan yeniden doğma süresi olan 5 saniye sonra SpawnLocation'da yeniden belirir. Oyuncu listesindeki Coins değişmez, ama bu turdaki sayacın 0'a döner.
  4. Bu turda 3'ten az coin'le bitişe dokun: hiçbir şey olmaz. 3 coin topla ve dokun: Wins 1 olur ve SpawnLocation'a dönersin.
  5. Stop'a (Shift+F5) bas. Açılır menüde Server & Clients'ı seç, 2 istemci ayarla ve Play'e (ya da F7) bas. Bir istemci penceresinde bir coin topla ve diğerine bak: coin orada da kayboldu, çünkü sunucu onu herkes için gizledi.

Output penceresini sürekli açık tut. Bu iki script çalışırken hiçbir şey yazdırmaz, yani PlayerStats ya da CourseService'ten gelen her uyarı ya da kırmızı hata gerçek bir sorundur. Yaygın hatalara bak.

Adım 6: oyununu yayınla

  1. File menüsünü aç ve Publish'i seç. Game details penceresi açılır.
  2. Bir Name yaz, bir Genre seç (Subgenre isteğe bağlı) ve oyuncuların ne yaptığına dair kısa bir Description yaz. Burada bir simge ve bir küçük resim de yükleyebilirsin. Önce boyutlarını ücretsiz küçük resim ve simge boyutu kontrolcüsüyle kontrol et.
  3. Save'e tıkla. Roblox oyunu buluta yayınlar ve hesabına bağlar, böylece onu herhangi bir bilgisayardan açabilirsin.
  4. Oyun artık yayınlandı ama gizli. Sadece sen, Edit erişimi olan kişiler ve doğru rollere sahip grup üyeleri onu oynayabilir.
  5. Yayına almadan önce geri bildirim mi istiyorsun? File > Invite early testers'ı seç ve benzer yaşta en fazla 10 arkadaş seç. Henüz bir yaş doğrulaması tamamlamadıysan Roblox önce onu yapmanı ister. Test edenler oyunun bir önizleme olduğunu söyleyen bir filigran görür.

Bundan sonra File menüsünden Roblox'a kaydetmek oyununun bir sürümünü bulutta tutar. Oyuncuların aldığı sürümü değiştiren şey File > Publish'tir. Arada bir yayınlanmış kopyayı Studio dışında Roblox'tan oyna ve test ettiğinle aynı olduğunu kontrol et.

Adım 7: yayına al (oyununu herkese aç)

Oyunu yayına almak, onu herkese açık hale getirme yöntemindir; böylece sen ve ortak çalıştıkların dışındaki kişiler de oynayabilir. Başlamadan önce gereksinimlere bak: hesabın iyi durumda ve en az 2 günlük olmalı ve yüz ile yaş tahmini ya da resmi bir kimlik belgesiyle yapılmış bir yaş doğrulaması gerekir.

  1. File menüsünü aç ve yine Publish'i seç. Publish penceresi açılır.
  2. Continue'ya tıkla. (Yanındaki Invite butonu bunun yerine test edenleri davet eder.)
  3. Roblox'un Maturity & Compliance Questionnaire'indeki ilk soruyu cevapla: oyunun yaşa göre kısıtlı içerik içeriyor mu? Oyununun gerçekten ne içerdiğine göre cevap ver. Yes dersen anketin tamamını doldurursun.
  4. Publish'e tıkla.
Yayına aldıktan sonra kimler oynayabilir
YaptığınEtiketKimler oynayabilir
No cevabı vermekContent May VaryYaşı doğrulanmış 16 yaş ve üstü kullanıcılar. Daha geniş kitleye ulaşmak için anketin tamamını sonradan Creator Hub'da doldurabilirsin.
Yes cevabı verip anketi tamamlamakCevaplarına göreOyunun içeriğine göre yaşı doğrulanmış 16 yaş ve üstü ya da yaşı doğrulanmış 18 yaş ve üstü kullanıcılar.
Tüm yaşlar için gereksinimleri karşılamakAnketin tamamından Minimal, Mild ya da Moderate (9+)Tüm yaşlar. Önceki adımlara ek olarak hesabını doğrularsın (18 yaşından küçüksen yüz ile yaş tahmini, 18 ve üstüysen resmi belge), 2 adımlı doğrulamayı açarsın, art arda 2 ay Roblox Plus ya da Premium aboneliği sürdürürsün ya da tek seferlik iade edilebilir bir ücret ödersin ve oyun Roblox'un tüm yaşlar için yayın değerlendirmesini geçer.

Sadece arkadaşlarının girmesine izin vermek için Creator Dashboard'u aç, oyunu seç, Publish settings > Manage Audience'a git, Manage access'e tıkla, Public sekmesinde Friends'i aç ve Save Changes'e tıkla. Friends açıkken sadece arkadaşların ve Playtest sekmesindeki kişiler oynayabilir.

Aynı gereksinimler her yayın işlemi için geçerli: ilk yayın, zaten yayındaki bir oyunun yeni bir sürümünü yayına almak, Publish As ile başka bir oyuna yayınlamak ve kimlerin oynayabileceğini değiştirmek.

Arkadaşlarınla yap

Studio'nun ortak çalışma araçları, sen ve bir arkadaşının aynı oyunu aynı anda düzenlemesini sağlar. Sana ait bir oyun için:

  1. Oyun Studio'da açıkken, sol tarafında Play butonu olan üst çubuğun (mezzanine) sağ tarafındaki Collaborate'e tıkla.
  2. Arkadaşını ara, seç, izin açılır menüsünde Edit'i seç ve Save'e tıkla. Sana ait bir oyunda sadece Roblox arkadaşların Edit erişimi alabilir.
  3. Arkadaşın oyunu Creator Dashboard'dan açar ve ikiniz aynı oyunda aynı anda çalışırsınız.

Başka geliştiricilerle ortak çalışmak için önce belgeyle ya da yüz ile yaş tahminiyle bir yaş doğrulaması tamamlarsın. Sonrasında Studio varsayılan olarak sadece uyumlu yaş gruplarındaki geliştiricilerle ortak çalışmana izin verir. Team Create'i tek başına yaş doğrulaması olmadan kullanabilirsin. Bir ortak çalışma oturumu sırasında Studio oyunu dört dakikada bir buluta kaydeder.

Onu gerçek bir oyuna dönüştür

Parkur tam bir döngü: oyna, topla, bitişe ulaş, kazan. Bu rehberlerin her biri (ilki hariç İngilizce) üstüne bir sistem ekliyor.

  • Scriptlerde yeni misin? Yeni başlayanlar için Roblox script rehberi değişkenleri, fonksiyonları, event'leri ve döngüleri, yani CourseService'in yapıldığı parçaları anlatıyor.
  • Coins ve Wins'i oturumlar arasında kaydet: leaderboard rehberinin 3. adımıyla. Kaydetme scripti PlayerStats gibi bir Coins ve Wins scriptinin yerini alıyor, o yüzden onu eklerken PlayerStats'ı sil. DataStore eğitimi kaydetmeyi derinlemesine anlatıyor.
  • Sıralı checkpoint'ler, bir Stage istatistiği ve son checkpoint'te yeniden doğmayla: obby checkpoint rehberi. Onun scripti kendi leaderstats klasörünü oluşturuyor, o yüzden PlayerStats'taki Coins ve Wins satırlarını o klasöre kopyala ve PlayerStats'ı sil. Her biri leaderstats oluşturan iki script her oyuncuya iki klasör verir ve Coins ile Wins değişmeyi bırakabilir.
  • Coins'i harca: bir GUI'li mağazada. leaderstats'taki Coins değerini kullanıyor, o yüzden onun Leaderstats scriptini atla: PlayerStats zaten Coins oluşturuyor.
  • Robux karşılığı bir avantaj sat: bir game pass ile. Fiyat koymadan önce ücretsiz Robux vergi hesaplayıcı Roblox'un payından sonra her satışın sana ne ödediğini, DevEx hesaplayıcı da o Robux'un ABD doları olarak değerini gösteriyor.
  • Bir başlık ekranı, Play butonuyla: ana menü rehberi.
  • Turlar, ara, rastgele haritalar ve sayaçla: aynı Wins değerine ekleyen tur sistemi rehberi. Onun leaderstats scriptini atla, çünkü PlayerStats zaten Wins oluşturuyor.
  • Bir giriş ara sahnesi, kamera çekimleri, altyazılar ve Skip butonuyla: ara sahne rehberi.
  • Gizli bir alana açılan bir kapı, E ile açılan, isteğe bağlı anahtarlı kilitle: kapı rehberi.
  • Işınlanma platformları, haritanın alanları arasında, ya da bir ışınlanma menüsü: ışınlayıcı rehberi.
  • Shift ile sprint, klavye, telefon ve kumandada, sunucu hareket kontrolüyle: sprint rehberi. Onun hareket kontrolü, bitişin koyduğu MovementCheckSkip özniteliğini okuyor.
  • Bir dövüş ya da farklı bir döngü: oyunculara bir kılıç ya da bir raycast'li silah ver, ya da simülatör oyunu rehberiyle oyuncuların tıklayarak coin kazandığı, yükseltme aldığı ve rebirth yaptığı yeni bir oyun başlat.

Yaygın hatalar ve çözümleri

Play'e basmadan önce Output penceresini aç (Window menüsü ya da Script sekmesi). Bu parkurdaki sorunların çoğu orada bir uyarı ya da hata yazdırır, ya da eşleşmeyen bir addan gelir.

Infinite yield possible on 'Workspace:WaitForChild("Course")'

CourseService doğrudan Workspace'te Course adlı bir klasörü 5 saniye bekledi ve bulamadı. Yazımı ve büyük C'yi kontrol et. Aynı uyarı Lava, Coins ya da Finish ile çıkıyorsa o nesne Course'ta eksik ya da adı farklı demektir. O belirene kadar o satırdan sonraki hiçbir şey çalışmaz, yani lav, coin'ler ve bitiş hiçbir şey yapmaz.

Coins ve Wins oyuncu listesinde görünmüyor

PlayerStats'taki klasör adının tamamen küçük harfle leaderstats olduğunu ve PlayerStats'ın bir LocalScript değil, doğrudan ServerScriptService içinde bir Script olduğunu kontrol et. İkisi de doğruysa Output'ta PlayerStats'tan gelen kırmızı bir hata ara.

Play'e basar basmaz CourseService'ten kırmızı bir hata

Her lav parçasında, her coin'de ve bitişte Properties'teki CanTouch'ı kontrol et. Play'e bastığında herhangi birinde kapalıysa CourseService o parçaya Touched'ı bağlarken Roblox bir hata fırlatır ve script orada durur: sonrasındaki hiçbir şey çalışmaz, yani sonraki coin'ler, bitiş ya da tur sıfırlamaları hiç bağlanmamış olabilir. Hepsinde CanTouch'ı işaretle ve yine Play'e bas.

Bir coin'e dokunmak hiçbir şey yapmıyor

Coin, oradaki başka bir klasörün ya da modelin içinde değil, doğrudan Coins klasörünün içinde bir parça olmalı, çünkü CourseService sadece klasörün doğrudan child'larına bakar. Ayrıca Play'e basmadan önce orada olmalı ve CanTouch işaretli olmalı (önceki maddeye bak).

Bitişe dokunuyorum ve hiçbir şey olmuyor

Bu turda, yani en son doğduğundan ya da bitişe ulaştığından beri toplanmış 3 coin gerekiyor. Lava dokunmak bu sayacı sıfırlar, bir Win de öyle, oyuncu listesindeki Coins sayısı aynı kalsa bile. Ayrıca parçanın adının tam olarak Finish olduğunu ve doğrudan Course'un içinde olduğunu kontrol et.

Bitiş Win veriyor ama beni başa döndürmüyor

CourseService SpawnLocation'ı doğrudan Workspace'te arar ve orada bulamazsa Output'a bir uyarı yazdırır. SpawnLocation'ı Course'a ya da klasörlerinden birine sürüklediysen Explorer'da onu yine Workspace'e sürükle ve tekrar Play'e bas.

Lav beni sıfırlamıyor

Lav parçası Play'e basmadan önce doğrudan Lava klasörünün içinde olmalı ve CanTouch işaretli olmalı. Course'un başka bir yerine koyduğun bir lav parçası sadece kırmızı bir platformdur.

Play'e basınca platformlarım ya da coin'lerim düşüyor

Sabitlenmemişler. Onları seç, Properties'te Anchored'ı işaretle ve yine Play'e bas.

RoCode ile

Her parçayı elle kurmak yerine oyunu anlatmayı tercih ediyorsan RoCode onu açık olan oyununda kurabilir. RoCode, Roblox Studio için bağımsız bir yapay zeka ajanıdır, Roblox yapmıyor: özelliği web sohbetinde anlatırsın, Studio plugin'i de parçaları ve scriptleri Explorer'ında oluşturur, yani bir sohbet penceresinden kod kopyalamazsın.

Sen yazarsın

Bir coin parkuru yap: Lava ve Coins klasörleri ve bir Finish parçası olan bir Course klasörü, Coins ve Wins içeren leaderstats, oyuncuları sıfırlayan lav, 1 değerinde olan ve 10 saniye sonra geri gelen coin'ler, ve sadece bu turda 3 coin'den sonra Win veren bir bitiş.

RoCode yapar
  • Önce oyununda var olan leaderstats ya da DataStore kodunu arayabilir, böylece ikinci bir liderlik tablosu eklemek yerine elindekini genişletir
  • Klasörü ve parçaları Workspace'te, Script'leri de ServerScriptService'te oluşturur
  • Yazdığı her scriptin derlendiğini Studio içinde Check Script ile kontrol eder. Bu bir derleme kontrolüdür, tip kontrolü ya da oyun testi değil
  • Her değişiklik grubundan önce ve sonra bir geri alma noktası koyar, yani Ctrl+Z grup grup geri alır

Studio'da yap

Plugin 3.9 ya da üstüyle RoCode kısa bir test yapıp hataları okuyabilir, plugin 3.9.11 ya da üstüyle de oyunun çalıştığını kontrol etmek için bir test karakterini yönetebilir; ama sadece test etmeye karar verdiği şeyi kontrol eder, yani oynayan sensin. RoCode ile bütün bir oyun kurmak böyle işler, her prompt'ta bir sistem. RoCode Studio'ya nasıl bağlanır.

Sık sorulan sorular

Ücretsiz Roblox oyunu yapabilir miyim?

Evet. Studio ücretsiz ve kurmak ile yayınlamak sadece bir Roblox hesabı ister. Oyunculara yayına almak için ayrıca en az 2 günlük, iyi durumda bir hesap ve bir yaş doğrulaması gerekir. Bazı ekstralar Robux tutar, örneğin tüm yaşlara ulaşmanın yollarından biri olan iade edilebilir ücret.

Telefonda, iPad'de ya da Chromebook'ta Roblox oyunu yapabilir miyim?

Roblox'un kurulum sayfası Studio'yu sadece Windows ve Mac için listeliyor, yani bir oyun kurmak için bu bilgisayarlardan biri gerekiyor.

Roblox oyunumu nasıl herkese açarım?

Yayına al. Studio'da File > Publish'i seç, Continue'ya tıkla, yaşa göre kısıtlı içerik sorusunu cevapla ve Publish'e tıkla. En az 2 günlük, iyi durumda bir hesap ve bir yaş doğrulaması gerekir. No dersen Roblox oyunu yaşı doğrulanmış 16 yaş ve üstü kullanıcılara açar. Tüm yaşlara ulaşmanın ek gereksinimleri 7. adımda.

Arkadaşlarım neden oyunumu oynayamıyor?

Yeni oyunlar gizlidir: sadece sen, Edit erişimi olan kişiler ve doğru rollere sahip grup üyeleri girebilir. Yaş doğrulaması ve yaşa göre kısıtlı içerik sorusunu cevaplamayı gerektiren File > Publish ile yayına al, ya da File > Invite early testers ile benzer yaşta en fazla 10 arkadaşını test eden olarak davet et.

Oyunum neden sadece 16+ için olduğunu söylüyor?

Genelde yayına alırken yaşa göre kısıtlı içerik sorusuna No dediğin için. Roblox o zaman ona Content May Vary etiketini verir ve onu yaşı doğrulanmış 16 yaş ve üstü kullanıcılara açar. Anketin tamamıyla verilen bir Yes cevabı da oyunun içeriğine göre 16+ ya da 18+ verir. Tüm yaşlara ulaşmak hesap doğrulaması, 2 adımlı doğrulama, art arda 2 ay Roblox Plus ya da Premium aboneliği veya tek seferlik iade edilebilir bir ücret, bir oyun değerlendirmesi ve anketin tamamını gerektirir.

Arkadaşlarımla nasıl oyun yaparım?

Studio'da Collaborate'e tıkla ve bir arkadaşına Edit erişimi ver. Başka geliştiricilerle ortak çalışmak için önce bir yaş doğrulaması tamamlarsın, sonrasında Studio varsayılan olarak sadece uyumlu yaş gruplarındaki geliştiricilerle ortak çalışmana izin verir. Sonra ikiniz aynı oyunda aynı anda çalışabilirsiniz.

Kod yazmayı bilmem gerekiyor mu?

Bu rehber için hayır: iki script yapıştırıyorsun ve tablolar her parçanın ne yaptığını anlatıyor. Onları güvenle değiştirmek için yeni başlayanlar için Roblox script rehberiyle başla.

Kaynaklar ve ek okumalar

Kod nasıl kontrol edildi: bu sayfadaki her script, Roblox API tanımlarıyla Luau'nun katı tür denetleyicisinden geçiyor (luau-lsp, 26 Ekim 2026). Tür denetimi yanlış yazılmış API'leri ve hatalı türleri yakalar, oyun mantığını değil. Bu yüzden yayınlamadan önce Studio'da test et.

RoCode'u kendi oyununda dene.

Her gün ücretsiz kredi, kart gerekmez. Plugin'i kur, özelliği anlat ve Studio'da ne oluştuğunu kontrol et.