A char­ac­ter float­ing in the cos­mos attached to a heart and trapped in an infi­nite loop of rings clos­ing over him.

How to play

Move by click­ing on the screen to avoid the rings as much as you can. The click and drag mechan­ic is not implemented.

Developed for the Ludum Dare 47 Game Jam with theme "Stuck in a Loop" by:







About the development of this game

On Octo­ber 2, 2020 the Ludum Dare 47 game jam was held, an event where you have to make a game in 72 hours based on a theme cho­sen by the com­mu­ni­ty. The theme of the jam was "Stuck in a loop". We par­tic­i­pat­ed in a team of three.

Most of the event I was live stream­ing what I was doing on my com­put­er and also the dis­cus­sions we were hav­ing to reach an agree­ment. I trans­mit­ted a total of approx­i­mate­ly 32 hours and in the fol­low­ing video you can see all those hours of work sum­ma­rized in 5 minutes.

40 hours of live stream­ing sum­ma­rized in minutes


A few days before the jam starts we met to pro­pose ideas based on the can­di­date themes, there were three rounds of vot­ing with 16 themes each, we took the first round and chose 4 themes at ran­dom. Then every­one took 5 min­utes to think of an idea with a sim­ple mechan­ic. Coin­ci­den­tal­ly the theme "Stuck in a loop" was among our cho­sen ones so for the jam we already had a pre­vi­ous idea.


The gen­er­al aes­thet­ics of the game is based on the Syn­th­wave style, with sat­u­rat­ed col­ors and fonts accord­ing to that style.

The sprites are made in Pix­el Art style using Aseprite software.

Technical Details

This game is a 2D project devel­oped with the Uni­ty engine.

Scene structure

This game is set up in two scenes, the first scene is the main menu that has some but­tons, one to start the game, one for the cred­its win­dow where you see our faces and links to our net­works, we have anoth­er but­ton to close the game and there is also a but­ton to con­tin­ue a game, but this only appears when we have already played at least once and passed the first round, which means that this infor­ma­tion is stored in mem­o­ry and then retrieve it and decide whether to show the but­ton or not.


The char­ac­ter is con­trolled by click­ing on the place on the screen where the play­er wants to move. The char­ac­ter starts to accel­er­ate in that direc­tion until it reach­es a max­i­mum speed and then starts to stop, this makes that for each pulse the char­ac­ter moves a pre­dictable distance.

Dur­ing the game there are con­cen­tric rings that are gen­er­at­ed, each one with twice the scale of the pre­vi­ous one, there are dif­fer­ent types of rings that have one or more out­puts. While a ring is active it will shrink in size until it becomes tiny. The char­ac­ter must move to escape through the open­ings because, if touched by a ring, the char­ac­ter dies.

This is the first game to which I imple­ment­ed a trans­la­tion sys­tem which has a record of each text that appears on the screen and arrays con­tain­ing the trans­la­tions for each one, by press­ing the lan­guage change but­ton we go to the next lan­guage of the sys­tem and the sys­tem is respon­si­ble for updat­ing each of the texts on the screen.

The game is set up in two scenes, the first scene is the ini­tial scene of the main menu in which you can also see the cred­its screen. By press­ing the "Play" but­ton we switch to the game scene. Since in the game scene we have on-screen texts, it was nec­es­sary to think of a sys­tem to trans­fer data between scenes in order to assign the text in the appro­pri­ate language.

In the Android and Win­dows ver­sions the sun sprite that appears in the back­ground of the game scene changes size depend­ing on the ampli­tude of the music, this is done by read­ing a chunk of the bytes from the audio clip and aver­ag­ing them to get a val­ue that will then be relat­ed to the scale of the sprite. It is not pos­si­ble to do this in WebGL because one of the func­tions that allows us to ana­lyze the audio clip can­not be used in WebGL. An alter­na­tive could be to pre-cal­cu­late these val­ues for each song and to have these data orga­nized in lists to be applied to the sprite scale.

In this game, data is saved using Play­er­Prefs to remem­ber what the max­i­mum score was and update it if it is exceeded.

Scroll to Top
Secured By miniOrange