Как создать игру наподобие minecraft

Обновлено: 02.07.2024

[Игры] Cube Craft - Клон Minecraft на Unity3D

[Игры] Cube Craft - Клон Minecraft на Unity3D

Меню:

P.s: На заднем плане видны падающие блоки.
P.p.s: МультиПлеер не работает.

[Игры] Cube Craft - Клон Minecraft на Unity3D

Мир:

Пока-что супер плоский, и если упадёшь в воду, умрешь.


Grass - Трава
Stone - Камень
Glass - Стекло
Plank - Доски
Dirt - Земля
Fixed Block - Летающий Кирпич
C4 - Динамит


WASD - Ходить
ЛКМ - Поставить Блок
ПКМ - Убрать блок
B(Держать зажатой) - Открыть Инвентарь


А на этом всё, с вами был robloxxa.
Оценивайте! Комментируйте!

Настройки

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

Повторный запуск сервера


Запустите файл start.bat, появится черное окно консоли и белое окно показывающее нагрузку на сервер и список игроков, если все окей, то вы увидите что сервер создал карту и ничего не делает, уже можно попробовать подключиться к нему, следующим шагом будет установка модов.

Создание и запуск Minecraft сервера с модами на Fabric

Предварительная загрузка файлов сервера:

Для установки Fabric сервера для любого Minecraft нам понадобится официальный установщик Fabric, он же устанавливает и сервер, нужно скачать exe или jar версию.

Запустите скачанный файл, выберите вкладку "Сервер", выберите нужную версию Minecraft и папку в которой будет ваш будущий сервер.

Создание и запуск Minecraft сервера с модами на Fabric

На следующем этапе вы увидите предупреждение, что не найден файл официального Minecraft сервера, нажмите кнопку скачать Jar сервера, так же чуть ниже кнопку Сгенерировать для создания .bat файла запуска.

Создание и запуск Minecraft сервера с модами на Fabric
Создание и запуск Minecraft сервера с модами на Fabric


Если все прошло успешно, внутри папки вы увидите это:

Создание и запуск Minecraft сервера с модами на Fabric

Игровой цикл

В core.js нужно провести инициализацию three.js, настроить его и добавить все нужные модули от игры + обработчики событий… ну и игровой цикл запустить. В учет того, что все настройки стандартные, то объяснять их нет смысла. Поговорить можно про map (он принимает сцену игры для добавления блоков) и contorls т.к. он принимает несколько параметров. Первый это камера от three.js, сцену для добавления блоков и карту чтобы можно было взаимодействовать с ней. update отвечает за обновление камеры, GameLoop — игровой цикл, render- стандарт от three.js для обновления кадра, событие resize также стандарт для работы с канвасом (это реализация адаптива).

Установка необходимой версии Java:

Сервер игры использует JDK (Java Development Kit), джава для разработчиков, и вы должны установить правильную версию среды на ваш пк. Перед загрузкой рекомендую узнать, 32bit ваша операционная система или 64bit, если на данном этапе вы уже не понимаете о чем речь, не умеете гуглить и не знаете ответа, то дальше будет только сложнее.

  • Для Майнкрафт 1.14-1.16.5 требуется JDK 8 - скачать можно здесь
  • Для Майнкрафт 1.17 и более новых версий: требуется - JDK 16 - скачать можно здесь

Скачали, установили, рекомендую сразу запомнить адреса расположения исполнительного файла Java, они нам понадобятся:
В случае JDK 8 установленной по ссылке выше это C:\Program Files\OpenJDK\jdk-8.0.262.10-hotspot\bin\java.exe
В случае JDK 16 установленной по ссылке выше это C:\Program Files\Java\jdk-16.0.2\bin\java.exe

Создание и запуск Minecraft сервера с модами на Fabric

Создание и запуск Minecraft сервера с модами на Fabric

Это подробный гайд, инструкция по созданию и запуску Minecraft сервера с модами для Fabric который можно запустить из под Windows (и Linux). В статье я шаг за шагом покажу как создать сервер, базовые настройки, дам советы относительно установки модов.

Предупреждение :
Если вы хотите создать сервер с Forge модами, то для этого у нас уже есть похожая статья - как создать Minecraft сервер с модами Forge.

Ссылки

Как и обещал. Весь материал который пригодится.

Если есть желание, то на можете добавить свой функционал к проекту на гитхаб.

Настройка .bat файла запуска

Итак, я надеюсь вы установили JDK на первом шаге и запомнили адреса до исполнительного файла Java.exe, сейчас они нам понадобятся. Напомню, что Fabric сервер у майнкрафт 1.14-1.16.5 работает на JDK 8, а у 1.17 и более новых на JDK 16.

