0,0
рейтинг
20 ноября 2012 в 03:26

Разработка → Язык программирования Monkey



Всем привет!

В этой статье я хотел бы рассказать о Monkey — языке программирования, направленного, в первую очередь, на создание кроссплатформенных 2D-игр. Этот инструмент, на мой взгляд, несколько незаслуженно обделен вниманием разработчиков и я хотел бы это исправить.

Monkey ни в коем случае не является «убийцей» Unity и других подобных инструментов. Но он может заинтересовать начинающих, а также независимых разработчиков игр, чей бюджет в значительной степени ограничен. Если мне удалось вас заинтересовать, добро пожаловать под кат.

Язык


Monkey — объектно-ориентированный, транслируемый язык программирования, кроссплатформенность которого достигается за счет транслирования кода Monkey в нативный для платформы язык.

Официально, код Monkey может быть транслирован в следующие языки программирования: С++, C#, Java, JavaScript и ActionScript. Тем не менее, этот список может быть расширен, путем написания собственных трансляторов. Так, сообществом Monkey, были успешно разработаны трансляторы для Python и BlitzMax.

Monkey относится к семье языков с BASIC-подобным синтаксисом. Но в нем также отчетливо прослеживается влияние Java. Язык имеет статическую типизацию, обеспечивает модульность, поддерживает абстракцию, инкапсуляцию, наследование и полиморфизм, а также интерфейсы, обобщённые типы, свойства, итераторы и исключения.

Пример кода, написанного на Monkey
' включение строгого режима
Strict
 
' импорт модуля mojo
Import mojo
 
' точка входа приложения monkey
Function Main:Int()
	New GameApp
	Return 0
End
 
' основной класс, расширяющий класс mojo app
Class GameApp Extends App
	Field player:Player
 
	' переопределение метода mojo oncreate 
	Method OnCreate:Int()
		' загрузка изображения player.png в переменную img, медиаданные должны хранится в папке project.data  
		Local img:Image = LoadImage("player.png")
		player = New Player(img, 100, 100)
		' установка обновлений в секунду равным 60
		SetUpdateRate 60
		Return 0
	End
 
	' переопределение метода mojo onupdate 
	Method OnUpdate:Int()
		player.x+=1
		If player.x > 100
			player.x = 0
		End
		Return 0
	End
 
	' переопределение метода mojo onrender
	Method OnRender:Int()
		' очистка экрана заданным цветом (красный, зеленый, синий)
		Cls 32, 64, 128
		player.Draw()
		Return 0
	End
End
 
' класс игрока
Class Player
	Field x:Float, y:Float
	Field image:Image
 
	' конструктор
	Method New(img:Image, x:Int, y:Int)
		self.image = img
		self.x = x
		self.y = y
	End
 
	' рисование спрайта
	Method Draw:Void()
		DrawImage image, x, y
	End
End

Автором языка является новозеландский разработчик Марк Сибли — основатель Blitz Research Ltd. Этот человек известен некоторым разработчикам по таким инструментам для создания игр, как BlitzBasic, Blitz3D и BlitzMax. По сути, Monkey является эволюцией линейки всех предшествующих продуктов компании Blitz Research Ltd.

Кроссплатформенность


Как я уже писал выше, кроссплатформенность достигается за счет транслирования. По сути, все что умеет транслятор Monkey — это проверять и транслировать код, собирать валидный для платформы проект, и запускать нативные средства для сборки приложений. В связи с этим, для сборки итогового приложения, вам понадобится установить SDK для всех требуемых платформ. Ниже приведена таблица доступных на данный момент платформ и список необходимого ПО.
Платформа Необходимое ПО
HTML5 не требуется
Flash Flex SDK, Java SE
GLFW (Windows, Mac) MS VC++ или MinGW, OpenAL
Android Android SDK, Java SE (32-bit), ANT (Windows)
iOS OS X 10.6, XCode
XNA (Windows, WP7, XBox 360) XNA Game Studio 4.0, MS VC#, WP SDK 7.1
PSM (PS Vita) PSM SDK

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

