gamekit2d 0.3.2__tar.gz → 0.3.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/PKG-INFO +45 -2
- gamekit2d-0.3.2/gamekit2d.egg-info/PKG-INFO → gamekit2d-0.3.4/README.md +365 -346
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/__init__.py +1 -1
- gamekit2d-0.3.4/gamekit/audio/sound.py +99 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/core/game.py +156 -33
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/render/backend.py +49 -31
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/render/window.py +41 -35
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/sprites/sprite.py +4 -1
- gamekit2d-0.3.2/README.md → gamekit2d-0.3.4/gamekit2d.egg-info/PKG-INFO +389 -322
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/pyproject.toml +1 -1
- gamekit2d-0.3.2/gamekit/audio/sound.py +0 -69
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/LICENSE +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/MANIFEST.in +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/TUTORIAL.html +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/TUTORIAL.md +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/TUTORIAL_zh.md +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/examples/01_hello.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/examples/02_pong.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/examples/03_breakout.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/examples/04_sprite_image.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/examples/05_space_shooter.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/examples/assets/coin1.png +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/examples/assets/coin2.png +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/examples/assets/player.png +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/examples/assets/star.png +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/examples/make_assets.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/audio/__init__.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/core/__init__.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/core/keys.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/core/scene.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/fx/__init__.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/fx/draw.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/fx/particles.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/physics/__init__.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/physics/collision.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/render/__init__.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/render/surface.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/render/win32.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/sprites/__init__.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/sprites/animation.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/sprites/group.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/sprites/image.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/ui/__init__.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/ui/text.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/ui/widgets.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/utils/__init__.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/utils/color.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit/utils/vector.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit2d.egg-info/SOURCES.txt +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit2d.egg-info/dependency_links.txt +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/gamekit2d.egg-info/top_level.txt +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/setup.cfg +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/tests/run_selftest.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/tests/test_collision.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/tests/test_draw.py +0 -0
- {gamekit2d-0.3.2 → gamekit2d-0.3.4}/tests/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gamekit2d
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.4
|
|
4
4
|
Summary: A tiny zero-dependency 2D game library (standard library only, self-made GDI renderer + tkinter + winsound). A simpler pygame.
|
|
5
5
|
Author: gamekit contributors
|
|
6
6
|
License-Expression: MIT
|
|
@@ -82,7 +82,14 @@ def wave(dt):
|
|
|
82
82
|
|
|
83
83
|
`Group` 是一组精灵的轻量容器:整组移动 / 隐藏 / 删除,不用自己写循环。精灵仍由 Game 统一渲染,Group 只做批量管理。
|
|
84
84
|
|
|
85
|
-
`Game(..., dirty=True)`
|
|
85
|
+
`Game(..., dirty=True)` 开启**脏矩形局部更新**:不整屏清屏,只把上一帧移动过的精灵旧位置刷回背景。配合 `game.sprite(..., static=True)` 标记静态元素(墙壁、砖块、UI 装饰)——它们只在第一帧画进后台缓冲,之后只要没被移动精灵压过就不再重画。
|
|
86
|
+
|
|
87
|
+
**实测结论(务必按场景选择)**:
|
|
88
|
+
- **适合**:少量动态元素 + 小范围移动(菜单光标、弹窗、射击子弹)——此时比整屏清屏快
|
|
89
|
+
- **别开**:大量精灵同时移动、或动态精灵横穿大半个屏幕——脏区会波及大量静态精灵,"恢复背景 + 重画被压静态 + Python 层相交计算"的综合开销比直接全画还高 20~30%
|
|
90
|
+
- 不确定就保持默认 `dirty=False`,整屏清屏用字节模板 `memmove`,1MB 只要 ~0.1ms,已经足够快
|
|
91
|
+
|
|
92
|
+
仅 GDI 后端有效。
|
|
86
93
|
|
|
87
94
|
---
|
|
88
95
|
|
|
@@ -120,6 +127,42 @@ game.run()
|
|
|
120
127
|
|
|
121
128
|
---
|
|
122
129
|
|
|
130
|
+
## Camera 相机 + 视口裁剪
|
|
131
|
+
|
|
132
|
+
大地图卷轴游戏必备,把世界坐标和屏幕坐标分开:
|
|
133
|
+
|
|
134
|
+
```python
|
|
135
|
+
game.camera_x = 1200 # 世界坐标左上角对应屏幕 (0,0)
|
|
136
|
+
game.camera_y = 400
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
设置后所有精灵绘制自动按偏移转换,**完全在屏幕外的精灵直接跳过不画**。4000 个精灵分布在 3200×2400 大地图、相机扫过只画屏幕内几十个,实测 **190 FPS**(对比全画 38 FPS,5 倍提升)——这才是大地图性能的真正解法。
|
|
140
|
+
|
|
141
|
+
## Tilemap 关卡
|
|
142
|
+
|
|
143
|
+
从字符串数组快速铺一整关(打砖块 / 平台游戏):
|
|
144
|
+
|
|
145
|
+
```python
|
|
146
|
+
MAP = [
|
|
147
|
+
"##########",
|
|
148
|
+
"#........#",
|
|
149
|
+
"#..SS....#",
|
|
150
|
+
"##########",
|
|
151
|
+
]
|
|
152
|
+
game.tilemap(MAP, tile_size=32,
|
|
153
|
+
tile_defs={"#": "#4488ff", "S": "#ff4444"})
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
未在 `tile_defs` 里的字符(如 `.`)视为空气。生成的瓦片自动 `static=True`,配合 camera 只画屏幕内。
|
|
157
|
+
|
|
158
|
+
## 跨平台音频
|
|
159
|
+
|
|
160
|
+
- Windows:标准库 `winsound` 播放 WAV
|
|
161
|
+
- macOS / Linux:自动调系统播放器(`afplay` / `paplay` / `aplay`),不装第三方包
|
|
162
|
+
- 探测不到播放器时静默降级,游戏不崩
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
123
166
|
## 功能总览
|
|
124
167
|
|
|
125
168
|
| 功能 | 说明 | 快速示例 |
|