Hacker News new | ask | show | jobs
by chairhairair 1416 days ago
Expanding on this in a reply to my own comment.

Grinding Gear Games, as an example, is a NZ based game studio that releases a new expansion to their famous RPG - Path of Exile - every three months.

The game is not a simple program by any stretch - which might be a fair criticism for Papers Please by comparison since it is purely client-side and all possible states of the game can be fairly easily enumerated.

Path of Exile is a persistent cross-platform 3D online multiplayer game that has daunting requirements for consistency, latency, and graphical performance.

Despite that, each three month release cycle introduces more new UI elements and features than I think the entirety of Google apps release in the same timeframe. And that’s not because Google isn’t trying to build new things - they are and I’ve written UI for several of those projects.

Does anyone else feel a real sense of deflation when it comes to app/web development velocity compared to games?

4 comments

I have the exact same feelings.

Is immediate mode GUI's just that much better? Instead of a complex React/Redux style setup, how much easier would state management be if we had a render loop like game dev? Does that even make sense?

I am very envious at the pure programming skills of so many game developers. UI's in indie games are just a side thing in the deep complexity of a game and they end up looking incredible compared to the level of effort required for year long web app projects.

They've drifted away from calling it that, but the whole idea behind React was to bring immediate-mode rendering to the web. It has an event loop where each "frame" you render the current state from scratch, rather than explicitly updating the state of retained controls.
I use Zui with Kha/Haxe - an immediate mode GUI library. I cannot overstate how immediate mode GUI greatly simplifies ui development. React is massive step up from OOP/scenegraph/display list style gui, but it is still so complex and cumbersome compared to immediate mode. I can’t fathom why there is such little exploration in this space and it seems mostly limited to gamedev.

https://github.com/armory3d/zui

Immediate mode GUI makes perfect sense for applications that repaint themselves all the time 60 (or more) times per second, as they're already doing the work and there's little overhead added by handling such GUI. I can deal with 3D editor working this way, but I don't think I would be very happy if my e-mail client did.
That's just an implementation detail. The main benefits of an immediate mode UI is the API for using it. There's no reason that the loop has to run at 60 FPS. It could even be event-based, so it only updates when the user does something, for example.
Yes and no. That API makes certain approaches easier and other harder. Even if you manage to render only the changed parts of the screen, you still execute all your UI logic all the time so the renderer can be aware of what changed in the first place. Also, more involved stuff like animations become much more complex once you go event-based, to the point where retained mode UI may end up being a better choice from the API perspective. It all depends on what exactly you're implementing, and games often are a natural fit for immediate mode as they usually allow to keep it simple with no real downsides.
I don’t have much understanding of the internals of the immediate mode renderers, but I think there are optimisations to only redraw regions where component inputs have changed.
You typically have to implement those optimizations yourself, and most people don’t. It’s outside the scope of the renderer in most cases for it to decide what should or should not be rendered. As a result, immediate mode GUI, while fast to develop, typically really kills a battery life on mobile.
Not to take anything away from the game devs (PoE is great and I wish I had started playing sooner) but I wonder how much internal politics plays a part.

I can imagine that the game studio has most if not everyone onboard helping collectively to make the game better each iteration. It is a common goal.

How many different product teams and managers get in the way for products at other companies where each is fighting for funding or privilege?

Being in that kind of environment is draining for the product teams.

Having worked at places that matched both these situations, I know where the quality and quantity of my output was greater.

They don't start fresh every three months.

Usually they have multiple leagues cooking up in the oven at any given time, so that if the league they want to release isn't ready in time, another, simpler idea will likely be within reach of completion.

The timeline is as such because their business model requires engagement spikes every three months. Remember that Path of Exile is free-to-play.

I also want to add that PoE has grown into one of, if not THE most complex games ever made; there are so many overlapping systems and mechanics that there were memes about what would happen if they added any more special destination buttons to the worldmap. And I'm not even talking about the initial release; it was a complicated game then, but now it has the mechanics of at least a dozen leagues baked into the core game play; many of those leagues are an entire game unto themselves (like Delve)

I love it for this, but it makes me sad that most gamers don't try and reason about this complex thing, and instead follow build guides and copy streamers, instead of experiment. Also, because of the nature of the game's deisgn, you need to play for a stupendous amount of hours to reach the end- endgame, and for most folks you also need to trade items with people IRL as the designers intentionally do not add a decent trade system. There are a lot of other quirks that reflect the designers' intent to not make life easy, either, and players both love and hate that.

The inertia at big tech companies is likely from the overwhelming weight of the business itself. No one wants to push out updates lest it upset the finally tuned business machinery.

A UI change can impact usage. Which can impact revenue. Which can impact stock price.

The end users for large tech companies are essentially shareholders and investors.