Кликните ПКМ по start.bat и измените его (либо можете открыть любым текстовым редактором),
замените java на "C:\Program Files\OpenJDK\jdk-8.0.262.10-hotspot\bin\java.exe" или "C:\Program Files\Java\jdk-16.0.2\bin\java.exe" (с кавычками) в зависимости от версии майнкрафт.

Так же добавьте параметр -Xmx2048M где 2048 это максимальное количество оперативной памяти доступной для сервера, не забудьте кавычки, не допускайте лишних символов, пробелов либо их отсутствия, сохраните файл.

Создание и запуск Minecraft сервера с модами на Fabric

Делаем свой minecraft на JavaScript

image

Попробуем сделать небольшую демку minecraft в браузере. Пригодятся знания JS и three.js.

Немного условностей. Я не претендую на звание лучшее приложение столетия. Это всего лишь моя реализация для данной задачи. Также есть видео версия для тех кому лень читать(там тот же смысл, но другими словами).

В конце статьи есть все нужные ссылки. Постараюсь как можно меньше воды в тексте. Объяснять работу каждой строки не буду. Вот теперь можно начать.

Для начала чтобы понимать какой будет итог, то вот демка игры.

Разделим статью на несколько частей:

  1. Структура проекта
  2. Игровой цикл
  3. Настройки игры
  4. Генерация карты
  5. Камера и управление

Структура проекта

Вот так выглядит структура проекта.

image

index.html — Расположение канваса, немного интерфейса и подключение стилей, скриптов.
style.css — Стили только для внешнего вида. Самое важное это кастомный курсор для игры который располагается в центре экрана.

texture — Здесь лежат текстуры для курсора и блока земли для игры.
core.js — Основной скрипт где происходит инициализация проекта.
perlin.js — Это библиотека для шума Перлина.
PointerLockControls.js — Камера от three.js.
controls.js — Управление камерой и игроком.
generationMap.js — Генерация мира.
three.module.js — Сам three.js в виде модуля.
settings.js — Настройки проекта.

Генерация карты

В классе Map у нас есть несколько свойство которые отвечают за кеш материалов и параметры для шума Перлина. В методе generation мы загружаем текстуры, создаем геометрию и меш. noise.seed отвечает за стартовое зерно для генерации карты. Можно рандом заменить на статичное значение чтобы карты всегда была одинаковая. В цикле по X и Z координатам начинаем расставлять кубы. Y координата генерируется за счет библиотеки pretlin.js. В конечном итоге мы добавляем куб с нужными координатами на сцену через scene.add( cube );

generationMap.js

Поднимаем свой полноценный игровой Minecraft сервер с мини-играми. Часть 1. Выбираем и устанавливаем сервер


tl;dr;
И так, что будет сделано в конце всего туториала?

  • создадим основной сервер, так называемое лобби — место, куда попадают все игроки, только что подключившиеся к серверу
  • запустим второй сервер, на котором установим популярную мини-игру Murder Mystery
  • установим и настроим прокси сервер, который соединит игровой клиент и запущеные серверы таким образом, что игроки не заметят, что они переходят с одного сервера на другой
  • создадим игрового персонажа, который будет перенаправлять нас на сервер с мини-игрой
  • Установим еще одну популярную мини-игру SkyBlock
  • Добавим внутриигровое меню на основе предметов инвентаря игрока
  • Добавим внутриигровые деньги
  • Создадим магазин
  • … и многое другое

Поехали!

Я никогда раньше не играл в Minecraft. Скажу даже больше, мне он был не особо интересен. Скорее все, по причине того, что я не понимал его идеи. Да, я видел, что в нем можно строить бесконечное множество сооружений, выращивать разного вида растения и животных, строить механизмы. Но я все еще не мог понять, как за этой игрой с примитивной графикой мои дети могут проводить целые дни напролёт.

Таким образом, изучив немного тему, я предложил ребенку поднять сервер с какой нибудь интересной картой и разместить его адрес в интернете, что бы на него заходили другие игроки. Таков был план по поиску друзей для совместной игры для сына, а для себя я решил, что это отличный вариант для нового проекта, как дополнительного источника доходов, о котором я уже давным давно задумывался.

Существует две версии Майнкрафа. Одна — это Pocket Edition, предназначена для мобильных устройств и Windows 10, вторая — Java Edition, для ПК. Как оказалось они не совместимые друг с другом, поэтому я выбрал Java Edition, так как в игровом мире этой версии больше возможностей, в добавок под нее существует более широкий выбор плагинов. Ну и еще потому, что я Java разработчик.

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

Для старта нам достаточно конфигурации на 2 CPU и 2 GB RAM. Я пробовал 1 CPU, но сервер жутко долго стартовал, с 1GB оперативной памяти я иногда сталкивался с крашем сервера при импорте крупных карт.


При создании дроплета я выбрал способ аутентификации — SSH key


