TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Efficient game updates

112 点作者 bartbes超过 8 年前

9 条评论

shmerl超过 8 年前
Good article. As it mentions, itch.io client is open source: <a href="https:&#x2F;&#x2F;github.com&#x2F;itchio&#x2F;itch" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;itchio&#x2F;itch</a><p>I wish GOG would also open up their client and release it cross platform. Or at least document their protocol, as they promised.
Kenji超过 8 年前
For some reason, I thought this is about the update step in games that happens once per &#x27;tick&#x27;, that is, the physics engine loop. It&#x27;s about lossless compression and downloading update packages though. That&#x27;s also fine with me.
评论 #13692145 未加载
yAnonymous超过 8 年前
Interesting, but I&#x27;d like more details on what&#x27;s happening at the client.<p>Take Steam for example. For some games, downloading the update takes seconds, but calculating diffs and extracting takes 10-20 minutes. That&#x27;s great for Valve, because little bandwidth is used, but terrible at the client side. On top of that, the update process slows the rest of the system almost to a halt, because of all the hard drive activity.<p>I can potentially see this mechanism making the same mistake.
评论 #13694659 未加载
richardwhiuk超过 8 年前
Also relevant is Google&#x27;s Courgette algorithm which is used to update Google Chrome - <a href="https:&#x2F;&#x2F;dev.chromium.org&#x2F;developers&#x2F;design-documents&#x2F;software-updates-courgette" rel="nofollow">https:&#x2F;&#x2F;dev.chromium.org&#x2F;developers&#x2F;design-documents&#x2F;softwar...</a> which is stated to be much better than bsdiff which is what itch&#x27;s is using here.
评论 #13694253 未加载
ZeroClickOk超过 8 年前
I hope Blizzard guys learn something with this article. The Hearthstone android Update&#x2F;installer is terrible...
评论 #13694952 未加载
评论 #13693381 未加载
hvidgaard超过 8 年前
Good article. As a note, I love how he uses hand drawn diagrams. I have yet to find any tool that allow me to draw diagrams as fast as I can do it on a piece of paper.
评论 #13696711 未加载
评论 #13694248 未加载
Cogito超过 8 年前
I enjoyed this article a lot.<p>One thing that seemed glossed over, so I&#x27;m not sure if it&#x27;s obvious for their use case, is the trade-off between compress once, distribute many times.<p>When looking at how long it takes to compress vs transmit, the optimisation was done to make the sum of both as small as possible - minimise(time(compress) + time(transmit)).<p>Instead it seems like you want to do is - minimise(time(compress) + expected_transmissions * time(transmit))<p>For any reasonable number of distributed copies of a game, it seems like this time to transmit will quickly come to dominate the total time involved.<p>I suspect, however, that the time to compress grows extremely quickly, for not much gain in compression, so the potential improvement is probably tiny even if you expect to be transmitting to millions of clients.
arjie超过 8 年前
The rsync example confuses me a little bit. If you add a single bit to the front, then all the bytes are shifted into different blocks and nearly none will hash to match. But if you add a single bit, rsync still performs well. Can someone explain why that difference from the explanation?<p>The problem also applies to the binary delta. Adding a prefix will shift everything forward causing a diff in everything.<p>Bsdiff solves this with the suffix sorting. But what does rsync do? Or am I just wrong that rsync still works well? In either case, I think the offset problem makes for a more interesting motivating example for bsdiff.
评论 #13694342 未加载
评论 #13697882 未加载
kuon超过 8 年前
Amos has been doing an incredible work with the itch.io client. It improved not only the user experience, but also the developer experience as well.<p>The butler client is an incredible way of sending games to itch.io and I sincerely hope that Apple or Google had a good command line client as well.