PyGDF v1.1-release (stable)
Примечания:
- Данная версия пока что рассчитана на разработку 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_sampler2d и 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 *