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

Обзор стремительно развивающейся среды разработки microStudio

Время на прочтение7 мин
Количество просмотров22K
Всего голосов 19: ↑17 и ↓2+19
Комментарии32

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

  • javaScript не очень подходит для начинающих

А почему?

Но тем не менее он (С#) достаточно сложен для новичка

Да там вообще много интересных высказываний. Имхо для новичка нет более простых языков, чем Python, JS, C#.

microStudio я советую попробовать новичкам

Советовать мутный инди-конструктор-редактор с крошечным комьюнити.. это конечно самое то что нужно новичкам.

Да там вообще много интересных высказываний. Имхо для новичка нет более простых языков, чем Python, JS, C#.

Расскажите, какие там еще интересные высказывания?
Я же говорю про C# в сравнении, а не в целом. Хотя в статье этого можно не понять, извиняюсь если это так.
Я рассуждаю так: можно тонны книг прочитать, понять синтаксис и семантику языка, но не уметь писать на нем что либо вообще. От момента когда новичок (условно полный ноль в программировании) изучит С#, с его безусловно большими возможностями, осознает вообще что такое функции, массивы и т.д., до момента когда он сможет свободно писать свой код для игры пройдет гораздо больше времени чем с microScript. А чтобы понимать чужой код, уйдет еще тонна времени. За это время человек просто бросит это занятие вовсе, и у нас одним программистом меньше :)
У человека не хватает мотивации когда он не видит результата своих усилий. А когда создаешь простенькую игру и попутно изучаешь язык, то мотивация есть и человек учит и учит дальше. В microStudio с microScript это возможно. С С# и Unity ничего быстрого не выйдет, есть большая вероятность, что новичок быстро перегорит (я же свой опыт в статье описывал).
В программировании основная сложность не в изучении языка, а в изучении приемов программирования (поправьте если я не прав). С# на практике для этого несколько сложнее. В microScript новичку не надо ломать голову какой тип приписать переменной, где ставить скобочки. Ну и т.д.
Проще говоря, чтобы "въехать в тему", да, я советую microScript. А потом смело можно переходить на другой язык, например на JS или Lua.
Грести всех под одну гребенку конечно не стоит, для кого то С# будет как 2x2, для кого то нет. Я не убеждаю, и не буду убеждать человека не начинать с С# или JS, Python - это просто глупо.

Мое субъективное мнение, заключается в том, что любой из этих языков сложнее языка microScript и любой из них одновременно лучше (в контексте создания игр).

Советовать мутный инди-конструктор-редактор с крошечным комьюнити.. это конечно самое то что нужно новичкам.

А вы работали, создавали игры в microStudio? Просто Вы говорите "мутный инди-конструктор-редактор", я не совсем Вас понимаю. Это среда программирования, разработки игр, которая к тому в первую очередь для новичком и сделана (по словам ее создателя), там нет даже намеков на конструктор.
По поводу комьюнити я даже и ответить не знаю что, проект достаточно молодой, с этим все понятно. Собственно с этим надо работать, я и статью написал в целях этого. Поэтому Вы правы, это минус. Но все же проекты с чего то начинали. А с таким подходом (игнором), ни один из них никогда бы не вышел в свет!
Но, однако, в статье я не упоминал, про "крошечный комьюнити", не знаю, насколько эта формулировка подходит. Если мы про русскоязычное сообщество говорим - то конечно да, его нет вовсе. Решающий ли это фактор, чтобы даже не попробовать (а я именно советую попробовать) поработать с microStudio? - однозначно нет. Там есть и обучающий материал и подробная документация, и пускай не большое, но сообщество. Есть с чем поработать. Заглядывать в перед, говорить о том, будет ли этот проект в будущем популярным я не буду. Но свою определенную нишу думаю займет.
Если Вам интересно, здесь сейчас обсуждают плюсы и минусы этой среды https://news.ycombinator.com/item?id=29482163

И конечно оговорюсь, если я и считаю себя просвещенным в какой-либо области, то прекрасно понимаю, что есть люди на порядок просвещеннее меня. Поэтому я бы хотел все же услышать от Вас более детальный разбор того, почему Вы скептически относитесь к советам попробовать microStudio новичкам? А так же какие мои суждения в корне являются не верными, в чем и где я заблуждаюсь?

Спасибо Вам за комментарий, я буду ждать Вашего ответа!

Могу только сказать что фраза вырвана из контекста. В контексте образовательной среды программирования (коей и задумывалась microStudio) javaScript не очень подходит. Собственно это мнение создателя microStudio с которым я соглашусь. С моей точки зрения, заменить javaScript на упрощенный Lua было правильно. microScript правда простой и не требовательный скриптовый язык. После него, будет легче понять и переключиться на другие.
Сейчас microStudio поддерживает и другие языки: Python, JS и полноценный Lua. Теперь есть возможность выбрать понравившейся язык и изучать, создавая игры в microStudio.

А почему?

Я думаю (личное, субъективное мнение, на небольшом опыте преподавания) потому что JS — очень многослойный язык, с множеством ситуаций типа "а можно сделать и так". Продвигаясь в изучении приходится не только осваивать новые навыки, но и отбрасывать многое из того, что изучалось в начале. В принципе, нормально, но если ставить вопрос, на примере какого языка начать изучать программирование, то быстрее грокнуть что-то кроме JS. А потом с этим опытом уже изучать JS. Хотя взрослый студент с хорошей мотивацией и с JS нормально начнет.

> microStudio
> micro
> написана на JS

Вы уверены, что это действительно «микро»?

#electronlifematters

В названии проекта, то что он фактически называется microStudio я уверен.

https://github.com/pmgl/microstudio
https://github.com/pmgl/microstudio

В правильности того, что microStudio написана только на JS я не уверен. Извините, я не совсем понял вопрос. Но по поводу названия у меня тоже скептический настрой.

Почему JavaScript не очень хорош для быстрого написания игр?

Может потому, что на Github в рамках реализации на JS взлетают такие проекты с сотнями звёзд? ?

Проект от JohnEarnest — Mako
Mako (VM) — это портативная виртуальная игровая консоль на основе стека. Mako проект был разработан таким образом, чтобы его было легко переносить и внедрять: даже включая дополнительные функции, эталонная реализация занимает всего несколько страниц Java. Все игры и демки, написанные для Mako Теперь можно попробовать прямо в браузере благодаря Mako.JS .

Демо игры проекта Mako запускаемые в браузере

image

Mako on Github

P.S. Тоже похожий проект jeforth.3we
Главный недостаток браузерного JS — постоянные и трудноразрешимые проблемы с совместимостью, особенно когда дело касается мобильных устройств. Если игра на Unity будет работать практически везде с минимальными модификациями, то отлавливать глюки в JS на тоннах разнообразных устройств вы просто поседеете.
К тому же изрядная часть пользователей сидит на таком недобраузере как Safari, который стал IE6 нашего времени — под него приходится городить тонны костылей и хаков для обхода многочисленных ограничений, причём с каждой новой версией ограничений становится только больше. Например, нормальной работы со звуковыми эффектами вы там никогда не добьётесь.

Там для написания игр используется Forth, насколько я вижу, а платформа на Java

Да, какой то авторский вариант расширенный под решаемые на нём задачи.

Почему люди все еще наступают на грабли с созданием своего языка? У существующего языка, как минимум, присутствуют: разработчики, план по его развитию, стандартная библиотека, документация, LSP, среды разработки, туториалы, статьи, стаковерфлоу и т.д. Зачем от этого всего отказываться? Просто интегрировать обычный lua, возможно даже с компромиссами, в миллиард раз быстрее и менее трудозатратно, чем пилить свой велосипед.

P.s На скриншоте автор никак не затронул синтаксис lua кроме комментариев, зачем вообще его было менять? Замена -- на // сделала его легче и дружелюбнее к новичкам?

Почему люди все еще наступают на грабли с созданием своего языка? У существующего языка, как минимум, присутствуют: разработчики, план по его развитию, стандартная библиотека, документация, 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 к новичкам? - однозначно да. Достаточно ли этот язык хорош, чтобы делать на нем крупные проекты - нет. Во всяком случае, пока нет.

В microScript нет логического значения, 0 это лож, все что не 0 является истиной.

В Форт (Forth) также, но в нём и отдельно логических переменных нет.
(даже может и не быть и локальных переменных) ?

Ого, спасибо Вам за полезную информацию!
Я не слышал про Forth (или просто не помню), но это очень занятно. Я думаю ознакомлюсь с ним в целях самообразования, обязательно. А Вы программируете на Forth? У Вас еще ник такой, вот я и подумал)

