Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
102 / 93 / 36
Регистрация: 01.04.2013
Сообщений: 654

Создание игры для 2-х человек

17.04.2016, 11:08. Показов 3833. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как можно создать ВЕБ-игру, в которую смогут играть одновременно 2 человека с разных компов? Думаю, что делать постоянно аякс запросы будет слишком накладно.

Добавлено через 7 минут
Нашёл тут статью про long polling механизм. Правда статья 4 летней давности. Может уже не актуально?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.04.2016, 11:08
Ответы с готовыми решениями:

Для N человек с заданной датой рождения вывести сообщение, в какой декаде родился человек
Создайте структуру Дата с элементами День, Месяц, Год. Для N человек с заданной датой рождения вывести сообщение, в какой декаде родился...

Создание скрипта для игры
Всем привет! Появилось желание написать скрипт для клиентской игры для получения "ежедневного бонуса". Все, что необходимо- это...

Создание игры для детей
Здравствуйте обитатели форума. Теперь к делу. Есть у меня весь графический материал для игры, а именно картинки: естественно они все...

22
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
17.04.2016, 11:27
Цитата Сообщение от Firework Посмотреть сообщение
делать постоянно аякс запросы будет слишком накладно
Может да, а может и нет. Тут нужно учитывать как минимум два фактора: периодичность запросов и какую нагрузку дает сценарий серверной части. Но на мой личный взгляд, для таких приложений, лучше использовать что-то вроде NodeJS + Socket.io. Вот статейка, которая описывает примерный механизм.
1
102 / 93 / 36
Регистрация: 01.04.2013
Сообщений: 654
17.04.2016, 11:51  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
лучше использовать что-то вроде NodeJS + Socket.io
Про NodeJS знаю, но я его слабо освоил. Мне привычнее PHP + клиент JS. Поэтому хотел бы услышать ещё варианты.

Добавлено через 1 минуту
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Может да, а может и нет. Тут нужно учитывать как минимум два фактора: периодичность запросов и какую нагрузку дает сценарий серверной части.
Если игра будет в реальном времени, а не пошаговая, то, думаю, запросы надо будет делать очень часто.
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
17.04.2016, 12:02
Цитата Сообщение от Firework Посмотреть сообщение
PHP + клиент JS ... ещё варианты
А вариантов, в таком случае, у вас не так уж и много. Если не Ajax, то WebSocket. Вот эта статья поможет вникнуть в суть вопроса. Для коллекции, можете использовать готовые решения для PHP
1
102 / 93 / 36
Регистрация: 01.04.2013
Сообщений: 654
04.05.2016, 09:20  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
использовать готовые решения для PHP
Ссылка битая.

А как лучше сделать, когда несколько игр? Допустим 5 игр по 10 человек в каждой. Всё обрабатывать одним сокетом или на каждую игру надо создавать отдельный сокет?
0
 Аватар для php10
146 / 105 / 44
Регистрация: 30.04.2016
Сообщений: 550
04.05.2016, 09:38
long polling актуально до сих пор, его активно VK API использует. Но делать игру с сокетами на PHP это из разряда мазохизма. Прочитайте про Node.js все таки. Ничего сложного там нет, чтобы вникнуть 2-3 дня с головой.

Тем более там есть такое проверенное решение, как socket.io, у вас разработка игр станет в разы проще.
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
04.05.2016, 09:51
Цитата Сообщение от Firework Посмотреть сообщение
Ссылка битая.
Да, странно... Но в принципе, по запросу в поисковике а ля "websocket php library", найдете достаточно решений, как, например, одна из самых популярных библиотек "Ratchet"
0
102 / 93 / 36
Регистрация: 01.04.2013
Сообщений: 654
04.05.2016, 10:11  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
одна из самых популярных библиотек "Ratchet"
С этой библиотекой повозился, что-то не получилось.
А без библиотек стоит размножать сокеты?
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
04.05.2016, 14:09
Цитата Сообщение от Firework Посмотреть сообщение
стоит размножать сокеты?
Я такую формулировка не понимаю. Сокеты же не кролики, чтоб их размножать.
0
102 / 93 / 36
Регистрация: 01.04.2013
Сообщений: 654
04.05.2016, 18:54  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Я такую формулировка не понимаю. Сокеты же не кролики, чтоб их размножать.
Я к тому, что несложную игру я с помощью сокетов создал. 2 человека могут играть с разных компов в реальном времени.

Даже если взять пример со статьи Хабра
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$connects = array();
while (true) {
    //формируем массив прослушиваемых сокетов:
    $read = $connects;
    $read[] = $socket;
    $write = $except = null;
    
    if (!stream_select($read, $write, $except, null)) {//ожидаем сокеты доступные для чтения (без таймаута)
        break;
    }
 
    if (in_array($socket, $read)) {//есть новое соединение
        $connect = stream_socket_accept($socket, -1);//принимаем новое соединение
        $connects[] = $connect;//добавляем его в список необходимых для обработки
        unset($read[ array_search($socket, $read) ]);
    }
 
    foreach($read as $connect) {//обрабатываем все соединения
        ...обрабатываем $connect
        unset($connects[ array_search($connect, $connects) ]);
    }
}
Там все подключения обрабатываются в одном цикле. Как я и говорил, что если будет 50 игр по 10 человек, то обработка всего в одном цикле не будет тормозить?
Может надо как-то создавать на каждую игру свой поток со своим сокетом? Или ещё как-то?
0
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
05.05.2016, 01:17
Вот этот свежий курс сейчас изучаю (здесь Node.js + socket.io + Unity) Unity Multiplayer Game Development with Node | Pluralsight
0
 Аватар для php10
