Neden bazı MMO'larda istemcinin belleğini düzenlemek onları aldatmalarına izin veriyor?


19

Oyun istemcisinin hafızasını düzenlemek neden işe yarar? Neden bu kadar çok "Hack koruma" aracı müşterilerle geliyor?

Bir istemci-sunucu oyunu tasarlayacak olsaydım, her şey sunucuda (oyun dünyasının simülasyonu) gerçekleşecekti ve müşteriler sadece karakterlerinin yakınındaki dünyanın bir kısmının durum güncellemelerini alan pasif tüketiciler olacak ve sadece bazı bilgiler göndereceklerdi. tuş vuruşları veya taşıma / eylem komutları. Belki burada bir şey eksik, ama bu tasarımla, STR'imi istemci belleğinde 200'e yükseltmek gibi herhangi bir kesmek (değer varsa), herhangi bir etkisi olmaz.

Düşünebileceğim tek açıklama, bellek düzenlemenin çalıştığı oyunların simülasyonun bölümlerinin istemcide ve sunucuda çalışmasına izin vermesidir, daha sonra tüm istemcileri periyodik olarak senkronize eder. Bir maç yapılandırıldıktan sonra sabit sayıda oyuncuya sahip Gerçek Zamanlı Strateji oyunları için tasarımın anlayabiliyorum, ancak neden MMORPG'lerde? Sunucu yükünü azaltmak için bir strateji var mı?


2
Sunucu yükünün yanı sıra bir gecikme sorunu da var. Örneğin Minecraft tüm hareketi istemci tarafı ile ele alır çünkü en kolay çözüm (saf istemci tarafı hareketi, istemci tarafı tahmini veya gecikmeli hareket dışında). (Minecraft'ın normalde yavaş tempolu bir oyun olduğu için bir tahmin çerçevesi yoktur, bu nedenle hareketi tahmin etmek çok fazla iş ve muhtemelen güvenilmez olacaktır)
user253751

Yanıtlar:


21

İdeal olmakla birlikte , hem hesaplama yükü hem de istemci için girdi onaylamasında gecikme açısından her bir girişi sunucuya doğrulamak pratik olarak imkansızdır .

Dolayısıyla şeylerin bir avuç genellikle vardır değil birçok MMOs sunucuda valide. Bazı durumlarda bu, belirli karakter hareketi sınıflarını içerir, bu yüzden ışınlanma ve hız korsanları vardır. İstemci tarafı korumalar, elbette bypass edilebilmelerine rağmen, bu saldırılara ekstra bir engel sağlamaya yardımcı olur. Bununla mücadele etmek için, bu tür birçok oyun, kullanılan gerçek korumaların günlüğe kaydedilmesi ve gerçeklerden sonra doğrulanması ve rotasyonu için bir strateji kullanacaktır.

Ayrıca, bilgileri harmanlayabilen ve tuşa basma ve diğer girdileri normalde bir insanın tepki gösterebileceğinden daha hızlı bir şekilde istemci üzerinden iletebilen diğer basit bellek kazıma kesmek ekranları da var. Veya istemciye iletilebilen ancak henüz görünmesi gerekmeyen bilgileri arayabilirler (yakınlardaki ancak henüz hiçbir yerde görüntülenmeyen yaratıkların konumları gibi, erken Diablo harita hack'lerinde olduğu gibi).


Bu, oyun istemcisinin belleğine bakma konusundaki ilgiyi ve bunun olmasını önlemeye olan ilgiyi açıklar. Oynadığım son oyunda şahsen gördüğüm ışınlanma hilesi.
Hatoru Hansou

2
İlginç bir şekilde, Ark: Survival Evolved oyunu sunucuda her şeye sahip olduklarını söylüyor (girişlere kadar, iirc). Tam olarak bir WoW tipi MMO değil ama alfa 70ppl sunucuları (artı npc dinos ve oyuncu yapılı tonlarca) destekler. Kesinlikle gecikmeyi hissedebilirsiniz ama daha iyi oluyor. Teknoloji iyileştikçe bunun daha popüler hale geleceğini hayal ediyorum.
slicedtoad

5
"70 kişi" dir , en azından ben üzerinde çalışmış MMOs daha sunucu başına daha az insan desteklenen (aslında, birkaç) büyüklükte bir sipariş. Ayrıca, neredeyse herkesin sunucudaki her şeyi yaptıklarını söylediğini unutmayın , sadece bilgisayar korsanlarına hack geliştirme konusunda bir bacak vermemek için.

@slicedtoad Bundan bahsetmek üzereydim. Çoğu MMO zaten örnekleme kullandığından, ARK yönteminin bunların içinde çalışabileceğini unutmayın. Büyük miktarlarda oyuncular için bunu yapmak henüz mümkün değil.
Mast

10

Korumanın nedenlerinden biri, oyun durumunu okumanın botların oyunun durumunu bilmesine ve buna göre hareket etmesine izin verebilmesidir.

Örneğin, bir MMO'da öğütme: "bot" etrafta hangi mafya olduğunu biliyorsa, mafyayı seçmek, hayatı 0 olana kadar vurmak, ganimet almak, durulamak ve tekrarlamak için oyun istemcilerine komutlar gönderebilir. Bununla, simülasyonda tüm değişiklikler sunucu tarafında yapılsa / onaylanırsa bile, bazı oyuncular hile yapabilir. Komutlar, sahte fare tıklamaları veya tuşlar veya bellek yazma yoluyla gönderilebilir.

MMO'ların bellek korumasını kullanmasının nedenlerinden biri de budur.


Tamam, botlar daha mantıklı, kendinizi tanrı moduna sokmasanız bile, sizin için her şeyi yapan bir programa sahip olmak da hile yapıyor. Ama neden oynadığım oyundaki "hackerlar" tek bir vuruşta öldürebilir? Bu, oyun belleğini ve sunucuyu bir şekilde bu değişiklikleri doğruladığının bir göstergesi değil mi?
Hatoru Hansou

1
@HatoruHansou Evet. Ve can sıkıcı kısmı, insansız botun kendi başına çalışabileceğidir, bu yüzden tek bir altın çiftçi çalışanı tarafından izlenen 10 bilgisayardan oluşan bir grup, günde 24 saat çevrimiçi ve aktif karakterler hayal edin ... MMO'nuz harap. Hatta bazıları diğer oyuncular için özel bir işleme sahip olacak ("Çimümde kalmayın, bu benim odam" (başlangıçta Lineage II).
Vaillancourt

Bot popülasyonunun kontrolsüz büyümesine izin verin ve oyununuz çok yakında iş dışı olabilir. Tamam, bot tek başına anti-hack korumalarını haklı çıkarmak için yeterlidir. Cevabı kabul etmeden önce bir süre daha bekleyeceğim.
Hatoru Hansou

@HatoruHansou :) Yine de hafıza koruması için tüm nedenlere sahip olduğumdan emin değilim :)
Vaillancourt