Да, по мере возможностей использую Forth, их много разных есть с разным построением и для разных целевых применений.
Форт может показаться «неказистым» языком программирования, но он вполне рабочий инструментарий с возможностями метарасширений.

P.S. В дополнение интересных проектов с пересечением на создание инди игр — retro-40 — Проект фантазийного Форт ретро-компьютера (программа) 256x192, 16цветов, звук с некоторым количеством игр и демо (включая программный рейтрейсинг)
на базисе Ficl Форта (SDL2). Вдохновлённый Lambda/8, Jupiter ACE.
Собрался и запустился в LiveCD Linux Puppy (должен и под Windows собраться) Для нормального отображения фонта под сборкой Linux 32 исправил файл font.fs в этих строках (для 64-е бита правка не требуется)

: @font ( c -- u ) CELLS 2 * font + @ ;
: !font ( udg c -- ) CELLS 2 * font + ! ;


(т.к. изначально font таблица хранения данных расчитана под 64-бит ячейку памияти при сборке под Linux64, если не изменять в этом моменте Си код api,c)

Фонт выбран размером 4x6 :)
Snake игра изначально загружается,
а к примеру загрузить Форт Tetris программу и запустить
include tetris.fs
tetris


image

P.S. На идеях Форта и конкатенативного языка родились и другие языки, как к примеру Factor

Куда Lua ещё-то упрощать? Вообще вот эти вещи типа отсутствия таблиц, nil и логического типа - выглядит ухудшением а не упрощением.