Как видно из приведенной выше таблицы, на данный момент поддерживаются следующие платформы: HTML5, Flash, Android, iOS, WP7, PS Vita, Xbox 360, Windows и Mac. Linux также поддерживается, но пока неофициально. Как и в случае с трансляторами, этот список может быть расширен путем собственной реализации поддержки необходимых вам платформ.

Транслятор

Транслятор, как бы странно это не звучало, написан на Monkey. Но как и в случае с яйцом и курицей, был промежуточный этап, когда транслятор был написан на BlitzMax. Исходный код транслятора полностью открыт, поэтому, в случае необходимости, вы можете вносить изменения и пересобирать его в Monkey, используя целевую платформу Stdcpp (стандартный C++).

Препроцессор

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

Использование нативного кода

Для написания платформозависимого кода может быть использован нативный для платформы язык. С помощью директивы Extern, в код Monkey могут быть включены классы и функции, использующие специфичные особенности платформы. Это дает возможность практически без ограничений расширять функционал вашего приложения.

Модули



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

«Из коробки» Monkey поставляется со следующими модулями:
  • monkey (базовые возможности языка)
  • brl (набор классов и функций для работы с потоками)
  • reflection (отражение)
  • os (модуль для работы с операционной системой)
  • dom (модуль для работы с DOM-деревом HTML-документа)
  • mojo (2D-фреймворк)
  • opengl (модуль для работы c OpenGL)

В дополнение к этому списку, сообществом разработчиков было написано более 20-ти дополнительных модулей, включая порты различных физических движков (Box2D, Chipmunk и Fling), GUI-системы, модули для работы со шрифтами, модули для реализации IAP (in-app purchase), модули для работы с XML, JSON и различными сервисами. Список большинства доступных, на данный момент, модулей можно посмотреть здесь.

Разработка игр




Вот мы и подошли к самому главному. В начале статьи я сказал, что Monkey, в основном, используется для создания 2D-игр. Но, как видите, сам язык под это дело не заточен.

Mojo

Для разработки игр используется модуль mojo, который поставляется вместе с Monkey. Этот модуль предоставляет разработчику кроссплатформенный API для работы с 2D-графикой, звуком и устройствами ввода. Возможности фреймворка несколько ограничены и связано это, в первую очередь, с необходимостью поддержки множества платформ. Не все возможности доступные на одной платформе доступны на другой. Если какая-то «фишка» недоступна хотя бы на одной из платформ, то она не будет включена в mojo. Конечно, это несколько радикально. Но в тоже время, вы сможете быть уверены, что ваше приложение будет одинаково работать на всех платформах.

Вторая причина столь скромного функционала — простота добавления новых платформ. Технологии меняются с невероятной скоростью. То тут, то там появляются новые устройства и операционные системы. Именно поэтому, возможность оперативного добавления поддержки новой платформы, дает неоспоримое преимущество перед другими подобными инструментами.

Игровые фреймворки



Конечно, функционала mojo недостаточно для написания полноценной игры. Ведь игра — это не только работа с графикой, звуком и устройствами ввода, но и пользовательский интерфейс, различные состояния, тайлы, анимация, физика и прочее. Всего этого в mojo, к сожалению, нет. Но на помощь приходят игровые фреймворки, и другие модули, созданные сообществом Monkey.

Список популярных игровых фреймворков для Monkey
Diddy. Один из самых популярных фреймворков для Monkey. Помимо, непосредственно, фреймворка, предоставляет большое количество дополнительного функционала.

FantomEngine. Создателем фреймворка является автор книги «Monkey Game Development», все примеры в которой сделаны с использованием fantomEngine.

Flixel. Порт популярного flash-фреймворка flixel. Портированием данного фреймворка занимаюсь я, но на данный момент, в виду отсутствия времени, работа над ним приостановлена.

Playniax. Единственный коммерческий фреймворк, но с неплохими отзывами. Автором является разработчик одноименного фреймворка для BlitzMax.

Помимо этих 4-х фреймворков, на официальном сайте можно найти ссылки еще на 4-5 подобных инструмента различной степени завершенности.

3D

Если же вашей целью является создание 3D-игр, то в вашем распоряжении есть модуль opengl (работает не на всех платформах) или фреймворк minib3d. Но в целом, в этом плане, все довольно-таки плохо.

Игры, сделанные на Monkey

Список популярных игр, сделанных на Monkey

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

Стоимость и модель распространения


Стоимость pro-лицензии Monkey составляет $99. За эту сумму вы получаете: пожизненную поддержку и обновления, доступ к форуму официального сайта, модуль mojo для всех официально поддерживаемых платформ и возможность создания коммерческих игр.

Также, для загрузки доступна демо-версия, в состав которой входит mojo для HTML5. С помощью этой версии вы не сможете создавать коммерческие игры.

На самом деле, говоря о демо и pro-версиях я имею в виду только mojo, так как сам Monkey является общественным достоянием и распространяется совершенно бесплатно. К сожалению, у Monkey отсутствует официальный репозиторий, поэтому вы можете скачать только пользовательские форки.

На данный момент, известны два форка Monkey:


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

Недостатки


Как и любой программный продукт, Monkey имеет свои минусы. Ниже, я постараюсь рассказать о самых важных из них, а также предложить способы их решения.

IDE

Наверное, это самая серьезная проблема — отсутствие нормальной среды разработки. Несмотря на то, что Monkey поставляется с двумя IDE (Monk и Ted), ни одну из них нельзя назвать полноценной. Я бы скорее назвал их чуть продвинутым блокнотом, не более. Писать на них серьезные проекты весьма проблематично.



Для решения этой проблемы можно воспользоваться коммерческой Jungle IDE (есть бесплатная lite-версия) или одним из нескольких плагинов для популярных текстовых редакторов. Тем не менее, проблема с IDE, к сожалению, остается одной из ключевых.

Отсутствие вспомогательных инструментов

Большинство профессиональных инструментов для создания игр поставляются вместе с редакторами уровней, спрайтов, анимации и т. д. В Monkey подобных инструментов вы не увидите. Есть только язык, модули и IDE.

На выручку приходит стороннее ПО, как платное так и бесплатное. Обычно, сделать импорт проектов из подобных инструментов, не составляет больших проблем. К тому же, если поискать по официальному форуму, можно найти уже готовые решения, такие как, импорт текстурных атласов из TexturePacker, импорт тайловых карт из Dame и Tiled и т.д.

Производительность HTML5

HTML5-версия mojo использует 2D-контекст, что отрицательно сказывается на производительности игр. К сожалению, WebGL не поддерживается в IE. И как я уже писал ранее, если какая-то особенность где-то не поддерживается, то она не используется вовсе.

Чтобы исправить эту ситуацию, можно попробовать воспользоваться экспериментальным патчем для mojo — Mojo HTML5 GL, который заменяет 2D-контекст на WebGL, что дает существенный прирост производительности.

Официальный сайт

Еще один привет из прошлого — официальный сайт. Да, он справляется со своей прямой обязанностью — предоставлять пользователям возможность задавать вопросы и получать ответы, но в остальном это очень примитивный форум с ужасным дизайном. Многие из тех, кто заинтересовался Monkey, начинали сомневаться сразу после просмотра главной страницы. А когда переходили к демкам, с ужасом убегали и никогда не возвращались (я не преувеличиваю). Несмотря на то, что проблема не касается непосредственно разработки, я считаю ее одной из самых серьезных второстепенных проблем.

Название

Многие пользователи жалуются на то, что искать информацию о Monkey очень тяжело, так как они постоянно натыкаются на информацию об обезьянах. К тому же, словосочетание monkey coder имеет негативный окрас, из-за схожести с Code Monkey.

