Можно ли на PHP написать ММО игру ?
Вставка
- Опубліковано 14 кві 2024
- Создание 2D MMO RPG игр на unity с авторитарным сервером.
Принимаю заказы на разработку MMO игры на коммерческой основе и за % от проекта, подробности mmogick.ru/articles/frontend/i...
Связь в ТГ t.me/webrobot1 или на почту admin@my-fantasy.ru
Адрес проекта: mmogick.ru
GitHub: github.com/webrobot1
Habr статьи: habr.com/ru/users/webrobot/po...
Примеры создания игр • Примеры создания онлай...
English video: / @mmogick
Поддержать проект :
Тинькофф 2200 7004 1411 6557 (получатель Михаил Стрельцов - автор проекта) - Ігри
Я работал в IT с самыми разными технологиями. Пишу на PHP/C#. Пару лет назад было крайне сложно изучить Unity. Сейчас с GPT всё намного легче.
Идея авторитарного сервера у меня была с самого начала т.к. других идей тут нет (есть опыт и в инфобезе). Теперь немного критики (покритикую вас) и самокритики (ну и себя).
Начав разрабатывать игру, простую и одиночную, я решил сделать клон популярной игры, но чуть его улучшив. Сделал героя чуть больше, изменил часть механик, добавил пару предметов. Не буду вдаваться в тех реализацию, но рост героя повлиял на геймплей, предметы на нагрузку движка (фпс, оптимизация), механики заставили изменить левел дизайн, а он поведение камеры и т.д. Много работы. Но самое главное, в игре я выступаю в роли гейм дизайнера, художника, аниматора, программиста, менеджера, девопса.
Я потратил очень много времени, но и научился очень многому. В результате получил игру среднего качества.
Теперь о рпг. У меня есть большие сомнения в целесообразности разработки своей рпг, с бесшовным миром и игроками. Это интересно, это хочется сделать, но мой пример выше показывает, что в одиночку и даже командой вы не сделаете достойную рпг. Вас просто вытеснят гиганты, крупные студии.
Вот честно, со всем уважением к вам, как к разработчику, мне интересно смотреть на ваш фреймворк-рпг, но это не продукт. Визуальная часть выглядит плохо (спрайты, полоски между тайлами), геймплея нет, геймдизайна нет. Анимация, интеллект, передвижение монстров как в flash играх 2000 годов.
Да, вы это сделали. Да, это не просто. Но кто в это будет играть?
Сейчас вы скажете - там можно заменить спрайты, графику, анимацию - но это работа. Это всё связано. Это должно быть гармонично с механиками. Игра - уникальный, новый продукт, а не типичный сайт на фреймворке. Хорошая игра, а не клон.
У меня есть знакомые геймеры, есть пара человек топ геймеров - кланлидеров крупнейших рпг. Они играют только в крупные рпг проекты, с прекрасной графикой, с экономикой и поддержкой крупных компаний. Там и играют и торгуют и зарабатывают.
У меня есть знакомые школьники - так сказать будущее поколение. Они в такие простые рпг не играют. Они говорят - графика отстой, геймплей отстой.
Они уже поиграли в диабло, они уже сидят в лиге легенд, в доте - и всё эти продукты высшего качества бесплатны (да условно, но вход открыт всем).
Даже в инди крайне трудно конкурировать с кем либо в стиме. Рынок переполнен. В рпг, когда в 2004 вышел wow, продвигать продукт такого качества и функционала...
А аудитория будет выбирать играть ей в это или в wow. Она не смотрит делал ли игру ты один, совершив подвиг и сделав среднюю игру или игру сделали 1000 человек транснациональной корпорации и получив результат чуть лучше. Результат - вот что всех волнует.
Современные рпг сейчас делают как модификации популярных рпг, взломав их код, добавив моды, дописав что либо и т.д.
Свои серверы - террарии, линейджа, гта. То, что уже популярно и во что вложен труд огромных студий, с их профессиональными сотрудниками.
И нет, я не только критикую вас, но и себя. На текущий момент невозможно конкурировать с крупными студиями, которые разрабатывают онлайн игры.
Никто никогда не вернется в 2007 год.
Palworld не согласен.
Я делаю только серверное ПО, игра для демонстрации. В отличие от вашего случая я не пытаюсь ни сделать игру интереснее, ни выступать гейм дизайнером, а только программистом - другие с помощью моего ПО могут делать игры, а я получить прибыли с продажи лицензий и доработок (чем я под заказ и занимаюсь)
До сегодняшнего дня никто в мире не сделал сервиса для ммо, а для мачмейкинг игр папу компаний (фотон, колисеум, смартфокс и хероиклабс. Мирор не в счет тк это dll, а не сервис)
Плюс мой продукт это не только сервер - CMS для редактирование всем статов, добавление npc, карт и проекте свои анимации и все через дичный кабинет. Проекту 3 года.
Даже механиче через WEB IDE меняются - на видео видно. Так что не такая и долгая и сложная работа другим, когда уже сервер будет и тулсеты
Php через php-fpm работает? Или Swoole какой-нить?
Это консольное приложение на рнр с которым устанавливается постоянное websocket соединение. Swoole один из фреймворков написанный на С++ с помощью которого в том числе можно создать websocket сервер. Вебсокет сервер это лишь 20% от инфраструктуры сервиса с видео
@@myfantasyapi Я или что то не знаю, или не понимаю, но насколько я знаю консольное приложение в таком виде может работать только если на php написан сервер и он крутится в бесконечном цикле, так работает тот же workerman. Разве у вас это приложение не умирает на каждый запрос? Оно загружено в память? А как же утечки памяти? Не совсем понял...
@@igorolikov1997 Workerman не совсем крутится в цикле (обычный цикл у вас весь CPU сожрет). Приложение блокируется (типа sleep) и когда приходит новое соединение или пакет "просыпается" (так и в workerman и в swoole - прерывание происходит, и срабатывает onMessage и OnConnect - кстати во время выполнения их самих код еще раз может прерваться так что тяжелой логики там быть не должно. У меня новые данные сразу передаются в другой сервис которые так же на заблокирован и ждет пакетов , но уже рассчитывает физику, изменяет мир как то по командам от игроков - например двигает персонажа при команде движение)
@@igorolikov1997 загруженное приложение занимает не много. 40 Мб при карте 4000х4000 клеток (без графики, только матрица) и 50 мобов под управлением ИИ (даже без игроков на карте они ходят создавая временно в памяти новые расчеты поиска путей и стреляют создавая новые объекты - фаерболы которые уничтожаются упираясь во что нибудь. Пустая поднятая локация небольшая может занимать 10 мб включая код который загружается при создании PHP процесса в том числе системный)
@@igorolikov1997 Утечки памяти будут чаще всего если у вас ссылки на определенные объекты которые вы явно не удалили (например у вас один объект на другой ссылается , а вы удалили не оба а только верхнего уровня и только он удалился из памяти, а второй висит хоть на него и ссылается отсутствующий). Вот когда у вас много зависимостей (чужого кода типа из composer) вероятно что то потечет (почему я и написал сам фреймворк и там пару зависимостей). Реже память течет из за extension в PHP (PECL библиотеки типа swoole) еще реже из за стандартных функций PHP (что находят и чинят).
Но даже если и течет в PHP есть механизм который после N количества созданий новых переменных запускает сборщик мусора, который надет такие объекты на которые уже никто не ссылается и очистит память.
Так процесс сервера может висеть сколько пожелаете, но были и утечки которые я решил ua-cam.com/video/rIv08Sk3HOQ/v-deo.html