If you see a devlog post from Lucas Pope you know it's going to be a goldmine. No matter the topic. Dude has a real knack in writing these, clearly describing the problem and the thought process on possible solution. And making it all very interesting so you yourself start thinking how would you address it or what other cool thing could be built instead.
Here's some of his other huge devlogs on TIGSOURCE:
Yes, the guy is honestly some type of genius. To be this talented of a programmer, and across multiple platforms, languages, and toolsets just dazzles me. It's hard enough to just be competent with one platform. I can't imagine.
And on top of that he composes the music and makes the art and literally everything else.
I honestly just don't understand how a person can get that good at that many things.
He's also a fantastic game designer. I played through Return of the Obra Dinn last year and it was one of the coolest game experiences I've had. It really doesn't hold your hand, it's just using logic and clues to piece together a mystery and put names to faces. Keep a notepad handy and it's a real fun time!
This is what's truly mindblowing about Lucas Pope to me. Many people are technically talented, but good game designers are really, really hard to come by. Having both in one person just feels unfair.
Obra Dinn, especially, is one of my favourite games of all time, it's such a unique experience.
Interestingly Lucas Pope says he thinks Papers Please is a better game. As a method of telling a story I think it's as good as you can get - e.g. the gameplay in Obra Dinn doesn't thematically link to the story in the same way - but I'm just don't enjoy the game. I know: you're supposed to be bored, it's supposed to be unwieldy, you're supposed to be frustrated by the rules. But I just want to do something else.
His post on how exactly he came up with those really nice 2bit graphics in a way that it doesn't hurt the eyes and creates that very unique look was very enlightening.
Speaking as a game dev, I think you can learn it, but it takes time. I was interested since a kid to make games. And as a teenager programmed some for the web, and trying to learn C++ reading Quake2 source or whatever I could find, also bought some game dev books. Not much came out of it I thought. At around twenty, there were enough tutorials in Macromedia tools to sort of guide me toward something.
Then I struck luck getting into game programming at a tech institute. Finally I could make something, it took more than a decade to get simple games on the screen for me. But I get easily distracted, procrastinate and lack enough IQ. Those books and formulas were hard for a mediocre teenager.
Parallel to all this I was interested in music too. Fooling around in ReBirth and Fruity Loops. Many years later got a guitar and tried to learn that, you get a lot of music theory from that. That theory is much easier than programming, still takes a lot of time.
Drawing I'm not really good at, but got an eye for what looks decent and can play with colors. On a computer it can almost be like cheating because you can be "inspired" by others. But books and tutorials on art exists too of course, how far that rabbit hole do you want to go? And 3D is a bit of a mix between tech and art, you could draw a cute character on paper front and side with a pencil. And when you model, texture, rig and animate that; it can be really impressive.
What I am trying to say, it looks like genius but it is a lot of work over a period. But it is creative/craft work, and not boring. And you can learn the basics of all the areas and make something great. When making apps, all those areas of you are unused. No music, no art. At best some graphic design (UI).
If you want to really put it in a compressed environment where it is not (?) overwhelming, but still technical, try C64 programming. There are lots of resources and step-by-step guides, and you will get a taste of everything and can build from there.
We are many that have the desire to make our own games. Some are indeed geniuses, or very strong in multiple areas. Others just stumbled across Unity and are going through whatever guides there are with desire. These days you can choose your difficulty and dedication level.
For simpler games, getting your game to run on desktop, iOS and Android is not that hard. Because most platform code will be some glue, and then you are off inside your own game code. It takes weeks/months to figure that out, but then you are done and carry it with you for every game in the future. Then when you put it all together plus the uniqueness of your game (because it is unique right?!), you get a great and interesting blog post like this one!
Arstechnica did a war stories with him on Return of the Obra Dinn, combining one of my fave video series with one of my fave gamedevs. https://www.youtube.com/watch?v=OMi6xgdSbMA
His youtube[0] also has some very interesting behind the scenes content. If you haven't seen the Obra Dinn ship building timelapse[1] you're in for a treat! (Major spoilers - don't watch unless you've already beaten the game!)
From a practical standpoint, I can’t even understand how he writes these! Presumably, this process took him months (a year?) to work through. What was he doing that whole time? Taking notes and captures for an eventual blog post? It just seems he has an incredible ability for organization and foresight, one that I am deeply jealous of.
TL;DR -- it's a game. That was designed for computers with a mouse and not for a touch-oriented environment, and so a lot of hard work had to be done to port it to phones.
Haxe is really unusual and interesting, and I don't think it gets talked about enough.
> Haxe can build cross-platform applications targeting JavaScript, C++, C#, Java, JVM, Python, Lua, PHP, Flash, and allows access to each platform's native capabilities. Haxe has its own VMs (HashLink and NekoVM) but can also run in interpreted mode.
Compiling from one language to another isnt particularly unusual, but compiling from one language to so many is very unusual. On first impression it sounds unserious—real compilers output machine code—it's tempting to denigrate it by calling it a transpiler. But there are a lot of advantages that come with this approach. You always have access to the full capabilities of your target platforms. From a single language you can write code that is massively portable while also targeting specific platforms with just an if statement.
The "real" compiler authors spend months working on linkage, calling conventions, runtimes, symbol mangling, allocators, and debuginfo trying to get their native code to link properly to the objective-c frameworks on iOS—and it never feels quite right. If you instead compile to objective-c, a lot of things get easier. It's a very pragmatic approach.
Haxe's transpiling helped me in a project once. The client needed a small-ish web app written ASAP, but they didn't know anything about their backend/stack when asked since they were non-technical and using an external provider for everything. The provider was not responding to emails for some reason, and the deadline was approaching, so I decided to start writing the thing in Haxe.
I figured they were either running PHP/SQL or Node, so I wrote a simple backend in a way that would make it easy for to deploy to either one with minimal changes. By the time the provider finally replied, the project was nearly half way complete. It turned out that they were using a standard PHP/SQL stack, so had I gone with Javascript there would've been problems. Instead, all I had to do was change one flag in my build system.
I don't know if this is a big selling point for Haxe since it's such a highly specific situation... but it's probably at least worth mentioning :P
There's also that Haxe is older than a lot of the stuff we take for granted today. It's roots are in ActionScript, and it started as basically a successor to AS2 before Adobe came out with ActionScript 3. It did "same codebase on server and client" by compiling to flash bytecode and PHP before node existed. It's ECMAScript/AS roots + static types + type inference make it feel like alternate-timeline TypeScript as it also compiles to JS.
So it's completely comfortable for me. AND I can hit C++ if the platform demands it!
one aspect that's a bit underrated in haxe isn't just the cross-compilation, but the macro system - it's way more powerful a macro system than the regular macros found in C/C++. It's closer to a LISP macro, but only at compile time (rather than also runtime macros).
For example, you can define a json file, and have a macro that produce a class that matches that json file's fields. It would type-check (and you get auto-complete, for example, if you called that class's fields in another function). Of course, there's nothing special about a json file...why not use a live schema fetched from the internet! https://code.haxe.org/category/macros/completion-from-url.ht...
Another cool thing about macros is that, since the Haxe compiler itself implements a language server, you can go really crazy with AST manipulations and it will all show up in your IDE's autocomplete feature (if you have one).
There was a demo I saw a while back where someone added Google search suggestions to their IDE by hitting a Google endpoint in a Haxe macro.
In a similar vein, Elixir has what is basically compile-time-only macros (the macros being conceptually similar to Scheme's). You can transform the AST to arbitrary other AST, with hygiene, and of course, provides ways to reference the parent scope if needed. Macros are even based on the familiar quote and unquote system of lisp/scheme.
Caveat: I will note that technically speaking Elixir does not have a strictly separate compile time and runtime. However, in practice the language is used like it does. Compile time code is normally just a bunch of definitions of modules and macros and functions contained within. Executing the compile time code normally has no effect other than creating compiled modules. One can technically put things like loops or I/O etc at the top level, but that is normally only done if writing "scripts", rather than normal progarm code.
Thus for a normal program compiling it is basically just running an interpreter over the source code of the program. Indeed the elixir compiler executable is literally just the same as the interpreter used for scripts except with a flag to save compiled modules to disk rather than just leaving them in memory. (Plus a few other really minor differences that are not really relevant here.)
Runtime is then just asking the beam VM to execute the some function in the previously compiled module. While in theory one could try to define additional modules at runtime, this is not normally done. The language design strongly discourages this. If you need to generate modules programmatically, you are better off doing it as macros, which will run at compile time. Thus, normally the compiler is not used at runtime, and while I don't think elixir offers an option to remove the compiler at runtime, one could remove the underlying Erlang compiler at runtime, and without that the elixir compiler would just fail.
There are, of course, no artificial limitations in macros. They can run any code that could be run at runtime, in addition to modifying the AST, or defining new modules. In theory the macros could even present an interactive user interface, but obviously that would be absurd.
> The "real" compiler authors spend months working on linkage, calling conventions, runtimes, symbol mangling, allocators, and debuginfo
Don't worry: targeting high-level languages gives you a different, equally-frustrating set of problems! Actually, many of them have equivalents to the low-level ones: you also have to worry about calling conventions, name mangling, runtimes… they just look quite different.
Especially you want to support any kind of dynamic functionality, there are many uncomfortable trade-offs involved.
> On first impression it sounds unserious—real compilers output machine code—it's tempting to denigrate it by calling it a transpiler.
What? No, this is so wrong. “Real” compilers transform input from a source language to a target language. That’s it. A program could compile a language to itself with functions inlined and it would still be a compiler. Transpiler is a dumb word made up to identify compilers that output valid source for a chosen language.
Transpiler is a very useful word. It makes it clear that the translation doesn't happen from a high-level language to a low-level language as is usually implicitly assumed.
Arguing about the technical definition of compiler misses the point outside of a scientific paper. Connotations are more important than an arbitrary definition you happen to agreee with.
The blog post is really top tier. Consider how much time some engineers spend considering details when they're just being contracted to do a job (I've work with lots) and how this indie game project is being explained, nitpicked, loved and cherished.
The blog post alone makes you want to purchase whatever this person has been working on based on how much passion is oozing off the explanation of how it's made.
Side note... A lot of YouTubers also work like this: pushing the craftsmanship to beyond expectation to almost cause an emotional reaction.
In this case though, it's genuine engineering with high standards.
> The blog post alone makes you want to purchase whatever this person has been working on based on how much passion is oozing off the explanation of how it's made.
Papers Please is nice, but Return of the Obra Dinn is a masterpiece. Honestly. A very cool concept with some impressive attention to detail. Pixel-perfect 1-bit dithered graphics, amazing soundtrack, and a nice story. I don’t have a link here but there was a forum thread somewhere where he discussed his progress as he was making the game. It’s a bit long but we’ll worth a read as well.
This may be true, but in the same way that paintings don't have to be "beautiful" to be good paintings, games don't always have to be fun experiences to be good games. I think Papers Please is a perfect example of such a game. I didn't enjoy it so much as that it engaged me in its bleak bureaucracy.
The default mode of Obra Dinn actually is not using true 1 bit graphics. It is downsampled double resolution rendering, with additional softening added. It is very subtle about it, and I only noticed on my second play-though when I noticed the book contents seemed to have very slightly different color than the rest of the game.
One can force true one bit graphics ("digital mode"), but the downside is greater flicker in the dithering dots when moving.
IMO you should absolutely buy what he produces, partly as you say to support a genuine craftsman, but also because (unsurprisingly) the games he produces are really good. I also think of my purchases as a donation to keep his blog posts coming.
This blog post is good, but is pretty average stuff for a real professional. You are just used to reading webdev tip&trick postlets from third-rate hacks
No, this is definitely high-quality. Like the person you're responding to, far higher quality than a lot of professional work I've seen. This is very clearly someone who cares about the end result, not just about getting it done, and a lot of work I've seen in my career, the person cares more about just getting it done, than they do about getting it done right.
I'd also say it's about having the skill to do this: as other posters note, there are multiple competencies on display in that post; graphics, coding, testing, etc. Each of those takes time to hone. I've worked with any number of people that are not honing their skills, because when they get stuck or hit problems, will not take the time to dig into them and really understand exactly what problem they hit, why they hit it, and how whatever language/tool/system they're working with works. They'll guess until something appears to work, and then move on.
I'd put the detail in this blog post up there with Friday Factorio Facts, and that is also another top-notch game.
If your professional environment is just full of people working at or even above the level here, you should know you have it good. And I think they do exist: I've definitely joined places where there are just lots of incredible people; in hindsight I wish I'd done a better job of learning and listening, when I had that…
I believe it all boils down to being an artist working on a project you're passionate about. If I was forced to work on someone else's project that I don't really care about just to make a living, I'd probably simply execute my tasks to make sure I reach the expectations, and that's it. I'd strive to finish my tasks fast to have more time doing something I actually care about, be it a side project, hobby, family time or even just a walk in a park. However, when I'm a one-man orchestra doing a project where my main motivation is to see that project being done, it's actually getting hard to restrain myself from going into all those interesting rabbit holes that could easily postpone the completion of that project almost indefinitely. I find it hard not to hone my skills and dig into stuff to understand it in that setting.
(of course, when I was young it was easy for me to get passionate not about the project itself, but on mere technical aspects of work I was doing for someone else; this kind of motivation, however, doesn't last very long unless you're able to change your job often to keep it fresh and challenging)
What I deeply regret is that I struggle with writing about stuff I'm doing. There's a lot of interesting knowledge one acquires from such projects, but it often gets almost lost and only really lives on as a vague "experience" you can indirectly apply to your future projects. I would like to have my own experiences written down in such a neat way like in this post, not just for publicity, but also for my own personal needs when I want to go back to something I've done years ago. Usually, my attempts end with an unfinished, incomplete document that gets so out of date before completion that it's best to throw it out and start over, which of course doesn't happen until the memory of what I've done becomes foggy enough to make reminding myself what to write about a challenge on its own :( As it is right now, I'd struggle to describe the vast majority of my past passion work if anyone asked me about it; I'd need plenty of time and some "detective work" to reconstruct my memories.
Man it is gonna be so nice when the average young adult has a device in their pocket that folds out to the size of a paperback, or even a magazine, and we can start making popular culture that fits that size again instead of everything having to make sense through the tiny window of a phone.
I make comics. I grew up reading stuff that used the space of a magazine spread in all kinds of clever ways, I fell in love with the way I can play with layout across a page. I made an entire graphic novel with multiple storylines running in parallel across every page.
A phone can show one or two panels at a time, at best. There’s a lot of stuff you just can’t do. It’s a tiny, limited canvas, even before it gets shitted up with ads and pop ups.
I don't think any book could give the feeling of transitions as the webtoon format can, yes, its only a panel (or less!) at a time, but the artist can give a halting thought-by-thought feel of a man on his deathbed, or roll out an entire red carpet of flourishes to introduce a character of nobility
You can't go super transition-heavy in print, because well, printing and pages cost. and people need to move their big hands to flick the pages, there is an expected consumption rate for that effort put in, so even if cost wasn't an issue, people would get fed up with the transitions anyhow.
so yeah, 1 panel at a time, is a bit of a downside, but IMO its also an upside in that one can give each panel its own treatment and such. an infinite vertical strip as one's canvas
- - -
of course, getting all the bits into the right places with the right breathing rooms and the right flow is a true skill in of itself, but, I dunno, is it better to read 1 super good comic, or 100 entertaining enough ones? the bar is lowered by all of this, yes, but is that a bad thing?
I've noticed this smartphone layout in comics before and I recognise the strengths but find it really less enjoyable to read. I have to be constantly scrolling and it's difficult to ever settle into a scene and feel it since they're gone in the blink of an eye. In regular pages that panel is still on the page and/or you can play with panel size and layout to create impact, but I just don't feel it with these scrolling comics.
That being said, I /do/ like the transition thing you mentioned.
I’ve recently started following a few webcomics that are phone first. I’m sure they’ve been around a while, but it was novel to me to have a story set up as a continuous downward scroll. There isn’t as much flexibility as you get with a comic spread, but there are still interesting tricks that contribute significantly to the overall feel and pacing of the story.
Definitely agree with this. They achieve a form of dynamic animation sometimes, where the continuous scroll can "lead" objects on the screen into new scenes which can be really cool. I'd recommend the previous poster to read a couple of episodes, one example I found really cool was this one https://www.webtoons.com/en/thriller/not-even-bones/ep-1/vie...
Works best on the phone where you can have it fullscreen and smooth scrolling.
I love comics like MSPA that use web elements like animation, hypertext, chatlogs, and interactive panels as progressive enhancements on the comic form. But I actually really dislike the scroll comic format.
I don't enjoy fiddling with the scroll position, or things peeking in from the edges, I like a nicely laid out scene and a button or other control that takes me to the next "page" or scene without the fuss that scrolling to the right position adds.
Scott McCloud of Zot fame was an early adopter of the web, I attended a talk from him where he was talking about how frustrated he was that the 3 panel format had persisted to the web, when there were so many ways to use space creatively.
He later adapted that talk for his "understanding comics" Ted talk. Worth a watch if you love the medium
I've got all his books and he's even linked to one of my comics in the past. http://egypt.urnash.com/rita/ if you're curious.
It's pretty cool on a decent-sized screen, it was designed around the size of the iPad I'd just gotten when I started it. Not so cool on a phone. Try it on both and you'll see what I mean.
Yeah. This is a big problem with the "metaverse". Peering into a high-resolution 3D world via a hand-sized screen is tunnel vision. We're still a long way from the "swim goggles" form factor in VR headgear, which is what Carmack says is the minimum for reasonable consumer adoption levels.
Playing "Papers Please" on a phone requires a good memory. Do you remember what the recognized visa issuing cities for Kolechia are? You need to know that. If you have to swipe to the rulebook to look it up, your productivity will drop and you won't make enough money for the day to keep your family fed.
I'm noticing a lot of the younger crowd don't seem as glued to the phone as their parents. Materialists will always be materialists, but as an adherent to Ordnung, I don't own/need a phone, so it sticks out and it's obvious to me that the normal garden variety youth these days are not as absorbed as the first generation to this little thing known to 'create fire' because it is now commonplace. A computer in your pocket has 0 novelty or wow-factor to this generation, as it should. Nobody fawns over a butane-lighter or debit card, they're commonplace despite being relatively new.
This isn't just in my community, it's noticeable enough in my travels that it seems to be a trend. I assume it is because of more short-format digestible content, along with the shift of social being one-to-one and one-to-many, to being many-to-many, in the sense that you're not necessarily seeking out those you had a direct relationship with, you're seeking out elements and segments of a topical zeitgeist, whether that be tech videos, memes, cat compilations etc.
I also have another hypothesis- when phones that provided a rich experience first debuted, it was the nerds and city folk who got it first. iPhone then brought this mobile-first-lifestyle to the stylemakers and artists and those whose inner monologue is narrated by Justin Long, folks who'd likely have bought anything apple anyway. From there, smartphones and rich experiences were disseminated into the lesser elements of the greater public who either are receptive to tastemaker's influences or have limited option to refute the convenience of popularity; popular hardware is cheap, ubiquitous and accessible, some might say in some regards modern smart phones are disposable.
What I'm getting at is this, this stuff is no longer a mystery to this generation. We are now 2 or 3 generations removed from this type of pocket-computer being anything wow-inducing. I think of it sometimes like when I was a youngster, the class of people who traveled via air vs everyone else at ground level. Air travel had a mystique and prestige, this person must be doing something to be enjoying a cigarette and being served a glass of wine however many feet in the air, direct to destination. The same way I might not be in admiration of my neighbors boots for having a good welt, because a good welt is a given, I assume the youngster of today are no longer enamored by the novelty of a mobile phone or pocket-computer. As such, it is no longer a status symbol for most. So what the new iPhone came out and you got one, that's only a valid status symbol for maybe a few weeks, for over 1,000 USD invested in some models.
Youth of today, I don't see them going for a pocket atlas or any such form factor, I see them going for augmented spectacles or lenses. Everything indicates that a new 'moores law' is taking effect around energy storage and thermodynamics - we are no longer optimizing per-core clock speed, we are optimizing core count and the amount of energy that can be stored to later be turned into CPU cycles rather than heat. As soon as the battery technology will allow it, you will see lenses, whether they be spectacles or contacts, that will take in and assimilate your surroundings, your focus, and the imperceptible changes to your heart rate, retinal dilation, and ocular pressure responses to commercial items. It's not far fetched, we already know of this research being done. Despite the cumbersome experience of VR, we are seeing a point where it is no longer 3D TV or bluray level tech, it's sub-standard as a whole but more and more people are buying it because it shows promise.
I see in the future that our interface devices, whether they be communicators like phones, or additive interfaces like AR spectacles that can dole out retail info in response to a brief biomarker-spike like pupil dilation when glancing at a new pair of shoes. These devices will be funded by corporations much the same way tech learning materials, operating systems, and software is today. It makes most sense that before wider adoption, they'd first be available to those with the most capacity for realizing an ad-prompt via converting to a purchase, so think of like snapchat goggles release, but at your local best buy.
pocket-held mobile phones are the least optimal form factor for every purpose or task it can accommodate other than "fits in pocket". Mark my words, as soon as it can be bonded to a wearable lens, it will be, and the corporations will subsidize it heavily. You think adtech is bad now, just wait.
The Ordnung is a set of rules for Amish, Old Order Mennonite and Conservative Mennonite living. Ordnung is the German word for order, discipline, rule, arrangement, organization, or system. Because the Amish have no central church government, each assembly is autonomous and is its own governing authority. Thus, every local church maintains an individual set of rules, adhering to its own Ordnung, which may vary from district to district as each community administers its own guidelines.
It is notable that in Srinivasan's "The Network State" there is no mention of Ordnung as a positive example of how a parallel social order can and does work. All the mentions of Amish are negative examples at best.
Much value creation is already digital. If you’re reading this,
you’re probably an information worker. You may not have thought
about it this way, but the majority of your waking hours are
probably spent in front of one screen or another a laptop for
work, a phone on the go, a tablet for reading, and so on. So, most
of your life is already spent in the Matrix, in a sense, even
before the advent of widespread AR/VR. Short of a pullback to an
Amish or Andaman Islander existence, most of your life is and will
be digitally influenced in some form. Moreover, much of the value
in the physical world comes from blueprints created on a computer
in some form; eg, the iPhones manufactured in Shenzhen gain much
of their value from the designers in California. So, a good
fraction of value creation is largely digital.
Srinivasan, Balaji. The Network State: How To Start a New Country (p. 279). Kindle Edition.
No social network. If there’s no social network, you have no
digital profiles, no messaging, no community fora, no mass media,
and no easy way to recruit from the internet. You’d essentially be
living an Amish life, relying on pieces of paper or offline cues
to determine who was part of your new state and how they
interacted. This isn’t going to succeed the nation state.
Srinivasan, Balaji. The Network State: How To Start a New Country (p. 371). Kindle Edition.
All is hyperbole, since the ergonomics on a laptop are terrible, and there will always be a segment for which that's a showstopper, but it's already true for certain segments of the population. Especially among the less privileged where there may not even be a desktop computer available or only at school/library, mobile phones are increasingly where work is done. Writing essays and emails, and filling out important forms, may not be the most ergonomic, but it beats not being able to.
Look at devices with foldable screens and external keyboards like the Asus Zenbook 17. Without getting lost in arguing semantics of if an iPad (mini/pro/regular) sized tablet counts as a mobile telephone, it's clearly not a desktop, and it's easy enough to imagine that desktop computers will go the way of the mainframe.
Agreed. Honestly if I had a way to comfortably write software on my phone I don't think I'd ever use my laptop ever again. Phones are simply too comfortable.
Unfortunately the vast majority of them are consumer devices: unlike real computers they don't come with the tools used to program them. I can't make a new app on my phone and run it.
I've heard a professor lament a student stating that all CAD applications should work on phones.
And why is that such a lamentable idea? Modern phones have the processing power these days. Walking around a factory, building sites or a muddy field with a phone in your hand is a lot easier than walking around with a laptop. Plus modern phones have LiDAR and multiple cameras opening up for all kinds of interesting options. Frankly any CAD platform which doesn’t embrace mobile will probably fall out of favour over the next few years.
You are probably right to the extent of multimodal for some tasks or for sensor input. But redlining a 200 page set of drawings to capture as built info is still different from assembling that set of drawings in the first place. I doubt it will be all or nothing. E.g., supporting field service will require generating particular views, but I don't see engineering review meetings skimping on monitor pixels, at a cost of N laptops per hour just to assemble a meeting.
Indeed, I'm not suggesting that CAD tools go mobile only or even mobile first, just there is a lot of very practical uses for mobiles (and tablets) in the CAD (and BIM) space that shouldn't be ignored.
In terms of number of hours used daily, there is no context. Mobiles are the largest video game market, and the most used computing platforms. So, not quite all computing, but an awful lot of it.
The productivity of solo indie game devs is just really impressive.
While I’m aware of the “go fast alone, go far together” quote, I’m depressed by how inefficient app/ui development is at big tech companies compared to game studios, especially short staffed indies.
Really makes me wonder about the “engineering excellence” that tech leads and “architects” pride themselves in when games are developed much more quickly and are - to my eye - much more stable and performant.
A lot of it is about tradeoffs (long term vs one-off projects, business stakeholders, and a long etc), but there's also significant selection bias. Most "indie" projects die before having much of a playable thing, and many successful solo indie projects can take many long and grueling years (e.g. Stardew Valley).
Engineering in most organisations will place stability and predictability very high among priorities, and pay a hefty price for it (sometimes, messing up along the way and getting neither benefit). An individually brilliant engineer can be a great asset if properly managed, but you need the majority of people to be less of an outlier.
I think we can ignore the selection bias because I’m not aware of any “AAA app” (for lack of a better term) that moves as quickly and productively as the best game studios do (see my comment about Grinding Gear Games below). Additionally, these apps employ engineers that are supposedly amongst the best money can buy. At least, if there is some better way to hire top engineers it should be fairly obvious in AAA app output of some orgs with better hiring processes - but I’m not aware of any such apps or orgs.
As for stability and predictability, I’m not confident that AAA apps are hugely (or maybe even significantly) more stable or predictable than the best games. Maybe my tolerance for bugs is higher in games than apps, but I do seem to tolerate quite a lot of jank and slowness from apps, so I’m not sure.
Part of that is probably that game developers tend to be passionate about the work they do, whereas most people working in app development probably don't give too much of a shit about the boring apps they're making. It's hard to get motivated when you're just making a glorified front-end to a database, another e-commerce site, etc.
Of course, the tradeoffs in work-life balance for game development is massive, so it's not like that extra productivity is free (unless you're management). Nobody working at a typical software firm is going to be expected to crunch 12 hour work days for weeks just to ship.
I've had my eyes opened recently onto the world of modern game editors (Unity, Unreal, Godot, etc.) by watching gamedev streams. The productivity of these environments, and their associated asset stores, is amazing. You can't help but think that other domains would also be well-served by a fully-integrated experience like this. Surely the universe of "webapps" or "unix-y network services" is at least as constrained as "3D games" is (possibly more?).
I would certainly be interested in a "Unity for line-of-business apps." I guess this was VB6 lol.
The interesting thing is that the other comment alongside yours is talking about GGG, who rolled their own as a team of about 6 (in the early days), and they're by far the most productive game developer I've ever seen.
I think Unity and the like have made the average project much more productive, but they don't add power to the top end. The power of having everything perfectly customisable by a team of experts with perfect domain knowledge is just too much for anyone else to match by getting quick wins off the work of others.
I typically bounce around the twitch category before settling on one. These tend to be smaller streamers who don't have regular hours. One that I try not to miss is Jonathan Blow, though his current project is in a custom engine (written in new language on a custom compiler, even) so it's not immediately relevant to learning about modern game editors.
I think what he said is awesome! You are presuming that others are on the same page as you: I have zero understanding as to why you “lost respect” at all.
Perhaps you could share your own thoughts, opening yourself to criticism and a chance for interaction, and perhaps learning. I wrote a few comments on https://news.ycombinator.com/item?id=31990217 (discussing an opaque article titled “The Mysterious Return of Imposter Syndrome”).
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?
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.
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.
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.
Remember last Tuesday when you wanted to add something, but your manager said no.
Remember 2 weeks ago, and you really wanted to implement CICD, but the DevOps team told you not to.
When you're developing any solo projects, you don't have anyone else telling you what you can't do.
This is amazing, but you can also easily spend countless hours building something nobody really likes. I've made a small handful of games, a few of them have been released publicly. If I had to guess, at most maybe 20 people have played my games.
But I taught myself everything I know via learning game development, and my career is amazing.
Even now, I'm trying out different engines and having a blast. Odds are. I'll probably never produce anything that becomes all that popular. It'll just be another throwaway game on itch that nobody plays, but I can say without a doubt I had a hell of a time building it.
Having a complete mental map of your work environment is the key. Nothing changes without your approval and you have some idea of when and where every change was made along with what it does.
Most of dev work is making sure other people can make sense of your work. With solo dev, that step is basically unnecessary.
I think it’s also why some indie games (eg binding of Isaac) get completely remade instead of making updates a year later. Walk away from the project for a couple months and it’s an untamable beast.
I don’t play a lot of games anymore, but the last one I spent a considerable amount of time with was Stardew Valley. And I couldn’t believe it was made by just one guy.
Yea the self wankery you see when these people place on insubstantial things like correctness against all possible situations in their PRs is amusing.
Elon once wanted to move his programmers to windows upon seeing how fast world of warcraft was developed. Goes to show how fast people can be if they care about the things that matter.
I played through Papers, Please back when it came out on desktop, and at the time I remember wondering: "why is this fun?" I enjoyed it tremendously, but on the surface that didn't make any sense. Who wants to play an immigration officer sim? Getting this peek behind the curtain helped me understand all the little decisions that add up to an unexpectedly fun experience.
The level of thought given to tiny UI interactions here is wonderful. Details like being able to swipe around to "play" with the dangling pull chain. Any other dev would just make it a static image and call it a day. But these little bits of magic working together transform one of the most boring possible topics into a real gem of a game. This post should be required reading for interaction designers.
Other than the tactility of the UI (which is a major part of the game), the reason, i believe, it is fun is because the game's mechanics matches that of the actual role you play in the story. Many games don't really get this correct (https://en.wikipedia.org/wiki/Ludonarrative_dissonance).
In papers please, your decisions aren't clear cut, like in a regular RPG game, where you can "choose" to be a good guy or a bad guy by selecting one of two options, and one is clearly meant to be the good choice with the good ending, and the other bad. Papers please actually make you think like someone surviving a authoritarian regime, and your actions reflect that role too (you would, for example, choose not to feed, if family isn't absolutely hungry, or that you would attempt to deny entry as fast as possible, since a denied entry doesn't make you any money - no room for sympathies).
The "RPG" element of "obviously good, obviously evil" decision always felt contrived to me. Most people would never choose to be evil. Evil grows out of processes much more complicated and human than that.
This seemed obvious to me even when I was 14, but maybe our culture has been stuck in a place where people's understanding of good and evil does not match reality. Propaganda during WWII (or any was, really) would be an obvious culprit.
> Any other dev would just make it a static image and call it a day.
You think so? Games are often full of little things like that. That's a good thing to point out, but it certainly doesn't seem as unusual as you paint it. Letting the user be playful is generally what games are good at ;)
I agree that good games give you things to play with, but this is literally the toggle to slide out a UI element, and only exists because a phone screen was too small for the original design to fit. If it had been a little triangle that you tapped, no one would have said anything. Instead it’s got realistic chain physics and jingles around as you move the card.
I’m trying to think of another instance of “sliding out a control” being given this level of attention, and I’m drawing a blank. It feels like an unusually high level of effort to put into a UI concession for a port that was going to sell well anyway.
Granted, this game is mostly about sliding UI elements around, so maybe it is more integral to the experience than in other games.
There is barely any external UI in this game (at least when you're actually playing), most of what you see is in universum. Had the game chosen a different art style, those could be 3D models that you would interact with in 3D space. You can easily imagine putting a VR headset on and having all these documents, stamps and pullchains around you, so it's only natural for them to behave in a realistic way - just like, say, SUPERHOT VR is started by pushing a floppy into the drive, when it could be just a simple button.
I actually didn't know it was on mobile, so I searched for "Papers Please" on the Google Play store. Only complete garbage came up, and I had to actually go to the website to find a link to the game (which only has 5k downloads!)
Thanks, I searched the play store for both "papers please" and "papers, please" which didn't yield any meaningful results. If I hadn't have read this comment I would have (lazily) assumed it was iOS only.
Play store says there have been 4000 downloads so at least some people are getting to that page, but probably through direct links rather than search
There’s a certain energy that’s either unmatched, or it’s just new to me, specifically from indie game developers that invigorates me. His post is just kinda filled with a “love of the game” vibe. I don’t feel like other tech related industries have that same art house feel like game developers seem to have, or at least write about. You don’t really see it in the sass space, or in my world of iOS, etc.
Just something I’ve noticed about the indie games world. Seems like an inspiring, genuine space.
Imo, indie game devs don’t get nearly the amount of mainstream attention they get as artists. So many of them do everything on their own, from the art and music to, of course, the coding.
That kind of cross-discipline talent is so hard to find.
I think indie game devs of Pope's talent, motivation and ability are exceedingly rare. We're seeing only those who survive a filter that removes 99%. But the results are absolutely formidable.
True, I’m looking at the top 1% I’m sure when I made that comment. I guess another observation is someone of his stature could come off a lot more…entitled? I guess? But man, his post is pure though.
I’m always amazed at how many programming languages there are. I’d never heard of Haxe, I don’t think it would have crossed my mind to look for something like it but here it is powering a highly successful game with, from what I can tell, a vibrant eco system around the language as well.
Perhaps I’m not curious enough to go exploring for these languages. I’ve used a few smaller ones in my years (usually because of an external forcing factor - like Squirrel running on ElecticImp devices) but I tend to stick to the big names we all know
I came of age in an era in which it was often important which version of a language you were programming in. Not all C code could compile with all C compilers (which was part of the motivation behind the C preprocessor), likewise with Pascal, BASIC, FORTRAN, etc. IBM had two different Pascal compilers for VM/CMS named, confusingly, VS/Pascal and Pascal/VS which were almost but not quite identical in functionality and features. On timesharing systems, you might discover all manner of legacy languages lurking on the (dishwasher-sized) hard drives. I checked out a book on SNOBOL from the library to understand what was happening in some SPITBOL code that I found on UIC’s mainframe that was part of the source for a C compiler. Most personal computers came with some version of a Microsoft BASIC in ROM, but there were differences from one platform to the next so you couldn’t necessarily just type in a program written in AppleSoft BASIC and run it in QBASIC under DOS. The fact that in 2022 JVM languages run identically anywhere and that Rust is (almost) platform-agnostic is, to be honest, kind of miraculous.
Well it was born in France in a web game company (some of their games were pretty famous domestically) as an internal language, and the main selling point at first was the multiple compilation targets (PHP, JS) which included Flash. It wasn't something developed in English in the open at first like a lot of new languages are nowadays, so obviously it took some time to get some international exposure.
Yes, who are famous in large part for Dead Cells. One of the developers even went on to lead Shiro Games, which has done stuff like Dune and Northgard.
I’ve only ever heard of it in one context. About seven years ago TiVo announced that they were going to start using it to program their devices when they made the new (terrible) interface.
Haxe is very much a games language, it started out (IIRC) as an ActionScript compiler by a game studio (Motion Twin, now most famous for Dead Cells) who was sick of trying to program in the shitty bare-minimum editor built into Flash, and evolved into its own language that compiled to the Flash plug-in’s VM. Motion Twin released it and its support tools as open source, and a lot of other Flash game devs picked it up.
Interesting. I don’t do any games development so outside the small amount I know about from watching various AAA games being discussed I’m pretty ignorant.
Haxe is wild to me since I recently started learning it and realised it's basically TypeScript but before TypeScript. Since it's statically typed and can hit C#/Java/C++/JS, I really want to try it in line of business applications as well.
Had to skim for a bit to figure out what was going on, because I distinctly remember playing on my iPad many years ago. Turns out it was iPad only, this was the first time it was redesigned to fit on the phone screen. The author didn’t want to force users into landscape mode, which I completely understand: playing games in landscape feels alien on my iPhone.
Interesting look at the process of making the UI work well.
> I created Papers, Please in 2013 specifically for desktop computers with mouse control.
This is interesting to read. When I first played it I was dying for touch controls. It seemed like such a natural fit for the gameplay of sliding papers around.
Find his work endlessly inspiring not just in terms of how good it is, but also in the way it has proved there's an audience hungry for the experimental and conceptually quite challenging games he makes, too -- carved a path and set the bar for artistically inclined game-devs (and game-dev inclined artists)
I knew about this game at launch but only bought it last year to play on a Windows tablet. Always thought I’d love the game… And I did.
My only regret was that I couldn’t play it more often, on the go, on my phone. I understood why, considering the intricate gameplay and the precise interface required, it wasn’t possible.
This is one of the coolest things I've read in a while. I love the thought process behind each element of the game and it's all executed very well. As a fan of the desktop game, I can't wait to try this out on mobile.
This is such a good blog post. I also didn’t know this author was behind Obra Dinn, but that one is also great. I used to play Papers Please years ago and will certainly purchase it when it does come out for iPhone.
Wow thanks! I didn’t see it when I checked, but needed to scroll down a bit. One of the idiosyncrasies of the App Store not prioritizing exact text matches.
The blog post was a blast to read and even better, it served as a great trailer for the game. Bought it immediately after reading. I wish more game devs wrote blog posts like this.
Just wanted to say thank you for Papers, Please! I loved playing it on my iPad and it's awesome to have it available for my phone now too - a free update no less.
"I created Papers, Please in 2013 specifically for desktop computers with mouse control. Now, here, in 2022, desktop computers no longer exist and all computing is done via handheld mobile telephone."
No . Desktop and mobile are 2 different ecosystems. The users have desktops; those who are used, have mobile; those who are kings, have both.
Satire: The use of humour, irony, exaggeration, or ridicule to expose and criticize people's stupidity or vices, particularly in the context of contemporary politics and other topical issues.
Another of my favorite games on the iPad is Darkest Dungeon. While perfectly legible and playable on the touch screen, the ignored opportunities for touch improvement (entire inches of “letterboxed” screen space, buttons sized for mouse but too small for pinkies, drag-to-scroll lists) are so disappointing.
Desktops still exist! In fact streamers and PC gamers use them! I don’t really play games on my phone I think the people that do are usually playing games because it’s convenient or prioritized in cost over desktops, since everyone believes they and there kids need phones.
Love this game, bought it for different platforms over the years. I’ll prob end up doing the same for mobile :)
Papers Please, FTL and Don’t Starve (discovered them around the same time) are on my top list of games, it was a period of very fine releases.
Anyone else experiencing a weird visual illusion with the second code screenshot, or am I just going crazy? It looks almost as if the text is slightly tilted, but measuring it with a grid shows that they're perfectly aligned.
Yeah, though on the other hand the title does not seem particularly taxing. "Shove it down to Unity" and then the big bulk of the work is cramming the game into a small screen.
The 'Auto Player Testing' is smart and a token of good design, as he must have completely decoupled IO from the main game logic. That seemed the most interesting to me.
Here's some of his other huge devlogs on TIGSOURCE:
1. Papers, Please. https://forums.tigsource.com/index.php?topic=29750.0
2. Return of the Obra Dinn. https://forums.tigsource.com/index.php?topic=40832.0