<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: BSTRhino</title><link>https://news.ycombinator.com/user?id=BSTRhino</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 16 Jun 2026 02:14:17 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=BSTRhino" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by BSTRhino in "Ask HN: What are you working on? (June 2026)"]]></title><description><![CDATA[
<p><a href="https://easel.games" rel="nofollow">https://easel.games</a><p>Still working on my programming language which makes your game multiplayer automatically. Currently working on improving the tutorials. When writing the tutorials I followed the "focus on the action" principle from Diataxis (<a href="https://diataxis.fr/tutorials/" rel="nofollow">https://diataxis.fr/tutorials/</a>) perhaps too much. Easel is a unique language in a number of ways and it really does actually have to be taught, so I'm trying to make it do a better job of that.</p>
]]></description><pubDate>Sun, 14 Jun 2026 22:34:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=48533628</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=48533628</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48533628</guid></item><item><title><![CDATA[Spaces and Shapes – What's New in Easel (May 2026)]]></title><description><![CDATA[
<p>Article URL: <a href="https://easel.games/blog/2026-may-update">https://easel.games/blog/2026-may-update</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48365597">https://news.ycombinator.com/item?id=48365597</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 02 Jun 2026 03:22:09 +0000</pubDate><link>https://easel.games/blog/2026-may-update</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=48365597</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48365597</guid></item><item><title><![CDATA[New comment by BSTRhino in "Ask HN: What Are You Working On? (May 2026)"]]></title><description><![CDATA[
<p>https://easel,games<p>A reactive programming language for games! Properties signal when they change and you can register blocks that tell the engine how to use that property, not just once but every time it changes. It’s a more declarative way of making games which I think is lots more productive.<p>I’ve been working on this for four years, it’s been a big project!</p>
]]></description><pubDate>Sun, 10 May 2026 19:15:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=48086894</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=48086894</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48086894</guid></item><item><title><![CDATA[New comment by BSTRhino in "Making your own programming language is easier than you think (but also harder)"]]></title><description><![CDATA[
<p>Great write up!</p>
]]></description><pubDate>Sun, 10 May 2026 07:36:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=48081834</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=48081834</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48081834</guid></item><item><title><![CDATA[New comment by BSTRhino in "A physics engine with incremental rollback for multiplayer games"]]></title><description><![CDATA[
<p>That is helpful feedback, thank you, yes all things I can work on in the future! Thanks for taking the time to write this up.</p>
]]></description><pubDate>Mon, 04 May 2026 09:50:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=48006506</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=48006506</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48006506</guid></item><item><title><![CDATA[New comment by BSTRhino in "A physics engine with incremental rollback for multiplayer games"]]></title><description><![CDATA[
<p>I would LOVE to one day make a source-available standalone license for Easel that you can run on your own server! I just have a bunch of problems to solve to get there before it’s ready.<p>1. The people who really love Easel right now are teenagers who have mastered Scratch and are looking for more. Expert game devs who come from Unity or other programming languages find it’s missing some capability they really want and tend to get frustrated right now. I’ve been solving so many issues every month, like we got multiple cameras the other month for example, but there’s so much left. If I made a standalone version now, no one would buy it because it doesn’t yet do what they need, and if you did I would probably be refunding you quite soon. We might need another 6-12 months to be ready for experts. Sign up to the mailing list and we can keep you updated.<p>2. I would be willing to go as far as source available to licensees but there’s are some practical issues with fully open source. First, it makes it easier to cheat at all Easel games. Easel is client authoritative for certain things. Why? So I can keep the server costs within what I can actually afford because I am one person. Maybe once I can afford 30 servers we can make it all server authoritative and I won’t worry about this anymore. Second, I expect a net decrease in my productivity if I have to argue and defend my code, and become the BDFL to the open internet all the time in an open source environment. I’ve been really really productive just working by myself.</p>
]]></description><pubDate>Sun, 03 May 2026 13:14:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=47996655</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=47996655</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47996655</guid></item><item><title><![CDATA[New comment by BSTRhino in "A physics engine with incremental rollback for multiplayer games"]]></title><description><![CDATA[
<p>I would love to make a license where you could export and then you can run it forever yourself on your own server! It’s not because I don’t want to do these things, it’s just I’m one person and I never get the time to do everything I would like to do.</p>
]]></description><pubDate>Sun, 03 May 2026 12:40:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=47996376</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=47996376</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47996376</guid></item><item><title><![CDATA[New comment by BSTRhino in "A physics engine with incremental rollback for multiplayer games"]]></title><description><![CDATA[
<p>Wow, I’m amazed someone noticed this. I’d be interested to know more about your background and interests. How much have you been looking at programming language design vs just designing for complex systems in general?<p>I ask because yes, I have put in a great deal of time and effort into the programming language design, and to me, I think that is the greater achievement, more than the automatic multiplayer. But the benefits of automatic multiplayer are easy for the general population to understand and the improvements programming language design is hard to convey and so people don’t normally get it. The fact that you can see what I’ve been trying to do so quickly shows you must be coming from a place which has developed that discernment for you.<p>While there are many inspirations, like I love coding using React for example, my primary inspiration is the last game I made, I released all the modding tools along with them and lots of non-coders loved it. The modding was JSON, which might sound primitive, but it was actually a hierarchical declarative domain specific language and it seemed to really work for people intuitively.<p>Easel was born from me spending 2 years trying to make an imperative programming language in a similar shape as that declarative one. I wanted it to be just as easy, but infinitely more powerful. It took a lot of iteration to merge the declarative and imperative styles into one language. There is so much to it - lexical lifetimes and ownership, reactivity like you noticed, but also weaving in concurrency and asynchronous programming seamlessly took time as well.<p>I really wish this is more the part of Easel that would stand out and be talked about more because I think it’s the coolest part.</p>
]]></description><pubDate>Sun, 03 May 2026 12:35:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47996340</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=47996340</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47996340</guid></item><item><title><![CDATA[New comment by BSTRhino in "A physics engine with incremental rollback for multiplayer games"]]></title><description><![CDATA[
<p>Okay, in that case you can upload a stub with a transclusion of the game. If there is enough demand I would definitely work on a standalone export system!</p>
]]></description><pubDate>Sun, 03 May 2026 07:31:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47994370</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=47994370</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47994370</guid></item><item><title><![CDATA[New comment by BSTRhino in "A physics engine with incremental rollback for multiplayer games"]]></title><description><![CDATA[
<p>I’ve been working on this for four years. I’m trying to make this my full time job!</p>
]]></description><pubDate>Sun, 03 May 2026 07:29:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=47994355</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=47994355</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47994355</guid></item><item><title><![CDATA[New comment by BSTRhino in "A physics engine with incremental rollback for multiplayer games"]]></title><description><![CDATA[
<p>Yes, sounds like you get it, Giant Wall changed so it gets rolled back to point A, then it resimulates, which might mean Giant Wall might push some other things this time around that it didn't before during the predicted simulation. It kind of uses a transaction log copy-on-write kind of mechanism, so there will be a log entry for previous value of the Giant Wall slot and it will restore that into its old slot. It's a bit more advanced than that but that's the gist.</p>
]]></description><pubDate>Sun, 03 May 2026 03:58:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47993197</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=47993197</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47993197</guid></item><item><title><![CDATA[New comment by BSTRhino in "A physics engine with incremental rollback for multiplayer games"]]></title><description><![CDATA[
<p>That is a cool idea! Could be a great application of rollback!</p>
]]></description><pubDate>Sun, 03 May 2026 00:08:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=47991847</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=47991847</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47991847</guid></item><item><title><![CDATA[New comment by BSTRhino in "A physics engine with incremental rollback for multiplayer games"]]></title><description><![CDATA[
<p>This physics engine is a deterministic physics engine. It has to be to make sure that when it rolls back and resimulates forward, it gets the same answer on all machines.<p>The determinism is partly possible because WebAssembly is deterministic (except for a few known cases <a href="https://github.com/WebAssembly/design/blob/main/Nondeterminism.md" rel="nofollow">https://github.com/WebAssembly/design/blob/main/Nondetermini...</a>), and partly because I’m making sure to use my own trigonometric functions, and the entire game simulation is executed single threaded with a known order of execution.<p>If you meant to ask how does it compare to non deterministic physics engines, I’m sure they might be faster on the physics but would be slower on the rollback, and I think on most reasonably-sized games the slow rollback would dominate and so they would be slower overall. But, you wouldn’t make a rollback netcode game with that size of world anyway, at least maybe not until now, so it’s a bit of a false comparison. They’re good at their different use cases.</p>
]]></description><pubDate>Sun, 03 May 2026 00:07:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47991842</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=47991842</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47991842</guid></item><item><title><![CDATA[New comment by BSTRhino in "A physics engine with incremental rollback for multiplayer games"]]></title><description><![CDATA[
<p>Actually, it doesn’t roll back the entire game state. Everything is stored in slot maps, and if there are 1000 slots and only 10 changed, it really does only rollback those 10 only and it does not touch anything else. Slot maps are great!</p>
]]></description><pubDate>Sat, 02 May 2026 23:59:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47991789</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=47991789</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47991789</guid></item><item><title><![CDATA[New comment by BSTRhino in "A Physics Engine with Incremental Rollback for Multiplayer Games"]]></title><description><![CDATA[
<p>Ah yes, I have heard of this method but the idea of sorting/delta encoding is new to me and now I’m reconsidering!<p>Maybe some people might find it interesting - I’m relaying packets from peer-to-peer using Cloudflare Realtime, which is like a one-to-many broadcast system for WebRTC. Each peer sends their input packet to Cloudflare, then Cloudflare forwards that on to the 10 other players (for example). It’s cool because (a) 10x less upload bandwidth from the peer (b) people IP addresses are not revealed to their peers and (c) Cloudflare is in 400 datacenters around the world so it adds minimal latency. Cloudflare Realtime is a really cool system that maybe more web game developers should look into!<p>Unfortunately, I’m paying for all the bandwidth that goes through Cloudflare Realtime and so I have perhaps over optimised on minimising bandwidth by sending only one input per packet. The other part of my equation is I’m getting my server to broadcast authoritative batches of inputs every 100ms or so via TCP, so if a packet gets lost, every peer will eventually receive the input but it might be a bit slow, and it will cause a big rollback that might be noticeable.<p>Reading your comment makes me think it might not be as expensive as I thought, and maybe I can play around with how long of an input period I resend for. Perhaps there is a better balance to strike between cost and reliability. So thanks for bringing this up!</p>
]]></description><pubDate>Sat, 02 May 2026 23:57:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=47991784</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=47991784</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47991784</guid></item><item><title><![CDATA[New comment by BSTRhino in "A Physics Engine with Incremental Rollback for Multiplayer Games"]]></title><description><![CDATA[
<p>Thank you so much!</p>
]]></description><pubDate>Sat, 02 May 2026 22:41:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47991319</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=47991319</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47991319</guid></item><item><title><![CDATA[New comment by BSTRhino in "A physics engine with incremental rollback for multiplayer games"]]></title><description><![CDATA[
<p>Yes thank you, you understand perfectly and thank you for explaining. Also, I LOVE your series of blog posts, thank you for making them!<p>Just to add to the general discussion for everyone following along - rollback netcode only sends inputs around, not state, so it doesn't really have much to send. I think I'm doing about 1.5 KB per second. When you point your mouse it sends that data in 10 bytes. There's not a lot to delta compress.</p>
]]></description><pubDate>Sat, 02 May 2026 22:40:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=47991314</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=47991314</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47991314</guid></item><item><title><![CDATA[New comment by BSTRhino in "A Physics Engine with Incremental Rollback for Multiplayer Games"]]></title><description><![CDATA[
<p>You can upload to itch.io yes: <a href="https://easel.games/docs/learn/publishing/export" rel="nofollow">https://easel.games/docs/learn/publishing/export</a><p>The export basically creates a page with an HTML IFRAME in it that embeds the hosted version of your game on easel.games so that all the multiplayer and leaderboards continue to work.<p>Thanks for your interest!</p>
]]></description><pubDate>Sat, 02 May 2026 21:33:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=47990776</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=47990776</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47990776</guid></item><item><title><![CDATA[New comment by BSTRhino in "A physics engine with incremental rollback for multiplayer games"]]></title><description><![CDATA[
<p>Hi everyone,<p>I'm making a game engine that uses rollback netcode for its multiplayer architecture. As far as I can tell, no physics engine supports incremental rollback thus far. This means the entire physics engine state has to be snapshotted every frame, which basically means it's infeasible to have large worlds with rollback netcode. I've made a physics engine which only snapshots the changes, and so now I think you can have large worlds, as long as most of the world is static. I think that's true in most cases, like when you're walking around a big spaceship for example, all the walls, tables, control panels etc don't really move. I wrote up a bit of a post to describe some of the cool things I discovered while making my own physics engine.</p>
]]></description><pubDate>Sat, 02 May 2026 00:12:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=47981980</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=47981980</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47981980</guid></item><item><title><![CDATA[A physics engine with incremental rollback for multiplayer games]]></title><description><![CDATA[
<p>Article URL: <a href="https://easel.games/blog/2026-rollback-physics">https://easel.games/blog/2026-rollback-physics</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47981979">https://news.ycombinator.com/item?id=47981979</a></p>
<p>Points: 128</p>
<p># Comments: 41</p>
]]></description><pubDate>Sat, 02 May 2026 00:12:00 +0000</pubDate><link>https://easel.games/blog/2026-rollback-physics</link><dc:creator>BSTRhino</dc:creator><comments>https://news.ycombinator.com/item?id=47981979</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47981979</guid></item></channel></rss>