Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

sirenstidegames

14
Posts
3
Topics
2
Followers
1
Following
A member registered Aug 31, 2025 · View creator page →

Creator of

Recent community posts

(1 edit)

In the game we have premade workers which are handmade by us with unique appearances and names but there's only so many we can have, so when the game runs out of curated characters it will begin procedurally generating characters.

Goals

  • Make generated characters stylistically nondescript, the world has many fantastical elements but without contrast  they cant shine
  • Give designers as much control as possible.

How it works

A request is sent

function scr_get_appearance_request(_gender_expression,_age_expression,_motives) constructor
{
gender_expression = _gender_expression
age_expression = _age_expression
motives = _motives
output = undefined
}

The system then gathers candidate clothes, body types, and so on. Each candidate is checked against the request, and removed from the pool if it doesn't fit:

  • The item is explicitly masculine, but the character needs a feminine appearance.
  • The item is designed for younger people, but the character is elderly.
  • The item doesn't match the character's motive, for example a robber outfit when the request needs a security guard uniform

How do we distinguish items

I manually apply components to items.

"scr_component_feminine": {}

 Then we just compare later on.

Where this breaks

There isn't a formal gender system in the game, anyone can wear any clothes, anyone can have a moustache but for the sake of clarity when it comes to generated characters we have to prevent feminine looking appearances from having them. The real problem however comes with things like pony tails or even things as innocuous as eyes.

There is an interesting philosophical dilemma, do we outright prevent masculine characters from wearing makeup,  for the sake of better representing the median masculine appearance or allow for more freedom?

Currently the consensus on the team is to not be too restrictive as half the fun of random generation is seeing characters you would never have thought to design, it also passively encourages players to give npcs makeovers deepening connections with the players. 

-N

After deleting the masks it only changes by roughly 100 KB making it not somthing worth actually trying to solve.



The UI is now fully connected to the color system meaning the color feature is now complete

The articulated joints option is a really cool idea 

I havent seen rage comics in ages lmao

Theres a really insane level of polish in terms of the gameplay and art good job

Very cool shoes

(1 edit)

Very nice game but I got stuck at the 2000s, on the last task

I jumped the first time I saw the enemy cars good job

Sounds like a good idea after I finish updating the masks ill see if it makes a significant difference

(11 edits)

We reused the color system from a previous game we made


How it works

  • There is a base sprite which is in grayscale
  • A mask sprite with red,green and blue
  • A data structure holds the channels. Each channel points at a region of the mask and stores the current colour for it.
  • Then a shader reads the mask, checks which channel each pixel belongs to, and applies that channel's colour to the base sprite.


Each furniture, item in the game thats colorable has this component, we simply change the colors in each channel and we get the end result.

            "scr_component_tint": {
                "red": {
                    "r": 255,
                    "g": 255,
                    "b": 255,
                    "a": 255
                },
                "green": {
                    "r": 255,
                    "g": 255,
                    "b": 255,
                    "a": 255
                },
                "blue": {
                    "r": 255,
                    "g": 255,
                    "b": 255,
                    "a": 255
                }
            }



Why not slice the sprite?

The original plan was to slice each furniture sprite into pieces and tint them individually using GameMaker's built-in sprite colour system. That would have been a lot of manual work for the artist, and every piece has the chance for clipping errors when things overlap. Using masks keeps things clean and allows artists to focus more on creating somthing that looks good.

What is next

The UI needs more work and all the furniture, walls, etc need to have masks.
Thinking ahead this will cause the game to double in sprites which is antithetical to the teams goal of a small file size so a solution for that will need to be thought up in the future.

Try the creator 

The character creator demo is live and we are interested in NPC ideas, workers to hire, customers to serve. Reply with a screenshot and include their darkest secret.

Wow this is looking so good!! Feels super nostalgic, good job