Unity içinde renk tabanlı lane ve grid puzzle seviyeleri hazırlamak için geliştirilmiş görsel bir level authoring aracıdır. Hücre düzenini editör üzerinden oluşturur, oyun kurallarına göre doğrular ve sonucu doğrudan LevelData ScriptableObject verisine kaydeder.
- Data-driven
GridXveGridYdesteği - Odin
TableMatrixile görsel grid düzenleme - Sol tıkla renk değiştirme, sağ tıkla hücre temizleme
- Board dışında duran aktif/launcher araç rengini belirleme
- Kurallara uygun rastgele layout üretme
- Renk adetlerini ve tamamlanabilir lane bütçesini canlı gösterme
- Board + aktif araç kapsamında tek Rainbow doğrulaması
- Boş hücre, geçersiz renk bütçesi ve layout boyutu kontrolleri
- Başlangıçta completed olan lane'ler için uyarı
- Layout'u düz bir serialized array olarak
LevelDataasset'ine kaydetme - Undo ve
AssetDatabase.SaveAssetsdesteği
Bu repodaki örnek, tamamen dolu dikey lane'lerden oluşan bir renk sıralama oyunu için hazırlanmıştır.
GridX: Lane sayısıGridY: Her lane içindeki araç/slot sayısı- Board her zaman tamamen doludur.
- Aktif launcher aracı board dışında tutulur.
- Board ile aktif araç birlikte değerlendirildiğinde toplam Rainbow sayısı tam olarak birdir.
- Her normal rengin toplam adedi
GridYdeğerinin katı olmalıdır. - Üst satır lane girişini, alt satır
y = 0çıkışını temsil eder. - Otomatik doldurma, mümkün olduğunda başlangıçta tamamlanmış lane üretmez.
Örneğin 5x6 grid için board'da 30 araç bulunur. Board dışındaki aktif araçla birlikte toplam mantıksal araç sayısı 31 olur.
Araç kendi validasyon kurallarına uyarlanarak şu oyun türlerinde kullanılabilir:
- Car Sort ve Parking Sort oyunları
- Ball Sort ve Stack Sort oyunları
- Renk eşleştirme puzzle'ları
- Lane tabanlı mobil casual oyunlar
- Grid tabanlı match ve sıralama oyunları
- Launcher veya queue üzerinden board'a parça gönderen puzzle'lar
- Sabit boyutlu board kullanan level tabanlı prototipler
Fizik tabanlı veya tamamen prosedürel dünyalar için doğrudan çözüm değildir; ancak grid authoring ve ScriptableObject kayıt katmanı yeniden kullanılabilir.
- Unity
2022.3 LTSveya üzeri - Odin Inspector
Odin Inspector lisanslı bir üründür ve bu repoya dahil edilmemiştir. Aracı kullanacak Unity projesinde ayrıca kurulu olmalıdır.
Unity Package Manager içinde Add package from git URL seçeneğini açın ve şu adresi kullanın:
https://github.com/eFurkanSngl/Unity-Level-Generator.git
Runtime ve Editor klasörlerini Unity projenizin Assets klasörü altına kopyalayın.
- Project penceresinde
Create > Level Generator > Level Dataile bir asset oluşturun. - Unity menüsünden
Tools > Unity Level Generatorpenceresini açın. - Hedef
LevelDataasset'ini seçin. - Grid boyutunu belirleyin veya mevcut veriyi yükleyin.
- Hücreleri elle düzenleyin ya da Otomatik Doldur butonunu kullanın.
- Canlı renk bütçesini kontrol edin.
- Doğrula butonuyla kuralları test edin.
- LevelData'ya Kaydet ile sonucu asset'e yazın.
Unity iki boyutlu dizileri standart Inspector serialization ile saklamadığı için layout düz bir array içinde tutulur:
int index = y * gridX + x;Runtime erişimi:
CarColorEnum color = levelData.GetColor(x, y);Bu yaklaşım editor aracını runtime board üretiminden ayırır. Araç yalnızca veri hazırlar; gameplay sistemi kaydedilen LevelData üzerinden kendi mantıksal board'unu oluşturur.
- Yeni renkler
CarColorEnumiçine eklenebilir. - Hücre renkleri
ColorFormetodundan değiştirilebilir. - Random üretim kuralları
AutoFilliçinde düzenlenebilir. - Projeye özel hatalar
Validatemetoduna eklenebilir. - Farklı veri tipleri için
LevelDatagenişletilebilir veya kendi ScriptableObject yapınızla değiştirilebilir.
Editor/
LevelGeneratorWindow.cs
Runtime/
CarColorEnum.cs
LevelData.cs
Media/
level-generator-demo.gif
level-generator-demo.mp4
package.json
README.md
LICENSE
Kaynak kod MIT lisansı altında sunulur. Odin Inspector bu lisansın kapsamında değildir ve repoda dağıtılmaz.
