Skip to content

Art and models

Everything you see in Pelota can use your help: the players, their clothes and rackets, the court and the stadium. The source files (Blender files and textures) live in the pelota-files repository; the exported models and textures go into the game.

The game has a color palette for a consistent look: assets/pelota_color_palette.gpl (for GIMP, Krita or Inkscape), also as .png and .svg.

How a player’s look is built

A player is one shared skeleton with modular parts: a body, a shirt, shorts, shoes, hair and a racket. Each player has an appearance that picks the meshes, textures and colors for these parts. Anything a player’s appearance leaves empty is taken from the base appearance, so a new player only needs what makes them different, often just a few colors and textures.

PartMeshTextureColor
Body (skin and face)✓skin textureskin tint
Shirt, shorts, shoes✓✓tint (multiplies the texture; a plain color without one)
Hair✓ (hair cards)strand shape (alpha)hair color
Racketsharedframe texture, strings texture—

The appearances are in scenes/player/resources/appearances/; open one in Godot’s inspector to see all fields.

Creating a player model

Players are made with MPFB, the MakeHuman add-on for Blender, which builds realistic people with a ready rig.

Install Blender and MPFB

Install Blender (4.0 or newer). In Blender, open Edit → Preferences → Extensions, search for MPFB, install and enable it.

Install the MakeHuman assets

Download the system assets (CC0). In the MPFB side panel, go to Settings → Assets and point it at the ZIP file (no need to unpack it).

Start from the base player

Open player/base_player.blend from pelota-files and select the human. It already has the game’s rig and proportions.

Shape the person

In MPFB’s Model tab, adjust body (height, weight, muscle), face and skin. For a real player, work from photos of the front and the side.

Dress them

In Apply Assets, choose clothes and hair. Keep the clothes as separate meshes. The game swaps shirts, shorts and shoes independently.

Share it

Open a pull request on pelota-files with your .blend file and a few renders, and describe the player. See the MPFB documentation for more.

Rackets

All rackets share one model with two surfaces: the frame and the strings. A racket design is just two textures painted on its UV layout. Start from head_racket.png and head_strings.png in assets/models/racket/textures/. Each player’s appearance names their two racket textures; the player’s racket and the spare rackets on their bench both show them.

The stadium and props

The crowd models are Blender files in pelota-files. When you change one, export it into the game’s assets/models/ folder (keeping the file name), bake the crowd again (scenes/environments/crowd/baker/crowd_baker.gd, see the top of the file; a new person also goes into scenes/environments/crowd/spectators.tres) and check it in the match scene: the TV camera view and a walk around the court with the free camera (press 1 during a match to cycle cameras).

The stadium itself, Arthur Ashe Stadium, is built from code by scenes/environments/us_open/arthur_ashe/arthur_ashe_builder.gd: its sizes, colors and shapes are constants and functions there. Change them and run the builder again (see the top of the file) to regenerate the stadium, its seats and the crowd’s seating. The sponsors’ logos are one texture atlas, scenes/environments/us_open/sponsor_logos.png, listed in us_open_logos.gd next to it. The court with its net (scenes/court/court_model_builder.gd), the umpire chair (scenes/match/umpire/umpire_chair_builder.gd) and the TV cameras (scenes/environments/us_open/cameras/broadcast_camera_builder.gd) are built from code the same way.

Keep an eye on performance: the stadium is on screen all the time, and the crowd has thousands of people. Prefer fewer, larger textures, simple materials, and no hidden geometry.

Adding a new player to the roster

Every player is a data file in scenes/player/resources/data/ with their name, country, hand, height and rank, plus three linked resources: their stats, play style and appearance. Copy an existing player’s files, change them, and the new player shows up in the menus automatically, sorted by rank.