Страницы

Поиск по вопросам

суббота, 13 октября 2018 г.

Технологии для онлайн игр с низким временем отклика.

Интересует с помощью каких технологий достигается максимально низкий отклик для многопользовательских игр в веб-браузере? Какую например базу данных использовать? 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:сокеты полноценны и позволяют намного большее чем просто отправлять какой-то текст и выводить в консоль, но это, те кому интересно, и так, вскоре, узнают сами :)

Комментариев нет:

Отправить комментарий