Ну да рандом не нужен. К моменту когда будут использованы последние айдишники - первые уже по любом должны освободиться.
getId = function(id){ return function(){ return (++id[0]).toString(36) } }(new Uint16Array(0))65536 значений)) |
Цитата:
Цитата:
Aetae, да, как вариант. Но не хотел бы использовать какие-то лишние данные - это может в будущем создать проблемы! Значения 1679615, 65536, 9999 - делают код нелогичным, не хотелось бы так делать) |
Цитата:
60 * 60 = 3600 если одна пуля в секунду за час, соответсвенно 360000 если каждый из 100 человек выстрелит в секунду.... это много что ли?)) |
"65536 хватит на всех", ага.)
Ну можно впихнуть Uint32 - 4294967295 то точно хватит, только тут 4мя символами не ограничишься.) Только вот подход с рандом не имеет ни малейшего преимущества перед подобными итераторами. |
С чем связано ограничение по длине id? Скорость доступа к id = a111 меньше, чем к id=a999938? На сколько?
Похоже на экономию на спичках. Видится мне, что тормоза в игре будут связаны с чем-то другим, но не с генерацией id или их длинной. Хотя мне не понятно зачем генерить id, если можно брать их из диапазона? |
Цитата:
Думаю, максимальная длина id не должна превышать 3-х символов! В base 36 3 символа дают 1679616 различный айдишников |
Цитата:
999111 999112 999113 999114 999115 Возьми допустим из этого большого числа 9991 и отправь на сервер как префикс, а потом мелкими пачками посылай 15 16 17 18 19... 99 потом отправляешь новый 9992 и заного 00 01 02 03 04 05 Все будет удобно упорядчено Хотя я кажется упорот |
l-liava-l,
зачем так усложнять? ) Гораздо проще: 999111 .toString(36) // 'lex3' 999112 .toString(36) // 'lex4' 999113 .toString(36) // 'lex5' 999114 .toString(36) // 'lex6' |
Массив пуль, добавляем в конец, берем с конца. Никаких переборов, никакого поиска и рандомной генерации. Пули генерятся в начале боя в массив.
Скорость работы с концом массива не знаю. Стек Увеличиваем стек, увеличивается количество игроков. |
Часовой пояс GMT +3, время: 06:34. |