«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2018/11/30 08:44:04  №1303503 1
Создание простой пошаговой тайловой игры-рогалика - это хорошая идея для пет-проекта? Или это уже больше по фронту?
Ответы: >>1304936
Аноним 2018/11/30 11:23:12  №1303603 2
Снимок.JPG (18, 869x284)
284x869
подгружаю карточку с бд.
Титл текст и лайки.

вопрос такой. как организовать лайканье без авторизации и регистрации?

Куки наверное? что копать вообще?
Ответы: >>1303611
Аноним 2018/11/30 11:33:05  №1303611 3
>>1303603
цикол, не? при каждом нажатии на лукас в счётчик еденичка капает
Ответы: >>1303613
Аноним 2018/11/30 11:36:31  №1303613 4
>>1303611
окей. капает. в Мysql. А как сделать чтоб один юзер не накликал 100500
Ответы: >>1303618 >>1303666 >>1304936
Аноним 2018/12/02 16:53:39  №1304936 5
>>1303613

Сделать голосование платным.

>>1303503

Это конечно удобнее делать на JS в браузере, так как там ведь надо постоянно хранить в памяти состояние игры. А c PHP будет довольно невыгодно:

- браузер отправляет запрос
- PHP скрипт запускается, загружает откуда-то (файлы, БД) состояние игры
- делает изменения
- сохраняет состояние
- отправляет данные в браузер
- завершается

Заметь, что тут кучу действий надо сделать ради того, чтобы просто передвинуть персонажа, например.

Однако, если ты хочешь, чтобы игра была многопользовательская, то тебе все равно придется хранить состояние на сервере. И сохранять его придется, чтобы при падении сервера достижения бы не терялись. Тогда стоит сделать JS-клиент игры + API на сервере.

Вообще, обычно для игр все же пишут игровые демоны. Это серверная программа, часто на языках вроде Си или Го для максимальной производительности, которая держит состояние игры в памяти. Однако, можно использовать Node.JS или PHP в виде демона, в "неумирающем" режиме на ReactPHP. Её логика работы такая:

- загрузить состояние игры в память
- принять множество соединений от клиентов (браузеров) и ждать прихода сообщений
- по приходу сообщения от клиента (например: передвинуть персонажа), обработать его, изменить состояние игры
- асинхронно запустить отправку клиенту ответа, перейти к ожиданию следующего сообщения
- периодически сохранять изменения в состоянии игры на диск на случай падения/перезапуска демона

Это позволяет получить макс. производительность и макс. число игроков на одном сервере. Традиционный подход с "умирающим" PHP, когда на каждый запрос с клиента запускается скрипи будет в разы медленнее. Естественно, для этого придется осваивать сетевое программирование, придумывать, как сохранять изменения в игре без перегрузки дисковой системы, и тд.

Общее описание разных серверных архитектур: https://gist.github.com/codedokode/ffd520440a970c07c1c6

Для максимальной производительности нужна асинхронная архитектура. Но у нее есть и минусы: код под нее писать сложнее. Тут у языка Го есть преимущество перед другими перечисленными выше: он позволяет писать асинхронный код гораздо проще. Плюс, он автоматически позволяет задействовать несколько ядер процессора.

В общем, если хочешь писать игровой демон по-настоящему, как это делают игровые студии, то тебе нужен асинхронный код. Я готов подсказать по теории, но тебе придется так же много чего изучать.

Если ты не хочешь многопользовательский режим, то пиши просто в браузере на JS, а на сервере сделай только сохранение/загрузку данных игры.
Ответы: >>1305187
Аноним 2018/12/03 03:56:33  №1305173 6
как отключить warning при не-передаче в функцию какого-то параметра? Warning</b>: Missing argument 2 for

php 7

Ответы: >>1305174 >>1305360
Аноним 2018/12/03 03:58:52  №1305175 7
Как пишутся сложные парсеры на php?

Не является проблемой подменить заголовки, реферер, уникальный ип, куки.

Что является проблемой - отследить перечень перенаправлений, модификацию кук в процессе перенаправлений, особенно, если на сайте присутствует много js или не дай бог технологии посложнее/запросов десятки и в каждом необходимо разобраться

Через отладчик фаерфокса проверять передаваемые куки, необходимые хеадеры может быть слишком трудозатратно.

Какие есть средства, позволяющие проанализировать цепочку запросов до получения конечного результата, в идеале сами генерирующие код, либо сильно облегчающие генерацию кода на php? На ум приходят браузерные плагины, но я таких не знаю
Ответы: >>1305360
Аноним 2018/12/03 05:48:02  №1305187 8
>>1304936
Значит плохая идея для пет-проекта по бэку, в фронт углубляться я пока не хочу, учу php пока что по твоим ссылкам.
Ответы: >>1305360
Аноним 2018/12/03 14:01:14  №1305360 9
>>1305187

Видимо, да. Вообще, текстовую игру на PHP можно было бы запускать в консоли в режиме диалога (где она бы работала постоянно), но в Windows сложности с отображением utf-8 в консоли... это впрочем можно решить перекодировкой с помощью http://php.net/manual/ru/book.outcontrol.php

Не хочешь консольную текстовую игру? Я могу подсказать, как можно сделать цветные буковки (гугли последовательности ANSI. Увы, они не работают в нативной консоли до Windows 10, но работают в сторонних эмуляторах терминалов вроде mintty из Cygwin).

Впрочем, это к бекенду мало имеет отношения.

>>1305175

Можно запустить эмулятор браузера, загрузить в нем страницу и найти нужный текст. На нищебродском PHP shared хостинге работать, естественно, не будет.

>>1305173

Не надо так. Надо передавать все требуемые параметры или задать им значения по умолчанию.