Для создания любого продукта первым встает выбора скелета проекта на котором он будет работать (фреймворк)
Он должен отвечать требованиям по скорости работы, простоты работы с ним программистами и функциональными возможностями. В настоящее время популярность набирают исключительно западные продукты созданные командами , имеющие многие зависимости от сторонних библиотек и , как это часто бывает, из за обще направленности чрезмерно сложные , обладающим функционалом который может никогда не пригодится
Данный проект - Российский и сделан с уклоном на простоту работы с ним, с минимальным набором зависимостей от других библиотек учитывая опыт работы с западными системами. На данном проекте сделан этот сайт с его сервисами и проекты которые на нем опубликованы
В настоящее время на данном фреймворке ведется разработка проекта для внесения онлайн в игры - подробнее имеется пример ранней версии в github
1 Легкий в освоении (фреймворк состоит из ряда фаилов в папке core/) 2 Архитектура основана на сервисах (независимые приложения в папке app/) легко переводимые на микросервисы (расположенные физически на разных серверах) 3 MVC (разделение кода и представления) паттерн 4 Передерживание принципа SOLID 5 Cледование стандартам PSR 6 Современные шаблоны проектирования (фабрика, синглтон, декоратор, адаптер и тп) 7 Скорость работы (нагрузочное тестирование показало в x30 более быстрый результат чем на фреймворках Symfony/Laravel) 8 Свой собственная ORM/DBAL (гибридный принцип Database First и Object First основанный не на аннотациях классов, а на ключах БД и именовании полей), есть плагин для работы с XML 9 При разработке используются практики современных фреймворков (Symphone, Laravel, Yii) 10 Минимум зависимостей: проект использует лишь то, что реально нужно (легко отслеживать просадки в скорости, потребление памяти, особенно в CLI режиме с многопоточными приложениями) 11 Для администрирования игрового мира используется веб сервис (Аналог CMS для сайтов и CRM для взаимодействия с пользователями)
app/ - список доступных приложений (уже стоять основные) .... config/ - содержит фаил int.php с доступами к бд а так же cli-config.php для работы через консоль с Doctrine controller/ - контроллер содержащий методы (action), работа с шаблонизатором доступна через $this->view, а с GET, POST данными через $this->"название переменной", наследуются от выбранного папки /core/Controller entity/ - сущности что наследуются от core/Loader.php (во многом заменят обращение к моделям из папки ./model) model/ - модели приложения (одноименно с названием контроллера подгружаются автоматически и доступны в контроллера через $this->model) наследуются от core/Model.php templates/ - персональные шаблоны дизайна сервиса html (используется шаблонизатор Smarty) и оригиналы CSS, JS и изображения дизайна label.png - изображение сервиса в админ панели bin/ - папка точки входа консольных команд (для работы с Cron, Doctrine, и вспомогательными возможностями) core/ - фаилы фреймворка Controller/ - фаилы базовых (от которых происходит наследование php extend) контроллеров Database/ - облегченная версия DBAL наподобие Doctrine Doctrine/ - фаилы для ORM Doctrine Cli.php - класс для работы с консольными и Cron задачами Helper.php - класс со вспомогательными функциями Loader.php - orm наподобие Doctrine, но в отличии от него имеет встроенные методы для работы с бд и структуру БД понимает не с Аннотаций, а по названиям полей и запроса ее в БД Model.php - базовая (родительская) модель public - публичная папка для настройки в VirtualHost (доступ из вне есть только в нее) app/ - папка содержащие в себе под папки с символические ссылками на CSS, JS каждого из сервисов data/ - контент приложения что закачивается движком (метод upload) сохраняется туда theme/ - символические ссылки на общие CSS, JS index.php - точка входа в приложения с WEB theme/ - шаблоны дизайна и оригиналы CSS, JS и изображений для дизайна default/ - когда установлена тема по умолчанию - используются фаилы из данный папки (кастомизация CRM создает свою папку с темами) temp/ - временные фаилы , в частности кеш страниц Smarty и логи vendor/ - сторонние библиотеки, появится когда в папке проекта выполнится "composer update" (обязательно) bootstrap.php - единый фаил для Cli/Web приложений (его загружает composer перед началом работы, находятся общие константы) blacklist - фаил игнорированными папками opcache (требуется перезапуск php при изменении) composer.json - фаил с зависимостями Composer (в нем же указаны какие расширения php и версия необходимы) preload.php - фаил opcache .gitmodules - в нем уже прописано, что в папку app/ необходимо добавить зависимые репозитории (Авторизацию, CI/CD, Справку)
На базе данного каркаса было успешно сделано множество приложений (сервис контейнеров) как для моих личных проектов (онлайн игры) так и для компаний в которых было необходимо в сжатые сроки разработать прототипы приложений MVP (CMS, CRM, ERP ...)
Рад сообщить что мы начинаем продавать наши продукты и услуги в частном порядке и оказывать их...
На сайт в раздел портфолио добавлена новая игра разработанная с помощью наших продуктов...
Рад сообщить, что игровые карты сервиса будут сделаны по типу "открытого мира", где карты и...
Рад сообщить что помимо LUA кода на котором можно писать игровые механики на языке Java Script...
Появился видео пример как добавить на карту NPC через код LUA . Эта и другие механики доступны в...
Появилась возможность добавить LUA код выполняющийся при добавлении в игру новых игроков, npc,...
Для тестирования карт и функционала будут использоваться карты из игры с открытом исходным кодом...
Рад сообщить что эксперименты по интеграции возможности вносить свой LUA кода в сервер прошли...
Теперь ping персонажа можно отслеживать и в браузерной версии игры (webgl), так же введена...
Рад сообщить что теперь сохранение игрока (раз в интервал и при выходе) не блокирует сервер как...
Хочу показать вам результаты нагрузочного тестирования: ·...
Хочу продемонстрировать вам новую игровую механику - блуждание персонажей под управлением...
Рад сообщить что примеры кода к разрабатываемому сервису будут содержать максимальную скорость...
Ведется разработка web версии редактора карт для 2D. Конечно, такие вещи уже...
Произведены промежуточные замеры скорости (1 секунда = 1000 мс) Данные приведены для сервера с...
Начата разработка добавления пользовательский скриптов которые можно вешать на объекты. Тем самым...
Правительство РФ анонсировало выделение до $50 млрд для выхода РФ в топ-20 стран—разработчиков Игр к 2030 году. Возможно в скором времени разрабатываемый мной сервис наконец увидит свет.
В этой статье я расскажу как сделать архитектуру приложения игрового сервера быстрой и что использует Unity. Эта статья результаты исследований предыдущих так что в ней будет много ссылок на них.
Читать далееПродолжая серию статей про разработку сервера для онлайн игр (адрес проекта http://my-fantasy.ru) на языке PHP в это части я хочу рассказать про безопасное добавления пользовательского кода для добавления функционала игровых механик. В статье я опишу существующие решения для PHP , сравню скорость работы приведу видео примеры.
Для тестов будет использовано следующее железо:
Читать далееВ предыдущей статья я рассказал о протоколах клиент-серверного взаимодействия и о нагрузке которую может выдержать TCP соединения. В этой статье мы рассмотрим технологию для хранения , записи и публикации данных клиентам - Redis , разберем сколько игроков и NPC мы можем держать с демонстрацией игры, затронем архитектурные решения других игр
Читать далееВ 3й части статей я расскажу простым языком про протоколы передачи данных, как они работают и что такое Websocket сервер и какие есть решения для его создания на PHP
Читать далееВ этой части будут рассмотрены проблемы с которыми предстоит столкнуться разработчику сервера для онлайн игр
Для тех кто еще не успел ознакомится с первой частью рублике рекомендую прочитать первую статью где я рассказываю о самой идеи API сервиса.
Читать далееПривет, Хабр! Мой первый пост и я хочу поделиться с вами своей идеей создание сервиса предоставляющего разработчикам игр и студиям платформу для создания онлайн игр! Поехали!
Читать далее