frading
Joined 16 years ago
Joined 16 years ago
I forgot it was such a small budget, it's indeed important to keep in mind how much could be done with little memory. Although I'd argue it was possible with a language that allowed you to control memory very precisely. With javascript garbage collector, I couldn't stand seeing memory ramp up every frame due to threejs internals or my own js code, and every few frame a major GC may or may not lead to a frame drop.
> advanced reprojection for increasing FPS that takes into account the depth buffer
Ah got it. I completely forgot that webxr of course needs to create textures to see through, so it indeed needs to know which graphic api is used. Thank you for the links, I'll have to study them.
Apologies accepted. And thank you for mentioning the issue, it should now be fixed, so the website should load for you now.
And the type of project you're describing isn't my personal interest, so no need to share it with me. But I'm curious about tools you've used to control memory with just javascript. I know there are extensions or browser flags you can toggle on, but those still seemed cumbersome. That was one of the main reason that motivated the rewrite, and I find it a relief that I can now detect memory leaks in the test suite, or have an easy way to have arenas (and arenas of arenas) so many objects can be freed/recycled very quickly.
So if you have a good way to control/manage memory in js, I'd be curious to hear.
And you mention "webgpu webxr" as if those worked together, but isn't webxr completely decorrelated from the render api? Or do you mean threejs implementation where those might be intertwined? I assumed webxr would work equally well under webgl or webgpu, since my understanding is that it mostly provides camera projection matrices and ray hit functions. But it could be that my knowledge is out of date, since I haven't touched webxr in the last 2 years.
> But as my game’s story has increased to be hours long
For those situations, on most projects I work on, I create a specific control node, which allows changing the state to predefined scenarii, or saving your current state. This requires the SDK for now unfortunately. But this can then be used with or without the editor, and allows you to quickly change from one state to a completely different one with 1 click or hotkey. I found that's the kind of technique that replaced hot reload for me. This made sure that only the state is updated, which limits the chance of bugs due to side-effects. Now that I write this, I realise this needs a proper documentation, I'll work on that.
Thanks a lot for your questions.
Yes, the SDK being limited to jai beta is absolutely not something I'm happy about. I was hoping it would be public by the time polygon v2 was ready, but of course that was a gamble. Now the rumor is that it will be in 2027, so this is hopefully just a matter of waiting a bit more time. So I completely appreciate presenting Polygon like this isn't ideal.
But depending on what projects you have in mind, the node-based editor is already quite flexible. Feel free to let me know what you're thinking of building and I can tell you what you could try.
To your questions:
- Is the dev environment still web first or is that a secondary target?: I personally mostly dev in native, do most of the work and tests there, and then do final checks in wasm/js. Most of the projects I deliver using it still are web-based, so this target remains as solid as I can make it.
- [...]see changes reflected in your running app without a refresh or losing state within a second: I used to rely on that, but as projects scale grew, I always found that state would become stale in ways I did not understand, so I stopped chasing that. And when working in native against the SDK, re-compiling a project takes about 1-2seconds, so I have not needed to make this work as smoothly as in js. But I could look into it. And when you scaffold a SDK project, the wasm is reloaded without a page reload, but I think your app state my still need vuejs or react to handle that. In short: not fully sure, but it's most likely possible.
- How complete is the PBR support?: You can use env maps. The materials of imported GLTF are decent (see example: https://polygonjs.com/gui/gltf_import). Several things are still missing like clearcoat, and maybe others I am not fully aware of. There are advanced features like order-independent-transparency, volume rendering, raymarching.
- Lightprobes or lightprobe grid supported?: no light probes at the moment. I want to look into it. And I'm evaluating/experimenting with various GI solutions, which may vary depending if you're rendering polygons, SDF or voxels.
- I didn’t see support for skeleton meshes: There is none yet, but that's definitely on my roadmap.
- Also, how feasible is WebXR support?: not implemented yet, but also high on my roadmap.
Less hate would be good too.
That was super useful. So don't hesitate if you have any other feedback.
- pawns move forward in their "track", just like a rook would do, just one tile at a time.
- if the track reaches the end of the board, the pawn can promote as usual.
- if the track ends on the left or right side of the board, when the pawn reaches it, it changes track. If there are multiple tracks it can take from there, the one that reaches the end in the least amount of moves is selected
- when a pawn captures, it changes track following the same rule.
And I agree now that using capture to change the zone of attack of a pawn is a very nice addition.
On top of that, if multiple pawn are constraint to turn sideways at first, it's not simply a handicap. It also helps strengthen the defense in that area, as you can have more efficient pawn walls.
In all all, it's great, thanks a lot for arguing in favor of this change.
Congrats! Although I wish it had given you an even harder time!
> Add a confirmation to the resign button!
Yes, you're right, it is much needed.
> Can you add a permalink to share the game with my friends so they can see the replay?
Yes, that would indeed be very useful. I'll see how I can make it work. And maybe there is a way to have it so that it works also for the iOS and steam versions.
> Permalikt to checkboard may be nice too.
Absolutely. That's on my list. (although bear in mind that the demo only has 2 different boards)
> I used a magical curved path of my far bishop to stop the atack. It was very surprising to be able to save the rock
Nice. Thanks a lot for sharing this one. Those are indeed the great reversal moments, I love those.
> When the bot is hopeless (like a rock and two knight down) it makes too many silly moves.
There are many factors that drive how the bot behaves. There clearly is room for improvement, although that will probably need a rewrite in wasm, and most likely need someone who has more experience at this than me. Although I could only hire someone if it makes financial sense. Something I keep thinking about.
And I'm still going through some of the feedback I received, so expect an update in the week or so.
> 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.
And I agree as well that pawns changing track when they capture can be a fun one. It could even make you reconsider a capture if the pawn is on a good track and would end up on one that turns to the side.
I'm not promising I'll change the current behavior, but that does make me think.
> 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!
I'm still unsure, as I describe in my reply there, an issue I see is that you can't know the path a pawn would take, unless you know where it comes from.
But since both of you reached the same solution, I'll keep thinking about it.