Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Универсальный короткий id (https://javascript.ru/forum/offtopic/48001-universalnyjj-korotkijj-id.html)

Aetae 16.06.2014 00:44

Ну да рандом не нужен. К моменту когда будут использованы последние айдишники - первые уже по любом должны освободиться.
getId = function(id){
    return function(){
        return (++id[0]).toString(36)
    }
}(new Uint16Array(0))
65536 значений))

dmitry111 16.06.2014 01:48

Цитата:

Сообщение от Poznakomlus
php spl_object_hash

у меня node.js

Цитата:

Сообщение от l-liava-l
нафига какое то ограничение? закончилась сессия обнулил, и усе

а если сессия будет полчаса))

Aetae,
да, как вариант.


Но не хотел бы использовать какие-то лишние данные - это может в будущем создать проблемы! Значения 1679615, 65536, 9999 - делают код нелогичным, не хотелось бы так делать)

l-liava-l 16.06.2014 01:54

Цитата:

а если сессия будет полчаса))
Тебе же понравилась дата)) там большие числа

60 * 60 = 3600 если одна пуля в секунду за час, соответсвенно 360000 если каждый из 100 человек выстрелит в секунду.... это много что ли?))

Aetae 16.06.2014 01:57

"65536 хватит на всех", ага.)
Ну можно впихнуть Uint32 - 4294967295 то точно хватит, только тут 4мя символами не ограничишься.)
Только вот подход с рандом не имеет ни малейшего преимущества перед подобными итераторами.

Gozar 16.06.2014 10:02

С чем связано ограничение по длине id? Скорость доступа к id = a111 меньше, чем к id=a999938? На сколько?

Похоже на экономию на спичках. Видится мне, что тормоза в игре будут связаны с чем-то другим, но не с генерацией id или их длинной. Хотя мне не понятно зачем генерить id, если можно брать их из диапазона?

dmitry111 16.06.2014 16:11

Цитата:

Сообщение от Gozar
С чем связано ограничение по длине id? Скорость доступа к id = a111 меньше, чем к id=a999938? На сколько?

Это связано с весом данных, которые передаются по сети.
Думаю, максимальная длина id не должна превышать 3-х символов!

В base 36 3 символа дают 1679616 различный айдишников

l-liava-l 16.06.2014 16:28

Цитата:

Это связано с весом данных, которые передаются по сети.
Думаю, максимальная длина id не должна превышать 3-х символов!
а юзать точно так же итерацию. например есть idшки:
999111
999112
999113
999114
999115

Возьми допустим из этого большого числа 9991 и отправь на сервер как префикс,
а потом мелкими пачками посылай
15 16 17 18 19... 99
потом отправляешь новый 9992 и заного
00 01 02 03 04 05
Все будет удобно упорядчено

Хотя я кажется упорот

dmitry111 16.06.2014 17:11

l-liava-l,

зачем так усложнять? )

Гораздо проще:

999111 .toString(36) // 'lex3'
999112 .toString(36) // 'lex4'
999113 .toString(36) // 'lex5'
999114 .toString(36) // 'lex6'

Gozar 16.06.2014 17:15

Массив пуль, добавляем в конец, берем с конца. Никаких переборов, никакого поиска и рандомной генерации. Пули генерятся в начале боя в массив.

Скорость работы с концом массива не знаю. Стек
Увеличиваем стек, увеличивается количество игроков.


Часовой пояс GMT +3, время: 06:34.