6

Birçok MMO, istemci tarafı isabet tahminiyle tasarlanmıştır. Yani istemcide bir isabet varsa, bu sonucu sunucuya isabet olduğunu gönderir. Bu durumda, sunucu gerçekten yetkili değildir ve bu nedenle hile yapmak mümkündür.

Dürüst olmak gerekirse, bir MMO tasarlıyorsam, sunucuyu tamamen yetkili hale getirirdim, istemci sadece sunucuya sıkıştırılmış giriş değerleri gönderiyor ve sunucu sonucu çözüyor.

Bunun neden henüz birçok MMO tarafından yapılmadığına gelince, sadece ek sunucu yükünü ve tamamen yetkili bir sunucuya sahip olan 'yanıt gecikmesini' düşünebilirim, çünkü sadece oyunun hissini ve tepkisini kırıyor.


Bu hafıza hack'lerinin etkili olduğunu açıklar. Yetkili sunucu tasarımı hakkında makale / makale bağlantısı var mı?
Hatoru Hansou

4
Yük tek sorun değildir - yanıt verme anahtarıdır. Herhangi ağa gerçek zamanlı oyun gereken gecikme saklanma tekniklerini kullanır. Herkesin hemfikir olduğundan emin olmak için, sunucunun her istemcide gerçekleşen olayları sipariş etmenin bir yolu olmalı - "önce seni vurdum" "Hayır, önce seni vurdum" gibi durumlardan kaçınmaya çalışmalıdır. Counter-Strike gibi oyunlar için Speedhacks, sunucu vb. Tarafından algılanan gecikmeyi manipüle ederek bu senkronizasyonu kötüye kullanmaya dayanır (çoğu CS sunucusunun 100-200 ms'den daha yüksek gecikme ile oyuncuları tekmelemesinin nedenlerinden biridir).
Luaan

3
Kesinlikle sıra tabanlı bir oyun yapmadığınız sürece, bundan kaçınılamaz. Gecikmeler her zaman var olacak ve ağa bağlı oyuna dahil olan tüm bilgisayarların olayları sipariş etmek için "ortak bir zaman" üzerinde anlaşması gerekiyor. Gecikmeyi yönetmek için en iyi sistemlerde bile, her zaman tutarsızlıklar olacaktır, ancak bunları gizlemede çok iyi olduk. Sorun şu ki, bu küçük şeyleri yapmaya başladığınızda, ince bir böceğin kaymasına izin vermek daha kolaydır - örneğin, ikinci öldürmenin ilk öldürmeden önce gerçekleştiğini varsayarsak, müşterinin aynı canavarı iki kez öldürmesini sağlar. O var zor .
Luaan
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.