Skip to content

atamocius/synthrogue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

7 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Synthrogue ๐Ÿค–โŒจ๐ŸŽถ๐Ÿฅ

Program a robot to escape using a sequencer

Play the game ๐Ÿš€

โ›‘ If you are having issues running the game, you can also use this link as an alternative: mirror link

Gameplay video ๐Ÿ“ผ

synthrogue

What is it?

Synthrogue is a game where you indirectly control a robot by programming its moves in advance via a step sequencer.

Program the robot's moves to get the key and then find the exit to escape a level.

The challenge is to escape the levels, but have fun with the sequencer to find cool melodies that go well with the beats played by the accompanying drum machine in the background.

If you are a musician, you can think of this as a programmable toy synth with a game visualizer ๐Ÿ˜.

Get Started

Just press [ play ] to hear the beat and start adding notes! ๐Ÿ˜Ž

How to play

  • Use the step sequencer grid at the bottom of the page to place notes.
  • The arrows on the leftmost part of the sequencer pertains to the direction you want the robot to go.
  • Click [ play ] to start (and stop) the sequencer.
  • You can still place and remove notes while the sequencer is playing.
  • Guide the robot to get the key first before going to the exit.
  • The game's display (The grid with lots of dots), is a top-down view of a room (very similar to classic roguelikes).
  • The 3 enemy types (Zombies, Skeletons, Vampires) move in different speeds and have varying sight ranges. If your robot is within their sight range, they will try to chase your robot.
  • When the robot touches any enemy, the game ends.
  • My suggestion is to stop the sequencer if your robot is in any imminent danger. There are no limits to doing this.
  • Details about the game's display characters can be found in the game's splash screen.
  • Every level has a specific drum pattern (and tempo) played by the drum machine in the background.

Legend

legend

Visual Components

Display

level2

Level 2 pictured above

Sequencer

sequencer-full

Hint: The sequencer pictured above is a possible solution to level 1 ๐Ÿ˜‰

Inspiration

The game was insipired by the minimalistic aesthetics of roguelikes and music trackers. The terminal-like UI was based on the visual programming language Orca.

The indirect gameplay is reminiscent of games from Zachtronics (ie. TIS-100, EXAPUNKS, etc.) wherein planning and writing instructions is a huge gameplay component.

The sleek tutorial websites from Ableton also provided tons of inspiration (learningmusic, learningsynths).

Implementation Notes

  • Tested in both Chrome 75 and Firefox 68 (I recommend you use Chrome)
  • The game was designed for desktop browsers.
  • Developed using React and Tone.js.
  • Drum samples are from TriSamples' free 808 sample packs (1, 2).

Hack your own drum patterns and levels

Fork the project and start hacking!

Drum patterns are found in src/logic/patterns.js. There are 4 samples available: kick, clap, closed hi-hat, open hi-hat. Patterns are in 16th notes. Just make sure to add your new patterns to the export default { ... } object at the very bottom of the file.

To use your new patterns and also create new levels, you can edit src/logic/levels.js. Just follow the same style as how the other levels are created. Just also make sure to add your new levels to the export default [ ... ] list at the very bottom of the file.

The characters used in building the levels are the same as the Legend listing above, however, the exit character is x.

What's next?

I had fun writing the game and having a concrete target certainly focused me to finish it. But I did scope out a couple of features due to lack of time.

I have plans of improving on this prototype/jam version.

Please, feel free to provide feedback.

Hand made with โค by anton

About

๐Ÿค– Program a robot to escape using a sequencer

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published