Перейти к содержимому
Oleshe

OpenGames или 50 оттенков серого

Рекомендуемые сообщения

История, параграф 1, страница 3 детки:

Сидел я сидел, а потом приспичило сделать игру, а "в сыром виде" (обычным путём) это превращается в мешанину. Вчера начел сегодня закончил делать программy OpenGames которая схожа (относительно) на редакторы по типу сроблокса и тому подобных.

-- "Что это за чудо?" Это программа которая может делать другие программы, у нас есть почти все что нужно, оно будет обновляться по мере надобности.

Сейчас у нас есть: кнопка, инпут, свитч, текст, картинка. Они храниться в таблице, прямо полностью, что относительно сокращает вес приложения. Не храняться в списке все стороне файлы, картинки и скрипты, только их он будет подгружать, и то если они числиться в списке :).
Для отрисовки картины нашей программы нужна библиотека opengames, которая хоть и задаёт 1 глобальную функцию, на у вы попробуйте запихнуть функцию в 1 строку с \n. Все работает до ужаса просто и на костылях. Файл редактора весит 30 Кб из-за костыля "копировать-вставить". Это мы исправим позже :).

Все проекты можно сохранить в, угадайте, проект. Его так-же можно обратно загрузить. Проэкт это просто "составные" программы, сохраняем изображения скрипты и глав. таблицу в одном месте. В экспорте оно буквально создаёт приложение, его структуру и иконку.

Ну, так-как объясняю я плохо, вот видео как я сделал упаковщик файла в 1 сторону. Можно сделать и что-бы несколько файлов, распаковать архив, но мы же пример делаем так-что ладно.
Видео: 

Паста редактора: https://pastebin.com/88yRPHfz
Паста либы: https://pastebin.com/HqzGAKwk

Гитхаб: https://github.com/0leshe/OpenGames/tree/main

При должном терпений можно сделать не плохой продукт. В будущем плонирую "простое создание скриптов" по типу скрэтч и добавление новых элементов гуи, и конечно сжать файл а то 30 кб это много.
Жду тех самых гуру которые будут писать что можно было сделать так, а тут вот так и вообще. Моя отмазка: оно на стадий разработки, есть еще идеи которые можно сделать по типу параметров окна но это будет позже, сначало делаем задумку а потом украшаем её. - Жак Фреска.

Изменено пользователем Oleshe
Изменения по гитхабу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Крупное обновление. "Доработка"

Добавлено: 
  Граф. элементы:
    Ползунок
    Выбор цвета
    Полоса прогресса
    Панель

    Индикатор прогресса (кружочек)
  OpenGame.lua (Library)
    move(object,x,y,[speed,smooth]) -- изменение позиций объекта со скоростью, плавно или не
    resize(object,w,h,[speed,smooth]) -- изменение длинны-ширины объекта со скоростью, плавно или не. Нужно хотя-бы наличие одно из 2-х элементов, относиться и к move. Плавность не видно, оно не прерывается на отрисовку, хоть команда и стоит.

  Локализация:
    Украинский
    Русский
    Английский
  Возможности:

    Создать иконку приложения, изменить размеры окна, его название и т.д.
    Удалить объект
    Переместить по слоям отрисовки

    Добавлен чёрный цвет к палитре

Изменено:
  Граф. элементы
    Метод показа цвета, теперь в HEX коде (fingercomp помог)
    Метод изменения параметров, теперь они в линию
    Открытие и закрытие проектов, теперь стоят предохранители на случаи на на пример правильной папки
Оптимизация:
  Граф. элементы:
    Сделаны ярлыки на частую отрисовку таких объектов как поле ввода.
    Сделаны ярлыки на цвета
Исправлено:
  Граф. элементы:
    Отрисовка в экспортированных приложениях осуществлялась без обёртки tonumber, из-за чего были ошибки.
    Сохранение проекта в одну и ту-же папку, хоть это не ошибка но если проект большой то будет довольно трудно разобраться что куда.

Знаем:
  Граф. элементы:
    В русской локализаций все надписи прыгают.
Слайд шоу Meet The Enginer сделанное на этом "движке":

Пасты те-же.
Без локализаций будет плохо, поэтому сделал кривой репозиторий на гитхабе: https://github.com/0leshe/OpenGames/tree/main

Планы:
  Сделать параметры локализаций для проектов.
Кто прочитал тот найдет завтра на дороге 100 рублей 99.99% правда!!!11!1!!!.

Изменено пользователем Oleshe
Про иконку и окно

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обычное обновление. "Релиз!"

Добавлено:

  Поддержка локализаций которая работает на божьем слове. Обращаться по game.localization. Гайд по работе с ней на гитхабе.

  Папка Localization в папке экспорта, при экспорте).

Исправлено:

  Граф. элементы:

    Возможность закрыть окно при выборе какой объект добавить в на пример screen.

    Уже отрисовка в редакторе не была обёрнута в тунубер поэтому при загрузке проекта все взрывалось

  Storage:

    Переработан к чертям. Теперь мы можем хранить в нём все типы файлов. Ваще все шаришь? Типы которые в разрешений .lang так и отправиться в папку локализаций. Бинд пикч к объекту image в screen так и осталось.

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