100%, microScript подразумевается использовать скорее в образовательных целях, совсем новичкам, типа чтобы он был достаточно прост, но в тоже время был и достаточно хорош для написание небольших игр. Не могу судить, хороший это подход или нет. Я достаточно легко освоил этот язык, его вполне хватает, чтобы написать что то простое и не сложное, но после этого лучше перейти на тот же Lua. Вот и сам не знаю что выбрать: Lua или JS, хотя склоняюсь ко второму. А что Вы посоветуете? для написания браузерных игр?

Интересный проект, спасибо)

Но мне больше стало интересно как делается такая штука как на том сайте - чтобы игру можно было сохранить как отдельное приложение на смартфоне, или как в винде он предлагает через хром приложение сохранить как ярлык на рабочем столе. Кто-нибудь может подсказать что гуглить чтобы самому можно было сделать так же, грубо говоря чтобы страничка на html и js стала приложением на телефоне?

Гуглите web app manifest и, возможно, PWA.

Спасибо!

Изучение microScript и этого редактора просто не рентабельно учитывая то что наша жизнь относительно короткая

Здравствуйте! А что рентабельно было бы изучать, например для разработки браузерных игр?

А рентабельны на ли разработки браузерных игр?

Смотря каких. Топовые авторы хорошо зарабатывали как на сайтах агрегаторах, Kong или armor games , так и на продаже IP на сайтах типа canyon.

Только делать надо было интересные вещи

Я вот за пять лет разработки своей браузерки ни доллара не заработал. Но у меня правда так себе игра.

Мыльные ребята до сих пор держат всякие Ботва.Онлайн, так что да, рентабельно. Есть примеры древних игр которые еще на флеше были и они таки до сих пор приносят деньги.

Если в качестве основного языка, то определённо нет — экосистема в зачатке, инструментов кот наплакал, стабильность тоже под большим вопросом. Если же для участия в каком-нибудь Ludum Dare или еще каком-нибудь код-джеме, то вполне неплохой вариант, учитывая что сам код после джема пойдет на выброс.

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

Здравствуйте!
В качестве основного языка согласен - язык ведь локальный.
Экосистема в зачатке - согласен. Инструментов мало - а каких необходимых например нехватает?
"Стабильность тоже под большим вопросом" - а почему у Вас такое мнение сложилось? Просто хотелось бы услышать Ваше мнение, со сказаным спорить не буду.

В принципе microStudio поддерживает четыре ЯП: microScript, Lua, JS, Python. Так что конечно можно работать в microStudio, но начинать с изучения например JS а не microScript. Тогда человек, только начавший изучать программирование, точно ничего не потеряет.

Если же для участия в каком-нибудь Ludum Dare или еще каком-нибудь код-джеме, то вполне неплохой вариант, учитывая что сам код после джема пойдет на выброс

microScript действительно для таких целей очень подходит. За 72 часа, да еще если с опытной командой, может прям неплохая игра получиться на выходе, даже не захочется код выбрасывать:)

Инструментов мало — а каких необходимых например нехватает

Поддержка языковых серверов — конечно хорошо иметь свой редактор, но кто-то может любить vim больше, да и поддержка самих серверов увеличивает количество поддерживаемых языков с 4 до n.


  • Что со звуком? Какие шансы завести какой-нибудь spatial звук?
  • Что с упаковкой ресурсов или хотя бы текстурных атласов? Что с поддержкой разных медиаформатов изображений и звуков? Что-то можно затащить из питона и js, но для mS почти наверняка нет подходящих штук.
  • Что с движковыми функциями типа ECS?
  • Что интерпопом в другие языки и FFI? Хотя бы в виде wasm.
  • Системы AI и поиск пути?
  • Система модулей/пакетов по типу npm/pypi/luarocks в каком-нибудь виде имеется?
  • Система плагинов у редактора есть? Очень не хотелось бы висячие пробелы ручками подтирать, например.
    Тысячи мелочей на самом деле в какой-то момент становятся весьма заметными. Хорошо хоть l11n для самого редактора имеется в каком-то виде.

Стабильность тоже под большим вопросом

Ожидать, что за три версии появится что-то production grade уровня точно нельзя, также как и сформировать удобную API или хотя бы скрестить несколько имеющихся достаточно удобным образом. Особенно, если учитывать, что в репозитории я увидел примерно 0 тестов. SemVer в репозиторий тоже не завезли, поэтому пока что можно считать редактор какой-нибудь 0.3.0 версией. Ну и в качестве простого тестам можно попробовать открыть какой-нибудь мегабайтный текстовый файлик и попробовать его покрутить-поредактировать — ожидаю довольно неприятных ощущений и лагов как прокрутки, так и ввода, но конечно могу ошибаться.

Хотел было спросить про языковые серверы, но увидев JS в качестве языка разработки самого редактора вопросы как-то отвалились. С похожим успехом можно было брать какой-нибудь Love2d и работать с ним через ZeroBrane Studio.

Задавал Жилю такой вопрос:
Оригинал текста:

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. Когда ваш проект будет завершен, вы можете экспортировать код сервера, чтобы установить его на свои собственные серверы.

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

Публикации

Истории