"Pico-8 на стероидах" это на самом деле очень удачное сравнение. Создатель microStudio вдохновлялся Pico-8 при разработке, действительно можно сравнить с Pico-8.
"Не очень понятно что там с темпом разработки, вместо редакторов музыки и звуков все еще заглушки, но гитхаб вроде активный." - темп довольно быстрый, тут у меня вопросов к разработчику нет. Насчет редакторов музыки и звуков могу сказать что да, вопрос их создания стоит уже давно. Но эта проблема не может конкурировать с другими важными пунктами на дорожной карте проекта (вторая версия языка, 3D API, реализовать возможность импорта 3D моделей и многое другое). Гитхаб еще как активный, посетите дискорд кстати, подчерпнете больше информации о проекте.
извините конечно, но имхо по сравнению с ванильной lua лучше совсем не стало,
microScript не лучше Lua и не пытается быть лучше. Область применения microScript ограничена созданием игр и приложенийв среде microStudio.
a=[1,2,3]
b=[1,2,3,0]
a[4] == b[4]?
Поскольку в этом примере вы используете [] вместо {}, предположу что это пример кода на microScript а не Lua.
В microScript это сравнение двухнесуществующих значений (индексы начинаются с 0, не как в Lua). Таким образом, a[4] == b[4] все равно что0 == 0в microScript - вернет true.
Если иметь ввиду все-таки Lua, тогда запишем так:
a = {1,2,3}
b = {1,2,3,0}
a[4] == b[4]
Теперь мне уже понятно о чем речь. Теперь мы сравниваем nilи0. В Lua nil == 0 вернет false.
nil и bool выкинули, вместо него теперь 0, и отличить его от несуществующего в таблице значения теперь нельзя?
Тут надо оговориться - в microScript нет таблиц как в Lua:
таблица в Lua это такая структура данных, которая сочетает в себе свойства массива, хэш-таблицы («ключ»-«значение»), структуры, объекта.
В microScript есть списки (list), которые можно рассматривать как массивы подобные массивам в JavaScript. Но я не буду браться прям сравнивать, так как не программировал на JS. Просто наблюдаю что эти вещи похожие.
Ну а теперь перепишем Ваш пример для microScript:
a=[1,2,3] //по индексу 3 ничего нет, поэтому там 0
b=[1,2,3,0] //по индексу 3 имеем доступ к значению 0
a[3] == b[3] //вернет 1(true)
Понятно, что это очень простой пример (мало элементов в списках) и мы явно видим, что сравнимаем "ничего" (что в microScript по умолчанию 0) со значением 0. Но если бы у нас были большие списки и мы хотели сравнить пятидесятые элементы списка, то результат был бы не очевиден. В данном примере мы имеем два списка с целыми числами и хотим выяснить, равен ли определенный элемент одного списка другому определенному элементу другого списка?
Единственная проблема заключалась бы в том, что в списках содержались бы как нулевые значения (например переменная со значением 0), так и 0 (как "ничего"). В таких списках не отличить 0 (как "ничего") от переменной со значением ноль. А это в microScript может случиться только тогда, когда списки могут быть разреженными (ну, как разреженные массивы). А разреженными они могут быть только тогда, когда мы будем пользоваться операциями со списком, не описанными в документации.
А если бы я хотел сравнить последние элементы списков, я бы сделал так:
list_a = [1,2,3]
list_b = [1,2,3,4]
list_a[list_a.length-1] == list_b[list_b.length-1] //вернет false
//list.length хранит длину списка (количество элементов в списке)
Операции со списком в microScript, расскажу о них в следующей статье
Если бы я хотел сравнить элементы одного списка начиная с индекса 0, с элементами другого списка, также начиная с индекса 0, при этом не сравнивая несуществующие значения, я бы сделал например так:
list_a = [1,2,3]
list_b = [1,2,3,0]
if list_a.length <= list_b.length then
for i = 0 to list_a.length-1
print(list_a[i] == list_b[i])
end
end
if list_a.length > list_b.length then
for i = 0 to list_b.length-1
print(list_a[i] == list_b[i])
end
end
В консоли: 1 1 1
Да, в microScript можно создать разреженный список. Он будет содержать пустые значения, которые в Lua были бы nil, а в microScript они будут нулевыми, но можно этого и избежать.
объявление массива тем же оператором что и индесация тоже упрощение сомнительное.
В этом microScript похож на JS а не Lua. microScript транспилируется в JS кстати говоря.
Поскольку использование оператора отрицания может быть менее очевидной вещью, я препеписал эту формулировку полностью (написал более понятно, на мой взгляд). А так же добавил пример использования. Надеюсь теперь этот пункт будет более понятен, особенно тем, кто только знакомится с программированием.
Спасибо за это замечание! Если Вы видите еще какие-то недочеты, дайте знать:)
Привидите хотя бы пример ЯП который является "обрезанной версией" Python, который можно сравнить с microScript.
microScript может напоминать чем то Python, но только на первый взгляд. Да и чего стоит только придирчивость Python к отступам.
Скорее microScript напоминает чем то Lua. По словам автора, он вдохновлялся именно этим языком при создании microScript. А также, если брать во внимание синтаксис, то можно сравнить и с MiniScript.
В сущности оно так и есть, как я и сказал в статье: "...microScript - это локальный язык. В настоящее время он используется только в пределах microStudio." Ну а microStudio это среда разработки игр.
Совершенно точно подмечено, да, думаю что можно добавить этот пункт в статью.
Да, а переменные класса ведь не глобальные, их область видимости какая, внутри класса? А в методах класса?
Эти переменные не являются глобальными, они доступны только внутри класса. Переменные из методов также доступны только классу, которому пренадлежит метод. С объектами тоже самое.
Вопрос в том, как у вас там дальше с работой со спрайтами, таймлайном, движением по траекториям и программной анимацией...
вопрос в другом, если собственно "по синтаксису схож с Lua" зачем было изобретать велосипед, а не просто скомпилировать ту же Lua в webassembly?или fengary — lua переписанная на яваскрипте.
microScript это простой ЯП, легкий в изучении, легче чем Lua. Он похож на Lua, но далеко не во всем. microScript был создан для начинающих программистов, как легкий для изучения язык с которого можно быстро стартануть. Он и с простым синтаксисом, и не сильно ругающейся консолью, без лишних кавычек и закорючек - говоря простыми словами:)
Здравствуйте! Возможно, если Вы переформулируете вопрос, я смогу понять точнее. Зачем я написал статью? Или зачем существует этот язык и какие задачи можно эффективнее решить на нем?
"Это игра ума, это дипломная работа" - нет, это не игра и не дипломная работа:)
Эта статья по сути является дополнением к предыдущей статье.
Ну, уделять время практике априори необходимо. Учиться программировать по 15-30 минут в день не советую - врядли что то усвоится и отложится в памяти. Лучше 2-3 дня в неделю, но по 2-3 часа. Но я понял Ваш посыл, я просто советую уделять больше времени в день для обучения. Ну и да, лучше не переусердствовать, можно быстро перегореть.
Главное надо понимать, зачем вы учитесь программировать - от туда и черпать мотивацию. Нужно глядеть на успех других и понимать, что вы тоже добьетесь этих высот, если будете усердно трудиться в этом направлении.
Автор, исправьте ошибку в совете №2:
В следующий раз, когда вы почувствуете себя подавленным и подавленным, найдите время, чтобы подумать, как далеко вы зашли.
Если в качестве основного языка, то определённо нет — экосистема в зачатке, инструментов кот наплакал, стабильность тоже под большим вопросом.
Здравствуйте! В качестве основного языка согласен - язык ведь локальный. Экосистема в зачатке - согласен. Инструментов мало - а каких необходимых например нехватает? "Стабильность тоже под большим вопросом" - а почему у Вас такое мнение сложилось? Просто хотелось бы услышать Ваше мнение, со сказаным спорить не буду.
В принципе microStudio поддерживает четыре ЯП: microScript, Lua, JS, Python. Так что конечно можно работать в microStudio, но начинать с изучения например JS а не microScript. Тогда человек, только начавший изучать программирование, точно ничего не потеряет.
Если же для участия в каком-нибудь Ludum Dare или еще каком-нибудь код-джеме, то вполне неплохой вариант, учитывая что сам код после джема пойдет на выброс
microScript действительно для таких целей очень подходит. За 72 часа, да еще если с опытной командой, может прям неплохая игра получиться на выходе, даже не захочется код выбрасывать:)
Is it possible now or in the future to create games in microstudio with online multiplayer, 2D or 3D? How difficult is it in terms of implementation? How could this be done? Is microStudio suitable for this?
That's a big YES! Definitely planned, already on the Roadmap and very clear to me how this will work. As the rest of microStudio, it will work with any language / 2D / 3D graphics and optional libs combination you can think of. It will be very easy to dive in, you won't have to deploy a server or anything, microStudio will handle all the magic for you. You can edit your server code live, while your server is running, microStudio-style :-). Only drawback during the dev phase may be the server latency, depending on where you are accessing microStudio from. When your project is done, you can export the server code to install it on your own servers.
Автоматический перевод:
Возможно ли сейчас или в будущем создавать игры в microstudio с онлайн-мультиплеером, 2D или 3D? Насколько это сложно с точки зрения реализации? Как это можно было сделать? Подходит ли для этого microStudio?
Это большое "ДА"! Определенно запланировано, уже на Дорожной карте и мне очень ясно, как это будет работать. Как и остальная часть microStudio, она будет работать с любым языком / 2D / 3D графикой и дополнительной комбинацией библиотек, которую вы можете придумать. Погрузиться в это будет очень легко, вам не придется развертывать сервер или что-то еще, microStudio справится со всем волшебством за вас. Вы можете редактировать код своего сервера в режиме реального времени, пока ваш сервер работает, в стиле microStudio: -). Единственным недостатком на этапе разработки может быть задержка сервера, в зависимости от того, откуда вы получаете доступ к microStudio. Когда ваш проект будет завершен, вы можете экспортировать код сервера, чтобы установить его на свои собственные серверы.
Ого, спасибо Вам за полезную информацию! Я не слышал про Forth (или просто не помню), но это очень занятно. Я думаю ознакомлюсь с ним в целях самообразования, обязательно. А Вы программируете на Forth? У Вас еще ник такой, вот я и подумал)
100%, microScript подразумевается использовать скорее в образовательных целях, совсем новичкам, типа чтобы он был достаточно прост, но в тоже время был и достаточно хорош для написание небольших игр. Не могу судить, хороший это подход или нет. Я достаточно легко освоил этот язык, его вполне хватает, чтобы написать что то простое и не сложное, но после этого лучше перейти на тот же Lua. Вот и сам не знаю что выбрать: Lua или JS, хотя склоняюсь ко второму. А что Вы посоветуете? для написания браузерных игр?
Могу только сказать что фраза вырвана из контекста. В контексте образовательной среды программирования (коей и задумывалась microStudio) javaScript не очень подходит. Собственно это мнение создателя microStudio с которым я соглашусь. С моей точки зрения, заменить javaScript на упрощенный Lua было правильно. microScript правда простой и не требовательный скриптовый язык. После него, будет легче понять и переключиться на другие. Сейчас microStudio поддерживает и другие языки: Python, JS и полноценный Lua. Теперь есть возможность выбрать понравившейся язык и изучать, создавая игры в microStudio.
Почему люди все еще наступают на грабли с созданием своего языка? У существующего языка, как минимум, присутствуют: разработчики, план по его развитию, стандартная библиотека, документация, LSP, среды разработки, туториалы, статьи, стаковерфлоу и т.д. Зачем от этого всего отказываться?
Хороший вопрос. Наверное сравнимый с вопросом: зачем был создан C#, когда был C++. Но я все же понимаю к чему Вы клоните и в принципе соглашусь. Да, для создателя microStudio это была в некотором смысле авантюра. Но microScript не совсем новый язык, это упрощенный Lua.
Просто интегрировать обычный lua, возможно даже с компромиссами, в миллиард раз быстрее и менее трудозатратно, чем пилить свой велосипед.
Как я и сказал, это и есть Lua, только упрощенный. Кроме того в microStudio по мимо своего локального языка, интегрированы уже несколько других: Lua, JS, Python.
P.s На скриншоте автор никак не затронул синтаксис lua кроме комментариев, зачем вообще его было менять? Замена -- на // сделала его легче и дружелюбнее к новичкам?
Ну так постойте, как можно судить об языке по скриншоту? Я не уделил время для microScript в этой статье. Возможно это можно будет сделать в другой статье. Даже что касается синтаксиса комментариев, различия еще и в том что в microScript нет многострочных комментариев как в Lua. Помимо того, в microScript нет значения nil,любая переменная, которой не присвоено значение имеет по умолчанию значение 0. В microScript нет логического значения, 0 это лож, все что не 0 является истиной. Нет пользовательских данных, потоков и таблиц. Проще говоря это урезанная версия Lua. Из этого вытекают свои плюсы и минусы. Дружелюбен ли microScript к новичкам? - однозначно да. Достаточно ли этот язык хорош, чтобы делать на нем крупные проекты - нет. Во всяком случае, пока нет.
"Pico-8 на стероидах" это на самом деле очень удачное сравнение. Создатель microStudio вдохновлялся Pico-8 при разработке, действительно можно сравнить с Pico-8.
"Не очень понятно что там с темпом разработки, вместо редакторов музыки и звуков все еще заглушки, но гитхаб вроде активный." - темп довольно быстрый, тут у меня вопросов к разработчику нет. Насчет редакторов музыки и звуков могу сказать что да, вопрос их создания стоит уже давно. Но эта проблема не может конкурировать с другими важными пунктами на дорожной карте проекта (вторая версия языка, 3D API, реализовать возможность импорта 3D моделей и многое другое). Гитхаб еще как активный, посетите дискорд кстати, подчерпнете больше информации о проекте.
Да, автономная версия есть, вот ссылка https://microstudio.itch.io/microstudio
microScript не лучше Lua и не пытается быть лучше. Область применения microScript ограничена созданием игр и приложений в среде microStudio.
Поскольку в этом примере вы используете
[]
вместо{}
, предположу что это пример кода на microScript а не Lua.В microScript это сравнение двух несуществующих значений (индексы начинаются с 0, не как в Lua). Таким образом,
a[4] == b[4]
все равно что0 == 0
в microScript - вернетtrue
.Если иметь ввиду все-таки Lua, тогда запишем так:
Теперь мне уже понятно о чем речь. Теперь мы сравниваем
nil
и0
.В Lua
nil == 0
вернетfalse
.Тут надо оговориться - в microScript нет таблиц как в Lua:
таблица в Lua это такая структура данных, которая сочетает в себе свойства массива, хэш-таблицы («ключ»-«значение»), структуры, объекта.
В microScript есть списки (list), которые можно рассматривать как массивы подобные массивам в JavaScript. Но я не буду браться прям сравнивать, так как не программировал на JS. Просто наблюдаю что эти вещи похожие.
Ну а теперь перепишем Ваш пример для microScript:
Понятно, что это очень простой пример (мало элементов в списках) и мы явно видим, что сравнимаем "ничего" (что в microScript по умолчанию
0
) со значением0
. Но если бы у нас были большие списки и мы хотели сравнить пятидесятые элементы списка, то результат был бы не очевиден. В данном примере мы имеем два списка с целыми числами и хотим выяснить, равен ли определенный элемент одного списка другому определенному элементу другого списка?Единственная проблема заключалась бы в том, что в списках содержались бы как нулевые значения (например переменная со значением 0), так и 0 (как "ничего"). В таких списках не отличить 0 (как "ничего") от переменной со значением ноль. А это в microScript может случиться только тогда, когда списки могут быть разреженными (ну, как разреженные массивы). А разреженными они могут быть только тогда, когда мы будем пользоваться операциями со списком, не описанными в документации.
А если бы я хотел сравнить последние элементы списков, я бы сделал так:
Если бы я хотел сравнить элементы одного списка начиная с индекса
0
, с элементами другого списка, также начиная с индекса0
, при этом не сравнивая несуществующие значения, я бы сделал например так:В консоли:
1
1
1
Да, в microScript можно создать разреженный список. Он будет содержать пустые значения, которые в Lua были бы
nil
, а в microScript они будут нулевыми, но можно этого и избежать.В этом microScript похож на JS а не Lua. microScript транспилируется в JS кстати говоря.
Поскольку использование оператора отрицания может быть менее очевидной вещью, я препеписал эту формулировку полностью (написал более понятно, на мой взгляд). А так же добавил пример использования. Надеюсь теперь этот пункт будет более понятен, особенно тем, кто только знакомится с программированием.
Спасибо за это замечание! Если Вы видите еще какие-то недочеты, дайте знать:)
Так сказано в официальной документации:
Привидите хотя бы пример ЯП который является "обрезанной версией" Python, который можно сравнить с microScript.
microScript может напоминать чем то Python, но только на первый взгляд. Да и чего стоит только придирчивость Python к отступам.
Скорее microScript напоминает чем то Lua. По словам автора, он вдохновлялся именно этим языком при создании microScript. А также, если брать во внимание синтаксис, то можно сравнить и с MiniScript.
В сущности оно так и есть, как я и сказал в статье: "...microScript - это локальный язык. В настоящее время он используется только в пределах microStudio." Ну а microStudio это среда разработки игр.
Совершенно точно подмечено, да, думаю что можно добавить этот пункт в статью.
Эти переменные не являются глобальными, они доступны только внутри класса. Переменные из методов также доступны только классу, которому пренадлежит метод. С объектами тоже самое.
Это уже тема для отдельной статьи:)
Вернет 0
microScript это простой ЯП, легкий в изучении, легче чем Lua. Он похож на Lua, но далеко не во всем. microScript был создан для начинающих программистов, как легкий для изучения язык с которого можно быстро стартануть. Он и с простым синтаксисом, и не сильно ругающейся консолью, без лишних кавычек и закорючек - говоря простыми словами:)
Спасибо за замечание, нет, не решает:) Пробел нужно ставить, отредактирую
Здравствуйте! Возможно, если Вы переформулируете вопрос, я смогу понять точнее. Зачем я написал статью? Или зачем существует этот язык и какие задачи можно эффективнее решить на нем?
"Это игра ума, это дипломная работа" - нет, это не игра и не дипломная работа:)
Эта статья по сути является дополнением к предыдущей статье.
Возможно, если прочтете предыдущую стать, Вам станет более понятно о чем речь https://habr.com/ru/post/595213/
Ну, уделять время практике априори необходимо. Учиться программировать по 15-30 минут в день не советую - врядли что то усвоится и отложится в памяти. Лучше 2-3 дня в неделю, но по 2-3 часа. Но я понял Ваш посыл, я просто советую уделять больше времени в день для обучения. Ну и да, лучше не переусердствовать, можно быстро перегореть.
Главное надо понимать, зачем вы учитесь программировать - от туда и черпать мотивацию. Нужно глядеть на успех других и понимать, что вы тоже добьетесь этих высот, если будете усердно трудиться в этом направлении.
Автор, исправьте ошибку в совете №2:
Здравствуйте!
А чем обусловлен выбор движка Unity и как я понимаю C# для разработки игр?
Здравствуйте!
В качестве основного языка согласен - язык ведь локальный.
Экосистема в зачатке - согласен. Инструментов мало - а каких необходимых например нехватает?
"Стабильность тоже под большим вопросом" - а почему у Вас такое мнение сложилось? Просто хотелось бы услышать Ваше мнение, со сказаным спорить не буду.
В принципе microStudio поддерживает четыре ЯП: microScript, Lua, JS, Python. Так что конечно можно работать в microStudio, но начинать с изучения например JS а не microScript. Тогда человек, только начавший изучать программирование, точно ничего не потеряет.
microScript действительно для таких целей очень подходит. За 72 часа, да еще если с опытной командой, может прям неплохая игра получиться на выходе, даже не захочется код выбрасывать:)
Задавал Жилю такой вопрос:
Оригинал текста:
Is it possible now or in the future to create games in microstudio with online multiplayer, 2D or 3D? How difficult is it in terms of implementation? How could this be done? Is microStudio suitable for this?
Автоматический перевод:
Возможно ли сейчас или в будущем создавать игры в microstudio с онлайн-мультиплеером, 2D или 3D? Насколько это сложно с точки зрения реализации? Как это можно было сделать? Подходит ли для этого microStudio?
Здравствуйте! А что рентабельно было бы изучать, например для разработки браузерных игр?
Ого, спасибо Вам за полезную информацию!
Я не слышал про Forth (или просто не помню), но это очень занятно. Я думаю ознакомлюсь с ним в целях самообразования, обязательно. А Вы программируете на Forth? У Вас еще ник такой, вот я и подумал)
100%, microScript подразумевается использовать скорее в образовательных целях, совсем новичкам, типа чтобы он был достаточно прост, но в тоже время был и достаточно хорош для написание небольших игр. Не могу судить, хороший это подход или нет. Я достаточно легко освоил этот язык, его вполне хватает, чтобы написать что то простое и не сложное, но после этого лучше перейти на тот же Lua. Вот и сам не знаю что выбрать: Lua или JS, хотя склоняюсь ко второму. А что Вы посоветуете? для написания браузерных игр?
Могу только сказать что фраза вырвана из контекста. В контексте образовательной среды программирования (коей и задумывалась microStudio) javaScript не очень подходит. Собственно это мнение создателя microStudio с которым я соглашусь. С моей точки зрения, заменить javaScript на упрощенный Lua было правильно. microScript правда простой и не требовательный скриптовый язык. После него, будет легче понять и переключиться на другие.
Сейчас microStudio поддерживает и другие языки: Python, JS и полноценный Lua. Теперь есть возможность выбрать понравившейся язык и изучать, создавая игры в microStudio.
Хороший вопрос. Наверное сравнимый с вопросом: зачем был создан C#, когда был C++.
Но я все же понимаю к чему Вы клоните и в принципе соглашусь. Да, для создателя microStudio это была в некотором смысле авантюра. Но microScript не совсем новый язык, это упрощенный Lua.
Как я и сказал, это и есть Lua, только упрощенный. Кроме того в microStudio по мимо своего локального языка, интегрированы уже несколько других: Lua, JS, Python.
Ну так постойте, как можно судить об языке по скриншоту?
Я не уделил время для microScript в этой статье. Возможно это можно будет сделать в другой статье. Даже что касается синтаксиса комментариев, различия еще и в том что в microScript нет многострочных комментариев как в Lua. Помимо того, в microScript нет значения
nil
, любая переменная, которой не присвоено значение имеет по умолчанию значение0
. В microScript нет логического значения,0
это лож, все что не0
является истиной.Нет пользовательских данных, потоков и таблиц. Проще говоря это урезанная версия Lua. Из этого вытекают свои плюсы и минусы. Дружелюбен ли microScript к новичкам? - однозначно да. Достаточно ли этот язык хорош, чтобы делать на нем крупные проекты - нет. Во всяком случае, пока нет.