Описание того, что я пытаюсь сделать
У меня есть ситуация, когда я создал игру в ASP.NET. Сейчас я работаю над добавлением многопользовательской функциональности, чтобы два (или более) игрока могли сражаться одновременно в «реальном времени».
Короче, у меня есть:
- Сервер (веб-сайт ASP.NET)
- Один или несколько посетителей, которые находятся на стороне A
- Один или несколько посетителей, которые находятся на стороне B
Основная функциональность: один игрок использует атаку против другого игрока, у этой атаки время стрельбы (оба игрока могут видеть время до выстрела), а затем через несколько секунд атака запускается.
Прямо сейчас я справляюсь с этим в каждом игроке. У каждого игрока есть список действий. Деятельность может быть:
- стрельба в атаку
- Загрузка атаки равна 0, и атака запускается
- Некоторые модификаторы характеристик: выпить зелье, получить удар, совершить магию, которая изменяет характеристики
Теперь проблема в том, что я хочу добавить многопользовательскую функциональность и добавить ее через базу данных .
- Пожалуйста, НЕТ кометных предложений -
Моя работа пока ...
У меня есть база данных с несколькими таблицами:
- Один за каждый начавшийся бой
- Один с участниками боя
- Один со всеми добавленными действиями
Каждые 750 мс-1000 мс я запускаю два метода:
- GetNewActivities (), который считывает все новые действия из базы данных (с отметкой времени)
- FireCurrentTraces (), который просматривает все текущие трассировки и реагирует на них
Но, конечно, это создает проблемы. Например:
Игрок A запускает атаку на игрока B. Пока идет обратный отсчет таймера огня, у обоих людей есть эта «атака» в их списке ожидающих атак. Когда таймер выключен, игрок A или B его запустит, но в этом случае оба будут его запускать.
Это всего лишь одна из МНОГИХ проблем, которые приведут к УЖАСНОМУ дизайну.
Что приводит к моему последнему вопросу ...
Каков был бы выполнимый способ решить эту проблему? Пожалуйста, ни кометы, ни решений. Мне нужно что-то, что имеет отличную поддержку в ASP.NET и должно быть просто работать с .
Полагаю, какой-то глобальный список видов деятельности мог бы творить чудеса, но как в мире это можно было бы сделать? Кроме того, это может дать некоторые условия гонки с несколькими пользователями?
Спасибо! : -)