devolonter

Администратор

Активность: 5 мес. назад

  1. 3 г. назад
    Wed Aug 12 18:13:50 2015
    devolonter прокомментировал Воспроизведение видео.

    Я в своем проекте подключал Theora Playback Library . Пришлось немного повозиться с шаблоном таргета и написать обертку. Модуль кроссплатформенный, но я подключал его только к desktop. С HTML5 заморочек должно быть меньше - просто вешать элемент video поверх игры.

  2. Sun Jul 5 22:42:07 2015
    devolonter прокомментировал Работа с псевдо архивами.

    Читать определенный фрагмент, без загрузки всего файла не получится. После того как файл будет загружен, читать можно как угодно - хоть побайтово. Но загрузить изображение из считанного фрагмента не получится. Единственный вариант хранить в файле информацию о пикселях и потом записывать через WritePixels, но в этом случае будем иметь дело с несжатым форматом и размер такого архива будет огромным. Хотя если картинка небольшая, то такой вариант может быть жизнеспособным.

  3. Sat Jul 4 15:31:08 2015
    devolonter прокомментировал Как сохранить информацию.

    Странно. Попробовал с mojo2. Все норм:

    Import mojo2
    
    Function Main()
    	New Game()
    End
    
    Class Game Extends App
    
    	Method OnCreate()
    		SaveState("Hello!")
    		Print LoadState()	
    	End
    
    End Class

    Какую ошибку выдает?

  4. Sat Jul 4 11:42:57 2015
    devolonter прокомментировал Как сохранить информацию.
    'Модуль доступен для Android, iOS, Win8, Glfw, Stdcpp
    Import brl.filestream
    
    Function SaveGameState:Void(str:String)
    	Local stream:FileStream = FileStream.Open("monkey://internal/save.dat", "w")
    	stream.WriteString(str)
    	stream.Close()
    End Function
    
    Function LoadGameState:String()
    	Local stream:FileStream = FileStream.Open("monkey://internal/save.dat", "r")
    	Local result:String = stream.ReadString()
    	stream.Close()
    	Return result
    End Function

    @ReallShin В чем может быть дело?

    Какая версия Monkey? Возможно не импортирован mojo.app

  5. Fri Jul 3 01:57:14 2015
    devolonter прокомментировал Как сохранить информацию.

    Приветствую! Для сохранения состояния игры нужно использовать SaveState. SaveString функция из модуля OS - сохраняет строку в файл. Она используется в основном в билдерах и трансляторе.

  6. Fri Jun 19 11:59:46 2015
    devolonter начал обсуждение Выпущен первый публичный релиз mojo2!.

    Новая версия фреймворка входит в состав экспериментальной версии Monkey V84. Обладатели лицензии могут обновиться из соответствующего раздела официального сайта. Mojo2 полностью написан на Monkey и в связи с этим он доступен только для обладателей Pro версии.

    Как уже писалось ранее, mojo2 предоставляет расширенные графические возможности. Вы можете посмотреть их изучив демки приведенные в специальном разделе документации.

    Помимо mojo2, Monkey V84 включает в себя еще несколько интересных изменений:

    • Добавлен таргет GLFW+Angle. Данный таргет включает в себя Angle project, что позволяет использовать DirectX для рендера (таргет совместим только с mojo2)
    • Обновлены библиотеки stb (отвечают за загрузку изображений и звуков) во всех таргетах GLFW
    • Добавлен модуль brl.requesters для работы с модальными окнами системы (только Glfw3/Pc/Mac)

    Новость на официальном сайте

  7. Fri May 29 14:39:06 2015
    devolonter начал обсуждение Важно! Регистрация на сайте.

    В связи с непрекращающимся потоком спама на сайте производится ручная проверка учетных записей. К сожалению, не всегда удается делать это оперативно, но вы можете ускорить этот процесс, отправив письмо на support@monkey-x.ru.

    Для отправки письма используйте адрес, который был указан при регистрации. В теме письма укажите "Регистрация на monkey-x.ru"

  8. Tue May 19 14:37:23 2015
    devolonter начал обсуждение Mojo2 на подходе!.

    Новая версия фреймворка будет работать только на GL-совместимых таргетах (HTML5, Desktop, iOS. Android), но привнесет множество интересных фишек: рендер в текстуру, освещение и тени, базовая поддержка шейдеров и др.

    Информации пока мало, но можно посмотреть небольшую демку . Также, ниже приведены примеры использования нового API:

    Local canvas1:=New Canvas                  'рендер в окно приложения
    canvas1.SetViewport...
    canvas1.SetProjection2d 0,VWIDTH,0,VHEIGHT 'установка виртуального разрешения
    canvas1.Clear
    canvas1.DrawRect...
    canvas1.DrawImage...

    Рендер в текстуру:

    Local image:=New Image( 256,256 )
    Local canvas:=New Canvas( image )       'рендер в текстуру

    Освещение:

    canvas.SetLightType 0,1                'включаем свет
    canvas.SetLightRange 0,100             'задаем диапазон
    canvas.SetLightPosition 0,320,240,-25  'задаем позицию
    canvas.DrawImage...                    'рисуем изображение
    canvas.SetLightType 0,0,               'выключаем свет

    Mojo2 будет доступен для всех пользователей Pro-версии без дополнительной платы.

    Новость на официальном сайте

  9. Tue May 19 14:27:26 2015
    devolonter начал обсуждение Monkey2 на Patreon!.

    Начался сбор средств на разработку Monkey2. В данный момент информации не так много и страница создана скорее для обкатки процесса. Но в ближайшее время будет добавлено больше информации. Следите за обновлениями на странице кампании .

    В качестве награды, патронам предлагается сердце рядом с ником на официальном форуме. Также рассматривается вариант с предоставлением еженедельных/ежемесячных сборок Monkey2.

    Напоминаем, на Patreon фиксируемая сумма списывается ежемесячно.

  10. Sun May 3 22:45:52 2015
    devolonter прокомментировал Monkey2.

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

    Судя по заметке, проект будет некоммерческим, а средства на его развитие и поддержку будут собираться с помощью краудфандинга на Patreon . Также из заметки понятно, что Марк хочет избежать фрагментации, и в тоже время предоставить пользователям как можно больше возможностей. В связи с этим, первоначально Monkey2 будет транслироваться только в C++.

    Планируемые улучшения языка:

    Вложенные классы, функции и т.д.

    class List<T>
       class Node
          field succ:Node
          field pred:Node
          field data:T
       end
       field head:Node
    end
    
    function fun1:void()
       class C
       end
       function fun2:void( c:C )
       end
       local c:=new C
       func2( c )
    end

    Обобщенные функции с авто-выведением типа

    function Min<T>:T( x:T,y:T )
       if x<y return x else return y
    end
    
    function Main()
       print Min( 10,20 )
       print Min( "hello","there" )
    end

    Функции как Значение/Тип

    function NegateValue:float( value:float )
       return -value
    end
    
    function ProcessValue:float( value:float,process:float( value:float ) )
       return process( value )
    end
    
    function Main:void()
       print ProcessValue( 10.0,NegateValue )
    end

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

    alias ValueProcessor:float(value:float)
    
    function NegateValue:float( value:float )
       return -value
    end
    
    function ProcessValue:float( value:float,process:ValueProcessor )
       return process( value )
    end
    
    function Main:void()
       print ProcessValue( 10.0,NegateValue )
    end

    Запоминание контекста методов при передаче их как указателя

    class ValueScaler
       field scale:float
    
       method new( scale:float )
          self.scale=scale
       end
       
       method ScaleValue:float( value:float )
          return value*scale
       end
    end
    
    function ProcessValue:float( value:float,process:float( value:float ) )
       return process( value )
    end
    
    function Main:void()
       local scaler:=new ValueScaler( 3 )
       print ProcessValue( 10.0,scaler.ScaleValue )
    end

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

    alias GizmoModifiedListener:void( Gizmo )
    
    class Gizmo
       field OnModified:GizmoModifiedListener  'signal
    
       method Modify:void()
          OnModified self
       end
    end
    
    function GizmoModified:void( gizmo:Gizmo )   'slot
       print "Gizmo modified!"
    end
    
    function Main:void()
       local gizmo:=new Gizmo
       gizmo.OnModified=GizmoModified
       gizmo.Modify
    end

    А также:

    • Улучшение механизма переопределения и перегрузки функций
    • Контекстно-зависимый Null
    • Улучшенная система сборки
    • Улучшения система импорта стороннего кода

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

    P.S. Первая версия Monkey по прежнему будет поддерживаться и дорабатываться.

Ещё...