146 / 105 / 44
Регистрация: 30.04.2016
Сообщений: 550
05.05.2016, 08:23
Firework, вы упорно пытаетесь написать на PHP то, для чего он еще пока не предназначен. Возможно в php 10 будет полноценный рантайм, но сейчас этого нет. Оставлять скрипт постоянно работающим тоже не лучшая идея. У вас все равно клиент будет на JS написан, так что вы теряете?

Вот подробный пример, как написать чат на сокетах с NodeJS & Socket.io:
http://socket.io/get-started/chat/

Проще некуда. А чат от игры не отличается, сокеты там одни и те же. Зато будет понятен механизм.
1
54 / 24 / 5
Регистрация: 21.02.2016
Сообщений: 234
07.05.2016, 05:01
я сделал шахматы онлайн на php ,одна из страниц обновляется на ajax - 4 секунды,проблем не будет если подключится 50 игроков
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<div id="panec"></div>
    
 
<script>
        function show()
        {
            $.ajax({
                url: "shess_x.php",
                cache: false,
                success: function(html){
                    $("#panec").html(html);
                }
            });
        }
    
        $(document).ready(function(){
            show();
            setInterval('show()',1000*3);
        });
    </script>
1
102 / 93 / 36
Регистрация: 01.04.2013
Сообщений: 654
08.05.2016, 10:29  [ТС]
Цитата Сообщение от Detektor Посмотреть сообщение
я сделал шахматы онлайн на php ,одна из страниц обновляется на ajax - 4 секунды,проблем не будет если подключится 50 игроков
Спасибо за пример. Но у меня игра не пошаговая. Там в одну секунду будет несколько действий от каждого игрока. Такой вариант не пойдёт.
0
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
08.05.2016, 11:40
Firework, почему вы отмели вариант socket.io + Node.js?
0
17 / 17 / 8
Регистрация: 16.01.2016
Сообщений: 55
08.05.2016, 12:06
Некоторое время назад тоже интересовался этим. Отсюда можно взять php-демона с обработкой веб-сокетов (с хабра основа). https://github.com/mixail9/packmen/ Однако, как тут несколько раз написали, лучше использовать node.js
0
102 / 93 / 36
Регистрация: 01.04.2013
Сообщений: 654
09.05.2016, 19:35  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Firework, почему вы отмели вариант socket.io + Node.js?
Мне привычнее связка php + клиентский js.
И наверно, если буду заливать на хостинг свою игру, то вроде как node.js есть не везде.

Хотя возможно в будущем если будет популярность, то перепишу серверную часть на node.js
0
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
09.05.2016, 20:02
Цитата Сообщение от Firework Посмотреть сообщение
вроде как node.js есть не везде
На всякий случай, из того что пробовал это бесплатные хостинги www.openshift.com, www.heroku.com и бесплатный на 1 год: www.aws.amazon.com
1
102 / 93 / 36
Регистрация: 01.04.2013
Сообщений: 654
09.05.2016, 20:11  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
На всякий случай, из того что пробовал это бесплатные хостинги www.openshift.com, www.heroku.com и бесплатный на 1 год: www.aws.amazon.com
Они бесплатные без подвоха? Просто не понятно для чего делать бесплатный хостинг. node там есть?
0
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
09.05.2016, 20:18
Цитата Сообщение от Firework Посмотреть сообщение
Они бесплатные без подвоха?
На одном можно создать только три приложения, а на другом только пять штук. У них на сайтах есть где-то таблички, где перечислены ограничения

Цитата Сообщение от Firework Посмотреть сообщение
node там есть?
Я поэтому и посоветовал, что node там есть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.05.2016, 20:18
Помогаю со студенческими работами здесь

Создание игры для детей
Здравствуйте обитатели форума. Теперь к делу. Есть у меня весь графический материал для игры, а именно картинки: естественно они все...

Создание логотипа для игры
Здравствуйте все, с прошедшими! Подскажите в каком формате и каких размеров должен создаватса логотип для игры? В данном случае фотошоп5

Создание бота для игры
Появилась задача создать бота, в игре 1 vs 1 fight стиле . Бот должен быть достаточно простым, но должен различать, где мы на карте и...

Создание мультиплеера для игры
Привет, программисты! :) Хотел бы узнать, что нужно изучать, чтобы написать мультиплеер к игре GTA San Andreas? Боюсь, что пойду не по...

Создание мода для игры
Требуется помощь в создании мода для игры из чистого альтруизма) Приветствую всех,кто заглянул)) Мне нравится игра Supreme Commander...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru