Pygame项目加载TMX文件失败:zstd压缩格式不支持求助
I see you're working on a Pygame project based on KidsCanCode's tutorial series, and you're hitting a roadblock loading your second TMX level. Let's break down what's happening and how to fix it.
The Problem
You can load level1.tmx without issues, but loading level2.tmx throws this error:
TMX compression type: zstd is not supported
Here's the full traceback for reference:
Traceback (most recent call last): File "C:\Users\ruben\Documents\MAX\Python\Pygame\tileyLevel\main.py", line 285, in <module> g.new() File "C:\Users\ruben\Documents\MAX\Python\Pygame\tileyLevel\main.py", line 120, in new self.map = TiledMap(path.join(self.map_folder, 'level2.tmx')) File "C:\Users\ruben\Documents\MAX\Python\Pygame\tileyLevel\tilemap.py", line 22, in __init__ tm = pytmx.load_pygame(filename, pixelalpha=True) File "C:\Users\ruben\AppData\Local\Programs\Python\Python38\lib\site-packages\pytmx\util_pygame.py", line 141, in load_pygame return pytmx.TiledMap(filename, *args, **kwargs) File "C:\Users\ruben\AppData\Local\Programs\Python\Python38\lib\site-packages\pytmx\pytmx.py", line 360, in __init__ self.parse_xml(ElementTree.parse(self.filename).getroot()) File "C:\Users\ruben\AppData\Local\Programs\Python\Python38\lib\site-packages\pytmx\pytmx.py", line 391, in parse_xml self.add_layer(TiledTileLayer(self, subnode)) File "C:\Users\ruben\AppData\Local\Programs\Python\Python38\lib\site-packages\pytmx\pytmx.py", line 962, in __init__ self.parse_xml(node) File "C:\Users\ruben\AppData\Local\Programs\Python\Python38\lib\site-packages\pytmx\pytmx.py", line 1044, in parse_xml raise Exception Exception
You also noted that your main.py's load_data function had a typo (tiled1.tmx instead of level2.tmx)—make sure that's corrected first, but the main issue here is the zstd compression.
Why This Happens
The pytmx library version you're using doesn't support the Zstandard (zstd) compression format, but your level2.tmx (or its linked tileset) was saved with this compression enabled.
Solutions
Let's go through the easiest fixes first:
1. Change the Compression Format in Tiled (Quickest Fix)
Open level2.tmx in the Tiled Map Editor:
- Go to
Map > Map Propertiesin the menu bar - In the properties panel, find the Compression dropdown and switch it from
zstdto eithergzip,zlib, orNone(no compression) - Save the map and try loading it again in your project
If the issue is with a tileset instead of the map itself:
- Right-click the problematic tileset in Tiled and select
Tileset Properties - Adjust the Compression setting to a supported format
2. Update pytmx and Install zstd Support (If You Want to Keep zstd)
If you need to stick with zstd compression, try these steps:
First, install the Python bindings for zstd:
pip install zstd
Then upgrade pytmx to the latest version (in case newer versions added zstd support):
pip install --upgrade pytmx
Note: Some older pytmx versions might still not support zstd even with the library installed, so this isn't guaranteed to work.
3. Double-Check Filename References
You mentioned the typo in load_data—make sure all places in your code that load the level are pointing to level2.tmx correctly, to rule out any accidental file mismatches.
内容的提问来源于stack exchange,提问作者Max

