Uzantı komut dosyaları sanal alanda çalıştırılmalı mıdır?


11

Özellikle, bu lua (luajit-2.0) ile yazılmış oyun uzantıları ile ilgilidir. Bu betiklerin yapabileceklerini kısıtlamalı mıyım diye düşünüyordum ve muhtemelen yapmamam gereken sonuca vardım:

  • Doğru olmak zor. Kulağa aptalca geliyor, ama benim sandbox'ım zaten sızdıracak.

  • Düşünebildiğim tek fayda, üçüncü taraf komut dosyalarını çalıştırırken kullanıcılara bir miktar güvenlik duygusu vermek olacaktır.

  • Dezavantajları, yayım yazarları için inanılmaz derecede can sıkıcı olmasıdır. Şimdilik, kendim (oyun içeriği çoğunlukla komut dosyası olacak).

Aslında bir şey yapmadan önce bunu sormamın nedeni, erken bir sanal alan eklemenin kolay olması, ancak kendime de rahatsız edici kısıtlamalar getirmesidir. Bununla birlikte, ilk olarak devam edip daha sonra sonuçta bir sanal alana ihtiyacım olduğuna karar verirsem, sorunlara gireceğim (ya zaten orada bulunan komut dosyalarını yeniden yazmam ya da bir tür güven yönetim sistemi sunmam gerekecek) ki bu değerinden daha fazla sorun gibi görünüyor).


Ne tür bir oyun için? Hazır bir ürün için, 100.000 müşteriye satıldı ve seven herkes bunun için komut dosyaları yazabilir mi? Veya 50 kez satılan bir ürün için ek komut dosyaları sunan tek kişi siz misiniz?
Doc Brown

Yanıtlar:


2

Hem orta-büyük boyutlu herhangi bir yazılım geliştirmede, programcının her zaman gelecekteki işlevsellik için bir katman değişimi veya serbest ayar seçenekleri oluşturmaya çalışacağı bir video oyununun geliştirilmesine inanıyorum.

Lua , bu seçeneklerin son kullanıcı ve geliştirici için kolay uygulanmasına izin veren bir dildir, ancak bu, çalışma alanınızı planlamanın kolay olduğu anlamına gelmez, bugün size söyleyebileceğim deneyim ile, aynı zamanda basit bir çarpma sızıntı yapabilir, son kullanıcının davranışlarını özelleştirmesine izin verilirse.

Bir sandbox oyununun neler sunabileceğine odaklanırsak, son kullanımın çift bıçak olabileceğini anlamak için oyunun lineer olmayan, ilginç ve eğlenceli olmasına izin verebiliriz , ancak aynı zamanda kolay bir plan olmayabilir. çalışma alanındaki sınırları.

Güvenlik açısından harika görünüyor! tüm yazılım türlerinde uzantılar için iyi bir test ortamı uygulanmalıdır.

Sonuç olarak, ürününüz için bir sanal alan yapmaya değmez gibi görünse de, aslında geliştirici veya geliştirici grubu daha fazla fayda elde edecektir, çünkü son kullanıcı ortamınızı geliştiriciden kolayca yapılandırabileceğinden, fonksiyonel yapıda değişiklik yapabilir. Bir sanal oyunun (yazılım ölçeklenebilirliğinde olduğu gibi), uzantılarının yaratıcı bir evrimine ve işlevlerinin doğal bir evrimine izin verdiğine kesinlikle inanıyorum.


1
Bence oyun alanında 'sandbox' kullanıyorsunuz, ancak OP güvenlik açısından kullanıyordu. Oldukça ilgisiz iki kavram gibi görünüyorlar.
bdsl

2

Doğru olmak zor

Aslında, beyaz liste işlevlerine sahip temel bir sanal alan oluşturmak ve daha sonra potansiyel olarak güvenli olmayan işlevlerin özel uygulamalarını eklemek çok zor değildir . Bu SO sorusu iyi bir başlangıç ​​noktası gibi görünüyor.

ama şansım benim sandbox'ım zaten sızdıracak

Bazı temel güvenlik sağlamaya başlamak için yeterli olacağını düşünüyorum: bazı özel dizinlerin dışındaki dosyalara erişimi kısıtlamak. Zaten% 100 güvenli uygulama diye bir şey yoktur. Birisi kötü niyetli bir uzantı yazacaksa ne olabileceğini düşünün: kullanıcılar sizi bir geliştirici olarak suçlayacak. Birisine genişleme yazma şansı vermeyi planlıyorsanız, sonunda biraz güvenliğe ihtiyacınız olacak. Eğer sadece sizseniz - olduğu gibi sorun yok.

Düşünebildiğim tek fayda, üçüncü taraf komut dosyalarını çalıştırırken kullanıcılara bir miktar güvenlik duygusu vermek olacaktır.

Tam bu nedenden dolayı neden sen sandboxing yapmalıyım ve Sandboxlama karşı geçerli bir argüman değil.

Dezavantajları, yayım yazarları için inanılmaz derecede can sıkıcı olması

Oyun senaryosu konusunda biraz deneyimim var ve korumalı bir ortamda çalışmanın can sıkıcı olduğunu düşünmüyorum. Beni rahatsız eden şey, oyun içi nesnelerin belirli API'leri veya bunların zayıf uygulamaları gibi oyunla ilgili işlevsellik eksikliğidir.

LOVE motoruna iyi bir örnek olarak bakarsanız (henüz yapmadıysanız), özellikle dosya sistemi API'sında öğretici yardımcı olabilir .

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.