Skip to content

PyGDF v1.1-release (stable)

Choose a tag to compare

@LukovDev LukovDev released this 02 Nov 13:37
· 30 commits to master since this release
2c927b1

Примечания:

  • Данная версия пока что рассчитана на разработку 2D игр (небольшая 3D поддержка есть, но большинство инструментов не реализовано) и работу только на Windows.
  • В качестве API для отрисовки используется OpenGL (от 3.3 версии)
  • Документация по API ядра отсутствует, но исходный код ядра хорошо прокомментирован, и изучить что либо можно прямо там.
  • МОБИЛЬНЫЕ УСТРОЙСТВА В ЭТОЙ ВЕРСИИ НЕ ПОДДЕРЖИВАЮТСЯ!

Не пытайтесь заставить работать фреймворк на UNIX-системах. Для этого надо создать отдельную версию фреймворка или его расширение.

Основные проблемы с работой на других операционных системах (на данный момент):

  • Не работает система сборки.
  • Не работает система установки библиотек.
  • Не работает код для запуска проекта.
  • Не работает поддержка аудио в ядре.
  • Некорректно работает поддержка работы с файлами в ядре.
  • Не скомпилированы компилируемые скрипты Cython для Linux/MacOS.
  • (Возможно есть и другие проблемы о которых я пока что не знаю).

Для начала работы с фреймворком, ознакомьтесь с туториалом на сайте PyGDF (Get-Started) (выберите эту версию фреймворка).

На этом же сайте есть страница с туториалами по разработки игр (возможно, пока что эта страница ещё не существует).

Если нашли баг, напишите мне в Telegram и обязательно укажите тег "@pygdf_bug" в начале сообщения.

Список исправления ошибок:

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

  • Исправлена ошибка в классе SimpleParticleEffect2D(), где при создании системы частиц, когда передаёте конечный угол поворота в виде целого числа, ничего не происходит. Теперь можно передать как целое число, так и с плавающей точкой.

  • Исправлена серьёзная ошибка в коде отрисовки повёрнутых 2D спрайтов. Функция вращения вершин спрайта на Cython принимала ширину и высоту спрайта в виде целых чисел, что округляло его размеры тем самым создавая "рывки" при плавном его масштабировании.

  • Исправлена ошибка в работе с файлами (files), а именно при создании архива.

    • Раньше если вместо списка строк передать просто строку, создание архива становилось неконтролируемым процессом, из за чего было всё очень плохо. Но теперь если вы передадите строку вместо списка, она будет восприниматься как список с одной строкой внутри.

    • Исправлена проблема с добавлением создающегося архива самого в себя. Цикличное добавление себя в себя приводило к бесконечному циклу и к квадратичному возрастанию размера архива. Исправлено благодаря исключению себя из списка файлов для добавления в архив.

  • Мелкие корректировки кода и исправления ошибок не попавшие в этот список изменений.

Список изменений:

  • Ускорение функции .render() в классе SpriteBatch2D (и в AtlasTextureBatch2D) примерно в ~52.78% (~55.9% по FPS).

  • Добавлена новая функция .close() в класс окна. Нет никаких отличий от функции .exit(). Это просто её альтернатива для удобства (кому как).

  • Изменены классы Sound() и FontFile(). Теперь указать путь до файла можно как при создании класса, так и при загрузке файла через функцию .load()

  • В 2D системе частиц (SimpleParticleEffect2D()) в функции .render() теперь можно указать другую пакетную отрисовку. Раньше при создании системы частиц, создавалась своя пакетная отрисовка, но теперь в функции отрисовки её можно изменить на свою.

  • В звуковом окружении SoundEnvironment() был добавлен параметр .volume который домножает громкость звука с этим параметром устанавливая общую громкость. Полезно чтобы в игре регулировать громкость звуков разом.

  • В классе шейдерной программы ShaderProgram() в функциях .set_sampler 2d и 3d теперь происходит проверка и на тип текстуры. Раньше надо было передавать int-индекс текстуры, но теперь можно передавать как int, так и сам класс Texture или Texture3D.

  • В классе слоя 2D освещения (Light2D.LightLayer()) теперь для всех спрайтовых источников света отрисовываемых пакетной отрисовкой (в случае если вы вручную не укажите цвет спрайта источника света) в функции .render() можно передать список из 3 или 4 элементов цвета (с альфой и без) и установить для них один общий цвет.

  • В классе окна при смене сцены на None (встроенная сцена), вызывается функция .resize() у класса окна, чтобы применить возможные изменения размера окна. Мы не можем повторно вызвать функцию .start() в классе окна по сравнению с классом сцены Scene, по этому мы должны вызвать .resize() функцию у класса окна чтобы изменить данные размера окна у уже созданных объектов с возможно не актуальными значениями размера окна.

  • В работе с файлами в функции .load_file() можно передать io.BytesIO данные и функция вернёт из них строку.

  • Изменён конструктор в классе Texture. Теперь при инициализации экземпляра этого класса, в параметрах можно передать тип текстуры (текстура глубины, цвета, нормалей и тд.), а также какой тип данных в её пикселях используется.

  • Изменён класс FrameBuffer(). Теперь можно привязывать разные текстуры к фреймбуферу помимо основной цветовой текстуры. Например, текстура глубины, нормалей, отражений и тд. Делается это через функцию .attach_texture() в которую надо передать индекс текстуры и тип прикрепления. То бишь какую роль будет играть эта текстура (как она будет использоваться).

  • Изменён класс SimpleParticleEffect2D(). Добавлены 4 подкласса - SpawnInPoint(), SpawnInCircle(), SpawnInSquare() и SpawnInLine(). Эти подклассы являются генераторами позиции и направления частиц. С помощью них можно указать как будут создаваться частицы. В конструкторе SimpleParticleEffect2D() теперь можно изменить параметр создания частиц (SpawnInPoint() по умолчанию) на другой класс, чтобы изменить алгоритм создания частиц. Вы также можете динамически изменить класс изменив параметр .spawn_in установив значение в другой класс спавнера.

    Примеры измененного спавнера частиц:


    SpawnInPoint()

    SpawnInCircle()

    SpawnInSquare()

    SpawnInLine()
  • Мелкие корректировки кода и исправления ошибок не попавшие в этот список изменений.


К этому релизу приложены 2 файла:

  • PyGDF-Framework-v1.1-release.zip - Это шаблонный проект для разработки игр и программ.
    Просто разархивируйте и получите папку с уже готовой начинкой проекта и модулем gdf с исходным кодом ядра.

  • gdf-1.1-cp311-cp311-win_amd64.whl - Это библиотека pip которую можно установить у себя на пк.
    Благодаря ей, можно не использовать ядро с его исходным кодом у себя в проекте.
    Установить эту библиотеку можно консольной командой (убедитесь что консоль открыта в той же директории, где и находится этот файл!):
    pip install gdf-1.1-cp311-cp311-win_amd64.whl
    Импортировать в коде можно будет как обычную библиотеку: import gdf / from gdf import *

Ссылки:

Телеграм
PyGDF
PyGDF-Get-Started