New experimental SVG based goban renderer

There is a new renderer available for our Gobans. I encourage everyone to try it out and let me know if you run into anything odd, hate or like any of the style changes, and in general help bring to light anything that needs changing before the feature is made default across the site.

To do this go to General Settings and toggle on the “Enable SVG goban renderer” option:

image

If you run into troubles you can just as easily toggle the new renderer off while we get things fixed up.

Thanks in advance to all that help try this out!


Technical details: The new renderer uses the built in browsers “Scalable Vector Graphics” (SVG) elements as opposed to a canvas element which we directly write our own pixels into. We’re doing this for two reasons. The first being to work around several browser bugs that cause boards to sometimes not be displayed in a few different conditions, as well as other bugs which cause the stones to appear like static when placed on a board under some conditions. The second reason is because it opens up some additional aesthetic capabilities that weren’t practical to implement doing our own rendering onto canvases, for instance having stones large enough that they touch, having some more flexibility in the size and shape of our shadows, and adding various overlays that spanned more than one square.


For those interested in improving the aesthetics of the different stones, basically what we need is an SVG created in something like Inkscape or Illustrator that is relatively simple in composition and nature - so if you think you can do better, you’re probably right, so feel free to make some new stones and paste them here and we can collectively hone in on some better looking stones.

18 Likes

Wait, so if I understand this correctly, changing the color of the “last move” circle might be just a simple css injection away, now? so Blind play can get Black circles for Black stones and White circles for White stones, instead of the other way around!? that sounds amazing!

5 Likes

Yep!

4 Likes

Nice work on the SVG renderer! But did the old non-SVG rendering change drastically too? The board now looks like this for me (really weird after years of being used to the previous way), and I’m trying to find a way to switch it back to how it looked before, but there seems to be no such option…

2 Likes

Ahh, I did change the default from shell and slate to plain, you can change them under theme options by clicking your name in the upper right then selecting these two stone options:

Edit: I’m going to change the default back to shell and slate for now, when we switch to SVG as the default I’ll likely change the default to Plain then

Edit: This is now done, it should look the same as before without changing your theme.

4 Likes

Ah, thank you! I thought I saw the theme settings somewhere but somehow completely missed them under my nose in that menu :sweat_smile:

Is there a relation between SVG and using Plain stones? Sorry, I’m not fully clear on the rationale for abandoning slate and shell :slight_smile:

One more thing — at the moment the SVG renderer seems to make cursor movements very laggy (e.g. during your move or analyze mode). Performance profiling doesn’t show anything overly suspicious, but definitely worth investigating.

ScreenRecording2024-05-22at19.18.21-ezgif.com-optimize

6 Likes

I wasn’t able to reproduce this lagginess issue, but I only tried on a relatively high-spec laptop and desktop. I suspect that it might be related to computer performance.

What browser / OS are you on that you’re seeing that lag @Mourner?

Do you see it with all the stones, or just Anime?

1 Like

The Plain stones are notably simpler which means they render faster, I’m a little concerned about the Shell stones as a default for that reason. Also, I’m not super happy with the way the new shell stones look at some of the scales, particularly smaller boards…

1 Like

Is it possible to use the same raster images for stones? (See <image> SVG element)

I understand we would lose some benefits of vector graphics, but it seems like we still get to keep the benefits you mentioned in the OP (large stones, browser bug fixes)

1 Like

All new designs of white stones are weird. They look unrealistic. They all have too clearly visible black outline. Shadow is like if light is directly above the board, not like when light is under some corner.

before:
image image image

after:

image image image

I don’t like it


update: it was mostly fixed

4 Likes

It works for now, but using image data is deprecated in both chrome and firefox apparently, and will likely result in the same artifacts / static we sometimes see, so ideally I’d like to avoid it

2 Likes

I’m guessing that the new svg support will make updating those images with better ones relatively painless if someone comes up with one, no?

FWIW I agree with you @stone.defender , but my artistic skills are quite lacking. With the canvas rendering it was easy to get it to look right because it was just math, compute some normals based on the stone shape and apply some lighting - but with svgs it’s flat gradients and circles and stuff, and trying to get that to look right has been challenging for me.

Anyways, @Samraku is right, if some gracious vector artist has some tips or wants to make some better stones, we’d all be grateful :slight_smile:

Regarding the shadows, that’s certainly changeable. I’m trying to feel out what folks want regarding this, in the past it’s been a complaint that the shadows were too small and too sharp, and I couldn’t really tweak them beyond to accommodate because I had to stay within the little box of the stones. With SVG’s though we just let the browser figure out shadows and when/where to update stuff when stones come and go, so we have a lot more flexibility.

5 Likes

can you just turn off any outline and move shadow slightly to bottom-right?

I tweaked the shadow, I think it looks a bit better now too - although that’s also what I’m used to so hard to say for sure. Most stones don’t have a border, though shell did which I’ve removed. I kept the one on Plain since that’s been specifically requested in the past.

4 Likes

I don’t think the SVG <image> tag is deprecated (or at least Mozilla hasn’t documented it as such)

Are you sure that’s not just the html tag? (For which the standard replacement is <img>)

The obsolete HTML Image element (<image>) is an obsolete remnant of an ancient version of HTML lost in the mists of time; use the standard <img> element instead. Seriously, the specification even literally uses the words “Don’t ask” when describing this element.


Ah I was hoping this wouldn’t be the case, but if so understandable :smiling_face_with_tear:

1 Like

You know what I was on your side but then

6 Likes