Hacker News new | past | comments | ask | show | jobs | submit login
Brickception (brickception.xyz)
579 points by duck on Nov 30, 2023 | hide | past | favorite | 88 comments



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...


Reminds me of Gettier Problems in Epistemology :

A desert traveller is searching for water. He sees, in the valley ahead, a shimmering blue expanse. Unfortunately, it’s a mirage. But fortunately, when he reaches the spot where there appeared to be water, there actually is water, hidden under a rock. Did the traveller know, as he stood on the hilltop hallucinating, that there was water ahead?

Here's a real world example :

https://www.instagram.com/p/CzWlxkbp0vT/

Imagine a video feedback loop version of gettier problem where the problem is resolved only at the Nth nested level.

Sort of like this short story : https://qntm.org/responsibility


Once I changed half my working code ( and wasted an Hour of time ) before realising that I was testing different code. On the other hand, now newer code had 10 times more testing points.


I'm going to say no, he didn't know. But I don't think I can properly articulate why which just get me into trouble with an even more nuanced variant of that question.


Let me illustrate a probable story which might muddy the waters and expand the surface area of belief.

Consider a woman whose child is suffering from a disease. She has gone to all the doctors she was recommended and found no success. She is told to visit Church and pray to Jesus. After the sunday mass, she tells her story to few random church goers. They immediately recognize the medical condition and tell her to visit a particular doctor. Doctor sees her child and provides medication. Her child is cured after few years. Now the question is did she know going to church would solve her medical problems?


That one is clear to me too, also no. How would she know? No where did you specify that she even thought going to church would solve her problems. She was told to visit church, yes, but there has to be a belief component to "knowing". Did she genuinely believe going to church would solve her medical problems? Hope and desperation don't count either, it has to be a genuine belief. Also, she was told be pray to Jesus. Depending on if you're religious or not you might say that Jesus did cure her, but a pretty strong argument could be made that the church-goers were the key, so even if she did believe Jesus would cure her, if it ends up being something else, then it also doesn't count.


There is clear chain of links : Belief (Jesus solves problems) -> Action (Going to church) -> Finding solution (Other church goers helped her). How is this different than original gettier problem? In original gettier problem, his problem was solved in unexpected ways.

As I see it, there are four quadrants : 2 (action, no action) x 2 (solution, no solution). You can build any story based on outcomes.


The amount of anxiety that imagining playing this game gives me is considerable. Very cool idea though.


Reminds me of a thread on HN from 2013 that turned tic-tac-toe into something much more interesting and in a same way meta [1]

I made a simple online playable game of it back then: http://mck-.github.io/T3/

[1] https://news.ycombinator.com/item?id=5898506


Frustratingly difficult: I love it! The cleverness here is excellent. Well done!


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.


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/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.


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.


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.


Are you really that worried that firefox is aware of the desktop coordinates of 2 of its own windows?


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.


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.


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/Xorg/Firefox/KDE Paddle coordinate gets updated only when I release the paddle window.


Game is working fine for me.

Linux/Chrome on gnome with enabled wayland ozone.


This game is so silly it makes me laugh. It works great on Windows 10. I don't have that fancy trimmed chrome titlebar just the regular box style.

It reminds me of a program my brother wrote in high school that would spawn invading spaceships (Java Triangles) onto your desktop and they would bonk your mouse around.

Meanwhile, I was in the corner of the lab playing Starcraft.


This idea is amazing yet completely evil at the same time.


It is rather difficult with a tiling window manager


If this gives you an appetite for more block-breaking, check out Pippin Barr's BREAKSOUT, a collection of 36 wacky variants of Breakout: https://pippinbarr.com/breaksout/info/

See also: https://news.ycombinator.com/from?site=pippinbarr.com https://news.ycombinator.com/from?site=pippinbarr.github.io


Only one level deep?

Does time go faster in the smaller one?


Doesn't work here (Firefox 115.2)

Paddle doesn't move.


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.


Works fine for me on firefox 120 on windows


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

Firefox Version 120.0


Same here. On Linux with KDE, if it matters.


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.


Reminds me of one of my favorite games of all time: The Mountain and the Motorcycle: https://achewood.com/2004/07/13/title.html


The paddle seems buggy.

It seems like the "right" side of a paddle always increases the speed, while the "left" side of the paddle always decreases the speed.

This behavior should be direction dependent: ie: the left-side of the paddle should push the ball to the left, while the right-side of the paddle should push the ball to the right. Classic breakout controls.

For the first 2 or 3 games, I thought you couldn't control the speed. I was wrong, its just that the speed-control in this game is very small (it requires about 6 or 7 bounces to go from minimum speed to max speed), while also having a very non-intuitive speed/direction control scheme for the paddle.


Great idea!

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


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. ;-)


I tried changing the size of the smaller window, and it worked briefly to allow the ball to bounce off the now-larger size, before the game snapped the window size back to the original.

It made me think that changing the window could be part of the game somehow. Perhaps as you drag it bigger the playing field of the smaller game increases in width, so that game becomes harder (and also you can't move the paddle as far because your new window is too big to drag).

Or maybe you should be able to capture the ball in the big window into the smaller window, and the size and position of the smaller window determines its entry point.


The ball in the lower window only bounces off the browser's chrome and not the title bar. This is making the game harder than it could be (and possibly an unfixable problem?).

Also I have wobbly windows and that makes the game hard too.


Why stop at depth 2? ;-)


(2019)

Blast from the past, the author had a Show HN: https://news.ycombinator.com/item?id=20126142


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).


Might as well just include everyone's games inside of everyone else's game as nested entities whose microstates determine the above games macrostates.

This is very similar to Reflective Towers Of Interpreters: https://blog.sigplan.org/2021/08/12/reflective-towers-of-int...


This reminds me of an old PC game called DX-Ball that my uncle and I used to play back in the late 90s/early 2000s.

Super cool project, OP!


DX-Ball was really great! The block breaking animations and overall polish are very memorable for me.

You sent me searching for it with your comment, and it's still around: https://gamesnostalgia.com/game/dx-ball

File size: 380k. I miss those days.


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!


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!


Completely broken with my i3 setup


It works with my sway setup [1], but only on Chromium, not Librewolf. I'm pretty sure it's just a Librewolf/FF issue, since it seems to open pop-ups in new tabs, not as windows.

[1] https://git.askiiart.net/askiiart/dotfiles/src/branch/main/s...


I opened the link, and laughed at how dumb I am to think this would work in i3


same but I didn't expect anything different from a TWM for a game that relies on floating windows



Reminded me of this pong inside a sprite tutorial for the c64:

https://youtu.be/C_J4dSAWqY4?si=BQN90pEFjOaGtOxj&t=1118


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.


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


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


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.


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


Just make it Excel themed!


I would like to see additional windows spawned after a certain point for a true 'brickception' experience.


I absolutely don't want to play it all the way through but that is irrelevant, love it


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.


This is simultaneously, amazing and terrible. Congratulations!


Can someone write an RL bot to play this game?


Neat! I didn't know this was possible!


This is soooooo gooooood! Love it! :D:D


Very clever. Well done!


This is beautiful.


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.


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?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: