93 comments

[ 6.4 ms ] story [ 175 ms ] thread
The amount of anxiety that imagining playing this game gives me is considerable. Very cool idea though.
(comment deleted)
Very original, can't wait to play this at work
> Very original

It's a copy of someone else doing exactly the same thing (2 layers of breakout played by moving window) but in C++ (which the author credits) both years before the following. Although the general concept of having games creatively use windows is probably much older. I assume it showed up now because of recent trend of people rediscovering that this concept works in (some) browsers and making various non breakout variations of it of it https://news.ycombinator.com/item?id=38413660

Only one level deep?

Does time go faster in the smaller one?

Unfortunately doesn't work on the Arc browser and presumably Orion, or any other browsers which put pop-up windows into a new tab instead.
Doesn't work on Edge 119.0.2151.93 either.

Initially it doesn't open the pop-up. Once I allow it, it opens correctly in a new window, but the smaller window doesn't move with the mouse.

Great idea!

(It doesn't seem to allow 'steering' of the ball by varying where it hits the bat, though?)

Doesn't work here (Firefox 115.2)

Paddle doesn't move.

The inner browser top(acting like a paddle) is not detecting collision with the ball

Firefox Version 120.0

Works fine for me on firefox 120 on windows
I think it might be a Xorg vs. Wayland thing rather than browser version. IIRC Wayland does not report coordinates of the window relative to screenspace.
Hitting the last brick was the worst. Instead of pausing the top maybe swap the playing fields so I have more control over the paddle/ball? It took over 2 minutes just to hit one brick in the smaller one
Linux/Firefox: Paddle doesn't move and the paddle popup doesn't bounce the ball.

Linux/Chrome: Paddle doesn't move but the paddle popup does bounce the ball.

Same Linux/Firefox experience here, and I'm on Wayland, which I have a feeling might be relevant.

Edit: also GNOME 45

To add another data point, it works for on me on Linux/Firefox/X. So the Wayland theory might be correct.
Which makes me glad I am using wayland. I am not comfortable with the idea that one browser window could be aware of things like the position of another browser window on my desktop.
Are you really that worried that firefox is aware of the desktop coordinates of 2 of its own windows?
Better even: the parent window knows the position of it's child window. So firefox only knows the one window. And that in a situation where you actively had to allow the permission for the parent to spawn the child in the first place.

Sounds nothing but reasonable to me.

Firefox knows where all its windows are, of course, but that’s not the potential issue being raised. The problem is allowing untrusted javascript access to that info. Luckily, Firefox doesn’t do that, it only allows you (JavaScript author) window information for the windows you’ve directly opened in code.
Actually I don't think Firefox knows the position of the window in Wayland. I thought that coordinates of windows were considered as a compositor concern and not shared with the client.
Not on Wayland it doesn't. Nor does it know if either window is visible, nor if it has been damaged since the last render.
The browser doesn’t communicate such things between unrelated clients, say, on different domains. The browser does allow a site to communicate with the popup that it opened, which is what this game is doing, and is not problematic.
Are you aware of the window.screenX property? It does not really seem to have any restriction. Does it?

https://developer.mozilla.org/en-US/docs/Web/API/Window/scre...

Yes, you can access window.screenX for your own window, but not for other windows. If you’re writing code for an iframe embedded into a domain that’s not yours, your code does not have access to the parent’s windows.screenX.
Same with sway. It also tiles the windows for you, which doesn't help.
works fine for me on:

  KDE 5.27.9
  Qt 5.15.11
  Wayland 1.22.0-1
  Firefox 120.0
upper bound of the inner window is not perfect though
so you have KDE on top of Qt on top of Wayland on top of Firefox -> are you running wayland in Firefox? if yes, you might run Firefox in Wayland instead of xorg to have some further *ception
Linux/Firefox: Works fine here. KDE Neon 5.27

Only issue is the low resolution screen on my old Thinkpad makes it difficult to see the entire game area.

Super cool game! Plays great on higher res screens, just wanted to test on Linux.

Game is working fine for me.

Linux/Chrome on gnome with enabled wayland ozone.

Linux/Wayland/Firefox: it doesn't interact with the window since wayland probably doesn't provide location data.

Linux/Wayland/Chromium: chromium crashes as soon as I click "launch game" :))