В принципе в программе дорабатывать больше нечего, пойду сделаю архиватор какой-нибудь, вроде интересный проект...

Изменено пользователем Oleshe

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

опа, так это же та самая моя(и не только) идея! которую я предлагал еще до того, когда что то знал о луа

Правда пока что - сыровато... даже тот же самый интерфейс который если честно немного не понятен (даже то что цвета сливаються)

так что ждём улучшений!

 

стоит кстати ещё упомянуть что она то под MineOS

Изменено пользователем Bumer_32

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Oleshe сказал:

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

а скриншотики?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
17 часов назад, Bumer_32 сказал:

опа, так это же та самая моя(и не только) идея! которую я предлагал еще до того, когда что то знал о луа

Ну, идея не поучила реализаций, видимо, а сейчас вот оно, на коленке).

 

17 часов назад, Bumer_32 сказал:

Правда пока что - сыровато...

В каком смысле? Критикуй так предлагай взамен, что нужно что-бы оно не выглядело сыро?

17 часов назад, Bumer_32 сказал:

даже тот же самый интерфейс который если честно немного не понятен (даже то что цвета сливаються)

Интерфейс лёгкий, у нас есть окно в котором на пример графические объекты, для того что-бы настроить его нам нужно кликнуть по его имени. Потом отобразиться параметры и делай чо хош. Ну с цветами да, я не знаю какую цветовую коррекцию использовать, серый показался нейтральным. На то оно и 50 оттенков серого).

Окна кстати можно перетаскивать.

17 часов назад, Bumer_32 сказал:

стоит кстати ещё упомянуть что она то под MineOS

Я думал что это очевидно что если работаем с граф. объектами то это MineOS.

17 часов назад, Bumer_32 сказал:

а скриншотики?

Вот и еще один фидбэк) Пойду накидаю их туда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Большое обновление: "Интерфейс"

В этом обновлений мы наконец поправили те места в редакторе, которые выглядели хрупко или некрасиво.

Добавлено:

  Скрипты:

    Предпросмотр скрипта на оставшемся куске пространства в параметрах

    Теперь можно не только создать новый, но и загрузить существующий скрипт. Принимаются файлы с разрешением ".lua", "" (без него).

  Хранилище:

    Добавлена возможность удалить файл из списка Хранилища.

    Если разрешение файла .pic то при его выборе откроется предпросмотр изображения на оставшемся куске пространства в параметрах.

Изменено:
  Граф. элементы:
    Высота кнопки уменьшена с 5 на 3.

    Изменён цвет текста на cr1 (0х989898)

    Изменён задний фон поле ввода когда мы вводим.

  Общее:   

    Теперь кнопки "Экран", "Скрипты" и "Хранилище" имеют динамичное расположение и колеблются в зависимости от длины их текста.

    Фикс прыгающих надписей и выравнивание их по линеечке.

    Изменён "алгоритм" вычисления позиций для Title в окне.

    Исправлен баг отрисовка панели, не хотело обрисовываться и выдавало ошибку.

    Текст, кнопки и другие элементы теперь лепятся со сносом в 2 и 1 пиксель от края окна.

    Добавлен в палитру цветов новый тёмный оттенок серого, 0х757575

    Изменён задний фон редактора на cr4 (0x757575).

    Поставлена предохранители на пустое поле на пример Х, оно вылетало. Теперь оно не изменяет значение на "новое" а держит старое.

    По просьбам желающих были добавлены скриншотики на вики гитхаба, радуйтесь.

    Тот-же желающий открыл исуе, мы исправили и закрыли, спасибо добрый человек.

  Экспорт, сохранение, загрузка:

    Для экспорта и сохранение если в целевой папке уже существуют файлы, спрашивает продолжим ли сохранять или отменим.

    Изменено имя переменной отвечающей за расположение файла с scriptpath на gamepath.
Просмотреть обновление вы можете скачав все файлы с гитхаба, там-же есть вики.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Большое обновление "Контент 01"

Довольно большое обновление:
Граф. элементы:

  Пофикшены мелкие баги такие как ошибка в названий переменной и т.п.

  Добавлена возможность прозрачности у кнопок, только задний фон.

Общее:

  Появился установшик!!!1!11!11 Его можно полапать в релизах гитхаба. Там он простой так-что каждый разберётся и может переманить его на свою программу. Есть data_00 -- библиотека и data_01 -- само приложение. У установщика есть локализаций.

  Появились "Шаблоны параметров" которые применяются к объекту. На пример текст или имя объекта. Поэтому мы и набрали 50 Кб xdd.

  Изменился алгоритм отрисовки, теперь мы смотрим изменился ли вообще объект после чего смотрим какой именно параметр изменился и его и изменяем. Мы теперь не перерисовываем раз за разом те объекты которые в покое. На него подсел и сам Editor так-что это его зависимость.

  Сохранения проектов теперь в 1-м архивном файле, вместо тысячи другой.

  Теперь Открыть/Сохранить/Экспорт находятся в menu который с верху где время на пример. Там-же к слову находятся и шаблоны параметров.

   Теперь в корне гита есть example (Archive.pkg) который мы разумеется распаковываем и запускаем. Нужна библиотека.

 

