Skip to content

antim0118/UltraSimpleGameAPI

Repository files navigation

UltraSimpleGameAPI

ну или сокращенно - USGAPI

Суть библиотеки в полном упрощении отрисовки текстур и текста, вывода звука без сильной потери производительности.

Как установить на PSP (чтобы поиграть в игры)

  1. Скачайте архив: Стабильная версия / Предрелизная версия (с последними изменениями).
  2. Папку внутри архива поместите по пути X:/PSP/GAME/.
  3. В списке игр найдите USGAPI и запустите.

База

  • Каждая игра имеет свою папку в папке Games.
  • В корне папки с вашей игрой должен лежать script.lua

Требования

Перед отправкой PR, убедитесь, что игра соответствует требованиям:

  • Игра должна использовать только USGAPI и класс buttons. Если чего-то нет в USGAPI, то пользуйтесь доступными аналогами, либо, если считаете, что это должно быть добавлено, жалуйтесь.
  • Игра должна использовать локальные переменные.
  • Игра не должна создавать/изменять глобальные переменные.
  • У игры должен быть выход в любой момент по кнопке START.
  • Выход из игры должен осуществляться путём выхода из скрипта
  • Очистка ассетов происходит автоматически после выхода из файла, поэтому вызывать unloadAll НЕ НУЖНО.

Как добавить свою игру в главное меню

  1. Создать папку со своей игрой в папке Games.
  2. Создать в папке своей игры файл script.lua (это будет главным файлом игры).

Как добавить свою игру в репозиторий

  1. Создайте fork от моего репозитория.
  2. Внесите в него изменения.
  3. Создайте Pull Request (PR).
  4. Ожидайте проверки. Если будут какие-то недочёты - исправляете в своей ветке и они докидываются в PR.
  5. Ваша игра добавлена!

А как мне самому без документации писать код

Ну мне лень самому документацию делать, просто потому что в этом нет острой необходимости.

Сама либа имеет типизацию через Lua Language Server. Ставите её, после чего VS Code показывает подсказки где какой аргумент ставить. Плюс можете накатить LuaPlayerYT в менеджере аддонов, чтобы подсказки с buttons работали.

Если говорить про сам код, то вот кратко:

local USGAPI = require("Libs.USGAPI"); -- подключение библиотеки

local gamePath = USGAPI.getGamePath();    -- получение пути к папке с игрой
-- (важно: если вы вызовите во вложенной папке, например Games/YourGame/Scripts,
-- то переменная будет указывать на папку Scripts)

while true do
  USGAPI.startFrame();

  if (buttons.pressed(buttons.cross)) then
    --делаем какие-то действия
  end;

  --отрисовка текста
  USGAPI.drawText(gamePath .. 'gameFont.ttf', 10, 10, 'Текст игровым шрифтом');
  USGAPI.drawText('Fonts/arial.ttf', 10, 20, 'Текст глобальным шрифтом');

  --отрисовка текстуры
  USGAPI.drawTexture(gamePath .. 'player.png', 100, 150);

  if (buttons.pressed(buttons.start)) then break; end; -- выход из файла по кнопке start
end;

Предзагрузка текстур/звуков/шрифтов

Для предзагрузки есть два способа:

-- передать пути к ассетам подряд через запятую
USGAPI.preload("Images/Tex_64.jpg", "Images/Tex_256.jpg", "Fonts/arial.ttf", "Sounds/startGame.wav");

-- передать пути к ассетам таблицей
local preloadList = { "Images/Tex_64.jpg", "Images/Tex_256.jpg", "Fonts/arial.ttf", "Sounds/startGame.wav" };
USGAPI.preload(preloadList);

Как работать с нейронкой

Кидаете в нейронку файл LLM_Prompt_USGAPI_RU.txt (где-то можно прям ссылку указать) и пишете ей что-то по типу:

Сделай игру minecraft или Сделай крутую игру чтобы бегать можно было и взрывы всякие и вообще всё клёво

Далее она начнёт что-то вытворять. Очень желательно всё тщательно проверить, и подправить по красоте.

Метаданные игры

В папке с игрой вы можете создать файл meta.lua, в котором вы можете указать метаданные вашей игры. В начале файла можно указать тип UIGameMeta, после чего LLS будет подсказывать возможные поля/значения. Все поля - необязательные, так что необязательно каждый из них писать.

---@type UIGameMeta
return {
    category = "Classic",
    altName = "Game Name",
    author = "Author"
};

Мне не хватает ОЗУ

Да, такое может быть, потому что библиотека сама не очищает ОЗУ. Делает это только главное меню после выхода из игры. Поэтому если хочется вручную почистить, то вызывайте функцию USGAPI.unloadAll() или USGAPI.unloadAllTextures().

About

USGAPI

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages