Penafian: Jenis permainan favorit saya sepanjang masa adalah berbasis teks dan saya menulis ini sebagai programmer lama dari MUD lama.
Saya pikir pertanyaan penting yang perlu Anda tanyakan pada diri sendiri adalah ini: Apakah Anda bahkan perlu utas? Saya mengerti bahwa permainan grafis mungkin lebih banyak menggunakan MTs tetapi saya pikir itu juga tergantung pada mekanisme permainan. (Mungkin juga layak mempertimbangkan bahwa dengan GPU, CPU dan semua sumber daya lain yang kita miliki saat ini jauh lebih kuat yang membuat masalah sumber daya Anda menjadi masalah seperti yang terlihat bagi Anda; memang 100 objek hampir nol). Itu juga tergantung pada bagaimana Anda mendefinisikan 'semua karakter sekaligus'. Apakah maksud Anda pada saat yang bersamaan? Anda tidak akan memiliki itu seperti yang ditunjukkan oleh Peter dengan tepat sehingga secara bersamaan tidak relevan dalam arti harfiah; hanya muncul seperti ini.
Dengan asumsi Anda akan menggunakan utas: Anda pasti tidak harus mempertimbangkan 100 utas (dan saya bahkan tidak akan membahas apakah itu terlalu banyak untuk CPU Anda atau tidak; Saya hanya merujuk pada komplikasi dan kepraktisannya).
Tapi ingat ini: multi-threading tidak mudah (seperti yang ditunjukkan Philipp) dan memiliki banyak masalah. Yang lain memiliki lebih banyak pengalaman (dengan banyak) daripada yang saya lakukan dengan MT tetapi saya akan mengatakan mereka juga akan menyarankan hal yang sama (meskipun mereka akan lebih mampu daripada saya - terutama tanpa latihan di pihak saya).
Beberapa berpendapat bahwa mereka tidak setuju bahwa utas tidak menguntungkan dan beberapa berpendapat bahwa setiap objek harus memiliki utas. Tapi (dan sekali lagi ini semua teks tetapi bahkan jika Anda mempertimbangkan lebih dari satu utas Anda tidak perlu - dan tidak boleh - mempertimbangkannya untuk setiap objek) karena Philipp menunjukkan permainan cenderung beralih melalui daftar. Tapi itu bukan hanya (seperti yang dia sarankan meskipun saya sadar dia hanya menanggapi parameter Anda dari begitu sedikit objek) untuk beberapa objek. Dalam MUD saya seorang programmer karena kami memiliki yang berikut (dan ini tidak semua aktivitas yang terjadi secara real-time jadi ingatlah itu juga):
(Jumlah contoh tentu saja bervariasi - lebih tinggi dan lebih rendah)
Mobiles (NPC yaitu karakter bukan pemain): 2614; prototipe: 1360 Objek: 4457; prototipe: 2281 Kamar: 7983; prototipe: 7983. Setiap kamar biasanya memiliki contohnya sendiri tetapi kami juga memiliki kamar yang dinamis, yaitu kamar di dalam kamar; atau kamar di dalam ponsel misalnya perut naga; atau ruangan di objek misalnya Anda memasukkan objek magis). Perlu diingat bahwa ruang dinamis ini ada per objek / ruang / ponsel yang sebenarnya telah ditentukan. Ya ini sangat mirip dengan World of Warcraft (saya tidak memainkannya tetapi seorang teman meminta saya memainkannya ketika saya memiliki mesin Windows, untuk sementara waktu) gagasan contoh kecuali kami memilikinya jauh sebelum World of Warcraft bahkan ada.
Script: 868 (saat ini) (anehnya perintah statistik kami tidak menunjukkan berapa banyak prototipe yang kami miliki sehingga saya akan menambahkannya). Semua ini diadakan di daerah / zona dan kami memiliki 103 di antaranya. Kami juga memiliki prosedur khusus yang diadakan pada waktu yang berbeda. Kami juga memiliki acara lainnya. Kemudian kami juga memiliki soket yang terhubung. Ponsel bergerak, melakukan aktivitas yang berbeda (selain pertempuran), berinteraksi dengan pemain, dan sebagainya. (Begitu juga jenis entitas lainnya).
Bagaimana kita menangani semua ini tanpa penundaan?
soket: pilih (), antrian (input, output, peristiwa, hal-hal lain), buffer (input, output, hal-hal lain), dll. Ini disurvei 10 kali per detik.
karakter, objek, ruang, pertempuran, semuanya: semua dalam satu lingkaran pusat pada pulsa yang berbeda.
Kami juga (implementasi saya berdasarkan diskusi antara pendiri / programmer lain dan saya sendiri) memiliki pelacakan daftar yang luas dan pengujian validitas pointer dan kami memiliki lebih dari cukup sumber daya gratis seandainya kami benar-benar membutuhkannya. Semua ini (kecuali kita telah memperluas dunia) ada bertahun-tahun yang lalu ketika ada lebih sedikit RAM, daya CPU, ruang hard disk, dll. Dan bahkan kemudian kita tidak punya masalah. Dalam loop yang dijelaskan (skrip menyebabkan ini seperti melakukan reset area / repopulasi seperti halnya hal-hal lain) monster, objek (item), dan hal-hal lain sedang dibuat, dibebaskan, dan sebagainya. Koneksi juga diterima, disurvei, dan segala sesuatu yang Anda harapkan.