Unbearably Fun Game Development
by Piper
This has been an exciting release cycle! Most of our focus has been on things interacting with the Renderer, so let’s go down the list.
We finally support text rendering! We don’t support system fonts, so you’ll need to include your .ttf or .otf files with the rest of your resources just like images or sounds.
Just like the rest of ppb, text resizes based on the shape of your sprite, and it attempts to fill the space.
In tackling text rendering, it became required to loosen the restrictions on the shapes of Sprites. As such, we now support rectangular
sprites as well as square ones. The default Sprite
is still a square, but you can also use ppb.RectangleSprite
to manage things that
aren’t square.
Part of this refactor included doing away with the Sides
interface: instead of Sprite.top.left
it’s Sprite.top_left
.
ppb has long supported a basic software camera as part of its rendering process. Building levels bigger than your viewport is much more simple than in other libraries since the constructs already exist. That said, the original camera was somewhat ugly. You had to know and understand the difference between the window screen space and the in-game coordinate grid.
The good news: we rebuilt the camera. Now, it’s width and height attempt to approximate the actual dimensions of the window, translated into game space. So if you test collision between the camera and an object, you’ll know if the object is visible on screen.
The bad news: In order to make the Camera work as well as it does, it gets added to new scenes by the Renderer during the SceneStarted
event. So instead of setting up your camera in Scene.__init__
you should do your initialization in Scene.on_scene_started
.
This will be short and sweet:
We removed the DoNotRender flag. A Sprite with an image of None
simply won’t render.
We added some initial (and optional) hooks for tinting your sprites and setting the render opacity of your sprites. Include
Sprite.tint
with a 3 tuple color (r, g, b all in the range 0-255) to tint. Sprite.opacity
with a value between 0 and 255 to
change the opacity of a render.
See the detailed change log on github and get the latest version of ppb with pip install ppb
.