From 32728a0e0be6e2f8692c44bd918ff5b8a82c0c48 Mon Sep 17 00:00:00 2001 From: Einar Forselv Date: Mon, 5 Aug 2024 16:11:55 +0200 Subject: [PATCH 1/3] Add missing entries --- CHANGELOG.md | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b2bc5466..4bc03d54a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,7 +17,10 @@ easy reference. There may be other behavior changes that could break specific scenarios, but this section is limited to changes which directly changed the API in a way that is not compatible with how it was used in 2.6. -* `arcade.Sprite.angle` has changed to clockwise. So everything rotates different now. +* `Sprite.angle` has changed to clockwise. So everything rotates different now. +* `Sprite.on_update` has been removed. Use `Sprite.update` instead. This now + also has a `delta_time` parameter and accept/forwards `*args` and `**kwargs` + to support custom parameters. The same applies to `SpriteList`. * Signature for Sprite creation has changed. * The deprecated `update()` function has been removed from the `arcade.Window`, `arcade.View`, @@ -60,17 +63,21 @@ API in a way that is not compatible with how it was used in 2.6. ### Featured Updates -* Arcade now supports mixing Pyglet and Arcade drawing. This means +* Arcade now supports mixing Pyglet and Arcade drawing . This means you can, for example, use Pyglet batches. Pyglet batches can draw thousands of Pyglet objects with the cost and performance time of only a few. * The code behind the texture atlas Arcade creates for each SpriteList has been reworked to be faster and more efficient. Reversed/flipped sprites are no longer duplicated. -* Added a new system for handling background textures (ADD MORE INFO) * Arcade now supports OpenGL ES 3.1/3.2 and have been - tested on the Raspberry Pi 4. Any model using the Cortex-A72 - CPU should work. Note that you need fairly new Mesa drivers - to get the new V3D drivers. + tested on the Raspberry Pi 4 and 5. Any model using the Cortex-A72 + or Cortex-A76 CPU should work. Use images from 2024 or later for best + results. +* Alpha blending (handling of transparency) is no longer globally enabled. + This is now enabled by the objects and functions doing the drawing. + Additional arguments have been added to draw functions and/or objects like + `SpriteList` and `ShapeElementList` to toggle blending states. Blending + states will always be reset after drawing. ### Changes @@ -83,6 +90,8 @@ API in a way that is not compatible with how it was used in 2.6. `arcade.Window.on_draw()` function is called at. This can be used with the pre-existing `update_rate` parameter which controls `arcade.Window.on_update()` to achieve separate draw and update rates. + * `open_window()` now accepts `**kwargs` to pass additional parameters to the + `arcade.Window` constructor. * `arcade.View` * Removal of the ``update`` function in favor of `arcade.View.on_update()` @@ -254,6 +263,12 @@ API in a way that is not compatible with how it was used in 2.6. * [CONTRIBUTING.md](https://github.com/pythonarcade/arcade/blob/development/CONTRIBUTING.md) page has been updated * Improve `background_parallax` example +* Experimental + * Started on a system for drawing large background textures with parallax scrolling. + This is still experimental and may change in the future. + * Started on an experimental event based input system for controllers + * Started an experiment with vector based sprites + Special thanks to [Einar Forselv](https://github.com/einarf), [Darren Eberly](https://github.com/Cleptomania), From 9d5cc5d392f62545ab3589c93a453c0474678478 Mon Sep 17 00:00:00 2001 From: Einar Forselv Date: Mon, 5 Aug 2024 16:52:46 +0200 Subject: [PATCH 2/3] Feature updates --- CHANGELOG.md | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bc03d54a..5c223170a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -63,21 +63,20 @@ API in a way that is not compatible with how it was used in 2.6. ### Featured Updates -* Arcade now supports mixing Pyglet and Arcade drawing . This means - you can, for example, use Pyglet batches. Pyglet batches can draw thousands - of Pyglet objects with the cost and performance time of only a few. -* The code behind the texture atlas Arcade creates for each SpriteList has - been reworked to be faster and more efficient. Reversed/flipped sprites are - no longer duplicated. -* Arcade now supports OpenGL ES 3.1/3.2 and have been - tested on the Raspberry Pi 4 and 5. Any model using the Cortex-A72 - or Cortex-A76 CPU should work. Use images from 2024 or later for best - results. +* The texture atlas has been heavily reworked to be more efficient. * Alpha blending (handling of transparency) is no longer globally enabled. This is now enabled by the objects and functions doing the drawing. Additional arguments have been added to draw functions and/or objects like `SpriteList` and `ShapeElementList` to toggle blending states. Blending states will always be reset after drawing. +* Arcade now supports OpenGL ES 3.1/3.2 and have been + tested on the Raspberry Pi 4 and 5. Any model using the Cortex-A72 + or Cortex-A76 CPU should work. Use images from 2024 or later for best + results. +* Arcade now supports freely mixing Pyglet and Arcade code. This means you + can freely use pyglet batches, Labels when preferred over arcade's types. + Note that texture/image handling are still separate systems. This is + however a solvable problem for intermediate and advanced users. ### Changes @@ -100,6 +99,9 @@ API in a way that is not compatible with how it was used in 2.6. * Removal of the ``update`` function in favor of `arcade.Section.on_update()` +* Textures + * `arcade.load_texture` + * GUI * `arcade.gui.widgets.UIWidget` @@ -218,7 +220,7 @@ API in a way that is not compatible with how it was used in 2.6. `view` and `projection` attributes. Arcade shaders is also using Pyglet's `WindowBlock` UBO. * Uniforms are now set using `glProgramUniform` instead of `glUniform` when the - extension is available. + extension is available for better performance. * Fixed many implicit type conversions in the shader code for wider support. * Added `front_face` property on the context for configuring front face winding order of triangles From 386fce50c9aa8409cd4b36b090b7943f0932ba61 Mon Sep 17 00:00:00 2001 From: Einar Forselv Date: Mon, 5 Aug 2024 17:06:31 +0200 Subject: [PATCH 3/3] Start by mentioning the most important breaking changes --- CHANGELOG.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c223170a..8477cf72a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,11 +17,18 @@ easy reference. There may be other behavior changes that could break specific scenarios, but this section is limited to changes which directly changed the API in a way that is not compatible with how it was used in 2.6. +* Texture management has completely changed in arcade 3.0. In the past we have + cached absolutely everything, something that caused major issues for larger + projects needing to manage memory. Functions like `arcade.load_texture` no + longer cache the texture. See the texture section for more details +* The `Sprite` initializer is greatly simplified. It's no longer possible to + slice or transform textures through parameters in the sprite initializer. + All texture manipulation should now be done through the `Texture` class. + It supports transforms like rotating, scaling, flipping, and slicing. * `Sprite.angle` has changed to clockwise. So everything rotates different now. * `Sprite.on_update` has been removed. Use `Sprite.update` instead. This now also has a `delta_time` parameter and accept/forwards `*args` and `**kwargs` to support custom parameters. The same applies to `SpriteList`. -* Signature for Sprite creation has changed. * The deprecated `update()` function has been removed from the `arcade.Window`, `arcade.View`, `arcade.Section`, and `arcade.SectionManager` classes.