Как стать автором
Обновить

Комментарии 16

Здесь большое неудобство доставляет система координат, выбранная в игре: вертикальная ось — это координата Y, а горизонтальная плоскость — XZ

не понимаю, как ещё может быть, всё правильно, 3 оси, в чем проблема?

Обычно ось Z направлена вверх — в обычной аксонометрии
Скажем так, в школьной стереометрии.
НЛО прилетело и опубликовало эту надпись здесь

В компьютерной графике обычно принято считать экран монитора плоскостью XY. И это не вызывает ни каких нареканий пока работаешь с 2D графикой (например рисуешь графики функций). Для добавления оси Z, без изменения "старых привычек", остаётся только один вариант — направить её вдоль оси перпендикулярной плоскости экрана. Вот и получается что понятия вверх/вниз в компьютерных 3D играх соответствуют оси Y.

А в HTML ось Y вообще вниз :)

Мы живём на Земле — у нас есть 2 координаты, определяющие место на поверхности (декартовы или полярные, смотря какой размах работы) и 1 отличающаяся от них координата — высота. В Minecraft ось Y — высота — по своему диапазону значений, практическому смыслу и цене ошибки отличается от X и Z.

В итоге получается интересная ситуация, когда в записи «неравноправных» координат «особое» значение, интересное в особых случаях, находится между «обычными», требуемыми для ориентирования на карте. Это не принципиально, но без привычки работать с этим трудновато, да и с привычкой ошибки нередки (по сравнению с возможной альтернативной записью, в которой высота отделена от других координат, например, находясь в конце).
Да я не спорю… Просто удобнее было бы Z направить вверх, а Y — параллельно поверхности
Найденное решение — в самом скрипте сканер сообщений игрока периодически проверяет лог игровой сессии в папке <USER_DIRECTORY>\AppData\Roaming\.minecraft, чтобы поймать сообщения из чата, распарсить их и выполнить соответствующую связанную питоновскую функцию, если таковая есть.

Можно проще — обработать событие «onChatEvent»
В mcpi этого вроде нет, он предельно простой. Можете привести пример или скрин?
mc = minecraft.Minecraft.create()

events_chat = mc.events.pollChatPosts()
for event in events_chat:
print(event.message)
Это обработка событий сообщений чата.
Еще обрабатываются события касания блока деревянным мечом и попадания стрелы.
github.com/martinohanlon/mcpi/blob/master/mcpi/minecraft.py
Спасибо. Интересно, надо попробовать. В репозитарии для книжки Adventures in Minecraft лежит сервер плюс mcpi к нему — и видно по датам, что mcpi намного старше, чем тот, что в вашей ссылке. Автор один и тот же.

github.com/AdventuresInMinecraft/AdventuresInMinecraft-PC/tree/master/MyAdventures/mcpi

Если ребёнку Roblox тоже нравится, то лучше даже начать с Roblox Studio. Минус — русского интерфейса нет, зато практически полноценный игровой движок с визуальным редактором уровней и анимаций, а также возможностью писать и дебажить скрипты на Lua.

Не уверен, что Lua подходящий первый язык для обучения, хотя и знаком с ним очень мало. Вы не пробовали с ребенком — как ему? Русский интерфейс как раз не очень нужен — то есть его отсутствие вообще не проблема.
В общем-то у меня и к питону есть вопросы по динамической типизации — человеку хорошо бы для начала попробовать строгую типизацию.

Я не думаю, что синтаксис Lua сложнее чем, в Python. Там больше проблем будет объяснить иерархии объектов в игровом мире и всякие логические конструкты в виде событий, методов, свойств и функций. Плюс клиент-серверное взаимодействие начинает довольно много значить, если игру делать многопользовательскую.
Главное, правильно подобрать примеры — начать чисто с построения мира, потом манипулировать свойствами объектов, потом физикой, потом простейшие скрипты и так далее.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории