ru en de fr pt

Фреймворк Моя Фантазия - описание и системные требования

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

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

Данный проект - Российский и сделан с уклоном на простоту работы с ним, с минимальным набором зависимостей от других библиотек учитывая опыт работы с западными системами. На данном проекте сделан этот сайт с его сервисами и проекты которые на нем опубликованы

В настоящее время на данном фреймворке ведется разработка проекта для внесения онлайн в игры - подробнее имеется пример ранней версии в 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 для взаимодействия с пользователями)


Используемые технологии:

  • PHP 8 (Reflection, Closure, Cli)
  • Mysql 8
  • GIT
  • PostgreSql (добавлен адаптер на перспективу)
  • Bootstrap 3
  • Smarty
  • Redis
  • APCU
  • Doctrine (DBAL, ORM, поддержка принципа Object First поддерживается, на перспективу)
  • Symfony компоненты (в перспективе, например тч кеш)
  • JQuery
  • Асинхронный сервер Workerman
  • Fast CGI через сокеты сервера
  • Composer
  • Apache (RewriteEngine) , (можно использовать Nginx)

Общее описание папок:

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 ...)

Новости

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

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

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

    Читать далее