Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2015, 13:36   #1
vaultboy2010
 
Регистрация: 01.10.2011
Сообщений: 5
По умолчанию Бой похожий на бойцовский клуб

Доброго времени уважаемые форумчане.
Не так давно меня забила ностальгия по играм в стиле БК, территории онлайн и Смутных времён. Стал с друзьями вспоминать и понял, что меня заинтересовала реализация подобных игр. Начал я как и другие проекты с листа бумаги и ручки и неожидано для себя понял, что я понятия не имею как строится бой.
Меня по большому счёту интересует как организовать структуру таблицы в БД. У меня была следующая идея: создать таблицу battle_room (название условное) с полями room_id, player_id, team, current_hp, block, hit.

Идея была в следующем когда игрок создаёт заявку на бой генерируется room_id, который присваивается всем игрокам принявшим его заявку, при каждом ходе данные игроков прописываются в БД и во тут я задумался что такая структура подойдёт для поединков 1 на 1, так как в поле block и hit будет записываться положение куда я наношу удар и где блокирую, а в массовых замесах таких положений должно быть множество, так как для каждого противника нужно записать отдельно положение блока и удара.

Вот я и думаю как это реализовать, если кто знает подскажите пожалуйста.
vaultboy2010 вне форума Ответить с цитированием
Старый 28.10.2015, 07:48   #2
vaultboy2010
 
Регистрация: 01.10.2011
Сообщений: 5
По умолчанию

ясно, судя по всему тут ни кто советом помочь не сможет. Ну или не хочет...
vaultboy2010 вне форума Ответить с цитированием
Старый 28.10.2015, 11:13   #3
Greek9000
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 151
По умолчанию

Как вариант:

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

Таблица ударов (hits)
дата_время
ид_поединка
ид_хода
ид_атакующего
ид_атакуемого
куда_атакует
что_блокирует
сила_атаки
сила_контратаки (если есть необходимость)

Таблица результатов хода
ид_хода
ид_персонажа (не путать с игроком)
очки_HP_на_начало_хода
очки_HP_на_конец хода

Тут не учтены тонкости, типа блокировок против всех сразу и т.п., только общий подход (собрать удары и пересчитать ход)
Greek9000 вне форума Ответить с цитированием
Старый 28.10.2015, 21:21   #4
vaultboy2010
 
Регистрация: 01.10.2011
Сообщений: 5
По умолчанию

2 Greek9000. Была у меня уже похожая идея, но я просто прикинул что для боя 10х10 в такой таблице будет 100 записей если сделать такую же таблицу для блоков то то и в ней будет примерно такое же количество записей. Отказался от данной идеи потому что решил что такое количество обращений вызовет большую нагрузку на сервер.
Если я не прав поправьте меня.
vaultboy2010 вне форума Ответить с цитированием
Старый 29.10.2015, 11:19   #5
Greek9000
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 151
По умолчанию

На самом деле для боя 10х10 в этой таблице будет 100 х [кол-во ходов] записей. Но это не критично. Теоретически, можно все записи одного хода поместить в таблицу за 1 обращение, и при этом за весь бой вообще ни разу не обратиться к базе с целью извлечения данных.

Но даже если всю логику игры оформить в виде SQL-запросов, то и тогда это не будет проблемой для проекта с нагузкой меньше 100-200 игроков онлайн.
Greek9000 вне форума Ответить с цитированием
Старый 29.10.2015, 15:46   #6
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,378
По умолчанию

vaultboy2010
а) можно не создавать для каждого удара отдельную строку в таблице. Можно записывать весь бой в одно поле таблицы массивом(ну то есть массивом, приведенным к строке). А при необходимости брать это поле и парсить в адекватные данные
б) а можно просто задуматься, так ли необходимо записывать бои в БД с такими подробностями. Я не помню уже, как в БК было, но если сама игра не предполагает того, что кому-то из игроков надо выдавать полный отчет боя "кто кого когда и на сколько ударил", то бой можно просто проводить на сервере в оперативке.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фитнес клуб Cremator186 Фриланс 4 15.01.2015 20:06
Помогите найти похожий слайдер!!! Abay19941308 WordPress и другие CMS 0 05.10.2014 10:11
Нужен похожий шаблон sea_dream WordPress и другие CMS 2 02.02.2013 07:09
Demiart и Клуб программистов Vol666 Свободное общение 6 07.10.2009 00:45