synapsium alpha build #1
23 December 2025
video showcase
changelog
- added buttons for switching between levels. each button is linked to a level and changes colour based on whether its linked level has been completed or not.
- added a sound effect that gets triggered every time a particle arrives at a node. each node type adjusts the pitch of this sound effect, helping to give each node a unique identity.
- added engine support for creating levels with pre-existing connections (i.e. not made by the user) between nodes.
- other minor tweaks and changes.
a discussion of the changes
node sfx
a large part of what makes a game is enjoyable is that it has to feel responsive. adding a sound effect that the nodes trigger when being hit by a particle helps, in my opinion, to make the whole experience of interacting with the levels feel more fun.
the sound effect being used at the moment is just a placeholder that i’ll change in the future.
i hadn’t actually used raylib’s raudio module before (which handles sound), so this was also an experiment with playing around with that.
transitioning between levels ui
previously, the only way to move around the levels was to press SPACE (if the level had been completed) or M to force skip to the next level (these were arbitrary key choices). i wanted to create some ui that achieved the following objectives:
- indicated to the player which level they were currently on;
- indicated to the player how many levels there are;
- indicated to the player whether they have completed a level or not; and
- allowed the player to transition to their desired level on click.
right now, i’m simply displaying the ui on the side of the screen, though this may change in the future (if there are many levels, it will become somewhat cluttered and look ugly). however, it’s a working first prototype that does the job.
updating the engine
previously, the game’s code didn’t really allow support for levels with pre-existing connections. essentially, all connections formed were stored in a
std::vector which got cleared when a level was reset. this meant that even if i created a level with a pre-existing connection, when the player
transitioned to the next level this connection would be cleared (along with any connections the player made).
to get around this issue, i reworked how the game handles connections. there are now permenant and temporary connections. permenant connections don’t get cleared when the level is reset, whereas temporary ones do. any connections that a player creates are temporary, whereas connections that are a part of the level are permenant.
due to this change, i can now easily create levels with pre-existing connections, which will be very useful in the future when i build more complicated levels.
a brief discussion of versioning labels
all future builds of synapsium will be labelled in the form #XY (Y is optional), where X is a number and Y is a lowercase letter. for convenience, let’s call this the game’s build string. the Y component of the build string will be used to indicate the addition of minor changes and bug fixes, whereas the X component will be used to indicate the addition of new features.
the game is currently in alpha. what does this mean? well, for this game, being in alpha means that there is not a publically released playable demo. in other words, it’s still in the “rough prototype” phase of development.
when i do publically release a playable demo, i’ll transition the game into beta.