Создание онлайн сервера для мобильных многопользовательских, realtime 2D игр (жанра RPG и стратегии) с API на PHP ч. 1 / Хабр
Привет, Хабр! Мой первый пост и я хочу поделиться с вами своей идеей создание сервиса предоставляющего разработчикам игр и студиям платформу для создания онлайн игр! Поехали!
Зачем?
В большинстве своей при создании онлайн взаимодействия (не пошаговые, не где сервер — это один из клиентов, и не PVP, а прям ММО) в мобильных играх (да и не только) есть несколько путей:
использовать игровой движок в качестве экземпляра сервера (типа тот же UNITY в качестве сервера из коробки или с плагинами типа Mirror) — нужно когда у тебя есть OFFLINE версия игры параллельно (тогда да, иначе никак)
писать свое (те не универсальный, заточенный под игру)
использовать сервис типа https://www.photonengine.com/ (аналог которого я и делаю)
Как было бы здорово если был бы простенький сервис с API , да что и написан был на простом языке типа РНР да и что бы к нему была админ панель, куда можно было бы добавлять карты, предметы, анимации, создавать квесты, редактировать баланс. ..И что бы это это работало с мобильными приложениями на Android , IOS и игры были прям реалтайм рпг, где все друг друга видят и взаимодействуют, что бы не требовало много ресурсов сервера и работало быстро
Подумал я
разработчик php
Как ?
Посмотрев информацию в интернете (найдя лишь эту https://habr.com/ru/company/vk/blog/220359/ старую статью) про то как строится архитектура программы — сервера (не путайте с клиентами, как делать сами игры статей множество) , открыв русскоязычный youtube (где все пересказывают либо эту статью, либо используют игровой движок как сервер) я полез в англо-саксонский 🙂
Вот пример Человек делал несколько лет на С# но в итоге все работало настолько медленно что он снял эмоциональное видео «Почему делать мультиплееры игры — КАКАШКА»
Исторически сложилось что такие вещи пишутся на том же языке что сделан клиент (и теми же людьми), те обычно на С#, C++ . … более редко мне кажется на Nodejs (может для браузерок) и Golang (знал бы его — писал на нем).
Что вроде как код должен компилироваться, что все остальное — медленное для пошаговых и однотипных браузеров и не компилируемые языки — не годятся ! C чем я не согласен и вот вам видео почему 🙂
Не получится?!
Я уже предчувствую желание пролистать вниз к комментариям, рассказать про свой опыт в php и каком то другом языке, рассказать почему именно на нем и только нем надо писать, а все остальное — не будет работать или будет , но медленно 🙂
Но где эти все технологии ? Мне известен https://www.photonengine.com/ , со сложной документацией, с серьезной работой в клиенте с глубокими познаниями в C# как мне кажется…
Да, php не компилируется , но это капля в море по скорости что забирает сервер (остальное — базы, кеширование, асинхронность, канал связи и тп) … А с php 7.4 (и далее 8) появились такие вещи как opcache, JIT компиляция ..
В добавок используются такие технологии как Redis, Websocket (UDP / TCP ) и сервис предполагается для 2Д мобильных игр
Я считаю что человеку разрабатывающему клиент для онлайн не должен разбираться в хитросплетениях работы сервера : библиотеки для установления соединения с сервером и API список методов с принимаемыми и возвращаемыми параметрами — достаточно. А Вы ?
В добавок дать разработчикам легкий и понятный ГШ интерфейс для работы с игровым миром, например загрузка карт (отрисованные, например, в программе Tiled https://www.mapeditor.org/) как в видео
Есть результат?
В настоящий момент реализована авторизация, регистрация, загрузка мира (карта с анимациями из админ панели), движение , жизни игрока, смерть игрока , враждебные NPC с поиском пути до игрока минуя объекты и это только начало. Я постоянно придумываю все новые механики и способы убыстрить работу сервера, пример игры на видео:
Буду рад лайку если вам нравится идея моего творчества . Планирую снимать продолжение данной рубрики, где более подробно углубляться в технические аспекты, демонстрировать примеры кода, сравнивать технологии и языки…
Адрес проекта
Рекомендую прочитать вторую часть серии статей про создание онлайн сервера для игрового проекта
Подписывайтесь на мой профиль что бы не пропустить новые статьи
Создание мобильных игр на Unity под Android | Bloxy.
schoolОнлайн-курс
Создание мобильных игр на Unity под Android
Ваш ребенок увлекается видеоиграми? Хочет попробовать себя в роли разработчика игр и приложений для смартфонов? Мы поможем! На курсе ребенок изучит основы языка программирования C#, узнает, как работать в редакторе Unity, научится взаимодействовать с 2D и 3D пространством и создаст свои первые игры под Android.
Начать обучение |
Для детей от 10 лет
Мы набираем группы согласно возрасту и текущему уровню подготовки.
Старт %%date_start%%
Новые модули будут открываться раз в неделю, а все пройденные доступны 24/7
Группы не более 20 человек
В каждом модуле есть чат, в котором ученик может задать любой интересующий его вопрос.
Количество разрабатываемых игр растет с каждым днем. Unity — это ведущая платформа разработки интерактивного контента с 2D и 3D графикой, 50% всех игр созданы на ней. На курсе ученики сделают шаг к востребованной профессии разработчика игр.
Ребенок постоянно сидит за компьютером
Курс поможет освоить базовые навыки программирования
Ребенок всегда мечтал создать свою игру
Благодаря нашему курсу он сможет создать собственную игру под Android
Ребенок увлекается программированием
Ученики отрабатывают полученные знания на практике, реализуя свои задумки в собственных проектах
Программа курса
Базовый
Урок 1. Установка Unity Personal и Unity Hub
Урок 2. Регистрация на сайте Unity
Урок 3. Установка Visual Code
Урок 4. Знакомство с интерфейсом редактора Unity
Урок 5. Введение в язык программирования C#
Урок 1. Структура проекта: Модели
Урок 2. Структура проекта: Префабы
Урок 3. Структура проекта: Звук
Урок 4. Структура проекта:Материал
Урок 5. Структура проекта: Скрипты
Урок 6. Структура проекта: Сцены
Урок 1. Разработка GUI для управления и отображения прогресса игры
Урок 2. Физика персонажа
Урок 3. Процесс движения
Урок 4. Камера
Урок 5. Три вида противников
Урок 1. Обработка событий касания: сбор монеток
Урок 2. Получение урона, нанесение урона
Урок 3. Процесс стрельбы
Урок 1. Добавление звуковых эффектов, босса
Урок 2. Конец игры
Урок 3. Сборка игры под Android
Продвинутый
Урок 1. Некоторые математические функции класса: Vector3
Урок 2. Некоторые математические функции класса: Mathf
Урок 3. Некоторые математические функции класса: Transform
Урок 1. Добавление ассетов
Урок 2. Моделирование трассы
Урок 3. Доработка сцены
Урок 1. Добавление GUI
Урок 2. Настройка сцены для выбора машин
Урок 3. Движение автомобиля
Урок 4. Ускорение и замедление автомобиля
Урок 1. Процесс столкновения
Урок 2. Реакция полицейских на превышение скорости, погоня, отрыв
Урок 1. Звуковые и визуальные эффекты
Урок 2. Смена дня и ночи
Урок 3. Сборка под андроид
Создание мобильных игр на Unity под Android
Старт %%date_start%%
Преимущества
наших курсов
проект
самостятельный
Удобный формат обучения — Наши курсы постоянно актуализируются и доступны в записи. Благодаря этому ваш ребенок получит актуальные знания в удобное время.
Удобный формат обучения
Поддержка преподавателем — выполняй домашнее задание и задавай вопросы в чате
Поддержка преподавателем —
Доступ к курсу навсегда. Поддержка от преподавателя в течение года.
Доступ к курсу навсегда.
Понятный игровой формат — никакой скучной теории, только практика и интерактив.
Понятный игровой формат —
Результат каждого курса — это самостятельный проект, где дети применят все полученные знания.
самостятельный проект
Наш курс не просто про создание игр
Мы учим не просто созданию игр,
а развиваем логическое и креативное мышление у детей.
Программирование учит думать
Программирование помогает развивать детям правое полушарие мозга, которое отвечает за воображение, креативность, помогает быстрее запоминать информацию, способствует изучению иностранных языков. Во время программирования развивается и «вычислительное мышление», которое помогает логически мыслить, находить проблемы и эффективно их решать.
Программирование — это свобода
Если ваш ребенок в будущем выберет IT-специальность, он сам сможет определять свою жизнь.
Программирование учит не сдаваться
Курс построен таким образом, что, даже если ребенок ошибся, он может вернуться к исходной точке и начать заново.
Программирование игр — это весело
Мы изучаем программирование для создания игр. Во-первых, это увлекательно. Во-вторых, это весело. Представьте, что вы будете играть в игру со своим ребенком, которую создал он сам. Здорово же!)
Программирование показывает, как применить знания в реальном мире
Программист — это профессия будущего
Мы гордимся результатом своей работы!
Анастасия Борисова
Мама ученика
Выбрала для ребенка курс по юнити, потому что считаю это вкладом в его будущее. Матвею понравился курс, долго думали, какой выбрать, остановились на создании игр для телефона. Преподаватель все отлично обьяснял, были сложности, но их удавалось быстро решить, в сообщениях можно написать все вопросы.
Дмитрий Тепляков
Папа ученицы
Купили курс на весенних каникулах, чтобы ребенок не сидел без дела, пока гостил у бабушки. А оказалось, что выбрали любимое увлечение! Спасибо преподавателям bloxy.school и кураторам! Дочь всерьез увлеклась разработкой игр!
Инга Бычкова
Мама ученика
Купили сначала первую часть, сыну понравилось докупили продвинутый уровень. Курс замечательный, сыну 12, сидят вместе с мужем и разбираются в программе))) Уроки удобно разделены, не слишком короткие, не слишком длинные, можно пересмотреть, когда надо. Понравилась быстрая обратная связь, и то, что дополнительно не нужно тратить деньги, программа юнити бесплатная, скачали и начали изучать.
Часто задаваемые вопросы
На какой возраст рассчитан курс?
Курс подойдет для детей от 10 лет
Какой язык программирования изучается на курсе?
C# базовый начальный уровень
Какое оборудование понадобится?
Для работы в программе необходим компьютер или ноутбук:
- Операционная система — Windows 7/8/10 (СТРОГО 64-разрядная версия)
- Процессор — Процессор Intel Core i3-7100 или выше
- Оперативная память — от 4 ГБ
- Свободное место на жестком диске — не менее 20 Гб
- Устройство Android для тестирования готовой игры
Что должен уметь ребенок, чтобы обучаться на курсе?
- быть уверенным пользователем ПК (знать расположение клавиш на клавиатуре (английская, русская раскладка и символьная раскладка)).
- знать арифметику. Дополнительным плюсом будет знание целых и дробных чисел, что такое градусы и углы, ориентироваться в 2D и 3D пространстве (XY и XYZ), понимать, что такое векторы и длина вектора.
Чему ребенок научится на курсе?
- Базовым навыкам программирования на языке высокого уровня C#
- Углубит свои знания (получит новые) в математике и физике
- Получит опыт в области разработки логики взаимодействия объектов в 2D и 3D пространстве.
- Получит знания и навыки в поиске и написании алгоритмов для оптимального решения поставленных задач. Знакомство с понятием «Архитектура кода»
- Получит начальные представления об ООП – объектно-ориентированном программировании
- Познакомится на практике с задачами, которые выполняют программисты, game-дизайнеры и level-дизайнеры в игровой индустрии.
Что получит ребенок после прохождения курса?
После обучения ребенок получит памятный сертификат об успешном окончании курса.
лучших инструментов для создания онлайн-игр
1. TinyTap: детские обучающие игры
Конструктор книг и игр расширяет творческие возможности и может похвастаться обширной библиотекой контента
Итог: при некотором терпении и планировании этот создатель игр может изменить правила игры в классе.
Классы: Pre-K–5 Цена: бесплатно
2. Блокселс ЭДУ
Приложение для создания игр фокусируется на пиксельной графике и дизайне уровней
Итог: если оно работает, приложение представляет собой мощный способ, не связанный с программированием, вовлечь студентов в игровой дизайн, хотя физические кубы — это скорее уловка, чем что-либо еще.
Классы: 1–7 Цена: бесплатно, платно
3. Непокорные знаки
Платформа для создания игр объединяет программирование и физическую игру
Итог: на первый взгляд эта платформа может показаться бесполезной, но на практике она сочетает в себе SEL, движение, сотрудничество и обучение STEM умным и убедительным образом.
Классы: 1–8. Цена: уточняйте цены по телефону
. 4. Бесконечная аркада от Tinybop
Простое приложение для гейм-дизайна с безграничным творческим потенциалом
Итог: Предоставление учащимся возможности разрабатывать, играть, улучшать и делиться своими собственными играми открывает возможности для изучения потенциала во многих предметных областях.
Классы: 2–6 Цена: $3,99
5. Царапина
Творческая песочница открывает двери для программирования в любой предметной области
Итог: Scratch вовлекает студентов всех типов в программирование и закладывает основу для будущего обучения.
Классы: 2–12 Цена: Бесплатно
6. Механик Gamestar
Увлекательный квест на тему манги, чтобы стать гейм-дизайнером
Итог: в квестах по игровому дизайну есть все, что нужно ученикам, но, возможно, не все, что нужно учителям.
Классы: 3–8 Цена: бесплатно
7. Майнкрафт
Спиральная песочница приключений и творчества заставляет детей копать глубже
Итог: неотразимый и, казалось бы, безграничный инкубатор для навыков 21-го века, который при небольшом руководстве может наметить новые курсы для обучения.
Классы: 3–12 Цена: Платно
8. Роблокс
Популярная платформа для разработки игр имеет потенциал в классе, подводные камни
Итог: создание игр для аутентичной аудитории поощряет навыки кодирования и дизайна, но реальные риски требуют особой осторожности.
Классы: 3–12 Цена: бесплатно, платно
9. Кодеры
Дифференцированное кодирование на основе текста обеспечивает по-настоящему аутентичный опыт
Итог: хорошо продуманные уроки Python и пользовательский интерфейс делают его отличным выбором для серьезного обучения кодированию.
Классы: 5–8. Цена: бесплатно.
. 10. Gamefroot
Увлекательная и сложная платформа для начинающих разработчиков игр
Итог: отличная стартовая площадка для студентов, которые любят игры и программирование.
Классы: 4–12 Цена: Бесплатно
11. LittleBigPlanet 2
Доступный, но глубокий создатель игр ослепит и бросит вызов
Итог: очень очаровательный опыт для учителей и студентов, заинтересованных в расширении границ, создании вещей и участии в здоровом сообществе, ориентированном на безграничное творчество.
Классы: 4–12 Цена: $19,99
12. Готовый производитель
Увлекательный и простой игровой дизайн позволяет создавать удивительно сложные творения
Итог: при поддержке учителя творческое введение в программирование и дизайн игр.
Классы: 4–12 Цена: бесплатно, платно
13. Игровые площадки «Свифт»
Блестяще разработанное приложение для кодирования iOS, отлично подходящее для новичков или профессионалов
Итог: если у вас есть iPad или Mac, это вдохновляющий выбор для изучения того, как создавать и настраивать код.
Классы: 4–12 Цена: Бесплатно
14. Редактор фитиля
Создавайте интерактивные игры и анимацию с помощью креативной онлайн-платформы
Итог: отличная отправная точка для начинающих создателей, чтобы создавать и делиться интересным контентом.
Классы: 4–12 Цена: Бесплатно
15. Изучите мод
Модифицируйте Minecraft с помощью этого веселого прикладного кода
. Итог: для студентов, которые уже знают и любят Minecraft, это ценный способ привлечь их к программированию.
Классы: 5–12 Цена: Платно
16. Стенцил
Инструмент для разработки игр без кода помогает детям программировать и публиковать
Итог: это повышает сложность блочного кодирования за счет подключения студенческой работы к основным издательским платформам.
Классы: 5–12 Цена: бесплатно, платно
17. Конструкция 3
Идеальный конструктор 2D-игр помогает учащимся создавать и внедрять инновации
Итог: безграничные варианты игр, разумная стоимость и обширная поддержка делают эту среду программирования идеальной для образовательной среды.
Классы: 6–12 Цена: бесплатно
18. микро:бит
Кодовые игры или развлекательные дисплеи с мини-аппаратурой
Итог: этот универсальный инструмент для обучения программированию с помощью блоков или текста отлично подходит для классов и клубов STEM.
Классы: 6–12 Цена: бесплатно, платно
19. Textadventures.co.uk
Играйте или придумывайте текстовые приключения, но создание может стать техническим
Итог: текстовые приключения могут быть очень увлекательными, но инструмент для создания игр Quest, хотя и предлагает достойную поддержку, может быть сложным для эффективного использования без опыта программирования.
Классы: 6–12 Цена: Бесплатно
20. Единство обучения
Полная учебная программа по созданию игр дает учащимся реальный опыт
Вывод: это удобный, веселый и эффективный способ научить учащихся создавать игры сразу же, с достаточным пространством для углубления.
Классы: 6–12 Цена: бесплатно
Три способа быстрого создания собственных обучающих игр – Практические учебные технологии
Совет недели
Ричард Бирн
В Интернете нет недостатка в сайтах, предлагающих онлайн-игры для школьников. Тем не менее, бывают случаи, когда вы не можете найти именно то, что нужно вам или вашим ученикам. В таких случаях проще создать собственную игру, чем проводить более бесплодные поиски. Вот три инструмента, которые я регулярно рекомендую для быстрого создания собственных обучающих игр.
TinyTapTinyTap – это инструмент, который можно использовать на iPad, планшете Android или в веб-браузере для создания собственных обучающих игр для учащихся начальной школы. Чтобы создать собственную образовательную игру на TinyTap, просто зайдите на TinyTap.com и нажмите «Создать». Оттуда вы увидите меню из шести типов игр для создания. Затем вы можете просмотреть учебные пособия по дизайну игр или просто приступить к созданию игры. Все игры создаются по принципу «слайд за слайдом». Внутри каждого слайда вы можете добавлять изображения, текст и звуковые подсказки. Вы можете выбрать, как ваши ученики взаимодействуют с вопросами и подсказками в вашей игре. Они могут взаимодействовать, касаясь, щелкая, обводя объекты, сопоставляя объекты, печатая или говоря. Вот краткое руководство по созданию игры-головоломки в TinyTap.
FlippitityДавние читатели, вероятно, знают, что я большой поклонник использования Flippitity для создания обучающих игр с помощью Google Таблиц. У Flippitity также есть возможность создавать игры без использования Google Sheets. Эта опция называется «быстро и легко» и позволяет делать почти все то же самое, что и создание игры с помощью Google Sheets.
С Flippitity вы можете создавать такие вещи, как словесная игра «Снеговик» и цифровая настольная игра. Игра в слова «Снеговик» от Flippitity — это игра, в которой учащиеся должны правильно угадывать буквы слова, чтобы их снеговики не растаяли. Шаблон позволяет вам создавать собственные варианты игры со словами и подсказками по вашему выбору. Вашей игрой можно поделиться со студентами через назначенный URL-адрес. Учащимся не нужны учетные записи, чтобы играть в созданные вами игры. Вот обзор того, как создавать собственные онлайн-игры в слова с помощью шаблона Flippitity Snowman.
С помощью шаблона настольной игры Flippity вы можете создать игру, в которой могут участвовать до восьми игроков, до трех кубиков и интерактивные игровые квадраты. Ваша игра также может включать видео, изображения, рисунки Google и графики. И ваши ученики могут играть в вашу игру без адреса электронной почты или создания какой-либо онлайн-учетной записи. Посмотрите мое короткое видео, чтобы узнать, как создать собственную настольную онлайн-игру и играть в нее.
ЭдукандиEducandy – хороший сервис для создания простых словарных игр и викторин с несколькими вариантами ответов. Удобным аспектом сервиса является то, что после того, как вы создали список словарных слов, он будет автоматически применен для вас к нескольким игровым форматам. Другими словами, напишите список из одного слова, и вы получите три игры, в которые смогут играть ваши ученики. Ваши ученики могут играть в игры без необходимости создавать учетную запись на сайте Educandy. В этом видео я расскажу, как создавать игры в Educandy и как ваши ученики могут получить доступ к вашим играм.