Şu anda aklıma gelen tek yarar, yeniden derlemek zorunda kalmadan Lua aracılığıyla bazı kodlama güncellemeleri yapabilmenizdir.
Bunun faydasını bu kadar kolay indirmeyin. Yeniden derleme adımını atana kadar ne kadar üretken olacağınızı asla anlamayacaksınız.
"Akış" o işe gelince oldukça iyi anlaşılmış psikolojik bir kavramdır. Akış, bir faaliyete odaklandığınızda, problemleri neredeyse hiç düşünmeden analiz ederken ve çözerken vb. Hissettiğiniz hissidir.
Derleme zamanları hepsini mahveder. Bir şeyi test etmek arasında 10 saniyelik bir derlemeniz bile varsa akışta kalmak zor.
Oyun geliştirirken, genellikle sahip olduğunuz "sıkı bir döngü". Bir fikrin var, işe yarayıp yaramadığını görmek için bir test kodladınız ve sonra deniyorsunuz. Çalışmazsa, değiştirir ve tekrar deneyin. Akışı korumak için "test etme kodu" süresi çok önemlidir. Mümkün olduğunca küçük olması çok önemlidir.
Lua'nın (veya herhangi bir yerleşik komut dosyası dilinin) yapmanıza izin verdiği şey, yalnızca "derleme" olmadan değil oyunda yaşamak için değişiklikleri test etmektir . Oyununuzu nasıl oluşturduğunuza bağlı olarak, verileri durdurmak ve yeniden yüklemek zorunda kalmadan oyunu yeni komutlarla yeniden başlatan bir komut çalıştırabilirsiniz. Yeniden derlemek zorunda değilsiniz, yeniden çalıştırmak zorunda değilsiniz.
Bunu yapabilme yeteneği, uygun motor desteği verildiğinde, verimliliği önemli ölçüde artırabilir.
Script yazmanın bir diğer büyük yararı da sadece umursamamaktır. C ++ yazarak uzun zaman geçirdiyseniz, minuta harcadığınız zamana şaşıracaksınız. Hafızanın silindiği yer. Bunun serbest kaldığı yer. Her shared_ptr
yerde kullanıyor olsanız bile , yalnızca bu değişken türlerinin adlarını yazmaya çalışmak sizi yavaşlatır.
Dinamik olarak yazılmış bir betik dilinde, bakım yapmanıza gerek yoktur. Kapsam basit. İşlevler birinci sınıf nesnelerdir; manuel olarak işlev oluşturucu gerekmez. Bazı şeyleri yapmak çok kolaydır .
Disiplinli bir programcı değilseniz, şimdi bunun olumsuzlukları var. Lua'da glob kullanmak çok kolaydır (bunu önlemenin yolları vardır). Önemsememek, kod yazarken çok özensiz olabileceğiniz anlamına gelir.
Fakat yine de çok özensiz olmanın avantajları olabilir .
Lua'nın bir diğer yanı, iyi bir veri tanımlama dili yapmasıdır. JSON'a benzer şekilde, bir dizi / tablo oluşturan ve döndüren bir JavaScript dosyası gibi, Lua komut dosyalarını tablo döndüren hale getirebilirsiniz.
Bu yapılandırma dosyaları için kullanışlıdır; Lua'nın tablo formatı .ini formatlarından çok daha iyidir. Format hala oldukça temiz, küçük ve genişletilebilir.
Oh, ve hala bir Lua senaryosu, bu yüzden gerçek mantığı gerçekleştirebiliyor. Bunun dezavantajı ... şey, bu bir Lua senaryosu, bu yüzden gerçek mantığı gerçekleştirebiliyor . Bu, oyunda felaket olabilir, çünkü kullanıcı potansiyel olarak işleri berbat etmeye başlayabilir.
Ama aslında, bu kolayca ele alınır. Lua gömmek için tasarlanmıştır, bu izolasyonun aslında oldukça kolay olduğu anlamına gelir. Gerçekten de, taze bir Lua durumu varsayılan olarak hiçbir şey sağlamaz ; standart Lua kütüphanelerinin en temelini bile ortaya çıkarmak için bir şeyler yapmalısınız. Dosya erişimi, oyun durumu erişimi, vb. Tamamen devre dışı bırakılmadı. Ve her Lua eyaleti birbirinden ayrı. AI komut dosyaları için kullandığınız Lua durumunun config dosyaları için kullandığınız Lua durumu olması gerekmez.
Aslında, birçok Lua standart kütüphanesini kaydetmenize izin veren bazı kodlara sahibim, ancak tüm IO dosyalarından geçer ve bunları kaldırır. Sonuçta, bir Lua komut dosyası tabanlı bir yapılandırma dosyasının yapabileceği en kötü şey, oyunun çalıştırıldıktan hemen sonra, hafızası tükenerek çökmesine neden olmasıdır. Bu yapılandırma dosyalarını manuel olarak paylaşmadığınızdan, bu bir bilgisayar korsanı için eğlenceli olmaz.
Herhangi bir betik dilinin en büyük dezavantajının hata ayıklama olduğunu söyleyebilirim. Çoğu kodlama dili hata ayıklayıcıya sahip değildir ve Lua farklı değildir. Lua, bir hata ayıklama aracı oluşturmak için gerekli olan tüm araçlara sahiptir. Ancak aslında yerleşik bir hata ayıklayıcı yok. Bir tane koymak zorundasın. Ve bu makul bir çalışma gerektirir.
Veya "printf debugging" ile yapabilirsiniz. Bu gerçekten ne kadar Lua kodunu yazdığınıza bağlı.