Monkey и Haxe




Haxe — универсальный объектно-ориентированный язык программирования высокого уровня, со схожим с Monkey принципом действия. И учитывая, что Haxe появился раньше, можно полагать, что разработчик Monkey черпал свое вдохновение именно от него.

Подобно mojo, у Haxe есть NME — фреймворк повторяющий Flash API. В виду подобного количества совпадений возникает закономерный вопрос: «Чем Monkey и mojo лучше Haxe и NME?». Оговорюсь сразу, я не знаком близко с Haxe и возможно в чем-то ошибаюсь, но тем не менее, постараюсь быть максимально объективным.

Плюсами связки Monkey и mojo, на мой взгляд, являются:
  • большее количество официально поддерживаемых платформ
  • поддержка таких важных платформ как PS Vita, WP7, Xbox 360, HTML5 (в NME эта платформа в зачаточной стадии)
  • стабильная трансляция в C# и Java (в Haxe эти языки находятся в статусе beta)
  • одинаковое или ожидаемое поведение на всех платформах. В NME разница между платформами выглядит значительнее
  • относительная простота добавления поддержки новых платформ
  • платность, как гарантия развития

Плюсы связки Haxe и NME:
  • более «продвинутый» язык
  • большие возможности фреймворка NME
  • знакомый многим разработчикам игр Flash API
  • FlashDevelop, как основная IDE
  • большое сообщество
  • бесплатность


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

В завершение


Спасибо, что дочитали данный пост до конца. Я не ожидал, что он получится таким длинным, поэтому извините, если зря потратил ваше время. Тем не менее, я надеюсь, что мне удалось полностью раскрыть тему и рассказать о Monkey максимально объективно.

Для всех, кто заинтересовался Monkey — официальный сайт проекта.

