Javascript güvenli bir oyun yapmak nasıl?

4 Cevap php

Javascript bazı html ve css kullanarak oyun üzerinde çalışıyorum, ve kullanıcı sadece oyunu bitirmek için? Sonuç = zafer game.php aramak ve bazı puan kazanmak değil, böylece oyuna sabitlemek için herhangi bir yol olup olmadığını merak ediyorum .

Buradan şimdi ben var çözümdür.

  • For a chance game, start the page with the result already in place, win or loose, then just do some animations to show it, but all the score and win/loose stuff is done server-side.

  • For a battle game, just get the action from the javascript call, and do the damage calculation, reaction of the oponent on the server and just send back the data.

ancak son çözüm Ben eylemleri kullanıcı şey yapmak her zaman göndermek zorunda olacağını ima etmektedir. Bu dönüş savaş oyunu bir dönüş için işe yarayabilir, ama ben bu oyunu başka türlü yavaş olacağını düşünüyorum. Yani benim soru, ben gönderilen infomation sabitlemek için benim javascript yakalayabiliriz güvenli şekilde bir tür var.

4 Cevap

Tüm hesaplama ve doğrulama için bunu güvenli hale getirmek için tek yol sunucu tarafında meydana gelir. Yani hemen hemen tüm online oyun nasıl yapıldığını bulunuyor. İstemci online iletişim konusunda güvenilir olamaz ve her zaman kullanıcı aslında geçerli bir şey yapıyor sunucu tarafında emin olmalısınız. (Neyse Teoride, pratikte size gecikme tazminat ve istemci tarafında bazı kritik olmayan şeyler boşaltma için biraz müşteri güven gerekir).

Her eylem işlenmiş ve sunucu tarafından doğrulanması gerekmektedir yok gibi Bu nedenle, javascript, bir online oyun geliştirmek için çok iyi bir dil değildir. Eğer sunucu ve istemci için TCP / IP kullanarak kendi iletişim protokollerini inşa edebilirsiniz, çünkü diğer programlama dilleri için, böyle büyük bir sorun değildir. Eğer HTTP protokolü ve çok verimsiz canlı istemci-sunucu iletişimi için yapmak XMLHTTPRequest işleyicileri, güvenmek gerekir, çünkü Ancak, javascript için böyle bir olasılık vardır.

Dediğin gibi, her zaman javascript içinde arayüzü yapabilirsiniz, ancak güvenlik için, yine sunucu tarafında malzeme bol yapmak ve bu kesinlikle daha fazla aksiyon odaklı denetim gerektiren oyunlar için çalışmaz gerekir. Yani, hemen hemen güvenlik ihtiyacınız varsa, tabanlı oyunları açmak için sınırlıdır.

Sen saf kullanıcıyı engellemek için bazı şeyler yapmak, ama muhtemelen herkes olabilir. Tüm kişi oyun "saldırı" olduğunu nasıl motive bağlıdır. Günün sonunda, kullanıcı kodu tam olarak ne yaptığını görmek için bir javascript hata ayıklayıcı kullanın ve bunu çoğaltmak olabilir. Eğer sırt her oyun eylem göndermek bile, kullanıcı hala çoğaltmak olabilir. Eğer eylemler kullanıcı neler yapabileceğiniz konusunda dikkatli değilseniz, onlar varsayılan kontrol şeması ile oyunu kontrol olsaydı imkansız olurdu eylemleri geri göndermek mümkün olabilir.

Zafer için herhangi bir URL olmalıdır. Oyun sırasında, istemci kullanıcı eylemleri göndermek gerekir, ve onlar kazandı ettik, sunucu zafer sayfası için onları yönlendirir.

Varsa Hiçbir hesaplama / ödüllendirme, zafer sayfada yapılmalıdır.

Bu bir seçenek olarak düşünülebilir? (Geç cevap)

Böyle bir oyun verileri için sever ve "iletişimci": üzerinde kritik bir değişken depolama, hesap makinesi (Hayat puan örneğin) olarak hem de hareket gizli bir dahili flash player, için, kritik (eğer kesmek istemiyorum şeyler) aktarın.

JavaScript sonra kesinlikle daha güvenlidir. Ama yine de; Bu istemci tarafında% 100 güvenli değildir varsaymak her zaman en iyisidir. (Hatta C + + oyunları, lol: hacker)

Ancak, flaş oyun veri trafiği aktararak, örneğin onun daha ilginç haberleşme bazı fonksiyonları, kullanmak mümkün: P2P =)