|
1 |
| -.. _release_notes: |
2 | 1 |
|
3 |
| -Release Notes |
4 |
| -============= |
| 2 | +Release Note History |
| 3 | +==================== |
5 | 4 |
|
6 |
| -Keep up-to-date with the latest changes to the Arcade library by the release notes. |
| 5 | +Change log from order arcade versions. |
7 | 6 |
|
8 |
| -Version 3.0.0 |
9 |
| -------------- |
10 |
| - |
11 |
| -*Unreleased* |
12 |
| - |
13 |
| -You can grab pre-release versions from PyPi. See the available versions from the |
14 |
| -`Arcade PyPi Release History <https://pypi.org/project/arcade/#history>`_. |
15 |
| - |
16 |
| -Version 3.0.0 is a major update to Arcade. It is not 100% compatible with the 2.6 API. |
17 |
| - |
18 |
| -Breaking Changes |
19 |
| -~~~~~~~~~~~~~~~~ |
20 |
| - |
21 |
| -These are the API changes which could require updates to existing code based on |
22 |
| -the 2.6 API. Some of these things may be repeated in the "Updates" section of |
23 |
| -these release notes, however we have compiled the breaking changes here for an |
24 |
| -easy reference. There may be other behavior changes that could break specific |
25 |
| -scenarios, but this section is limited to changes which directly changed the |
26 |
| -API in a way that is not compatible with how it was used in 2.6. |
27 |
| - |
28 |
| -* :py:meth:`arcade.Sprite.angle` has changed to clockwise. So everything rotates different now. |
29 |
| -* Signature for Sprite creation has changed. |
30 |
| -* The deprecated ``update()`` function has been removed from the |
31 |
| - :py:class:`~arcade.Window`, :py:class:`~arcade.View`, |
32 |
| - :py:class:`~arcade.Section`, and :py:class:`~arcade.SectionManager` classes. |
33 |
| - Instead, please use the :py:meth:`~arcade.Window.on_update()` function. |
34 |
| - It works the same as the ``update`` function, but has a ``delta_time`` |
35 |
| - parameter which holds the time in seconds since the last update. |
36 |
| -* The ``update_rate`` parameter of :py:class:`~arcade.Window` can no longer be set to ``None``. Previously it defaulted |
37 |
| - to ``1 / 60`` however could be set to ``None``. The default is still the same, but setting it to None will not do anything. |
38 |
| -* Sprites created from the :py:class:`~arcade.tilemap.TileMap` class would previously set a key in the ``Sprite.properties`` dictionary |
39 |
| - named ``type``. This key has been renamed to ``class``. This is in keeping with Tiled's renaming of the key and following the Tiled |
40 |
| - format/API as closely as possible. |
41 |
| -* The ``arcade.text_pillow`` and ``arcade.text_pyglet`` modules have been completely removed. The Pillow implementation is gone, and the |
42 |
| - Pyglet one has been renamed to just ``arcade.text``. These modules were largely internal, but it is possible to have referenced them directly. |
43 |
| -* Due to the above change and removal of the Pillow text implementation, the :py:func:`~arcade.create_text_sprite` previously referred to |
44 |
| - the Pillow text implementation, and there was no easy way to create a sprite from Text with the pyglet implementation. This function has |
45 |
| - been re-worked to use the pyglet based text system. It has no API breaking changes, but the underlying functionality has changed a lot, so |
46 |
| - if you are using this function it may be worth checking the docs for it again. The main concern for a difference here would be if you |
47 |
| - are also using any custom :py:class:`~arcade.TextureAtlas`. |
48 |
| -* The GUI package has been changed significantly. |
49 |
| -* Buffered shapes (shape list items) have been moved to their own sub-module. |
50 |
| -* `use_spatial_hash` parameter for `SpriteList` and `TileMap` is now a `bool` instead of `Optional[bool]` |
51 |
| -* :py:meth:`~arcade.draw_text()` and :py:class:`~arcade.text.Text` arguments have changed. The `start_x` and `start_y` parameters have been |
52 |
| - removed. The `x` and `y` parameters are now required. `align!=left` does not interfere with `multiline` parameter anymore. |
53 |
| -* GUI |
54 |
| - |
55 |
| - * Removed :py:class:`~arcade.gui.widgets.UIWrapper` this is now general available in :py:class:`~arcade.gui.widgets.UILayout` |
56 |
| - * Removed :py:class:`~arcade.gui.widgets.UIBorder` this is now general available in :py:class:`~arcade.gui.widgets.UIWidget` |
57 |
| - * Removed :py:class:`~arcade.gui.widgets.UIPadding` this is now general available in :py:class:`~arcade.gui.widgets.UIWidget` |
58 |
| - * Removed :py:class:`~arcade.gui.widgets.UITexturePane` this is now general available in :py:class:`~arcade.gui.widgets.UIWidget` |
59 |
| - * Removed :py:class:`~arcade.gui.widgets.UIAnchorWidget` replaced by :py:class:`~arcade.gui.widgets.UIAnchorLayout` |
60 |
| - |
61 |
| - |
62 |
| -Featured Updates |
63 |
| -~~~~~~~~~~~~~~~~ |
64 |
| - |
65 |
| -* Arcade now supports mixing Pyglet and Arcade drawing. This means |
66 |
| - you can, for example, use Pyglet batches. Pyglet batches can draw thousands |
67 |
| - of Pyglet objects with the cost and performance time of only a few. |
68 |
| -* The code behind the texture atlas Arcade creates for each SpriteList has |
69 |
| - been reworked to be faster and more efficient. Reversed/flipped sprites are |
70 |
| - no longer duplicated. |
71 |
| -* Added a new system for handling background textures (ADD MORE INFO) |
72 |
| -* Arcade now supports OpenGL ES 3.1/3.2 and have been |
73 |
| - tested on the Raspberry Pi 4. Any model using the Cortex-A72 |
74 |
| - CPU should work. Note that you need fairly new Mesa drivers |
75 |
| - to get the new V3D drivers. |
76 |
| - |
77 |
| -Changes |
78 |
| -~~~~~~~ |
79 |
| - |
80 |
| -* :py:class:`~arcade.Window` |
81 |
| - |
82 |
| - * Removal of the ``update`` function in favor of :py:meth:`~arcade.Window.on_update()` |
83 |
| - * ``update_rate`` parameter in the constructor can no longer be set to ``None``. Must be a float. |
84 |
| - * Added ``draw_rate`` parameter to constructor |
85 |
| - :py:meth:`~arcade.Window.__init__`, this will control the interval that the |
86 |
| - :py:meth:`~arcade.Window.on_draw()` function is called at. This can be used |
87 |
| - with the pre-existing ``update_rate`` parameter which controls |
88 |
| - :py:meth:`~arcade.Window.on_update()` to achieve separate draw and update rates. |
89 |
| - |
90 |
| -* :py:class:`~arcade.View` |
91 |
| - |
92 |
| - * Removal of the ``update`` function in favor of :py:meth:`~arcade.View.on_update()` |
93 |
| - |
94 |
| -* :py:class:`~arcade.Section` and :py:class:`~arcade.SectionManager` |
95 |
| - |
96 |
| - * Removal of the ``update`` function in favor of :py:meth:`arcade.Section.on_update()` |
97 |
| - |
98 |
| -* GUI |
99 |
| - |
100 |
| - * :py:class:`~arcade.gui.widgets.UIWidget` |
101 |
| - |
102 |
| - * Supports padding, border and background (color and texture) |
103 |
| - * Visibility: visible=False will prevent rendering of the widget. It will also not receive any UI events |
104 |
| - * Dropped :py:meth:`~arcade.gui.widget.UIWidget.with_space_around()` |
105 |
| - * ``UIWidget.with_`` methods do not wrap the widget anymore, they only change the attributes |
106 |
| - * Fixed an blending issue when rendering the gui surface to the screen |
107 |
| - * Support nine patch information to draw background texture |
108 |
| - * Performance improvements |
109 |
| - * Removed some attributes from public interface, use ``UIWidget.with_`` methods |
110 |
| - * ``UIWidget.border_width`` |
111 |
| - * ``UIWidget.border_color`` |
112 |
| - * ``UIWidget.bg_color`` |
113 |
| - * ``UIWidget.bg_texture`` |
114 |
| - * ``UIWidget.padding_top`` |
115 |
| - * ``UIWidget.padding_right`` |
116 |
| - * ``UIWidget.padding_bottom`` |
117 |
| - * ``UIWidget.padding_left`` |
118 |
| - * Update and add example code. |
119 |
| - * Iterable (providing direct children) |
120 |
| - |
121 |
| - * New widgets: |
122 |
| - |
123 |
| - * :py:class:`~arcade.gui.widgets.dropdown.UIDropdown` |
124 |
| - * :py:class:`~arcade.gui.widgets.image.UIImage` |
125 |
| - * :py:class:`~arcade.gui.widgets.slider.UISlider` |
126 |
| - * :py:class:`~arcade.gui.widgets.constructs.UIButtonRow` (`PR1580 <https://github.com/pythonarcade/arcade/pull/1580>`_ and `PR1253 <https://github.com/pythonarcade/arcade/pull/1253>`_) |
127 |
| - |
128 |
| - * :py:class:`~arcade.gui.UIInteractiveWidget` only reacts to left mouse button events |
129 |
| - |
130 |
| - * Arcade :py:class:`~arcade.gui.property.Property`: |
131 |
| - |
132 |
| - * Properties are observable attributes (supported: primitive, list and dict). |
133 |
| - Listener can be bound with :py:meth:`~arcade.gui.property.bind` |
134 |
| - |
135 |
| - * All :py:class:`~arcade.gui.UILayout`s support ``size_hint``, ``size_hint_min``, ``size_hint_max``. |
136 |
| - |
137 |
| - * :py:class:`~arcade.gui.UIBoxLayout` |
138 |
| - * :py:class:`~arcade.gui.UIAnchorLayout` |
139 |
| - * :py:class:`~arcade.gui.UIGridLayout` (`PR1478 <https://github.com/pythonarcade/arcade/pull/1478>`_) |
140 |
| - |
141 |
| - * Replaces deprecated usage of :py:func:`~arcade.draw_text` |
142 |
| - |
143 |
| - * Misc Changes |
144 |
| - |
145 |
| - * :py:meth:`arcade.color_from_hex_string` changed to follow the CSS hex string standard |
146 |
| - * Windows Text glyph are now created with DirectWrite instead of GDI |
147 |
| - * Removal of various deprecated functions and parameters |
148 |
| - * OpenGL examples moved to |
149 |
| - `examples/gl <https://github.com/pythonarcade/arcade/tree/development/arcade/examples/gl>`_ |
150 |
| - from ``experiments/examples`` |
151 |
| - |
152 |
| -* Sprites |
153 |
| - |
154 |
| - * The method signature for :py:meth:`arcade.Sprite.__init__` has been changed. (May break old code.) |
155 |
| - * The sprite code has been cleaned up and broken into parts. |
156 |
| - * :py:meth:`arcade.Sprite.angle` now rotates clockwise. Why it ever rotated |
157 |
| - the other way, and why it lasted so long, we do not know. |
158 |
| - |
159 |
| -* Controller Input |
160 |
| - |
161 |
| - * Previously controllers were usable via the ``arcade.joysticks`` module. This |
162 |
| - module is still available in 3.0. |
163 |
| - However, it should largely be seen as deprecated for most people who want |
164 |
| - basic controller support. This module existed basically just as an alias to |
165 |
| - the Pyglet joysticks module. We now have a new ``arcade.controller`` module, |
166 |
| - which is similarly just an alias to Pyglet's newer |
167 |
| - Controller API. This change should make a much wider selection of controllers |
168 |
| - able to work with Arcade, and provide newer functionality and be |
169 |
| - easier to use for most cases than the joystick module. The joystick module |
170 |
| - may still be useful if you need specialty controllers such as racing |
171 |
| - wheels or flight sticks. All existing example code has been updated to use |
172 |
| - the new controller API. |
173 |
| - |
174 |
| -* Text |
175 |
| - |
176 |
| - * Complete removal of the old PIL based text system. In Arcade 2.6 we had largely switched to the newer Pyglet based system, however |
177 |
| - there were still remnants of the PIL implementation around. Namely the :py:func:`~arcade.create_text_sprite` function which has been |
178 |
| - updated to use the Pyglet system. There's no API breaking change here but if you are using the function it would be worth reading the |
179 |
| - new docs for it, as there are some different considerations surrounding use of a custom :py:class:`~arcade.TextureAtlas` if you are also |
180 |
| - doing that. This function should now be much much faster than the old PIL implementation. The texture generation happens almost entirely on |
181 |
| - the GPU now. |
182 |
| - * As part of this move, the ``arcade.text_pillow`` module has been removed completely, and the ``arcade.text_pyglet`` module has been re-named |
183 |
| - just be ``arcade.text``. |
184 |
| - * :py:func:`~arcade.draw_text` and :py:class:`~arcade.Text` both now accept a ``start_z`` parameter. This will allow advanced usage to set the Z |
185 |
| - position of the underlying Label. This parameter defaults to 0 and does not change any existing usage. |
186 |
| - |
187 |
| -* :py:mod:`arcade.draw_commands`: |
188 |
| - |
189 |
| - * Added :py:func:`arcade.draw_commands.draw_lbwh_rectangle_textured` |
190 |
| - |
191 |
| - * Replaces the now-deprecated :py:func:`arcade.draw_commands.draw_lrwh_rectangle_textured` |
192 |
| - * Usage is exactly the same |
193 |
| - |
194 |
| -* OpenGL |
195 |
| - |
196 |
| - * Support for OpenGL ES 3.1 and 3.2. 3.2 is fully supported, 3.1 is only supported if the ``EXT_geometry_shader`` extension |
197 |
| - is provided by the driver. This is part of the minimum spec in 3.2 so it is guaranteed to be there. This is the only optional |
198 |
| - extension that Arcade needs to function with 3.1. |
199 |
| - |
200 |
| - As an example, the Raspberry Pi 4b only supports OpenGL ES 3.1, however does provide this extension, so is fully compatible |
201 |
| - with Arcade. |
202 |
| - * Textures now support immutable storage for OpenGL ES compatability. |
203 |
| - * Arcade is now using Pyglet's projection and view matrix. |
204 |
| - All functions setting matrices will update the Pyglet window's |
205 |
| - ``view`` and ``projection`` attributes. Arcade shaders is also using Pyglet's ``WindowBlock`` UBO. |
206 |
| - * Uniforms are now set using ``glProgramUniform`` instead of ``glUniform`` |
207 |
| - when the extension is available. |
208 |
| - * Fixed many implicit type conversions in the shader code for wider support. |
209 |
| - * Added ``front_face`` property on the context for configuring front face winding order of triangles |
210 |
| - * Added ``cull_face`` property on the context for configuring what triangle face to cull |
211 |
| - * Added support for bindless textures |
212 |
| - * Added support for 64 bit integer uniforms |
213 |
| - * Added support for 64 float uniforms |
214 |
| - |
215 |
| -* :py:class:`~arcade.tilemap.TileMap` |
216 |
| - |
217 |
| - * Added support Tiles defined as a sub-rectangle of an image. See |
218 |
| - `Tiled 1.9 Release Notes <https://www.mapeditor.org/2022/06/25/tiled-1-9-released.html>`_ for more information on |
219 |
| - this feature. |
220 |
| - * Changed the ``Sprite.properties`` key "type" to "class" to stay in line with Tiled's re-naming of this key in their |
221 |
| - API. |
222 |
| - * You can now define a custom texture atlas for SpriteLists created in a TileMap. You can provide a map default to |
223 |
| - the ``texture_atlas`` parameter of the :py:class:`~arcade.tilemap.Tilemap` class or the |
224 |
| - :py:func:`~arcade.tilemap.load_tilemap` function. This will be used by default on all |
225 |
| - layers, however it can be overridden on a per-layer basis as defined by the new ``texture_atlas`` key in the |
226 |
| - ``layer_options`` dictionary. |
227 |
| - If no custom atlas is provided, then the global default atlas will be used (This is how it works pre-Arcade 3.0). |
228 |
| - * Fix for animated tiles from sprite sheets |
229 |
| - * DefaultTextureAtlas: Added ``sync_texture_image`` method to sync the texture in the atlas back into |
230 |
| - the internal pillow image in the ``arcade.Texture``. |
231 |
| - * DefaultTextureAtlas: Added ``get_texture_image`` method to get pixel data of a texture in the atlas as a pillow image. |
232 |
| - |
233 |
| -* Collision Detection |
234 |
| - |
235 |
| - * Collision detection is now even faster. |
236 |
| - * Remove Shapely for collision detection as 3.11 is faster without it. |
237 |
| - |
238 |
| -* Shape list |
239 |
| - |
240 |
| - * Add in :py:func:`arcade.create_triangles_strip_filled_with_colors` |
241 |
| - * Moved all buffered items that can be added to a shape list to `arcade.shape_list` |
242 |
| - |
243 |
| -* Documentation |
| 7 | +Version 2.6.17 |
| 8 | +-------------- |
244 | 9 |
|
245 |
| - * :ref:`example-code` code page has been reorganized |
246 |
| - * `CONTRIBUTING.md <https://github.com/pythonarcade/arcade/blob/development/CONTRIBUTING.md>`_ page has been updated |
247 |
| - * Improve :ref:`background_parallax` example |
| 10 | +*Released 2022-Dec-30* |
248 | 11 |
|
249 |
| -Special thanks to |
250 |
| -`Einar Forselv <https://github.com/einarf>`_ |
251 |
| -`Darren Eberly <https://github.com/Cleptomania>`_, |
252 |
| -`pushfoo <https://github.com/pushfoo>`_, |
253 |
| -`Maic Siemering <https://github.com/eruvanos>`_, |
254 |
| -`Cleptomania <https://github.com/Cleptomania>`_, |
255 |
| -`Aspect1103 <https://github.com/Aspect1103>`_, |
256 |
| -`Alejandro Casanovas <https://github.com/janscas>`_, |
257 |
| -`Ibrahim <https://github.com/Ibrahim2750mi>`_, |
258 |
| -`Andrew <https://github.com/cspotcode>`_, |
259 |
| -`Alexander <https://github.com/ccntrq>`_, |
260 |
| -`kosvitko <https://github.com/kosvitko>`_, |
261 |
| -and |
262 |
| -`pvcraven <https://github.com/pvcraven>`_ |
263 |
| -for their contributions to this release. Also, thanks to everyone on the |
264 |
| -`Pyglet`_ team! We depend heavily on Pyglet's continued development. |
| 12 | +* Bump Pillow to 9.3.0 |
| 13 | +* Bump PyMunk to 6.4.0 |
| 14 | +* Add explicit compatibility tag for 3.11 |
| 15 | +* Drop 3.7 as part of the test suite |
265 | 16 |
|
266 | 17 | Version 2.6.16
|
267 | 18 | --------------
|
|
0 commit comments