Feragatname: Tüm zamanların en sevdiğim oyun türü metin tabanlıdır ve bunu eski bir MUD'un uzun süredir programcısı olarak yazıyorum.
Kendine sorman gereken önemli bir soru şudur: Konuya ihtiyacın var mı? Grafiksel bir oyunun muhtemelen MT’leri daha fazla kullandığını biliyorum, ancak bunun oyunun mekaniğine de bağlı olduğunu düşünüyorum. (GPU'lar, CPU'lar ve bugün sahip olduğumuz diğer tüm kaynaklar sayesinde, kaynaklarınızla ilgili endişelerinizi sizin için göründüğü kadar sorunlu kılan, gerçekte 100 nesne neredeyse sıfırdır. Aynı zamanda 'aynı anda tüm karakterleri' nasıl tanımladığınıza da bağlıdır. Aynı anda mı demek istiyorsun? Peter'ın haklı olarak işaret ettiği gibi, bir kerede kelimenin tam anlamıyla alakasız olduğu; sadece bu şekilde görünür.
Eğer konuya gireceğinizi farz edersiniz: Kesinlikle 100 konu düşünmemelisiniz (işlemciniz için çok fazla olup olmadığına bile girmeyeceğim bile; bunun sadece komplikasyonlarına ve pratikliğine atıfta bulunuyorum).
Ancak şunu unutmayın: çoklu iş parçacığı kolay değildir (Philipp'in işaret ettiği gibi) ve birçok sorunu var. Diğerleri, MT ile yaptığımdan çok daha fazla deneyime sahip (fakat benim açımdan daha yetenekli olsalar bile), özellikle benim açımdan pratik yapmadan), aynı şeyi önereceklerini söyleyebilirim.
Bazıları iş parçacıklarının yararlı olmadığını, bazıları ise her nesnenin bir iş parçacığı olması gerektiğini savunuyorlar. Ancak (ve yine tüm bunlar metindir, ancak Philipp'in oyunların listelerde yinelenme eğiliminde olduğunu belirttiğinden, her bir nesne için birden fazla iş parçacığı düşünseniz bile - ve her bir nesne için düşünmemeniz gerekir). Ancak bu, sadece (çok az nesnenin parametrelerine karşılık verdiğini fark etmeme rağmen) önerdiği gibi değil. MUD'da programcı olduğum için aşağıdakilere sahibiz (ve bu gerçek zamanlı olarak gerçekleşen tüm faaliyetler değil, bu yüzden bunu aklınızda bulundurun):
(Örneklerin sayısı elbette değişir - daha yüksek ve daha düşük)
Cep telefonları (NPC yani oyuncu olmayan karakter): 2614; prototipler: 1360 Nesneler: 4457; prototipler: 2281 Oda sayısı: 7983; prototipler: 7983. Her odanın genellikle kendine ait bir örneği vardır, fakat aynı zamanda bir oda içindeki odaları söyleyen dinamik odalarımız da vardır; veya bir cep telefonu içindeki odalar, örneğin bir ejderhanın midesi; veya nesnelerdeki odalar, örneğin büyülü bir nesneye girersiniz). Bu dinamik odaların, kendilerini tanımlayan nesne / oda / mobil başına mevcut olduğunu unutmayın. Evet, bu World of Warcraft'ınkine çok benziyor (oynamıyorum ama bir süre Windows makinem varken bir arkadaşım oynamıştı), World of Warcraft'ın varlığından çok önce sahip olduğumuz durumlar dışında bir fikirdi.
Scriptler: 868 (şu anda) (garip bir şekilde istatistik komutumuz ne kadar prototipimiz olduğunu göstermiyor, bu yüzden bunu ekleyeceğim). Bunların hepsi bölgelerde / bölgelerde düzenleniyor ve bunlardan 103'ümüz var. Ayrıca farklı zamanlarda işleyen özel prosedürlerimiz de var. Başka etkinliklerimiz de var. O zaman biz de soket bağladık. Cep telefonları dolaşıyor, farklı etkinlikler yapıyor (savaş dışında), oyuncularla etkileşime giriyor vb. (Öyleyse diğer varlık türlerini de yapın).
Bütün bunları gecikmeden nasıl hallederiz?
soketler: select (), kuyruklar (giriş, çıkış, olaylar, diğer şeyler), arabellek (giriş, çıkış, diğer şeyler) vb. Bunlar saniyede 10 kez yoklanır.
karakterler, nesneler, odalar, savaş, her şey: hepsi farklı darbelerde merkezi bir döngüde.
Ayrıca (kurucu / diğer programcı ve kendim arasındaki tartışmaya dayanan uygulamam) kapsamlı bir bağlantılı liste izleme ve işaretçi geçerliliği testine sahibiz ve aslında ihtiyaç duymamız halinde yeterli kaynaktan daha fazlasına sahibiz. Bütün bunlar (dünyayı genişlettiğimiz hariç) yıllar önce daha az RAM, CPU gücü, sabit disk alanı vb. Varken vardı. Ve aslında o zaman bile sorun yaşamadık. Açıklanan döngülerde (senaryolar bunun nedenleri sıfırlar / diğer şeylerin çoğalmasına neden olur) canavarlar, nesneler (eşyalar) ve başka şeyler yaratılır, serbest bırakılır vb. Bağlantılar da kabul edilir, sorgulanır ve beklediğiniz diğer her şey.