Linux/Xorg/Firefox/KDE Paddle coordinate gets updated only when I release the paddle window.
This idea is amazing yet completely evil at the same time.
This is absolutely wonderful! I didn't think it would work with my setup (bspwm and Firefox 115), but it did. I consider myself pretty good with these kinds of games, but this really does take Breakout to a new dimension, with a difficulty to match!
I had a similar idea using two windows for a game. One large window with an overview map and a popup window you can move around as a magnifying lens that shows details and lets you interact.

However, I never tried implementing it.

Reminds me of reYal, a game with "recursive" controls a friend of mine created: https://store.steampowered.com/app/1080780/reYal/
Cool concept. As a reviewer said - if you get into the flow it's interesting. But the chunkiness of the controls kinda ruins the experience and make it harder than necessary to get into that flow.
This is soooooo gooooood! Love it! :D:D
Wildly annoying that this isn't called 'Brickursion'.
If you've missed the reference to Inception, then that's on you. I think it is aptly named.
Don't worry, I get it. I just think it's a bit daft that the title is now so thoroughly associated with a fairly mechanical part of how the film functions, when it's not only a pre-existing word but also refers to a much more significant idea within the film itself. Plus, the 'rick' of 'brick' sounds a bit like the 'rec' of 'recursion'.

But I think I was a bit harsh in this case, the way the two parts of the game interact is more reminiscent of the dream layers in the film than is often the case with such Inception references.

Thank you. This *ception misuse is annoying. Conception is the act of creating an idea. Inception is the point at which something is conceived. The movie created a fake verb form that means "to induce a conception." None of this is conceptually related to the nested dreams in the movie.
Hard crashes Chrome for me (all windows instantly disappear on pressing 'LAUNCH GAME') - Chrome beta (120.0.6099.35) on Wayland (not using X) on Ubuntu 23.04. I wasn't expecting it to work due to Wayland, but the crash was impressive!
Frustratingly difficult: I love it! The cleverness here is excellent. Well done!
Hahaha genius. Doesn't work on safari/mac os for me for some reason (console says "maximum stack size exceeded") but works fine on chrome
This is simultaneously, amazing and terrible. Congratulations!
Wow, this is clever. And for once, it's cleverly weird in a way that is interesting to play.

Not only do you have to deal with playing two games of breakout at once, but the same mouse controls two paddles simultaneously, but at different scales.

The interesting challenge is when the two balls are briefly in sync but you can't hit them at once. You have to move the window paddle up so you hit its ball earlier, then go and get the tiny ball. Easier said than done though...

Make it a two-player game by making the paddle of each player the brick wall of the other player. This is also easily extended to N > 2 players.
This could just be crazy, given that brick walls may be composed of various types of bricks that break with various numbers of hits and also given that the walls will have various shapes depending on which bricks you break first.

This drastically changes the game in the sense that as a player, you can't decide precisely which bricks of the opponent you break (as opponents move their walls): you have some influence on which one of your bricks you break and you most fundamental goal is to make sure that the ball just bounces against your own paddle/wall to send it back and not lose a life.

And the more you touch the ball with your paddle, the more the paddle's size shrinks (because of all the broken bricks), which contributes to make the game harder for you and might give your adversary some chance to come back.

That's a terrific idea, even without the brickception (just a simple brick-wall-paddle).

I love it, OP. Really creative take on the original game and this is a totally unique use of windows as an input. It's smart on many levels.

I wonder if this game could be used as a benchmark for alternating attention (switching between tasks.) People with disorders like ADHD and others that effect executive function are supposed to have difficulty with this. So it would be interesting to see if ones score increased off medication vs on medication. Or even if a healthy person saw an increase with stimulants.

Psychologists love games like this because it lets them study isolated aspects of cognition in a standardized way. It's honestly a cool project.

> It's smart on many levels.

Two levels. ;-)

Completely broken with my i3 setup
same but I didn't expect anything different from a TWM for a game that relies on floating windows
I opened the link, and laughed at how dumb I am to think this would work in i3
Have we completely decided as a culture that "inception", which once meant "beginning", now means "recursion"?

I liked to think that words had meaning.

It does have a meaning. It's a pop culture reference.
(comment deleted)
(comment deleted)
No, we haven’t decided that inception is synonymous with recursion, but even if we had, lots and lots of words have always had multiple meanings, and meanings that come and go, and meanings that change over time. Language is fluid and is defined by its usage and not by static prescription, which is one of the fun aspects of language. Embrace it and enjoy the ride! ;)
If language never evolved, then most of us would be "instructors of the sentient hunks of distilled sand."
Doesn't that sound so much cooler than software engineer or programmer though?