Список маленький работа огромная2.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Небольшое обновление "Оптимизация 01"

Общие:

  Помните размер мэйна 110+- Кб? Теперь 80 !1! Установщик уже готов, а код а за-аплоужен.

  В репозиторий гитхаба в Applications был добавлен Install.app который содержит исходники инсталятора. Кроме data_NN потому-что там ничего интересно, просто код или кучка файлов в архиве с заумным названием.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Патч 01
Не добавлено в инсталятор.
Исправлено:
  Граф. элементы:
    Когда мы изменяли на пример стадию ползунка или переключателя она не отражалась в таблице объекта.
    Кнопки закрыть-свернуть при экспорте не отображались.
Добавлено:
  Взрывоопасно:
    В библиотеку OE добавлен Instance в котором есть Instance.new(type:string, ...), в нём работает только панель, текст, кнопка и прогрессБар, и то не факт. Далее мы его доработаем и добавим Instance.remove(object or objectIndex or objectName:table or number or string) находит объект и удаляет его подтирая за ним. Взрывоопасно потому-что это пока-что огрызок, но патч сделать надо из-за косяков с граф. эл.
Общее:
  Локализация:
    Теперь она стала гибче: если перед патчем нам нужно было имя объекта для его локализаций, то сейчас имя параметра локализаций идёт после {loc}. Пример: 

object.text = '{loc} testLocalization'
game.localization.testLocalization = 'Hello world!'

    Имя локализаций одним словом после пробела после {loc}.

Изменено пользователем Oleshe

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Большое обновление "Скрипты"

Добавлено:
  Библиотека:
    Добавлено несколько функций:
 

Скрытый текст

OE.getStorage()
OE.getScreen()

OE.getScripts()
OE.getStorage(data)
OE.getObject(data)

OE.getScript(data)

    Это группа get которая возвращает всё логически от имени. В data у нас либо имя объекта, либо таблица объекта, либо имя объекта.
    Так-же у нас появилась OE.regScript(script,mode,interval,endTime,name) и OE.unregScript(name). Они прибивают скрипт к потоку от безымянного объекта который приделан к окну. Mode это режим, их 3: "execute", 'string", "function", загрузить из файла объекта скрипта, из строки и из функций. Script это сама функция на пример. Интервал и endTime это интервал выполнения и конец выполнения через n секунд. Если endTime будет меньше нуля, -1 на пример, то цикл выполнения будет вечен (Пока окно не закроется). UnregScript принудительно удаляет скрипт из выполнения потока.
    Помните Instance из патча? Он полностью доделан. Порядок входящих параметров такой-же какой и в параметрах и можно создать вообще любые граф. объекты. На пример:

OE.Instence.new('panel',1,1,10,10,0x989898,true)
--OE.Instence.new(type,x,y,width,height,color,visible)

    Еще есть Instance.remove(data). Data точно такая-же как и с get кластером. Удаляет объект с экрана.
  Граф. элементы:
    В очередной раз изменён алго счёта позиций названия окна.
В планах сделать кэш подгружаемых объектов таких как те-же скрипты или изображения и сделать анимационный объект: атлас-анимация. Вырезаем-вставляем. Подкидывайте идеи..

Изменено пользователем Oleshe
Неточности, писалось в позднее время суток

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Большое обновление "Контент 02"

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

Добавлено:

  Граф. элементы:

    Объект анимации. С ним было интересно повозиться и вот он есть. Процесс сетапа:

    Выбираем в меню как обычный объект, и выбираем atlas.pic, тот атлас который мы будем использовать для анимаций. Сам атлас:

    Это мой тип атласа. В атласе должна быть нумерация кадров. По типу: Atlas:setImage(1,1,image.load('/Image.pic'),'FRAME_NUMBER')
    У самого объекта есть 2 функций:
    tick() -- Следующий кадр
   checkNext() -- Проверяет следующий кадр, является ли он последним.
  Библиотека:
    Добавлен OE.playAnimation(object, speed). Проигрывает анимацию object объекта со speed скоростью. Оно использует "многопоточность" которую мы прибили в прошлом обновлений.

    Добавлен clearCashe(), clearImageCashe(object.name) и clearScriptCashe(object.name). Первая очищает весь кэш, вторые 2 очищают кэш для определённого объекта. В clearImageCashe(object.name) объектом является объект в game.screen так-как оно хранит картинку для этого объекта.
Оптимизация:
  Граф. элементы:

    Изображения в кэше, диск не будет каждый раз работать когда надо будет добавить одну и ту-же пикчу.
  Скрипты:

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...