|
Как не одеть в один слот две шмотки ?
|
|||
---|---|---|---|
#18+
AndryGХранить мир в памяти это круто. Только я совсем без понятия, как это делается. Гугль мне с лёгкостью выдал http://php.net/manual/en/book.shmop.php Я настолько крут или... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 19:23 |
|
Как не одеть в один слот две шмотки ?
|
|||
---|---|---|---|
#18+
все равно не то ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 20:03 |
|
Как не одеть в один слот две шмотки ?
|
|||
---|---|---|---|
#18+
Дегтярев Евгений> не тот ты инструмент выбрал и коннект тут не самое болезненное Им сменить инструментарий, тем более на незнакомый - это увеличение сроков в 3-4 раза. Пусть лучше лабают. А в версии 2.0 делают по-человечески, если "выстрелит". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 21:44 |
|
Как не одеть в один слот две шмотки ?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, это и есть версия 2,0. Первая стреляет уже несколько лет. автор"Справочник слотов перса" - отсутствует. Если, конечно, разные персонажи (по расе, уникальности, уровню и пр.) не могут иметь разные типы/количества слотов. Если могут - может понадобиться доп.таблица (а может и нет - зависит от). Набор слотов у всех персов одинаков. Может я неверно понял ваши слова про "достаточно номера слота без справочника". Такой вариант возможен лишь если у перса одна голова, одна рука и одна нога - каждого типа слота по одной штуке. У нашего же перса голова одна, но рук две, пальцев несколько и десяток слотов магии - несколько слотов одного типа. Потому выделен справочник слотов с перечислением какие слоты какого типа есть у перса. Код: sql 1. 2. 3. 4. 5.
В справочнике шмоток указывается допустимый тип слота, а в самой шмотке - номер занятого ею слота. авторКак хранить/обрабатывать многослотовые вещи могу дополнительно описать, если нужно, там не рокет-саенс. Уникальность вещь-перс я бы не делал, это глупо. Уникальность вещь-слот для перса делается очевидно (индексом), но даже это не нужно, ибо уникальность должна быть перс-слот, т.е. PersThings.PERS_ID + PersThings.SLOT. Поле thing.slot_id действительно трансформировалось в описываемую вами таблицу с именно таким PK. Само же поле thing.slot_id (синхронизируется триггером) оставил лишь для будущих селектов - сейчас мне видится, что оно будет полезным при выборках, избавит от доп. джойнов с thing_dressed. Может и уберу его. авторПри надевании вещи триггером меняются "текущие" характеристики персонажа, чтобы каждый раз не пересчитывать. До этой части ещё не дошел вплотную. Там мыслей куча, на отдельную ветку хватит) авторне тот ты инструмент выбрал и коннект тут не самое болезненное проблемы, которые ты тут описываешь, быстрее и дешевле решаются именно внутри процесса сервера твоей игры, а какая субд и как там разложены данные дело десятое Лишь любопытства ради , как примерно это выглядит без привязки к языку? Как мне видится. Должен быть некий долгоиграющий процесс, в памяти которого развернут мир игры. Массивы различных оперативных данных вытянуты с БД, развернуты в "языковые" объекты/очереди/массивы, связанны между собой ссылками и т.п. Каждый сеанс юзера - это отдельный поток в этом процессе. Куча потоков одновременно изменяют/рождают/убивают данных в этом огромном месиве данных. Так это происходит? Код напичкан критическими секциями, семафорами и т.д. Утечки памяти становятся не пустым звуком, полный крах при малейшей ошибке. Теневое сохранение в БД. Ужас, летящий на крыльях ночи - такие впечатления рождаются в мозгу, заточенном на "http - протокол без созранения состояния" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2018, 00:30 |
|
Как не одеть в один слот две шмотки ?
|
|||
---|---|---|---|
#18+
AndryGКаждый сеанс юзера - это отдельный поток в этом процессе. Куча потоков одновременно изменяют/рождают/убивают данных в этом огромном месиве данных. Так это происходит? Нет. Один поток изменяет состояние мира, тик за тиком. На каждом тике подключенным пользователям рассылаются уведомления о событиях, произошедших пределах видимости. Так работают real-time игры. У пошаговых всё то же самое, только тики гораздо реже. Push-технологии рулят. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2018, 12:30 |
|
Как не одеть в один слот две шмотки ?
|
|||
---|---|---|---|
#18+
AndryGМожет я неверно понял ваши слова про "достаточно номера слота без справочника". Такой вариант возможен лишь если у перса одна голова, одна рука и одна нога - каждого типа слота по одной штуке. Видимо, неверно поняли, ибо я про уникальность слотов ничего не говорил. Хоть две головы и три руки, как захардкодите. AndryGпальцев несколько и десяток слотов магии - несколько слотов одного типа.Ну, если там 10 пальцев (или 20, вместе с ногами?) и 10 слотов для магии (я с таким ещё не сталкивался - видимо, у вашего геймдиза хороший план) - то, возможно, стоит и отдельную табличку завести. Но опять же, отдельную табличку, а не справочник и FK на него. AndryGПотому выделен справочник слотов с перечислением какие слоты какого типа есть у перса. В чём смысл этого справочника, если "набор слотов у всех персов одинаков"? У всех персов один и тот же набор слотов одних и тех же типов. > В справочнике шмоток указывается допустимый тип слота, > а в самой шмотке - номер занятого ею слота. Я ж говорю - каша в голове и в терминологии. > Само же поле thing.slot_id (синхронизируется триггером) оставил лишь > для будущих селектов - сейчас мне видится, что оно будет полезным при > выборках, избавит от доп. джойнов с thing_dressed. Может и уберу его. Лично я нифига не понял, кто на ком стоял. > > При надевании вещи триггером меняются "текущие" характеристики > > персонажа, чтобы каждый раз не пересчитывать. > До этой части ещё не дошел вплотную. Там мыслей куча, на отдельную ветку хватит) Очень зря. Там всё довольно просто и необъёмно. Есть атрибуты "родные" (которые от рождения и растут с уровнем перса) и есть "текущие", которые равняются "родные" + добавки шмоток + добавки различных статусов/эффектов (если таковые есть) и минус негатив от шмоток и статусов/эффектов (если негативные влияния предусмотрены игрой). Как отображать их - одним числом или двумя числами типа "30 + 10" или "30 - 2" - дело вкуса. Зато триггер упростит и ускорит все селекты. > это и есть версия 2,0. Первая стреляет уже несколько лет. Тихий ужас, что тут скажешь... :) И как, популярна, сколько тысяч активных юзеров? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2018, 14:51 |
|
Как не одеть в один слот две шмотки ?
|
|||
---|---|---|---|
#18+
ГР> Видимо, неверно поняли, ибо я про уникальность слотов ничего не говорил. ГР> Хоть две головы и три руки, как захардкодите. Конечно же "... про уникальность типов слотов ..." Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2018, 14:52 |
|
Как не одеть в один слот две шмотки ?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, мы действительно на разных языках говорим ) Справочник слотов нужен чтобы знать, какие именно слоты есть у персов. Где мне хранить инфу, что слоты 7,8,9 - это пальцы? И одеть в эти слоты можно только кольца и никак не штаны. Слот 11 - это обувь и шлем на ноги не натянуть. В справочнике шмоток я должен как-то указать колпаку, что его можно одеть лишь на голову. Под справочником я понимаю "статическую" таблицу с практически неизменяемыми данными. FK на поле thing_dressed.slot_id сделан чтобы там не указали несуществующий слот. Помогите, пжлст, найти взаимопонимание. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2018, 15:36 |
|
Как не одеть в один слот две шмотки ?
|
|||
---|---|---|---|
#18+
AndryG> Где мне хранить инфу, что слоты 7,8,9 - это пальцы? В коде? Повторяю, если их реально много (10 - не много), и для них нужно хранить/делать ещё что-то дополнительно (например, менять картинки/шкурки) - можно и таблицу завести, в которой будут соотв. поля, но она не будет "справочником" - на неё не будет FK, просто статичная таблица, состав которой меняется только разработчиком. Хотя это вопрос терминологии - статичный справочник, содержимое которого не меняется, тоже можно назвать справочником (наверное). Календарь, "справочник месяцев". > И одеть в эти слоты можно только кольца и никак не штаны. Мы вроде как выше договорились (и в моём варианте, и во всех ваших), что шмотка "знает" куда её можно одеть - у шмотки есть поле slot, в котором указывается, надевается она на голову, руку или палец, и кот. исп. в соотв. фильтрах. Нюансы могут быть лишь для многослотовых шмоток. > Слот 11 - это обувь и шлем на ноги не натянуть. Тем паче, если вы уже выбрали один из способов для многослотовых вещей. > В справочнике шмоток я должен как-то указать колпаку, > что его можно одеть лишь на голову. Тем паче. Укажите ему 1 (или какой там у вас слот для головы). > Под справочником я понимаю "статическую" таблицу с практически > неизменяемыми данными. FK на поле thing_dressed.slot_id сделан > чтобы там не указали несуществующий слот. См. выше, я как раз про это в начале отвечал - а) это не совсем справочник; б) вероятно, это не лучший способ "защиты", если он вообще нужен (он реально нужен? от самих себя?). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2018, 15:59 |
|
Как не одеть в один слот две шмотки ?
|
|||
---|---|---|---|
#18+
>Хотя это вопрос терминологии - статичный справочник, >содержимое которого не меняется, тоже можно назвать >справочником (наверное). Календарь, "справочник месяцев". Ok. Что тут принято считать под "справочник"? А то я так со всеми буду непонятно общаться. >Мы вроде как выше договорились (и в моём варианте, и >во всех ваших), что шмотка "знает" куда её можно одеть - >у шмотки есть поле slot, в котором указывается, надевается >она на голову, руку или палец, и кот. исп. в соотв. фильтрах. >Нюансы могут быть лишь для многослотовых шмоток. Вот тут немного не так. По слотам есть два знания: - в какой тип слота (голова, палец) можно одеть шмотку - это указано в справочнике шмоток (thing_ref.slot_type) - в какой конкретно слот одета конкретная шмотка (третий палец, голова) - это указывается в таблице thing_dressed.slot_id авторСм. выше, я как раз про это в начале отвечал - а) это не совсем справочник; б) вероятно, это не лучший способ "защиты", если он вообще нужен (он реально нужен? от самих себя?). Я полностью согласен, что FK здесь вещь спорная. Сейчас я всю схему укутал FK, чтобы сразу вылазили косяки. После устаканивания структуры пересмотрю их надобность. В общем одевалка заработала и она мне нравится. По поводу мф шмоток и пересчетов триггерами. Перед этим нужно построить сырые данные. И тут я такое намудрил, что уже стесняюсь и спрашивать ) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2018, 16:28 |
|
Как не одеть в один слот две шмотки ?
|
|||
---|---|---|---|
#18+
AndryG> Что тут принято считать под "справочник"? Обычно нечто изменяемое. Справочник клиентов, поставщиков, в вашей игре - персонажей, шмоток. > Вот тут немного не так. По слотам есть два знания: > - в какой тип слота (голова, палец) можно одеть шмотку - > это указано в справочнике шмоток (thing_ref.slot_type) > - в какой конкретно слот одета конкретная шмотка > (третий палец, голова) - это указывается в таблице thing_dressed.slot_id А, понял. Всё равно для этого лишняя таблица не нужна, ИМХО. Отдельного поля хватило бы, если в одном поле не хочется. > По поводу мф шмоток и пересчетов триггерами. Что такое мф? > И тут я такое намудрил, что уже стесняюсь и спрашивать ) Да ладно, валяй. Игры на FB тут редкость. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2018, 17:30 |
|
Как не одеть в один слот две шмотки ?
|
|||
---|---|---|---|
#18+
AndryG Лишь любопытства ради , как примерно это выглядит без привязки к языку? Как мне видится. Должен быть некий долгоиграющий процесс, в памяти которого развернут мир игры. Массивы различных оперативных данных вытянуты с БД, развернуты в "языковые" объекты/очереди/массивы, связанны между собой ссылками и т.п. Каждый сеанс юзера - это отдельный поток в этом процессе. Куча потоков одновременно изменяют/рождают/убивают данных в этом огромном месиве данных. Так это происходит? Код напичкан критическими секциями, семафорами и т.д. Утечки памяти становятся не пустым звуком, полный крах при малейшей ошибке. Теневое сохранение в БД. Ужас, летящий на крыльях ночи - такие впечатления рождаются в мозгу, заточенном на "http - протокол без созранения состояния" :) Да один процесс с данными в памяти По поводу потоков - утверждение про один поток подтвердить/опровергнуть не могу, скажу что точно не надо делать поток на юзера. Сотня другая потоков еще норм, тысяча другая - уже оверхед на их обслуживание. Один поток, как сказал сибиряков, или пул потоков. По поводу примитивов синхронизации и их кол-ва: да это не обработка запроса в php, который "рожден умирать", но и не так уж страшно и дорого (намного дешевле чем запрос в БД). А утечки и падения - как написать )) Про стейтлесс протокола - ты же сейчас сохраняешь состояние в сессии, будет тоже самое только сессии будут уже в памяти. Но я бы смотрел в сторону постоянного коннекта с клиентом, как я понял это браузерка - значит вебсокеты, не надо постоянно полить сервер в ожидании событий, это ближе к реалтайму и и нагрузка меньше. зы Если боишься мютексов и прочего можно посмотреть в сторону nodejs, он однопоточный. Из плюсов это js, а спецы по js в команде должны быть. Еще, как вариант, посмотреть на асинхронные либы для пыха. Судя по отзывам оно работает плюс не надо менять инструмент разработки и, насколько я понимаю, тоже одно поточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2018, 06:59 |
|
|
start [/forum/topic.php?fid=40&gotonew=1&tid=1561122]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
134ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 315ms |
total: | 550ms |
0 / 0 |