Hacker News new | ask | show | jobs
by frading 744 days ago
> So in this version the bishops can change the color they can move on?

It's more that black and white colors don't apply anymore in a grid like this. Since there will be places where more than 4 tiles can share a same corner, you need more than 2 colors.

So here, colors are only used for cosmetic reason, to differentiate the tiles from one another.

That said, I've tried to keep the essence of classic chess where I could. And it's totally possible on the sides of the board, where it's guarantied to always have 8 tiles touching a side with a full edge. So for those, I'm alternating white/black and positioning the king and queen on the expected colors.

But as soon as there is a corner with more (or less) than 4 tiles, the color assignment needs to adapt and that trickles down to the rest of the board. So in most boards, I need 3 or 4 colors, and in some cases I need 5 (but maybe my algo could be improved to limit that number).

> The corners with 3 and 5 neighbour have a special mark. What does that mean?

The red marks (which I call red wall) highlight where only 3 tiles are connected. And the blue ones (which I call blue pivots) highlight where it's 5, or even 6. They each generate different strategies.

For the red wall, each tile that is touching it has a missing diagonal. So it acts like a wall, especially for the bishop and queen, but also the pawn. This wall can be great for defense. Or for rooks, this can be great for attack, as you can target 2 parallel lines from there [1]

For the blue pivots, you have the opposite, as you have more than 1 diagonal. So if you have a bishop, it can go in 2 directions from this corner.

I invite you to try the tutorial that opens up when you load the demo, it has a couple steps which illustrate those. Or maybe you have gone through it, and it's not clear enough? I'd be very happy to hear any feedback on this. I have a feeling this info could be more obvious, and that may not be the case yet.

And for the board generation, I'm completely open about it. It's actually inspired by a game called Townscaper, and the author generously shared how he made it. I'm merely running with it.

I've just written this short explanation on r/proceduralgeneration [2], which I'm copying it here:

-------

The game is built using Threejs, Vuejs, and Polygonjs (my own 3D engine based on threejs). You can see examples of scenes where this type of grid is created [3] and the core library is open source here [4]

You can also see the code for the most important node, called quadrangulate [5] In short, it takes a bunch of triangles, and convert them to quads by grouping them in pairs.

This conversion is straightforward when the triangles are neatly aligned and you process them in order, and the output would then be a very regular grid. But if you process them out of order, you will en up with isolated triangles that have no more neighbouring triangles. Those can't be converted to a quad. But if you subdivide the whole thing, you then get an irregular grid like the one above.

-------

What I forgot to mention is that after the subdivision, you may also need to apply a smoothing, or squarification, where you iterate several times of the whole grid to transform the tiles from a rhombus to be more like squares.

And you're absolutely right, I should do a blog post about it. It's a question that comes up very often as well, it could do with a central place. And I'd love to see more people using this system, as interesting mechanics emerge from it.

[1] https://x.com/fradingue/status/1796892307523830068/photo/2

[2] https://www.reddit.com/r/proceduralgeneration/comments/1d5np...

[3] https://polygonjs.com/gui/irregular_quad_relaxation/edit

[4] https://github.com/polygonjs/polygonjs

[5] https://github.com/polygonjs/polygonjs/blob/master/src/engin...

1 comments

> I need 3 or 4 colors, and in some cases I need 5

4 should be enough https://en.wikipedia.org/wiki/Four_color_theorem, but the alternating color in the border may be a problem. It's an interesting variant for nerdsniping. I guess it's possible to find a 4 color version but it may need too much backtraking.

---

> I invite you to try the tutorial that opens up when you load the demo

I didn't notice. It's linked at the top. You may add another link at the bottom for people like me that skip the headers. I'll try later.

---

About the new strategies, in human vs computer the knight forks are probably more OP than a bunch of blinkstackers with infinite APM. I'd trade a rock or even a queen for a knight just to give my brain some rest.

Yes, someone else here mentioned the four color theorem, and that gave me a few ideas to improve that.

For the demo, it actually opens up when you start the game. But it's possible to skip it, which is totally fair, I should have expected that. I'll make the button more obvious, you're absolutely right that it's too hidden at the moment.

> knight forks are probably more OP than a bunch of blinkstackers with infinite APM

