Интересует с помощью каких технологий достигается максимально низкий отклик для многопользовательских игр в веб-браузере? Какую например базу данных использовать? SQLite хороший вариант? В плане языка интересует больше php(хотя, я понимаю он далеко не самый быстрый для cgi), но с удовольствием послушаю другие варианты. И есть какие-нибудь интересные статьи по этому вопросу?
Ответ
Тут не так в БД проблема, для максимально быстрого отклика используются сокеты...
Именно для игр - рекомендую java или nodejs ( сам выбрал бы последнее ибо выиграш в скорости разработки несмотря на "риск" использования новой технологии )
Сам недавно сильно заинтересовался подобными вопросами, одно я понял ( понимал правда и раньше :) ) наверняка - не так важна БД, важен сервер ( всмысле серверный код )...
По поводу php - в этом случае действительно ИМХО мягко говоря не лучший вариант...
UPD
Небольшой пример клиента и сервера с использованием nodejs + socket.io
Логично что для того чтобы все это работало необходимо установить nodejs + скачать socket.io, в этом всем желающим поможет гугл, я же просто приведу пример...
Сервер
/*
* require это подключение, у меня на linux'e установка socket.io происходит
* прямо из дистрибутива, если вы просто скачали библиотеку то надо указать
* к ней полный путь
*/
var io = require('socket.io').listen(8010, '127.0.0.1');
// тут грубо говоря мы пишем - пускай будет веб сокет сервак
// на 8010 порте и c IP 127.0.0.1
// Навешиваем обработчик на подключение клиента
io.sockets.on('connection', function (socket) {
// функция переданная в обработчик инициализирует
// конкретный экземпляр сокета - socket
// теперь мы с ним законно можем работать
// ну и чтобы внести хоть какойто смысл в это все
// сделаем вывод сообщений отправленых клиентом
// в консольку...
socket.on('message', function (msg) {
console.log(msg);
});
socket.on('disconnect', function() {
console.log("User disconnected");
});
});
Клиент
Для начала нам необходимо подключить скрипт которы и будет работать над подключением и разруливание проблем кроссбраузерности, т.е. если браузер поддерживает WebSocket - использоваться будут именно они, если же нет то пробует создать xhr, long puling и т.д. и т.п. Впринцыпе вам не нужно особо вникать что да как, достаточно просто создать подключение...
Делается это так
Думаю тут все понятно...
Ну и наш "основной" скрипт...
var socket; // ну собственно переменная для сокета
var msg=0; // счетчик отправленных серверу сообщений
onload = function() {
socket = io.connect('http://127.0.0.1:8010'); // конектимся
//ну а тут вешаем обработчик на подключение...
socket.on('connect', function () {
setInterval("socket.send('Какоето сообщение - ' + msg); msg++;", 1000);
//ну и с интервалом в секунду кидаем cерверу текст и инкриментим наш счетчик...
});
};
Ну собственно все теперь осталось запустить наш сервер и смотреть результат :)
Как видите все парадоксально просто...
PS: после того как написал первый раз нечто подобное сразу же влюбился в nodejs ^^
PPS: тестил в мазиле, опере, хрониуме, хроме - проблем обнаружено не было, если у браузера нет реализации WebSocket используются пляски с бубном в клиентском скрипте server.io, возможно даже в IE сработало бы (хотя если вопрос об игре, не думаю что тут есть смысл хоть как-то пытаться писать клиента под IE)
UPD2
Вики socket.io
Офф сайт
Кстати читал о событиях и тому подобном не в вики, но тот сайт где я тогда читал навсегда забыт на 10+ страницах гугла :)
PS:сокеты полноценны и позволяют намного большее чем просто отправлять какой-то текст и выводить в консоль, но это, те кому интересно, и так, вскоре, узнают сами :)
Комментариев нет:
Отправить комментарий