ru en de fr pt

Часто задаваемые вопросы

Вопрос: На каком языке программирования написан ваш сервис?

Ответ: Наш сервис использует язык программирования PHP для создания мультиплеера, установки и поддержки TCP соединений. Так же он используется для работы с базой данных Mysql и работы админ панели чей дизайн представлен в виде HTML 4 сгенерированному благодаря шаблонизатору Smarty, стили дизайна фреймворка Bootstrap 3 . Для модальных окон, фоновых запросов со страниц и другой динамики  мы используем простой и понятный javaScript фреймворк Jquery.


Вопрос: Можно ли расширить функционал сервера, добавлять свои игровые механики самому не имея доступа к коду сервиса по той же подписке ?

ОтветДа, для безопасной интеграции пользовательского кода мы используем язык посредник LUA (документация по интеграции)

 

Вопрос: А может ли этот сервер на этом языке работать так же быстро как сервер на С++, C#, NodeJS , Go Lang и тп?

Ответ: Да может! PHP не требователен к ресурсам сервера, обычно работает через HTTP протокол вместе с "посредником" (apache или nginx в режим) в режиме FPM

Наш сервис работает без посредника в режиме CLI (режим интерфейса командной строки, т.е. фактически как обычное приложение фонового режима) и взаимодействует благодаря постоянному соединению TCP между сервером и клиентом (игрой пользователя). Когда php запускается оно превращается в компьютерный код (который 0101010 ...)   и в запущенном состоянии так и висит (так что тут нет особой разницы тк и C# и С++ тк они так же компилируются в машинный код) 

Помимо прочего используются современные библиотеки предкомпиляции в тч JIT компиляция с Opcache (как известно php язык который компилируется каждый раз при обращении к нему выражаясь простыми словами), а так же библиотеки кеширования данных такие как Redis, APCU Cache и прочими...


Вопрос: На С++ есть часть библиотек которые работают быстрее чем в PHP, как вы решите эту проблему?

Ответ: в PHP есть возможность подключить библиотеки C++ и запускать их из под самого PHP. Возможно в будущем мы придем к этому решению


Вопрос: Почему бы сразу не сделать ваш сервис на языке семейства Си и не использовать сколько языков ?

Ответ: Наш сервис это не только сервер с мультиплеером. Это и панели администрирования, что в классическом смысле - сайт, и возможность встраивания языка LUA . Все эти языки созданы благодаря С++ и могут быть дополнены библиотеками на нем. Однако писать сайт на С++ это не самое удачное решение, что же касается части мультиплеера - в идеале ее менять ни нам не пользователям купившим серверную версию не потребуются : возможны обновления для улучшение скорости, но функционал мультиплеера в целом устоявшийся. Все игровые механики пишутся на LUA через админ панель и в целом менять какие то фаилы сервера пользователям которые приобрели серверную версию - нет. Другое дело сайт и админ панель и это как раз удобнее делать на языке PHP

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


Вопрос: Безопасные ли ваш сервис от хакеров которые могут взломать игры?

Ответ: В основном игровые сервера подразделяются на следующие типы:

  1. Сервер маршрутизатор (самый простой и быстрый) - на него отправляют команды игроки, он пересылает их всем остальным (вся проверка ложится на игровой клиент)
  2. Сервер игрок - клиентская часть одного из подключившихся игроков регистрируется как сервер принимает все команды игроков и рассылает оставшийся (проверки внутри игры игрока)
  3. Сервер удаленный (самый медленный) - как вариант 2 но запущена на компьютере администратора игры, чаще всего их арендуют у хостинг провайдеров в интернете 

Как можно догадаться в варианте 1 игрок может узнать куда отправляются и какие команды и их подделать . Во варианте 2 игрок зная что он сервер может так же воспользоваться отправляя поддельные команды и не отправляя ряд команды других игроков (получая преимущество) . Вариант 3 самый безопасный но часто разработчики самих игровых клиентов делают акцент на саму игру а не на мультиплеер и в основном этот вариант требует значительных финансовых затрат что бы в игру играло много человек , сложен в поддержке тк включает в себя еще и игру и так же возможна уязвимость если ее найдут играющие игроки

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

В нашем сервисе имеется возможность делать игры по типу 1 но мы позиционируем себя как сервер в котором можно производить все проверки логики игры , где пользователь шлет лишь краткие команды что он хочет сделать, а результат  - рассчитывает игровая логика написанная нашими пользователями. Да это в какой то степени дублирует функционал который часто закладывают в игровые движки (например поиск пути, столкновения) но мы стремимся создавать базовые механики самостоятельно предоставляя их пользователям бесплатно (с возможностью их изменит). Плюс мы готовимся в выпуску магазина игровых механик где авторы могут выкладывать свои библиотеки на Lua а пользователи нашего сервиса  - добавлять из в свои игры. Клиентская часть игры остается для воспроизведения анимации, музыки и другого контента, работа с графикой, камерой, светом.... В наших панах расширить функционал нашей админ панели и редакторов для добавления и редактирования и этого контента тоже

Новости

Старт продаж наших продуктов и услуг

2023-01-13 01:24:30

Рад сообщить что мы начинаем продавать наши продукты и услуги в частном порядке и оказывать их...

Новая игра на наших продуктах - Metoshi

2023-01-13 01:22:28

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

Анонс - Бесшовный открытый мир

2022-12-28 14:45:12

Рад сообщить, что игровые карты сервиса будут сделаны по типу "открытого мира", где карты и...

Добавление пользовательского кода Java Script

2022-12-15 18:08:27

Рад сообщить что помимо LUA кода на котором можно писать игровые механики на языке Java Script...

Добавление NPC через LUA код

2022-12-03 21:18:52

Появился видео пример как добавить на карту NPC через код LUA . Эта и другие механики доступны в...

LUA код при входе в игру и добавлении объектов

2022-11-24 18:58:07

Появилась возможность добавить LUA код выполняющийся при добавлении в игру новых игроков, npc,...

Образцы демонстрационных карт и игра The Mana World

2022-11-19 19:33:18

Для тестирования карт и функционала будут использоваться карты из игры с открытом исходным кодом...

Первые результаты интеграция LUA кода

2022-11-19 19:22:16

Рад сообщить что эксперименты по интеграции возможности вносить свой LUA кода в сервер прошли...

Система рассчета PING теперь и в WebGl и новые фичи

2022-11-09 18:47:58

Теперь ping персонажа можно отслеживать и в браузерной версии игры (webgl), так же введена...

Сервер стал быстрее на 80% - асинхронная работа с бд

2022-11-09 18:45:16

Рад сообщить что теперь сохранение игрока (раз в интервал и при выходе) не блокирует сервер как...

Нагрузочное тестирование

2022-11-06 03:48:38

Хочу показать вам результаты нагрузочного тестирования: ·...

Новая механика - ходящие NPC

2022-11-06 03:46:11

Хочу продемонстрировать вам новую игровую механику - блуждание персонажей под управлением...

Ускорение клиентской части

2022-11-06 03:40:28

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

Онлайн редактор карт на WEB

2022-07-18 19:24:29

Ведется разработка web версии редактора карт для 2D.  Конечно, такие вещи уже...

Промежуточные замеры скорости

2022-07-07 17:25:51

Произведены промежуточные замеры скорости (1 секунда = 1000 мс) Данные приведены для сервера с...

Добавление пользовательского LUA кода

2022-07-02 22:40:24

Начата разработка добавления пользовательский скриптов которые можно вешать на объекты. Тем самым...

Все новости

Статьи


  • Создание онлайн сервера для мобильных многопользовательских, realtime 2D игр (жанра RPG и стратегии) с API на PHP ч. 6

    Правительство РФ анонсировало выделение до $50 млрд для выхода РФ в топ-20 стран—разработчиков Игр к 2030 году. Возможно в скором времени разрабатываемый мной сервис наконец увидит свет.

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

    Читать далее


  • Создание онлайн сервера для мобильных многопользовательских, realtime 2D игр (жанра RPG и стратегии) с API на PHP ч. 5

    Продолжая серию статей про разработку сервера для онлайн игр (адрес проекта http://my-fantasy.ru) на языке PHP в это части я хочу рассказать про безопасное добавления пользовательского кода для добавления функционала игровых механик. В статье я опишу существующие решения для PHP , сравню скорость работы приведу видео примеры.

    Для тестов будет использовано следующее железо:

    Читать далее


  • Создание онлайн сервера для мобильных многопользовательских, realtime 2D игр (жанра RPG и стратегии) с API на PHP ч. 4

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

    Читать далее


  • Создание онлайн сервера для мобильных многопользовательских, realtime 2D игр (жанра RPG и стратегии) с API на PHP ч. 3

    В 3й части статей я расскажу простым языком про протоколы передачи данных, как они работают и что такое Websocket сервер и какие есть решения для его создания на PHP

    Читать далее


  • Создание онлайн сервера для мобильных многопользовательских, realtime 2D игр (жанра RPG и стратегии) с API на PHP ч. 2

    В этой части будут рассмотрены проблемы с которыми предстоит столкнуться разработчику сервера для онлайн игр

    Для тех кто еще не успел ознакомится с первой частью рублике рекомендую прочитать первую статью где я рассказываю о самой идеи API сервиса.

    Читать далее


  • Создание онлайн сервера для мобильных многопользовательских, realtime 2D игр (жанра RPG и стратегии) с API на PHP ч. 1

    Привет, Хабр! Мой первый пост и я хочу поделиться с вами своей идеей создание сервиса предоставляющего разработчикам игр и студиям платформу для создания онлайн игр! Поехали!

    Читать далее