Відмова: Мій улюблений тип гри у всі часи - це текстовий текст, і я пишу це як давній програміст старого MUD.
Я думаю, що важливе питання, яке ви повинні задати собі, це таке: чи вам навіть потрібні нитки? Я розумію, що в графічній грі, мабуть, більше використовується MT, але я думаю, що це також залежить від механіки гри. (Можливо, варто також врахувати, що з графічними процесорами, процесорами та всіма іншими ресурсами, які ми сьогодні маємо, набагато сильніше, що робить ваші проблеми щодо ресурсів настільки ж проблемними, як вам може здатися; дійсно 100 об’єктів практично нульові). Це також залежить від того, як ви визначаєте "всіх символів відразу". Ви маєте на увазі точно в той самий час? У вас цього не буде, як справедливо вказує Петро, так що все відразу не має значення в прямому сенсі; вона з'являється лише таким чином.
Якщо припустити, що ви підете з теми: Ви точно не повинні враховувати 100 потоків (і я навіть не збираюся вникати в те, чи занадто це для вашого процесора чи ні; я маю на увазі лише ускладнення та практичність цього).
Але пам’ятайте це: багатократна нарізка не є легкою (як вказує Філіпп) і має багато проблем. Інші мають набагато більше досвіду (на багато), ніж у мене з МТ, але я б сказав, що вони теж пропонують те саме (хоча б вони були більш здібними, ніж я - особливо без практики з мого боку).
Деякі стверджують, що вони не згодні з тим, що потоки не є корисними, а деякі стверджують, що кожен об'єкт повинен мати нитку. Але (і знову це весь текст, але навіть якщо ви вважаєте, що більше однієї теми вам не потрібно - і не слід - розглядати її для кожного об'єкта), як Філіп зазначає, що ігри, як правило, повторюються за списками. Але це не тільки (як він пропонує, хоча я розумію, що він відповідає лише на ваші параметри так мало об'єктів) для такої кількості об'єктів. У MUD Я програміст, оскільки ми маємо наступне (і це не вся діяльність, яка відбувається в режимі реального часу, тому майте це на увазі):
(Кількість екземплярів залежить від курсу - вище та нижче)
Мобілі (NPC, тобто персонаж не гравця): 2614; прототипи: 1360 Об'єкти: 4457; прототипи: 2281 Кімнати: 7983; прототипи: 7983. Кожна кімната зазвичай має власний примірник, але у нас також є динамічні кімнати, тобто кімнати всередині кімнати; або кімнати всередині мобільного, наприклад, шлунок дракона; або кімнати в предметах, наприклад, ви вводите магічний предмет). Майте на увазі, що ці динамічні кімнати існують на об'єкт / кімнату / мобільний телефон, який фактично має їх визначено. Так, це дуже схоже на World of Warcraft (я не граю в нього, але друг змусив мене грати його, коли у мене була машина Windows, якийсь час) уявлення про випадки, за винятком того, що ми мали це задовго до того, як World of Warcraft навіть існував.
Сценарії: 868 (на даний момент) (як не дивно, наша команда статистики не показує, скільки прототипів у нас є, тому я додам це). Все це проводиться в районах / зонах, і у нас їх 103. У нас також є спеціальні процедури, які проводяться в різний час. У нас також є інші події. Тоді ми також підключили розетки. Мобілі рухаються, займаються різними видами діяльності (крім бойових), взаємодіють з гравцями тощо. (Так роблять інші типи утворень).
Як ми впораємося з усім цим без зволікань?
розетки: select (), черги (введення, виведення, події, інші речі), буфери (введення, виведення, інші речі) тощо. Вони опитуються 10 разів на секунду.
символи, предмети, кімнати, бій, все: все в центральному циклі на різних імпульсах.
Ми також (моя реалізація на основі обговорення між засновником / іншим програмістом і мною) мали широкий зв’язаний список відстеження та перевірку валідності покажчиків, і у нас є більш ніж достатньо вільних ресурсів, якщо насправді у цьому є потреба. Все це (за винятком того, що ми розширили світ) існувало багато років тому, коли було менше оперативної пам’яті, потужності процесора, місця на жорсткому диску тощо. У описаних циклах (сценарії викликають це, як область скидання / перенаселення, як і інші речі) створюються, звільняються монстри, предмети (предмети) та інші речі тощо. Зв'язки також приймаються, опитуються та все, що ви очікуєте.