Profesyonel geliştirme stüdyoları için, üçüncü taraf araçlarını kurmak ve otomasyona yatırım yapmak geliştiricilerin üretkenliğini dramatik bir şekilde artırabilir.Roblox'un bulut öncelikli yaklaşımı birçok avantaja sahiptir, ancak geliştirme iş akışının belirli bölümlerini bulutun dışına taşımak, daha büyük takımların değişiklikleri takip etmesine, kodu incelemesine ve zaten tanıdıkları dilleri ve araçları kullanarak değişiklikleri takip etmesine yardımcı olabilir.
Senkronizasyon sorunu
Çekirdeğinde, Roblox ile dış araçlar kullanmak bir sincronizasyon sorunudur:
- Roblox kodlarınızın diskte .luau dosyaları olarak var olmasını istiyorsunuz, böylece kendi araçlarınızı kullanarak üzerinde çalışabilirsiniz.
- Onlarla çalışmayı bitirdikten sonra dosyalarını Roblox projenize geri aktarmalısınız.
- Bu arada başka birisi aynı dosyaları değiştirdiyse, herhangi bir çatışmayı ele almalısınız.
Tüm çözüm sorunsuz ve otomatik hissetmesi için, a) dosyalara yapılan değişiklikleri dinlemelisiniz ve b) bu değişiklikleri Studio'ya geri dahil etmelisiniz.Diğer bir deyişle, bir sunucuya ve bir Studio eklentisine ihtiyacınız var, Rojo'nun bu sorunu nasıl çözdüğü.
Roblox'un bulut öncelikli yaklaşımı yerine, Rojo "dosya sistemi öncelikli" bir yaklaşımına izin verir.Projenizdeki tüm senaryo dosyalarını Luau dosyalarına çıkarır.Sonra bir sunucu çalıştırır.Rojo eklentisi, bu dosyaları Studio ile senkronize etmek için sunucuya bağlanır.
Foreman ile Rojo'yu yükle
Bir Rojo ikilisini manuel olarak indirip çalıştırabilirsiniz, ancak bu yaklaşım, takımınızdaki farklı Rojo sürümlerini kullanan farklı geliştiricilerin riskini taşır.Daha iyi bir çözüm, yapılandırma dosyasını kullanan bir araç yöneticisi kullanmaktır, örneğin Foreman, ki bu da kurulum ve yükseltme sürecini makineler arasında tutarlı hale getirmek için bir liste olan yapılandırma dosyasını kullanır.
Çünkü projenizdeki paketler yerine temel geliştirme çevrenizi yönettiğinden, Foreman, nvm yerine npm daha yakındır, ancak karşılaştırma mükemmel değildir.Basit bir foreman.toml dosyası şöyle görünür:
[tools]
rojo = { github = "rojo-rbx/rojo", version = "7.4.1" }
wally = { github = "UpliftGames/wally", version = "0.3.2" }
Sonra bu araçları foreman install ile yüklersiniz.Küresel bir foreman.toml dosyasına ek olarak, Foreman küresel proje dosyalarını destekler, böylece farklı Rojo, Wally veya diğer araçların farklı versiyonlarını kolayca kullanabilir ve tüm ekibinizi aynı versiyonlarda tutabilirsiniz.
Bir araç yeni bir sürüm yayınladığında, ardından .toml dosyanızdaki sürüm numarasını açıkça artırın, yükseltmeyi Foreman kullanarak gerçekleştirin, yeni sürümü test edin ve herhangi bir sorun nedeniyle düşürün.Komutlar ve kurulum talimatları için, bakın Yönetici.
Rojo'yu çalıştır
Rojo'yu Foreman ile yükledikten sonra, gerçekten yüklediğiniz şey Rojo sunucusudur. Bir sonraki adım, Roblox Studio için Rojo eklentisini yüklemektir:
rojo plugin install
Sonra yeni deneyiminiz için proje yapısını oluşturun ve inşa edin:
rojo init my-new-experiencecd my-new-experiencerojo build -o my-new-experience.rbxl
Alternatif olarak, mevcut bir deneyimi taşıyabilirsiniz. Her iki durumda da, bir projeye sahip olduktan sonra Rojo sunucusunu başlatın:
rojo serve
Roblox Studio'da, az önce oluşturduğunuz .rbxl dosyasını açın, Rojo eklentisini başlatın ve şu anda çalışan sunucuya bağlanın, bu noktada tercihli metin editöründe değişiklik yapmaya başlayın ve bu değişikliklerin Studio'ya otomatik olarak geri aktarılmasını izleyin.
Rojo projelerinin dosyalar için belirli adlandırma gereksinimleri, çok sayıda yapılandırma seçeneği ve bazı sınırlamaları var, hepsi de Rojo belgeleri içinde ele alınıyor.
Paket yöneticileri
Roblox'un güçlü bir dizi API'si var, ancak tutarlı ve tekrarlanabilir bir şekilde topluluk yazılım paketlerini kullanmak istiyorsanız, bir paket yöneticisine ihtiyacınız var.Wally popüler bir seçenektir.Foreman aracılığıyla yükleyebilirsiniz, tıpkı Rojo gibi.
Deneyiminizin Rojo dizininde, wally init yürütün. Ardından istediğiniz paketleri wally.toml ekleyin. Dosya şöyle görünebilir:
[package]
name = "my-home-directory/my-new-experience"
version = "0.1.0"
registry = "https://github.com/UpliftGames/wally-index"
realm = "shared"
[dependencies]
react = "jsdotlua/react@17.1.0"
react-roblox = "jsdotlua/react-roblox@17.1.0"
cryo = "phalanxia/cryo@1.0.3"
Sonra wally install.Wally bir Packages dizini oluşturur ve belirtilen paketleri orada indirir.Son adım, Rojo'ya Packages dizinini eklemek ve böylece içeriğinin Roblox'a geri yansımasını sağlamaktır.Aç default.project.json ve yolu ekleyin.Basitlik için, bu örnek tüm dizini ReplicatedStorage ekleerek tüm paketlerin tüm kullanıcılara mevcut olmasını sağlar, ancak belirli paketleri ServerScriptService veya StarterPlayerScripts eklemeyi tercih edebilirsiniz:
{
"name": "my-new-experience",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$path": "src/shared"
},
"Packages": {
"$path": "Packages"
}
},
...
}
}
Sonra senaryolarınızda paketler talep edebilirsiniz, tıpkı herhangi bir diğer ModuleScript gibi:
local Players = game:GetService("Players")local ReplicatedStorage = game:GetService("ReplicatedStorage")local React = require(ReplicatedStorage.Packages.react)local ReactRoblox = require(ReplicatedStorage.Packages["react-roblox"])local handle = Instance.new("ScreenGui", Players.LocalPlayer.PlayerGui)local root = ReactRoblox.createRoot(handle)local helloFrame = React.createElement("TextLabel", {Text = "Hello World!",Size = UDim2.new(0, 200, 0, 200),Position = UDim2.new(0.5, 0, 0.5, 0),AnchorPoint = Vector2.new(0.5, 0.5),BackgroundColor3 = Color3.fromRGB(248, 217, 109),Font = Enum.Font.LuckiestGuy,TextSize = 24})root:render(helloFrame)
Diğer birçok yazılım projesinde olduğu gibi, hedef, katılımcıların bir deposu klonlayabilmesi, Foreman'ı yükleyebilmesi, birkaç komut çalabilmesi ve ekibin geri kalanıyla aynı geliştirme ortamına sahip olmasıdır.
Sürüm kontrolü
Bilgisayarınızda bir dizi basit metin dosyasına sahip olmak, çeşitli yeteneklerin kilidini açar, ancak bunların başında sürüm kontrolü vardır.Senaryolarınızı ve yapılandırma dosyalarınızı bir Git veya Mercurial deposuna saklayabilirsiniz; uzaktaki depoları barındırın ve kod değişikliklerini inceleyin GitHub, GitLab veya Bitbucket ; ve istediğiniz metin editörünü kullanın.
Visual Studio Kodu en büyük uzantı ekosistemine sahiptir, ancak Sublime Text , Notepad++ ve Vim tüm popüler seçeneklerdir.Hangi editörü seçerseniz seçin, Studio senaryo editörünün yeteneklerine uygun olması için bazı uzantılar gerekecektir.
Ayrıca eklemek de düşünebilirsiniz:
- Sıradan sorunları yakalamak ve kod standartlarını uygulamak için bir linter selene gibi
- Bir kod biçimlendirici gibi StyLua
- Otomatik tamamlanma, tür kontrolü ve daha fazlası için bir dil sunucusu gibi Luau Dil Sunucusu
- Bulutu Aç yazılımlarını (Studio'ya senkronize edilmedi) yayınlanmış bir deneyimi güncelle veya sunucuları yeniden başlat
Varlıklar
Bu sayfadaki araçların çoğu, senaryolara en uygun olanlardır; 3D sanatçılar zaten Blender ve Maya gibi dış araçlar kullanıyor, kaynak dosyalarını sürüm kontrolünde saklıyor ve yaratımlarını Studio'ya aktarıyor.Bir Stüdyo öğesine sahip olduktan sonra, mümkün olduğunda paketleri kullanmanızı öneririz.
Roblox paket uygulaması, bu sayfadaki araçlarla aynı prensiplerin çoğunu takip eder: tüm kopyaları bir varlığın senkronize edilmesi için sorunsuz bir yol sunan merkezi bir depolama ile versiyon geçmişi.İş akışınızı nasıl geliştirebileceklerine dair daha fazla bilgi için Paketler bakın.
Her şeyi geri al
Üçüncü taraf araçları, değişiklikleri Roblox Studio'ya geri senkronize etmek yerine değiştirmek yerine, bu iş akışının hiçbir parçası kilitleme içermez.Herhangi bir zamanda, bir veya tüm bu araçları kullanmayı bırakabilir ve deneyiminizi Studio'da yalnızca düzenlemeye geri dönebilirsiniz.Risk yokluğu, üçüncü taraf araçlarla deneme yapmayı özellikle çekici kılıyor.