Выполнил инструкции по его созданию


И так, виртуальный сервер готов.


Заходим на него по ssh:

/minecraft — путь к созданному приватному SSH ключу, IP_address — выданный хостингом IP адрес.

Хотел бы заметить, что для запуска сервера не рекомендуется использовать пользователя root, так как это может позволить злоумышленикам через уязвимые плагины нанести вред вашему серверу. Как добавить нового пользователя, вы можете ознакомиться по ссылке.

Если кратко, то создаем пользователя (dinikin замените на вашего пользователя):

и предоставляем ему права администратора:

и права удаленного достпа по SSH:

Теперь начните новый сеанс и используйте SSH с новым именем пользователя:

И так, мы на сервере.


Создаем папку для нашего первого Minecraft сервера и переходим в неё:


Теперь нам нужно определиться с реализацией сервера. Их существует несколько, самые популярные — это Spigot, Paper, Forge. Более детально про отличия этих серверов вы можете почитать здесь.

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

Изначально я скачал и установил Spigot. Это самый популярный и хорошо оптимизированный сервер для майнкрафта. Под него разрабатывается множество плагинов и существует огромное комьюнити как разработчиков, так и пользователей.

Однако я столкнулся с тем, что при работе с одним из плагинов для редактирования карт, последний работал некорректно и в логах рекомендовал использовать Paper как более оптимизированный форк на основе Spigot.

В итоге я остановил свой выбор на Paper, хотя для некоторых инстансов сервера оставил Spigot. Теперь нам нужно установить и запустить выбранный сервер. Качаем последнюю версию сервера:

Установка и удаление модов:

Fabric моды устанавливаются аналогично обычному майнкрафту, вы помещаете мод и все дополнительные необходимые моды в папку mods выключенного сервера, но есть несколько важных правил описанных ниже. У модов на сервере так же есть папка с конфигами, где можно их настроить. Удаление модов из папки Mods удалит мод с сервера, в отличии от forge сервера на данный момент сервер не требует подтверждения удаления с карты предметов и блоков удаленного мода, он их удаляет сам, будьте аккуратны.

Если все прошло успешно и вы подключились к серверу, поздравляю вас, ниже на скриншоте видно папки mods клиента и сервера, 2 окна сервера и окно игры с модом.

Базовая настройка сервера:

  • Если у вас пиратка, то измените online-mode=true на online-mode=false, иначе к серверу смогут подключаться только лицензионный игроки.
  • Заполните значение server-ip= это IP вашего сервера, он может быть внешним IP интернета, локальным IP вашего пк внутри домашней сети, либо IP вашего компьютера в сети Хамачи.
Предупреждение :
Помните, что если вы указываете IP вашего пк в интернете, то вы должны настроить переадресацию порта сервера (он по умолчанию 25565) в вашем роутере, либо если у вас нет роутера, то открыть данный порт в антивирусе\брандмауере, возможных настройках вашего провайдера. Гуглите инструкции, проверяйте открыт ли порт на вашем пк, сделана ли переадресация этого порта на ваш пк в роутере, это может быть сложно, но к этому нет одной понятной инструкции, и вообще не тема для данной инструкции.

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

Первый запуск сервера.

Запустите файл start.bat, вы увидите черное окно консоли, а в папке сервера появятся новые файлы и папки. Можете закрыть окно сервера, он пока все равно не запустился.

Создание и запуск Minecraft сервера с модами на Fabric

Откройте появившийся файл eula.txt, замените в нем eula=false на eula=true, это кстати говоря подтверждение что вы согласны с EULA использования сервера, т.е лицензионное соглашение, сохраните.

Камера и управление

Я уже говорил, что controls принимает параметры в виде камеры, сцены и карты. Также в конструкторе мы добавляем массив keys для клавиш и movingSpeed для скорости. Для мыши у нас есть 3 метода. onClick определяет какая кнопка нажата, а onRightClick и onLeftClick уже отвечают за действия. Правый клик(удаление блока) происходит через raycast и поиска пересеченных элементов. Если их нет, то прекращаем работу, если есть, то удаляем первый элеент. Левый клик работает по схожей системе. Для начала создаем блок. Запускаем рейкаст и если есть блок который пересек луч, то получаем координаты этого блока. Далее определяем с какой стороны произошел клик. Меняем координаты для созданного куба в соответствии со стороной к которой мы добавляем блок. градация в 5 единиц т.к. это размер блока(да здесь можно было использовать свойство из settings).

Как работает управление камерой?! У нас есть три метода inputKeydown, inputKeyup и update. В inputKeydown мы добавляем кнопку в массив keys. inputKeyup отвечает за очистку кнопок из массива которые отжали. В update идет проверка keys и вызывается moveForward у камеры, параметры которые принимает метод это скорость.

Читайте также: