код игры майнкрафт на java
Часть кода игры Minecraft была передана в Open Source корпорацией Microsoft
Иллюстрация opensource.com
Часть исходного кода игры Minecraft: Java Edition была легально опубликована на GitHub под свободной лицензией корпорацией Microsoft.
Код был открыт под лицензией MIT и представляет собой Java-библиотеки Brigadier и DataFixerUpper. Они позволяют разбирать, отправлять и обрабатывать пользовательские команды, а также обрабатывать данные для новых версий игры.
Раньше основным способом увидеть этот код для энтузиастов была «декомпиляция» — конвертация байт-кода обратно в человеко-читаемый код на Java. Многим хватало и этого, но, конечно, «исходные тексты», полученные таким путем, были несколько труднее для восприятия чем оригинальные исходники.
В дальнейшем планируется «освобождение» других универсальных подсистем Minecraft, которые могут оказаться полезными для разработки других игр и упрощения труда мод-мейкеров. Вероятно, на следующем этапе будут открыты исходные тексты полностью переписанного движка рендеринга Blaze3D, планируемого для релиза в Minecraft версии 1.14.
Brigadier представляет собой инструмент для парсинга и диспетчеризации команд. По словам разработчиков, библиотека использует данные пользовательского ввода в Minecraft, и превращает их в функцию, которую игра будет выполнять. С точки зрения пользователя компонент выглядит как стандартная консоль с подсветкой синтаксиса команд и автодополнением ввода.
DataFixerUpper включает инструменты для инкрементальной сборки, слияния и оптимизации операций преобразования данных, необходимые для переноса существующих игровых данных в новые версии Minecraft.
Исходный код Майнкрафт: как его достать и что с ним можно сделать?
Майнкрафт — это одна из самых знаменитых игр нашего времени. Над ее созданием и поддержкой трудится команда шведских разработчиков Mojang Java Studios. Исходный код в Майнкрафт в целом держится в секрете, не считая тех наработок, что есть в darknet’е. Однако буквально недавно команда разработчиков опубликовала несколько легальных частей кода под свободной лицензией. Чуть позже остановимся на этом подробнее.
Почему считают, что Майнкрафт — для детей?
Нрави тся Майнкрафт детям по нескольким простым причинам:
Код Майнкрафта — это Java?
Сделано это для того, чтобы была возможность объединять все версии с разных платформ:
К сожалению, Java не могла обеспечить работу игры на iOS, поэтому было принято такое решение.
Вот и получается, что код Майнкрафта доступен в двух версиях:
Где найти исходный код Майнкрафта?
Но вот, буквально недавно, были легально опубликованы несколько пакетов кода Java Edition. Найти их можно на GitHub. Они распространяются открыто и со свободной лицензией MIT корпорации Microsoft. В своем составе они представляют две библиотеки Java:
Эти библиотеки открыли возможность разбивки, отправки, обработки пользовательских команд и данных от новых версий игры.
На этом все не остановится. Как говорят разработчики, в дальнейшем они планируют еще о публиковать в открытом доступе другие библиотеки и куски исходного кода Майнкрафт. Это будет делаться для того, чтобы облегчит ь разработку других подобных игр и труд разработчиков модификаций.
Библиотека Brigadier
Данной библиотекой пользоваться довольно просто — нужны минимальные знания.
Библиотека DataFixerUpper
Данная библиотека представляет собой набор инструментов, чтобы можно было собрать, склеить и оптимизировать преобразованные данные, которые нужны будут для добавления их в новые версии игры Майнкрафт.
Полностью Java код Майнкрафта пока открыва ть не будет, хотя у разработчиков были мысли и об этом. Он говорят, что пока исходный код Minecraft будет открываться частями и по запланированному графику.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Исходники Minecraft#
Мы разрабатываем моды для Minecraft, а значит находимся в очень тесной связи и с ним.
Иногда возникают вопросы вида: * Как сделать портал? * Как отловить правый клик по блоку? * Как добавить описание под названием предмета?
Ответы на подобного вида вопросы ВСЕГДА нужно искать в исходном коде Minecraft. 99% того, что вы хотите создать в своем моде уже было реализовано в Minecraft. Можно просто посмотреть, как (правильно) сделано в игре, и, на основе готового примера, сделать что-то свое.
Для этого нам нужно уметь обращаться к исходным кодам и ассетам (звукам, текстурам, моделям) Minecraft.
В Intellij Idea исходники можно найти, открыв в проводнике слева вкладку External Libraries и найдя файл «forgeSrc-версия Minecraft—версия Forge.jar».
Откройте его и увидите достаточно много папок:
Eclipse#
Пояснение#
В пакете assets/minecraft находятся все ресурсы Minecraft: текстуры, JSON описания моделей, файлы локализации и так далее.
В пакете net.minecraft находится исходный код игры. Файлов там очень много и именно там находятся ответы на 90% всех ваших вопросов.
Пример#
Там есть следующий кусок кода:
Вот мы и нашли метод, который надо записать в файле нашего блока. Он будет выполняться, когда по нашему блоку кликнут.
Внутри него видим следующий метод:
Строчка this.world.createExplosion(this, this.posX, this.posY + (double)(this.height / 16.0F), this.posZ, 4.0F, true); как раз то, что нам нужно!
В нашем блоке BlockTest.java осталось записать:
Почти наверняка то, что вы хотите добавить в своем моде уже реализовано в игре в том или ином смысле. Старайтесь найти примеры в исходном коде и используйте их для реализации своих идей.
К тому же, ориентируясь на исходники игры, вы будете лучше понимать их внутреннюю структуру, что сильно облегчает создание модов.
Делаем свой minecraft на JavaScript
Добро пожаловать в самую запутанную архитектуру проекта. Да я умею писать вступление.
Попробуем сделать небольшую демку minecraft в браузере. Пригодятся знания JS и three.js.
Немного условностей. Я не претендую на звание лучшее приложение столетия. Это всего лишь моя реализация для данной задачи. Также есть видео версия для тех кому лень читать(там тот же смысл, но другими словами).
В конце статьи есть все нужные ссылки. Постараюсь как можно меньше воды в тексте. Объяснять работу каждой строки не буду. Вот теперь можно начать.
Для начала чтобы понимать какой будет итог, то вот демка игры.
Разделим статью на несколько частей:
Структура проекта
Вот так выглядит структура проекта.
index.html — Расположение канваса, немного интерфейса и подключение стилей, скриптов.
style.css — Стили только для внешнего вида. Самое важное это кастомный курсор для игры который располагается в центре экрана.
texture — Здесь лежат текстуры для курсора и блока земли для игры.
core.js — Основной скрипт где происходит инициализация проекта.
perlin.js — Это библиотека для шума Перлина.
PointerLockControls.js — Камера от three.js.
controls.js — Управление камерой и игроком.
generationMap.js — Генерация мира.
three.module.js — Сам three.js в виде модуля.
settings.js — Настройки проекта.
Игровой цикл
В core.js нужно провести инициализацию three.js, настроить его и добавить все нужные модули от игры + обработчики событий… ну и игровой цикл запустить. В учет того, что все настройки стандартные, то объяснять их нет смысла. Поговорить можно про map (он принимает сцену игры для добавления блоков) и contorls т.к. он принимает несколько параметров. Первый это камера от three.js, сцену для добавления блоков и карту чтобы можно было взаимодействовать с ней. update отвечает за обновление камеры, GameLoop — игровой цикл, render- стандарт от three.js для обновления кадра, событие resize также стандарт для работы с канвасом (это реализация адаптива).
Настройки
В настройки можно было вынести и другие параметры, например, настройки three.js, но я сделал без них и сейчас здесь лишь пара параметров отвечающие за размер блоков.
Генерация карты
В классе Map у нас есть несколько свойство которые отвечают за кеш материалов и параметры для шума Перлина. В методе generation мы загружаем текстуры, создаем геометрию и меш. noise.seed отвечает за стартовое зерно для генерации карты. Можно рандом заменить на статичное значение чтобы карты всегда была одинаковая. В цикле по X и Z координатам начинаем расставлять кубы. Y координата генерируется за счет библиотеки pretlin.js. В конечном итоге мы добавляем куб с нужными координатами на сцену через scene.add( cube );
Камера и управление
Я уже говорил, что controls принимает параметры в виде камеры, сцены и карты. Также в конструкторе мы добавляем массив keys для клавиш и movingSpeed для скорости. Для мыши у нас есть 3 метода. onClick определяет какая кнопка нажата, а onRightClick и onLeftClick уже отвечают за действия. Правый клик(удаление блока) происходит через raycast и поиска пересеченных элементов. Если их нет, то прекращаем работу, если есть, то удаляем первый элеент. Левый клик работает по схожей системе. Для начала создаем блок. Запускаем рейкаст и если есть блок который пересек луч, то получаем координаты этого блока. Далее определяем с какой стороны произошел клик. Меняем координаты для созданного куба в соответствии со стороной к которой мы добавляем блок. градация в 5 единиц т.к. это размер блока(да здесь можно было использовать свойство из settings).
Как работает управление камерой?! У нас есть три метода inputKeydown, inputKeyup и update. В inputKeydown мы добавляем кнопку в массив keys. inputKeyup отвечает за очистку кнопок из массива которые отжали. В update идет проверка keys и вызывается moveForward у камеры, параметры которые принимает метод это скорость.
Ссылки
Как и обещал. Весь материал который пригодится.
Если есть желание, то на можете добавить свой функционал к проекту на гитхаб.
Код игры майнкрафт на java
Компания Microsoft открыла (https://minecraft.net/en-us/article/programmers-play-minecra. ) часть исходных текстов игры «Minecraft: Java Edition». Код открыт под лицензией MIT и представлен в виде библиотек Brigadier (https://github.com/Mojang/brigadier) и
DataFixerUpper (https://github.com/Mojang/DataFixerUpper). Brigadier предоставляет средства для разбора и диспетчеризации команд. DataFixerUpper включает инструменты для инкреметнальной сборки, слияния и оптимизации операций преобразования данных, которые используются для переноса игровых данных в новые версии Minecraft.
В дальнейшем планируется открытие и других универсальных подсистем Minecraft, которые могут оказаться полезными для разработки сторонних игр и упрощения создания модов. Например, на следующем этапе рассматривается возможность открытия нового движка отрисовки Blaze3D, развиваемого для выпуска Minecraft 1.14.
2. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от Ilshat | ||
Ответить | Правка | Наверх | Cообщить модератору |
22. «Microsoft открывает часть кода игры Minecraft: Java Edition» | +17 + / – | |
Сообщение от Совесть Нотча (?), 07-Окт-18, 17:08 | ||
Ответить | Правка | Наверх | Cообщить модератору |
26. «Microsoft открывает часть кода игры Minecraft: Java Edition» | –4 + / – | |
Сообщение от sadasd (?), 07-Окт-18, 18:10 | ||
| ||
Ответить | Правка | Наверх | Cообщить модератору |
51. «Microsoft открывает часть кода игры Minecraft: Java Edition» | +4 + / – | |
Сообщение от Урри (?), 08-Окт-18, 18:07 | ||
| ||
Ответить | Правка | К родителю #26 | Наверх | Cообщить модератору |
32. «Microsoft открывает часть кода игры Minecraft: Java Edition» | –10 + / – | |
Сообщение от Иваныч (??), 08-Окт-18, 00:02 | ||
Ответить | Правка | К родителю #22 | Наверх | Cообщить модератору |
33. «Microsoft открывает часть кода игры Minecraft: Java Edition» | +1 + / – | |
Сообщение от Аноним (33), 08-Окт-18, 00:29 | ||
И что не так со свободными клонами? Майнтест очень даже, только нужно понимать, что это не готовая игра, а движок для множества подобных игр и та, что поставляется с ним, скорее для примера. Нужно либо самому скачивать под него игры и моды, либо просто играть на каком-нибудь из серверов, где уже все есть. | ||
Ответить | Правка | К родителю #22 | Наверх | Cообщить модератору |
40. «Microsoft открывает часть кода игры Minecraft: Java Edition» | –1 + / – | |
Сообщение от Дыщь (?), 08-Окт-18, 09:46 | ||
Ответить | Правка | Наверх | Cообщить модератору |
34. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от arisu (ok), 08-Окт-18, 07:03 | ||
| ||
Ответить | Правка | К родителю #22 | Наверх | Cообщить модератору |
41. «Microsoft открывает часть кода игры Minecraft: Java Edition» | –3 + / – | |
Сообщение от Аноним (41), 08-Окт-18, 09:57 | ||
| ||
Ответить | Правка | К родителю #22 | Наверх | Cообщить модератору |
46. «Microsoft открывает часть кода игры Minecraft: Java Edition» | –2 + / – | |
Сообщение от АнонимКО (?), 08-Окт-18, 12:21 | ||
Ты в момент релиза Minecraft ещё в школу что ли ходил? Песочниц, где пользователи строили миры, и до Майнкрафта было достаточно, навскидку, Garry’s Mod. | ||
Ответить | Правка | К родителю #22 | Наверх | Cообщить модератору |
50. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от Аноним (50), 08-Окт-18, 15:46 | ||
Это так потрясающе! этот сайт просто дал мне Код обновления Майнкрафт и он сработал! Нажмите на кнопку https://mc.giftcodes.org | ||
Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору |
3. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от iPony (?), 07-Окт-18, 10:26 | ||
| ||
Ответить | Правка | Наверх | Cообщить модератору |
19. «Microsoft открывает часть кода игры Minecraft: Java Edition» | +2 + / – | |
Сообщение от Константавр (ok), 07-Окт-18, 15:26 | ||
| ||
Ответить | Правка | Наверх | Cообщить модератору |
4. «Microsoft открывает часть кода игры Minecraft: Java Edition» | –1 + / – | |
Сообщение от Володя (??), 07-Окт-18, 10:35 | ||
Ответить | Правка | Наверх | Cообщить модератору |
43. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от Аноним (-), 08-Окт-18, 12:02 | ||
Ответить | Правка | Наверх | Cообщить модератору |
5. «Microsoft открывает часть кода игры Minecraft: Java Edition» | –1 + / – | |
Сообщение от Аноним (5), 07-Окт-18, 10:52 | ||
А теперь вдруг внезапно Minecraft: Jave Edition, о которой я первый раз слышу (а что, бывает Minecraft не на Java?) и Microsoft, а не Mojang, публикует код! | ||
Ответить | Правка | Наверх | Cообщить модератору |
6. «Microsoft открывает часть кода игры Minecraft: Java Edition» | +5 + / – | |
Сообщение от yappi dora (?), 07-Окт-18, 10:57 | ||
| ||
Ответить | Правка | Наверх | Cообщить модератору |
13. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от 1 (??), 07-Окт-18, 12:56 | ||
Ответить | Правка | Наверх | Cообщить модератору |
21. «Microsoft открывает часть кода игры Minecraft: Java Edition» | –1 + / – | |
Сообщение от EuPhobos (ok), 07-Окт-18, 17:08 | ||
| ||
Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору |
52. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от Урри (?), 08-Окт-18, 18:09 | ||
Ответить | Правка | К родителю #21 | Наверх | Cообщить модератору |
7. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от Сырно (?), 07-Окт-18, 11:02 | ||
Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору |
8. «Microsoft открывает часть кода игры Minecraft: Java Edition» | +2 + / – | |
Сообщение от topin89 | ||
https://en.wikipedia.org/wiki/Mojang : | ||
Ответить | Правка | Наверх | Cообщить модератору |
44. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от Аноним (-), 08-Окт-18, 12:06 | ||
| ||
Ответить | Правка | Наверх | Cообщить модератору |
9. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от kravich (ok), 07-Окт-18, 12:17 | ||
Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору |
23. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от Аноним (23), 07-Окт-18, 17:09 | ||
Ответить | Правка | Наверх | Cообщить модератору |
37. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от Zenitur (ok), 08-Окт-18, 07:38 | ||
Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору |
42. «Microsoft открывает часть кода игры Minecraft: Java Edition» | +1 + / – | |
Сообщение от kravich (ok), 08-Окт-18, 10:48 | ||
| ||
Ответить | Правка | Наверх | Cообщить модератору |
45. «Microsoft открывает часть кода игры Minecraft: Java Edition» | +1 + / – | |
Сообщение от Тов. майор (?), 08-Окт-18, 12:09 | ||
Ответить | Правка | К родителю #37 | Наверх | Cообщить модератору |
11. «Microsoft открывает часть кода игры Minecraft: Java Edition» | +1 + / – | |
Сообщение от freehck | ||
Строго говоря нет, они развивают skypeforlinux на electron. Да, эта скотина жрёт, как конь, и течёт постоянно, но он как бы есть, и даже работает. | ||
Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору |
20. «Microsoft открывает часть кода игры Minecraft: Java Edition» | –1 + / – | |
Сообщение от IRASoldier (?), 07-Окт-18, 17:07 | ||
Ответить | Правка | Наверх | Cообщить модератору |
14. «Microsoft открывает часть кода игры Minecraft: Java Edition» | +1 + / – | |
Сообщение от ыы (?), 07-Окт-18, 13:05 | ||
| ||
Ответить | Правка | Наверх | Cообщить модератору |
17. «Microsoft открывает часть кода игры Minecraft: Java Edition» | –2 + / – | |
Сообщение от Аноним (17), 07-Окт-18, 14:01 | ||
| ||
Ответить | Правка | Наверх | Cообщить модератору |
24. «Microsoft открывает часть кода игры Minecraft: Java Edition» | +1 + / – | |
Сообщение от Аноним (-), 07-Окт-18, 17:15 | ||
| ||
Ответить | Правка | Наверх | Cообщить модератору |
18. «Microsoft открывает часть кода игры Minecraft: Java Edition» | +1 + / – | |
Сообщение от anonimm (?), 07-Окт-18, 14:23 | ||
| ||
Ответить | Правка | Наверх | Cообщить модератору |
27. «Microsoft открывает часть кода игры Minecraft: Java Edition» | –2 + / – | |
Сообщение от Аноним (27), 07-Окт-18, 18:15 | ||
| ||
Ответить | Правка | Наверх | Cообщить модератору |
53. «Microsoft открывает часть кода игры Minecraft: Java Edition» | +1 + / – | |
Сообщение от Урри (?), 08-Окт-18, 18:13 | ||
угу. вот твоё выступление — яркий пример таких погромистов.
| ||
Ответить | Правка | К родителю #18 | Наверх | Cообщить модератору |
28. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от Аноним (28), 07-Окт-18, 19:45 | ||
Ответить | Правка | Наверх | Cообщить модератору |
31. «Microsoft открывает часть кода игры Minecraft: Java Edition» | +1 + / – | |
Сообщение от Аноним (31), 07-Окт-18, 21:09 | ||
| ||
Ответить | Правка | К родителю #28 | Наверх | Cообщить модератору |
29. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от Аноним (29), 07-Окт-18, 20:30 | ||
| ||
Ответить | Правка | Наверх | Cообщить модератору |
30. «Microsoft открывает часть кода игры Minecraft: Java Edition» | +2 + / – | |
Сообщение от фывыфв (?), 07-Окт-18, 20:44 | ||
| ||
Ответить | Правка | Наверх | Cообщить модератору |
35. «Microsoft открывает часть кода игры Minecraft: Java Edition» | –2 + / – | |
Сообщение от arisu (ok), 08-Окт-18, 07:05 | ||
| ||
Ответить | Правка | Наверх | Cообщить модератору |
36. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от Zenitur (ok), 08-Окт-18, 07:38 | ||
Я всегда удивлялся, видя в чате сообщения что «майнкрафт тормозит, играю на нетбуке мамы». Потому что у меня майнкрафт никогда не тормозил. Он не тормозит на двух моих стационарных компьютерах «2 ядра, 2 гига» 2009 года покупки, на одном «встройка» GeForce 7025, на другом Radeon HD 3250. Не говоря уже о более мощных решениях, вроде 9800GT. На современных компах FPS вообще должен быть запредельным! | ||
Ответить | Правка | К родителю #30 | Наверх | Cообщить модератору |
55. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от аналононимус (?), 08-Окт-18, 18:59 | ||
| ||
Ответить | Правка | К родителю #36 | Наверх | Cообщить модератору |
48. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от Аноним (-), 08-Окт-18, 14:44 | ||
| ||
Ответить | Правка | К родителю #29 | Наверх | Cообщить модератору |
38. «Microsoft открывает часть кода игры Minecraft: Java Edition» | –1 + / – | |
Сообщение от Kol (?), 08-Окт-18, 09:21 | ||
| ||
Ответить | Правка | Наверх | Cообщить модератору |
39. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от Аноним (31), 08-Окт-18, 09:39 | ||
| ||
Ответить | Правка | Наверх | Cообщить модератору |
54. «Microsoft открывает часть кода игры Minecraft: Java Edition» | + / – | |
Сообщение от Аноним (54), 08-Окт-18, 18:17 | ||
|