There are too many words I don't understand here to infer your meaning. The knight forks I know are when a knight threatens the king and another piece, but it looks like you mean something else. It could be related to what I mentioned with multiple diagonals, although that does not affect knights. And OP is probably not original poster. And I don't know what bindstackers or APM are (maybe Actions Per Minute?).

But it does look like you know more about chess than I do, so I'd love to absorb that knowledge.

> There are too many words I don't understand here to infer your meaning.

Sorry, I watched too many videos of StarCraft 2. OP means Over Powered, i.e. an strategy that is imposible to beat.

% years ago, Google made an AI bot to play StarCraft 2, and they made a demo against two proffesional players. The bot was "cheating" so the bot has vision of the whole map, and the bot could make as many "clicks with the mouse" as it wants (APM "action per minute").

The bot discovered an estrategy that was to create some robots with lasers "stalker" that can shoot from a distance, so many of them can atact the same unit. And use an upgrade "blinck" so they can teleport a short distance. So the bot could make all of them atack and pick the hurt units and teleport to the back so the heal while continue atacking.

A human can only manage 5 or 10 of them together, and there is a high chance of forgeting to send one to the back. The bot used like 30 of them, atacking from different angles.

There is a video with clips of the game. The most clear fight were the bot (in blue) use the trick is https://www.youtube.com/watch?v=6EQAsrfUIyo&t=510s

---

I tried the demo. The default player is too weak. It makes too many silly mistakes. The harder players is hard. I'll try again tomorrow.

(The bishops that bounce against the walls when there is a corner with 3 squares in the border are weird. Also, bishops are too easy to block by "walls". I like knights better.)

ah yes, that's a bit clearer now :) And I'm glad that I used to play starcraft before google decided to be involved.

> I tried the demo. The default player is too weak. It makes too many silly mistakes. The harder players is hard. I'll try again tomorrow.

Thank you for playing it. And that's great, that's more or less how I intended. I want players to start with a bit that isn't too intimidating, so that you can select a stronger one after if needed. And I'm glad that the stronger one gave you some challenge.

> The bishops that bounce against the walls when there is a corner with 3 squares in the border are weird

Currently, I define a diagonal as 2 tiles sharing a point and no edge. So by that definition, you will indeed see tiles on the edge which make up a diagonal. Definitely the type you can't see on a regular board. There could be an alternative definition where you need to have 2 other tiles that share edges with those first 2 tiles (as is the case almost everywhere inside the board), but I like to embrace the weirdness that this brings, so I keep the first one.

And yes, knights here are much harder to predict!

Feature request: Play again in the same checkboard. I got a checboard with two wall that blockd my bishops and the computer got a regular grid. I want revenge!!!

Feature request?: Symetric maps (like in Starcraft 2).

Does the bot run in the server or in my computer?

Feature request?: The hard bot takes too long to play. Can it make a ping when it plays. Does chess.com make a sound, or they decided it's a bad idea?

Thanks a lot for those feature requests, and most importantly for playing!

> Play again in the same checkboard

You can indeed get your revenge. When you start a new game, you can change several option. One of them is how the next board is selected. You can either:

- keep the same board - pick one from a curated list - or generate it randomly

By default, it is set on the 3rd option, but you then need to change it to the first one ("Same Board"), like in this video: https://imgur.com/a/sq8TDbx

> Symetric maps (like in Starcraft 2).

That's not possible at the moment, but someone else had the same request, so I'll have a think. I personally prefer boards that are very irregular and therefore asymmetric, but I appreciate it's subjective.

In the mean time, when you select a board the from the curated list, you can see 5 board types: "very irregular", "regular vs irregular", "almost regular", "regular" and "central pivot". This last one will have boards that are fairly symmetrical (but not completely).

> Does the bot run in the server or in my computer?

It runs on your computer. It's all javascript, running in workers. If the game has a decent success, I'd like to take the time to do a rewrite in a different language to get it in wasm, as it could run faster.

> Can it make a ping when it plays

You should hear the sound of the piece being moved, like in this video: https://imgur.com/a/XoWIJZb If you don't, the only reason I can think of is that the game audio has been turned off, via the button at the top right of the screen?

I'm not sure what chess.com does now, but I believe using a audio hint is really useful for exactly the reason you encountered. And it's even more needed when playing multiplayer without a timer, as your opponent could take even longer to play.