Создание онлайн игр
У меня к вам такие вопросы:
Как вообще работают онлайн игры?
Как происходит нападение ботов?
Как происходит восстановление жизней?
Как происходят бои?
Как обновляются страницы, когда нападают боты или при ударе, когда ожидаешь хода противника?
Как сделать правильный чат? Если сделать рефреш каждые 10 секунд, потянет ли он?
Помогите чем сможете...
Заранее благодарен.
Так что все что вы спросили можно ответить так
1) Так же как и все другие сетевые приложения
2) Автоматически
3) Автоматически
4) Автоматически
5) По сети
6) Взять в руки клавиатуру и написать
Так что все что вы спросили можно ответить так
1) Так же как и все другие сетевые приложения
2) Автоматически
3) Автоматически
4) Автоматически
5) По сети
6) Взять в руки клавиатуру и написать
согласен
Ну я в принципе в теме написал зачем мне это нужно.
Если знаете хоть что нибудь, расскажите по подробнее...
Заранее благодарен.
Так что все что вы спросили можно ответить так
1) Так же как и все другие сетевые приложения
2) Автоматически
3) Автоматически
4) Автоматически
5) По сети
6) Взять в руки клавиатуру и написать
Вы меня убили :eek:
А нельзя ли по подробнее рассказать про всё...
Или вы хотите чтобы вам пересказали все сотни методов и десятки тысяч алгоритмов которые люди разработали за последние 15 лет?
Клиент отправляет серверу действия игрока, сервер их обрабатывает и отправляет обратно результат. Соответственно, имеются две принципиально разных части игры: клиентская и серверная.
Нуууууу, допустим, так: "Если игрок подошёл ближе N условных метров, напасть на него".
что-то типа такого:
if (Distance < MinDistance) Attack(BotID,GamerID);
Допустим, информация о жизнях хранится в базе данных, тогда достаточно изменить значение соответствующей записи в базе. Примерно так:
UPDATE gamers SET HP = OldHP+12 WHERE ID = GamerID
Так, как придумает программист. Простейший вариант - поочерёдные удары, то есть сперва бьёт один из дерущихся, потом другой, потом третий. Сохраняешь для каждого дерущегося ID цели и дальше Attack(GamerID,TargetID). Естественно, функция Attack чисто условная, для примера.
Мы говорим о web-игре или посто о сетевой игре с отдельным клиентом типа кваки? Страницы обновляются, например, по таймеру, каждые 5 секунд. Это простейший вариант.
Правильный = православный? Предлагаю поставить IRC и не париться. И что он там должен потянуть при рефреше в 10 секунд? Пиши сюда размер отдаваемой старницы, ширину канала и количество клиентов, тебе скажут сколько будет грузиться страница на каждом клиенте. Если ты именно это имеешь в виду под "потянет"
__________________________
Имхо, перед нами пионер, который заполнил в каком-нибудь конструкторе сайтов пару форм, посмотрел на результат и теперь, как профессиональный web-девелопер решил писать мегапопулярную игру. А вот конструктор оригинальных мегапопулярных web-игр найти и не смог.
Допустим, информация о жизнях хранится в базе данных, тогда достаточно изменить значение соответствующей записи в базе. Примерно так:
UPDATE gamers SET HP = OldHP+12 WHERE ID = GamerID
Да лааадно, мы ж рассматриваем не жутконагруженный сервер со стотыщмильённой аудиторией.
Сервер игры берет все расчеты на себя и хранит в памяти результаты вычислений.
Узловые точки могут быть разные: загрузка персонажа, истечение определенного периода времени, окончание боя, окончание торговой сделки, перемещение героя по карте. Очень часто их используют несколько сразу.
Однако если мы говорим об игре, серверная часть которой написана на РНР - тут имеются очень серьезные ограничения обойти которые почти невозможно. Также для игр с онлайном больше 100 пользователей (хотя на самом деле мне кажется что их количество все же меньше), то тут уже хостинг не подойдет - нужен выделенный сервер. Потребуется очень тонкая настройка СУБД и веб-сервера. Хотя если речь идет об убогом шлаке вроде БК - тут все проще. Только бой, покупка барахла, чат да расчет показателей персонажей.
Хочется надеяться что подобные игры канули в прошлое.
Ну давайте про восстановление жизней перепишем так: AddHP(GamerID,12) :D
либо разработчик проектирует приложение с масштабируемостью от двух задротов до статыщмильонов геймеров, либо он некомпетентый мудак. как то так ;) ничего личного, естественно