Mobil cihazlarda oyun mantığı için Lua kullanmalı mıyım?


33

Gerçekten yukarıda

Boş zamanlarımda android tabanlı bir oyun yazıyorum (android ücretsiz çünkü ücretsiz ve ticari bir şey yapmak istemiyorum).

Oyun mantığı, varlıkların var olduğu ve kendilerine bağlı bileşenlerin bulunduğu ve olayların gerçekleşmesi için mesajların gönderilip gönderildiği çok tipik bir bileşen tabanlı modelden gelir.

Açıkçası, aslında bu performansın katmanı ince ve eğer bu uygulamanın bir iPhone sürümünü yazacak olsaydım, nesnel C'deki oluşturucu ve çekirdek sürücüyü (bu bileşen tabanlı sistemin) yeniden yazmak zorunda kalırdım.

Varlıklar, eklenecek bileşenlerin adlarını belirleyen düz dosyalardır ve bileşenlerin kendisi, varlığın mantığını içeren basit, tek amaçlı nesnelerdir.

Şimdi, eğer Java'daki bu bileşenlerin tüm mantığını yazarsam, bir iPhone bağlantı noktası yapmaya karar verirsem bunları tekrar C Nesnesine yazmak zorunda kalırım. Uygulama mantığının büyük kısmı bu bileşenlerin içinde bulunduğundan, ideal bir dünyada, herhangi bir platformda uygulamaya yüklenebilecek bazı platform-agnostik bir dilde / script / DSL'de yazılır.

Bununla birlikte, bunun ideal bir dünya olmadığı ve mobil cihazlardaki Lua performansının hala çizilmediği, ek yükün çok fazla olduğu ve daha sonra sorun yaşayacağıma inanmaya başladım. o yoldan mı geçti?

Bu gerçekten böyle mi? Açıkçası bu sadece varsayımsal bir sorudur, hepsini Java ile yazmaktan mutluyum, çünkü işleri basitleştirip basitleştirmek kolaydır, ancak aslında bu oyunu yapmaktan zevk aldığımı söylerim (olasılıkla, şu anda ne kadar uğraşmaktan hoşlanmadığımdan dolayı) Tüm bu farklı mobil cihazlarla) ve ticari olarak uygulanabilir bir oyun yapmak istedim - Lua'yı kullanır mıydım yoksa sadece taşıma için geldiğinde vurabilir miydim ve tüm kodu tekrar yazabilir miydim?

Yanıtlar:


17

Scripting dilleri gelince, Lua çok hızlı, ancak işlemciye bağlı olarak değişen herhangi bir şey gibi. Örneğin, Lua bir konsol platformunda harika olmaz, çünkü çok dallıdır ve bazı konsol platformları çok yavaş dallanır. Sorunuzu en iyi şekilde yanıtlamak için bazı ölçütler vermenizi öneririm. Lua'nın cihaz üzerinde çeşitli algoritmaları ne kadar hızlı yaptığını görün. Senaryo kodunda ağır matematik veya yineleme yapmadığınız sürece iyi olacağınızdan şüpheleniyorum. (Bunu zaten yapmamalısın. Onlar senaryolar. Motorda hesaplamalar yaparlar.)

Bununla birlikte, komut dosyası platform bağımsızlığı için gümüş bir kurşun değildir. Apple'ın dinamik kod çalıştırma konusundaki kısıtlamaları nedeniyle iPhone'a bağlantı kurarsanız, yine de Obj-C'ye yeniden yazmanız gerekebilir. Önceden bir bağlantım yok ama okumaya değer olabilir. Apple , yönetilen koda zorlukla izin verir (özel bir dağıtım çalıştırmak için özel izin almanız gerekir). Kesinlikle Lua'nın uygulama mağazasına uygulanmasına izin vermeyeceklerdir.

[değiştir] Görünüşe göre iphone şey Lua hakkında yanılmış. Aşağıdaki yorumlara bakınız.


9
Lua, iPhone uygulamalarında yaygın olarak kullanılmaktadır ve buna izin veren koşullarda değişiklikler yapılmıştır. Buraya bakın: appleoutsider.com/2010/06/10/hello-lua
Colin Gislason

5
Pek çok konsol uygulaması aslında LUA kullanıyor. Evet, dallıdır - ancak yüksek seviye mantığı kontrol etmeniz önemli değildir. Sadece bunu render döngünüzden çağırmayın;) Bildiğim kadarıyla, oyunlar için LUA, geliştirici sözleşmesinde yapılan son değişikliklerle gayet iyi - LUA tarafından yürütülen birçok oyun var. Ancak kapalı bir platformdaki herhangi bir geliştirmede olduğu gibi, platform sahibinden (yani Apple) kesin cevaplar isteyin. Ayrıca, Obj-C'ye gerek yok - iPhone C / C ++ 'a gayet iyi. (Yine de Obj-C’de UIKit’ten bir şey yapmanı öneriyorum. Azalmış ağrı faktörü)
Rachel Blum

7
Git git sihirli sabun kutusu. Lua bir isim değil, kısaltmadır, asla JAVA yazmazsınız. Lua ay demektir. MOON yazmazsınız. teşekkürler - Lau Nazi.
deft_code

2
Ne yazık ki "JAVA" yazan bir çok insan tanıyorum.

1
Lua'yı NDS'de kullandım (bir iPhone'dan çok daha az güçlü) ve oldukça hızlı çalıştı. Bir oyunun mantığının yarısından fazlasını doğrudan Lua'da yapmamız için yeterince hızlı.
Klaim

7

Lua'nın C uygulaması özellikle gömülü aygıtlarda çalışmak üzere tasarlanmıştır. Küçük ve hızlı (bir betik dili için). En azından hafif işler için iyi olduğunu düşünürdüm.


4

Emin. Komut dosyası yazma mantığı, darboğazınız olma olasılığı düşüktür (aslında Shark veya Instruments ile profiliniz doğru mu olacak?). Oyun mantığı için çok fazla Lua kullanan Marooned'un iPhone versiyonunda çalıştım. Çok fazla performans ayarlaması yaptım ve temel olarak Lua% 0 idi.

(Maroon'u serbest bıraktığımızda Lua gri bir alandı, ama o zamandan beri resmen iOS gelişimi için kutsandı.)



1

Oyun mantığınızın ne kadarının komut dosyalarına gömülü olduğuna biraz bağlı . Genel olarak LUA, yüksek seviyede yapıştırıcı olarak kullanılır, ancak büyük miktarda iş C (++) aracılığıyla gerçekleşir. Evet, LUA, betik dillerinin gittiği kadar hızlıdır - hala 30 ila 50 kez anadillere kıyasla bir yavaşlamaya bakıyorsunuz, bu yüzden gerçekten LUA'da ne olduğuna bağlı.


0

Oyunun tamamını Lua'da yazabilir ve Java / ObjectiveC / C / C ++ 'dan tamamen kaçınabilirsiniz.

Çapraz platform geliştirme için Corona'yı kullanın . Uygulama Mağazasına veya Android Market'e göndermeyi planlayana kadar kullanımı ücretsizdir.

İPhone / Pad / Touch'ı hedeflemek istiyorsanız balmumuna bakın .

Tıpkı bir not olarak @Sean Edwards: Nintendo DS, Wii, Sony PSP ve Xbox360'ı hedef alan ve hepsi aynı motoru kullanan ve Lua'da yazılmış olan beş ünvan gönderiyorum. Konsol ve ceplerde yaygın olarak kullanılır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.