Спасибо за внимание!
На этом все. Пока!
Артур Бикмуллин @devolonter
карма
25,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (34)

  • +5
    «Этот человек известен некоторым разработчикам по таким инструментам для создания игр, как BlitzBasic» — да, и это очень даже заметно.

    Никак не могу понять мотивацию, для чего нужно еще раз изобретать убогий Basic, когда давно есть масса вариантов на любой вкус и цвет. Как будто синтаксис является краеугольным камнем для игровой 2Д системы.
    • +1
      Я предвидел этот комментарий) Так уж повелось. BlitzBasic был выпущен в начале 2000-х, если мне не изменяет память. В то время, выбор Basicа, как мне кажется, был вполне приемлемым вариантом. Шли годы, база пользователей, привыкших к подобному синтаксису, росла. И когда пришло время выпускать новый продукт, было решено ничего не менять, чтобы не потерять старых пользователей. Так, от продукта к продукту, синтаксис оставался практически неизменным.
      • +1
        Иными словами, это какой-то такой 2Д инструмент для непрограммистов? Примерно, как VBA for Applications.
        Из приведенного примера кода абслютно не понятно, в чем прелесть этой самой Monkey — именно как язык абслютное убожество, но может там в rtl что-то есть интересное?

        Насчет 2000-го года могу заметить, что тогда у меня уже работал «реалтаймовый» сетевой монитор (udp/tcp) на Python с полноэкранным интерфейсом, коллеги в то же время немало писали на Javascript (кстати, скриптовали 3Д). Не помню насчет Lua, но тогда же видел какие-то скриптовые варианты «а ля Си».

        Это я все к тому, что 2000-й год уже вполне себе наше время.
        • 0
          Пример кода, был приведен исключительно для того, чтобы показать синтаксис. Прелесть Monkey — расширяемая кроссплатформенность. Очень жаль, если мне не удалось раскрыть эту тему в посте. А по поводу самого языка, это личные предпочтения каждого. Мне не составляет труда переключаться с BASIC-подобного синтаксиса на C-подобный. Поэтому, я не вижу в этом большого недостатка.
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Stencyl — инструмент несколько иного плана. Поэтому сравнивать его с Monkey немного некорректно.
  • +1
    «Monkey ни в коем случае не является «убийцей» Unity и других подобных инструментов. Но он может заинтересовать начинающих, а также независимых разработчиков игр, чей бюджет в значительной степени ограничен. Если мне удалось вас заинтересовать, добро пожаловать под кат.»

    Очень интересный мотивирующий абзац. Так и чую как толпы нищих нубов желающих щастя ломятся под кат.
    • +2
      Не считаю себя нищим, но в тоже время не могу себе позволить полностью «заряженный» Unity. Что я делаю не так?
      • –2
        ну явно monkey не стоит того, чтоб за него еще и платить.
        «гаратий» от платности при отсутствии центрального хранилища — никаких.
    • +3
      Жаль, если честно, что такие комментарии вообще появляются. Этот абзац был специально написан для того, чтобы исключить подобного рода высказывания. Monkey значительно уступает Unity по функциональности и находится в совершенно другой лиге, поэтому сравнивать их просто бессмысленно. Да, низкая цена, одно из преимуществ Monkey. Но это не означает, что человек приобретает его только из соображений цены. Вполне возможно, что ему достаточно того функционала, который предоставляет Monkey.
      • –8
        абзац до ката — «это дёшвая хрень, нубы сюда». я только к этому пишу, никак не к чему другому
      • +11
        Не обращайте внимание, это русская черта, если windows — то Ultimate, если photoshop — то самый последний, office — professional, а зачем вам Access? — А чтобы был, пригодится
        • +2
          Главное что бы всё это было бесплатно :) А на халяву, и ящик уксуса сладкий.
        • 0
          Так один же раз живём!
  • +2
    С большим удовольствием писал под BlitzBasic на Amiga, когда он был широко популярен. И хочу сказать пару слов в его поддержку. Да, с точки зрения «крутого программизма» этот язык — полное убожество. Но он больше рассчитан не на умудрёных опытом ООП-шников, готовых неделю писать один мегакласс, а больше на людей творческого склада ума, которые не хотели бы писать функцию для вывода спрайта, а просто вывести спрайт.
    Даже программирование под Unity требует значительных знаний, как же быть начинающему инди-девелоперу, который придумал классный концепт 2D-игры, но абсолютно не умеет программировать и не имеет возможности нанять программера?
    На мой взгляд для него и нужен Monkey.

    • 0
      +1

      Создать новый проект и заставить что-то двигаться на экране занимает даже не день. Считанные часы!

      Как минимум, для меня, НЕ гуру-программиста на нем весьма легко сделать, вполне рабочий прототип, который можно потестировать на девайсе. Вместо того, чтоб загружать программистов.
      И мозги не застаиваются, и время экономится.
    • 0
      Мое знакомство с Blitz-языками началось позже, с Blitz3D. Мне, как начинающему тогда программисту, это дало огромный толчок к развитию. Да, я тогда не завершил ни одной 3D-игры, но здорово втянулся в программирование. Было круто делать игры не сильно вдаваясь в особенности того, как это происходит на низком уровне. Тем не менее, несмотря на то, что мое знакомство началось с BASIC это не доставило мне проблем, когда я начал изучать C-подобные языки.

      Сейчас, язык здорово эволюционировал, если сравнивать его с BlitzBasic. Это было заметно в BlitzMax и еще более заметно в Monkey. В принципе, сейчас, я уже не испытываю какого-либо дискомфорта возвращаясь к Monkey, после использования серьезного (взрослого) языка.

      Но это не значит, что Monkey предназначен только для новичков. Да, язык позволяет быстро втянуться в разработку игр, но в тоже время, при желании и должных навыках, позволяет делать вполне себе серьезные и интересные вещи. За рубежом, кстати, его часто используют достаточно «бородатые» программисты, например, Frédérick Raynal.
    • 0
      >> инди-девелоперу, который придумал классный концепт 2D-игры
      Бред какой-то. Во-первых, если он не умеет программировать — какой из него «девелопер»? Во-вторых — он идет в места тусовки около-геймдевных прогеров и ищет там кого-то подходящего, кто умеет. Типа, «Пипл, у меня есть клевый концепт, но нет бабок. С вас реализация, с меня процент прибыли».
      В-третьих, этот ваш бэйсик нисколько не избавляет от необходимости оперировать абстракциями типа «объект», «цикл», «условие». Соответственно, человек должен быть УЖЕ сколько-то программистом, чтобы что-то делать.
  • +1
    Самая главная фишка Monkey — это открытый код всей (после приобретения) системы. Это невероятно важная вещь, когда дело доходит до серьезного проекта. С Corona, Stencyl, Unity, Adobe AIR и прочими закрытыми инструментами у вас появляются ограничения, которые с течением времени начинают бесить.
  • +1
    Чем-то мне данная дискуссия напомнила холивары между ардуинщиками и тру-радиолюбителями :) Если продукт дает человеку новые возможности, не заставляя при этом его приобретать не самую необходимую для него специальность или нанимать специалиста — отлично.

    Гейм-дизайнер может, не становясь программистом, создать прототип игры? Отлично.
    Программист может, не осваивая премудрости схемотехники, на скорую руку сваять нужный ему девайс? Замечательно.
    Но многие почему-то считают такой подход оскорбительным — будто бы он дискредитирует их специальность, позволяя ламерам и чайникам делать что-то осмысленное.

    С таким подходом и права на вождение автомобиля можно выдавать только профессиональным автогонщикам. Как принципиальный пешеход, я была бы только за — было бы меньше аварий и пробок :)
    • 0
      Интересное и хорошее замечание. Но холиваров в данном вопросе, к сожалению, не избежать. Честно говоря, я думал, что все будет значительно хуже)
    • 0
      Я категорически не согласен с исходным посылом. Человеку, не знакомому с программированием вообще, эта штуковина нисколько не ближе прочих языки высокого уровня. А то и дальше — нелогичность так и прет, даже из приведенного куска кода. Этот типа-бэйсик не имеет ничего общего с провозглашаемой простотой. Начиная с тотального ООП не имеет.
      Для начинающего это еще и вредно, поскольку не прививает хорошего вкуса.
      Я понимаю, если бы речь шла о, скажем, GameMaker или его клоне — оно хотя бы отчасти WYSIWYG, что хорошо для начинающих. А за создание таких тулзов «для начинающих» я бы сжигал без предварительного удушения.
      • 0
        Ну во-первых, этот язык необязательно только для начинающих. А во-вторых, не совсем понимаю вашего высказывания «нелогичность так и прет». Где, в приведенном фрагменте кода, вы видите нелогичность? Просто интересно.

        • 0
          Без проблем:

          > Cls 32, 64, 128
          > player.Draw()

          Cls — это кейворд, оператор или что вообще? Или функции вызываются без скобок, а методы со скобками?

          • 0
            Вызывать можно как со скобками, так и без. Например, Cls(32, 64, 128) также будет работать. Тоже самое касается и условных операторов. Выше приведен пример из вики, с учетом того, как люди привыкли писать это в BASIC. Синтаксис дает относительную свободу в выборе стиля. Единственное, чего нет — это фигурных скобок. Для завершения блока нужно использовать End.
            • 0
              Ну или вот, хотя это уже несколько другое:

              For [ Local ] IndexVariable = EachIn Collection
              Statements…
              Next

              Наличие '=' здесь я могу объяснить… Ничем.
        • 0
          А насчет «не начинающих» — вот тут кроется основная проблема. Я не знаю, насколько нужно неуважать себя как разработчика, чтобы пользоваться этим выкидышем языкового дизайна. Даже Cool(язык, реализуемый в рамках стенфордского курса Compilers) проще, лаконичнее, удобнее для написания!
          • 0
            Я пользуюсь этим «выкидышем языкового дизайна» и уважаю себя. И да, это нисколько не мешает мне программировать на других языках. Скажу больше, с тех пор, как я начал использовать Monkey, я подтянул свои знания в таких вещах, как WebGL и AS3. А также, узнал много нового о кроссплатформенной разработке. Будьте проще) Удачи!
      • +1
        Чтобы понять прелесть monkey, нужно понимать его цели.

        Monkey — инструмент для создания кроссплатформенных игр.

        И что есть «провозглашаемая простота», вы поймете, если попробуете собрать рабочее кроссплатформенное приложение, с помощью monkey / haxe-nme / самописном инструменте и сравнить.
        • 0
          Я прекрасно понимаю сложности с кроссплатформенностью. И это меня больше всего бесит — то, что хорошая в своем роде тулза обладает настолько уродливым интерфейсом. Языком, в нашем случае. Вот что им стоило заняться доводкой до ума HaXe?.. Или взять нормальный язык за основу, в конце концов.

          «Простота», о которой я говорил выше — простота для не умеющего программировать человека, кривая вхождения. И от этих слов я не отказываюсь — это реальный маркетинговый bullshit. А если человек учится программировать ради реализации своей идеи — почему не дать ему нормальный инструмент?..
  • 0
    Когда-то давно я игрался с программированием модов для Unreal Tournament — UnrealScript, отсутствие доступной документации, все дела. Так вот, я был до предела поражен обнаружив в языке поддержку FSM. Натуральных FSM, на уровне рантайма. А еще поддержку достаточно прозрачной сетевой репликации. Вероятно, чего-то еще, не помню уже.
    При этом — Java-подобный язык, который читался легко и просто, не ломая глаз. При том, что я тогда не знал ни одного C-подобного языка. Я почитал код два-три дня и сел писать свой первый мутатор. И написал.

    Это пример того, что я считаю реально хорошим языком для разработки игр. Не маркетинговый bullshit типа «смотрите, как тут все просто», когда ничего на самом деле не просто, а крутой и упрощающий жизнь функционал при легком вхождении в язык.
  • +1
    Многие агрятся на слово BASIC, вместо того чтобы читать суть.

    Кроссплатформенные средства разработки игр, которые позволяют получить web версию можно пересчитать на пальцах одной руки.
    Monkey
    Haxe+NME
    Unity3D (c натяжкой, так как насколько я помню он экспортит только в 11 версию флеш плеера и не может экспортить в более ранюю)
    конец списка :)

    Adobe Air не дает нативной производительности на мобильных платформах.
    Многочисленные HTML5 средства, движки и фреймворки тоже не годятся для мобильных платформ из-за проблем с производительностью.
    Некоторые компании делают фреймворки которые позволяют писать код на C++ а затем через адобовскую Алхимию получать веб версию. Но в опенсорсе я их еще не видел. Видел только как закрытые, внутренние технологии у некоторых разработчиков.

    Таким образом выбор собственно такой: если нравится флеш, то первым делом смотреть haxe+NME, если игра 3D то первым делом смотреть Unity3D, иначе смотреть Monkey или писать веб версию игры отдельно вместо того чтобы потратить это время на улучшение существующей игры или разработку новой.
  • 0
    Хотелось бы ещё сравнение с каким-нить LUA проектом, типа Moai или той же Corona
    • 0
      К сожалению, с этими проектами не знаком в достаточной степени, чтобы делать сравнение. Можно предположить, что Monkey дает больше свободы, т.к. не ограничивает разработчика набором платформ. Вы всегда можете написать реализацию поддержки необходимой вам платформы или расширить текущую реализацию. Также большим плюсом, по сравнению LUA-проектами, является возможность написания модулей на нативном для платформы языке.

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