6 ms·
> Figma makes use of a low-level C++ library called Skia for 2D graphics rather than building their own graphics engine This is not quite right. The bulk of F
by evmar 5y ago
> Figma makes use of a low-level C++ library called Skia for 2D graphics rather than building their own graphics engine
This is not quite right. The bulk of Figma rendering is Figma-custom GPU code. It's true that Figma uses Skia, but only for some specific graphics algorithms in Skia, not as a general purpose rendering library.
Source: I work on this code.
- hsheth2 5y agoThanks for the correction - I'll update my post shortly.
- astlouis44 5y agoThoughts on gaming’s role to play with WebAssembly..? My team and I are current working on Unreal Engine WASM support, with WebGPU integration on the way. Personally, I believe native games on the web is going to disrupt Steam and the app stores and enable a whole new distribution channel for developers, especially indies. No 30% cut, works on any device with a browser.
- jackothy 5y agoSome advantages that Steam will still have: 1. Steam provides a system for user accounts and profiles 2. Steam handles payment securely for both buyers and sellers 3. Steam handles social networks/friend list/multiplayer 4. Steam allows you to have all your games in one place 5. Steam is a platform for reviews 6. Steam has its own internal economy/marketplace
- astlouis44 5y agoWhat’s your point? All of that can be done on the web, besides it isn’t really targeting the Steam audience at the end of the day. Think the mobile audience, but on the web. You can do a Sims or PUBG in HTML5 today, and all that’s required is a hyperlink to share it with others. Same strategy that made Wordle go viral and get acquired today for over $1M.
- CharlesW 5y ago> What’s your point? He's addressing the problem with your hypothesis that "native games on the web will disrupt Steam" by pointing out that you're comparing apples (a technology platform) and oranges (a distribution channel). Steam doesn't exist because games don't use WASM.
- monk_e_boy 5y agoThere's all that stuff on other platforms. Reddit subreddit indie games would be neat if I could just open the post and play the game. I can't imagine I'd use Steam much after that. (And I guess facebook would do the same.) As for payments, I already pay mostly through Google pay or through paypal. Steam isn't adding a huge amount of value.
- dandellion 5y agoWhat other platforms offer all that stuff? Because I've been looking and nothing comes even close.
- echelon 5y ago> What’s your point? Why you expect your Unreal-to-WASM product to succeed when Epic Games can simply build your entire product as a feature of the engine? You are building on their platform and not an open web stack, after all. Despite having an open web, most people have elected to use platforms. At some point, people will defer revenue for simplicity.
- fxtentacle 5y agoI think OP is working on the Epic team. They already have workable emscripten support in UE4
- echelon 5y agoI don't think so. The Discord in his HN profile points directly at his startup: https://www.theimmersiveweb.com/ https://www.theimmersiveweb.com/ This appears to be a 3rd party attempt to bring UE4/5 to the web. I'd love to hear OP's take on how they think they can outpace or complement Epic on their own internal implementation. At face value I don't see how this isn't a f.lux vs. Night Shift type situation, where the official feature destroyed the market for third parties.
- dandellion 5y ago7. Handles refunds without hassle 8. Has a platform for modding (Workshop) 9. Has sales every few months 10. Has festivals that give new games exposure to a big audience The list goes on... It's always better to have more competition, but anyone trying to disrupt Steam has several big challenges ahead, not just running games on the browser. I imagine Steam could start offering games in WASM as well.
- poink 5y agoJust interested because you're in this business: do you genuinely think 30% keeps being the number? Seems like that's not long for this world from my limited perspective. Hard to disrupt Steam if they're taking 10-15%, and I assume Valve still makes a mint at that price point because Steam is ~all they make.
- greggman3 5y agoI think it depends Problems with *traditional* games via WASM/WebGPU in the browser * Many games are 10-100gig+ in size. The browser provides no good way to store this data for your game and the fact that you had to wait 15mins to multiple hours means you gain no advantage. Further, browser have a balance to keep between letting any site put gigs of data on your machine vs not. And on top of that, the browser provides no way to prevent losing the data. The user clicks "refresh" or something similar and now the user has to re-do that 10-100gig download. * Browsers have to work around driver bugs and it takes time to fix them and get them through the release cycle. For a native game, if a new driver come out that breaks something you can try to work around it immediately. That's harder on browsers. Your game can try but it's a moving target. * Browsers change stuff that affects perf more often than native. Today "for = i to N" is faster than for of, tomorrow "for of" is faster (not a real example). My point is, in my experience, it's much easier to optimize for native since you're writing native code. In WASM you're not. Further, you're closer to the metal in native. Today video -> texture is fast, tomorrow it's slow, the next day audio is no longer allowed without a click, etc... I guess I don't have any stats which change more, browser APIs or native. My gut though is that I've had to change browser content often to keep it running * Running games on any device is mostly fiction. Users range from 3090s to 7yr old intels to 7yr old androids. From touch screens, to mouse and keyboard and with other different limits (no fullscreen on iOS, no pointer lock, ...). Depending on your game that's half your market. In other words, IMO, games you generally find on Steam are not a good fit for the browser. On the other hand, you could design games that load fast, start up fast, possibly stream data if they need more, etc and you could possibly make some hit games. Maybe even some of the biggest hit games ever. Remember when Farmville was #1? Still, my feeling is UnrealEngine in particular, is not a good match for making web friendly games. Most game devs won't pay attention to what it would take to make a web friendly game. Instead they'll just follow the patterns for native games and pick "Export to Web" and basically put out a very poor experience for web.
- pjmlp 5y agoAdditionally, WebGL 2.0 is stuck on a GL ES 3.0 subset, and when WebGPU 1.0 comes out later this year, it will be a subset of Vulkan 1.0, DX 12 1.0, Metal 1.0 until it ever gets adoption across all browsers, before they even think about moving forward. It took about 10 years between 1.0 and 2.0 for WebGL broader adoption. And in any case they are hardly available on game consoles.
- eezurr 5y agoWhen people purchase the game, will they have a digital copy on their hard drive? Or will they be beholden to the company staying in business and keeling the servers running?
- flohofwoe 5y agoThat train has left the station for at least 15 years. Your 'digital copy' is useless if the DRM servers are down (GoG's DRM free games are a notable exception).
- badsectoracula 5y agoMight be a notable exception but i have almost a thousand of those exceptions :-P. Also while Steam itself is needed for the initial download, some games can just be copied to another place and work fine, especially indie games that do not bother with DRM. A bigger issue is the Steamworks APIs but if you only care about singleplayer games there are drop-in replacements like Goldberg's emulator[0] which is opensource (LGPL). (also there are more places to buy DRM-free games than only GOG - e.g. itch.io, Zoom Platform, GamersGate and Humble Store to name a few - though GOG has most of the games) [0] https://gitlab.com/Mr_Goldberg/goldberg_emulator https://gitlab.com/Mr_Goldberg/goldberg_emulator
- Jdl7 5y ago
- hsheth2 5y agoFrom a technology perspective, I think you're totally right that Wasm and WebGPU support is super exciting for game engines like Unreal/Unity. The ease of distribution could be a game-changer. That said, I'm not super familiar with the world of game development and distribution. While web-based games have great distribution, the "best" technology or product doesn't necessarily win. Steam has massive power as an incumbent in the space, it does provides a useful service of facilitating discoverability for indie games, and there's definitely some scenarios where web-native games don't make sense [1]. [1] https://news.ycombinator.com/item?id=30157817 https://news.ycombinator.com/item?id=30157817
- pjmlp 5y agoYeah, because of instead targeting Vulkan 1.3, they get to target a subset from Vulkan 1.0, really exciting.
- pjmlp 5y agoIf you are happy to play Playstation 2 like games on the browser yes, because that is as much 3D hardware capabilities they are aware of.
- codeflo 5y agoI don’t know. Nothing prevents indies from selling games directly to consumers right now — it’s not like it’s hard to integrate a payment processor to your website and an auto-updater to your software. WebAssembly only replaces the auto-updater part. The actual value that Steam adds is discovery and trust.
- hutzlibu 5y ago"WebAssembly only replaces the auto-updater part. " No, it replaces the need to install something on your computer. For trying out an unknown game, I rather have a sandboxed web application, than having to install something. And most who think more in terms of convenience, will prefer the non install solution, too. Installing new software is a big hurdle to many non technical people. I witnessed many children tears, because their parents did not wanted some game to potentially mess up their computers. (and some games actually do that)
- codeflo 5y agoAre you writing from theory, or from personal experience with game app stores? Because IMO, this is mostly a solved problem in practice with Steam, Epic Store, Windows Store etc. That’s partly why those platforms are so popular.
- hutzlibu 5y ago"Because IMO, this is mostly a solved problem in practice with Steam, Epic Store, Windows Store etc." Erm. Yes, but wasn't your point that indie developers can market directly(without those plattforms) with ease right now? "WebAssembly only replaces the auto-updater part. The actual value that Steam adds is discovery and trust" Using webassembler brings in trust. Worried parents do not have to approve installing another unknown app.
- robertlagrant 5y agoThe problem I see here is more that this will just allow Microsoft to undermine one of the few competitors it hasn't yet managed to.
- flohofwoe 5y agoIt's really more about "undermining" Apple's app store monopoly ;)
- Ecco 5y agoWhat do you mean by GPU code? Do you mean some code that calls WebGL?
- evmar 5y agoYes, sorry! I should've written GL, not GPU, but it's too late to edit it to fix. ...though there are some shaders involved.
- fsloth 5y agoFWIW I think GPU is fine as Webgl is the only api browser can use before Webgpu takes off.
- ncmncm 5y agoI wonder why we don't get WebVulkan instead. Is it just because Apple Metal is insufficient to implement Vulkan on?
- fleetfox 5y agoWebGPU is WebVulkan
- ncmncm 5y agoOh, good.
- tekknik 5y agoInteresting the default to blame Apple, but OK
- ncmncm 5y agoWe know that Apple does not expose a synchronization primitive needed for full Vulkan support. Apple could add such support to Metal any time they came to care enough. Anyway nobody else can.
- nahumfarchi 5y agoOne thing that I was curious about, if I may ask, is how does Figma goes about font rendering?
- hansworst 5y agoNot sure if they use the same, but here's an article about text rendering from the CTO of Figma: https://medium.com/@evanwallace/easy-scalable-text-rendering-on-the-gpu-c3f4d782c5ac https://medium.com/@evanwallace/easy-scalable-text-rendering...
- nahumfarchi 5y agoThanks, I actually remember seeing this one (even did a toy implementation which was quite fun). Wasn't aware it was by the CTO of Figma.
- riskneutral 5y ago> The bulk of Figma rendering is Figma-custom GPU code. It's true that Figma uses Skia, but only for some specific graphics algorithms in Skia, not as a general purpose rendering library. Can I ask why you went that route, instead of just using Skia?
- evmar 5y agoI don't know the history, but I think Figma predates much public knowledge about Skia. Further, I have the impression that Figma has pretty specific and complex graphics needs. For one example of the sort of thing I mean, we decode image data in JS and put it into GL textures without the Wasm side ever seeing the pixel data, so that the browser can (potentially) decode on a background thread and uncompressed pixel data doesn't contribute to Wasm heap memory usage. However, I don't know Skia well, so it's possible Skia has some mechanism to composite GL textures it's not responsible for too.
- riskneutral 5y ago> it's possible Skia has some mechanism to composite GL textures it's not responsible for too. I'm pretty sure this can be done in Skia in C++, so it should be possible with WASM. I think it possible to create a Skia surface using an existing GL texture buffer object.