|
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
uint идентификаторы
Решил выйти на новый уровень и попробовать отказаться от строковых идентификаторов там, где это возможно. В частности, делать все игровые предметы на uint-идентификаторах. Пока получается как-то тяжко. Бог с ним, что теперь в консоли появляются абсолютно не информативные сообщения типа "Надеваем предмет ID 114576", можно и к Модели языковой пакет прикрутить и название на русском сразу подцеплять, не велика беда.
Главная проблема - обеспечить уникальность этих самых идентификаторов. А когда они ещё и записаны в шестнадцатиричном представлении, то даже визуально их сопоставлять тяжко. Пока выкрутился так. Нажимаю Ctrl+K, открываю палитру. Для первого элемента беру какой-нибудь цвет типа RGB 175:175:175. А для каждого следующего увеличиваю яркость с шагом 5 и получаю новое uint-значение. Но это, по-моему, порнография. Что посоветуете? Спасибо.
__________________
Не сломано - не чини! |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
делать как в java: первый айдишник 0,второй 1 и т.д.
|
|
|||||
Скачай консоль для проекта, очень удобная. Можно даже в рантайме произвольный код выполнять, функций дёргать, смотреть состояние объектов. Ещё у флеша есть дебаггер с полноценными точками останова, незаменимая вещь. Так, прост, вдруг ты ещё не использовал.
пс. Айдишник должен быть уникальным, а не красивым и понятным человеку! Начинай нумерацию с 1, зачем такие сложности. Ноль лучше не юзать, может пригодиться, например, для обозначения отсутствия сущности (null).
__________________
Дети не должны знать о своих родителях |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Цитата:
Пока надумал наваять статический класс-генератор, который наплодит uint-ов по порядку, забьёт всё в массив и будет по одному выдавать. И всё.
__________________
Не сломано - не чини! |
|
|||||
А мне 16x числа напоминают дизайнеров. Они цвета в нём обычно хранят. Смотришь на какой нибудь 0xFF0000 и сразу видишь
__________________
Дети не должны знать о своих родителях |
|
|||||
Оооо, дааа, верю. Я тоже так раньше программировал. Чтобы выглядело круто и сложно и, желательно, никому не понятно. Боже, сколько же от этого было проблем! Сейчас наоборот, стремлюсь, чтобы код был предельно прост и как можно более примитивен. Не чураюсь дописать лишнюю функцию в угоду понятности, по пол часа думаю над названиями переменных и т.п. Сильно проще стало жить.
__________________
while(live()) { hope(); } |
|
|||||
Я вот как-то не верю, что там такое количество инвентаря, что аж строковых констант не хватит.
Я бы не рекомендовал использовать никакие uint идентификаторы и уж тем более автогенератор айдишников. Ты потом задолбишься это отлаживать, если что-то пойдет не так, особенно если это еще и в базу пишется, которую потом потребуется рефакторить. Делай всегда так, чтобы ты сразу мог понять что происходит. Вот есть у тебя, допустим, плащ, который добавляет 50% защиты, и другой плащ, дающий 100% защиты. Называешь их cloak_50 и cloak_100 соответственно. Можешь туда и какие-то другие параметры добавить. Если у тебя есть 2 плаща, которые дают 50% защиты, но отличаются цветом, то можешь написать так cloak_50_green / cloak_50_red и т.п.
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Старый анекдот:
- Мальчик, ты пионер? - (гордо) Да! - Да?! - (испуганно) Н-нет... - Нет?!!! - (в истерике) Ну я не зна-а-а-ю! Вот так же и с идентификаторами. В соседних ветках меня всей ватагой застыдили, вот типа от Tails: Цитата:
__________________
Не сломано - не чини! |
|
|||||
Надо понимать где строки тормознутые, а где нет. Если у тебя что-то там со строками делается миллион раз за кадр, то да, лучше числа считать. А для идентификаторов "тормознутость" вообще не имеет значения, зато в отладке числа - это полнейший геморой. Да ты уже и сам это понял, судя по началу темы
А автогенератор использовать нельзя потому что при добавлении чего-то не в конец списка, все айдишники пересчитаются и получится каша. Допустим у игрока был меч с одним айди, а перед ним был молот с другим айди. Айдишники пересчитаются, и окажется, что у игрока уже молот, вместо меча, к примеру.
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Цитата:
Цитата:
__________________
Не сломано - не чини! |
Часовой пояс GMT +4, время: 03:40. |
|
« Предыдущая тема | Следующая тема » |
|
|