Среда, 27 Ноября 2024, 08:17

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Правильное проектирование БД для боёв в браузерке
InsaneДата: Суббота, 24 Марта 2012, 18:50 | Сообщение # 1
был не раз
Сейчас нет на сайте
Доброе время суток !
Собственно вопрос в следующем ... для проведения боёв (БК-подобные) создаём таблицу в БД, куда заносим результаты ударов, выводим их же в лог боя и т.д. и т.п. ... Всё это понятно и не вызывает проблем, пока бой не окончен. Далее надо сделать расчёт получаемого опыта ... и вот тут возникает вопрос, если бой просто дуэль, то никаких проблем ... берём КБО (коэффициент базового опыта), нанесённый урон и считаем ... но вот если бой групповой, в котором принимают участие персонажи разных уровней, получается надо как-то сохранять отдельно кто и по кому нанёс сколько урона, что в свою очередь вызывает затруднение (по крайней мере у меня) с созданием этой самой таблицы в БД. sad
В общем кто занимался написанием сей гадости, поделитесь опытом и идеями по этому поводу. smile
За ранее благодарен.

P.S.: Надеюсь понятно объяснил, суть вопроса smile
ElDarcoДата: Воскресенье, 25 Марта 2012, 02:22 | Сообщение # 2
почетный гость
Сейчас нет на сайте
А что тут трудное? Просто храни в БД вместе со своими результатами ударов - урон.
Ну и выписывай. Выбирай из бд текущий бой, текущего юзера, и плюсуй все значения ячеек.
Вот как то так
AssasinДата: Воскресенье, 25 Марта 2012, 16:08 | Сообщение # 3
web-coder
Сейчас нет на сайте
записывай так
group1 логин1|логин2|логин3
group2 логин1|логин2|логин3
damage_group1 123|345|321
damage_group2 873|367|1
Master_ChiefДата: Воскресенье, 25 Марта 2012, 17:02 | Сообщение # 4
Shoot Space creator
Сейчас нет на сайте
а лучше использовать такую таблицу:

id // INT(255) PRIMARY_KEY, AUTO_INCREMENT - id записи
player // INT(255) - id текущего игрока
opponent // INT(255) - id игрока, который нанёс урон
damage // INT(2) - количество нанесённого урона

почему для damage размер всего 2? потому что, как я понимаю, нанести хп-урон в 100% с первого удара нельзя, и максимальный порядок соответственно 2

и значения (примерные):

0 15 10 13
1 10 15 26
2 15 25 18
3 25 10 5
4 25 15 60
5 10 25 54

и производить запись при каждом ударе. Да, будет накладно, но зато это более-менее универсальная структура.




Сообщение отредактировал Master_Chief - Воскресенье, 25 Марта 2012, 19:04
a112Дата: Понедельник, 26 Марта 2012, 01:42 | Сообщение # 5
участник
Сейчас нет на сайте
первое что пришло в голову:
добавить в таблицу с юзерами 1 поле - счётчик урона. В процессе боя прибавляем туда нанесённый урон, а в конце боя высчитываем опыт и обнуляем счётчик урона - это самое простое решение имхо.


топ браузерных игр
InsaneДата: Понедельник, 26 Марта 2012, 22:22 | Сообщение # 6
был не раз
Сейчас нет на сайте
Assasin, a112

Плюсовать сразу весь урон не совсем хорошо. Так как к примеру в бою принимают участие персонажи 1,2,3 уровня ... Персонаж 2-го уровня за урон по 3-ке должен получить больше опыта, чем по персу 2-го лвла и так же за урон по 1 уровню меньше. Значит результат каждого удара надо хранить отдельно и уже в конце считать по кому и сколько было урона.

Quote (Master_Chief)
как я понимаю, нанести хп-урон в 100% с первого удара нельзя

Ну, почему же нельзя .. пример фульный перс старшего уровня против голого )) ... но не в этом суть )

Master_Chief
К такой таблице тогда уже надо ещё добавить id боя ... да и вообще слегка её подправить, но как вариант вроде норм ) .. спасибо.
Master_ChiefДата: Среда, 28 Марта 2012, 03:06 | Сообщение # 7
Shoot Space creator
Сейчас нет на сайте
Insane, да, ид боя не помешал бы biggrin остальное вроде поправлять не нужно.. все поля целочисленные - на диске меньше будет места занимать, после боя можно сразу же очищать, дабы не громоздился мусор.. или спустя какое-то время очищать

InsaneДата: Среда, 28 Марта 2012, 20:06 | Сообщение # 8
был не раз
Сейчас нет на сайте
Quote (Master_Chief)
после боя можно сразу же очищать, дабы не громоздился мусор

если сразу чистить, то историю боёв нельзя будет посмотреть ... что не очень хорошо ) .. Хотя, как вариант можно просто
выносить лог боя в отдельный txt файл )
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг