HNHacker News
TopNewBestAskShowJobs

ndepoel

569 karma · joined October 16, 2012

submissionscomments
ndepoel··on Picophysics: Single file physics for games on platforms like N64, PSX, DC
The jumpy polygons are because the PSX's GPU only accepts vertex positions in screen coordinates, meaning that vertices always snap to hard integer values. There is no sub-pixel accuracy. That's not a limitation caused by the PSX's lack of an FPU though. A large part of the render pipeline and standard libraries are built around the use of fixed point math, i.e. using integers to simulate decimal values. The GTE co-processor which handles 3D math makes use of standardized fixed-point types. So the PSX would have been capable of calculating sub-pixel coordinate values, it's just that the communication between CPU and GPU was designed to use only integer screen coordinate values.
ndepoel··on Ask HN: Why hasn't there been a real competitor to Ticketmaster yet?
Which is complete nonsense anyway. Robert Smith from The Cure famously went against TicketMaster before their last world tour several years ago, pointing out the ridiculous prices and demanding that they be lowered to make their shows more accessible. He managed to get TicketMaster to budge and even got them to refund some of the marked up resale prices, costing them millions but generating a lot of goodwill among fans in the process. It's not that artists do not have control, but they do need to put in a good amount of effort to make change happen.
ndepoel··on Earthion: A New Mega Drive-Style Shoot-Em-Up
That's usually not a problem with Mega Drive/Genesis games, as they typically don't draw beyond the 224 lines that are visible on a (correctly calibrated) CRT TV. I've played this game on a B&O MX4000 CRT using an original Mega Drive and I didn't notice any issues.
ndepoel··on Dumb ways for an open source project to die
Here's another: code was open sourced with every intention of becoming a thriving community-driven project, but in practice users only take from the code what they want for their own needs and never contribute back, or expect the maintainer to solve all of their integration issues for them. Eventually, the maintainer decides that they have better things to do than fixing other people's problems, and that there is more value to be had from bespoke contract work. Some updates still get pushed but over time the project gradually gets abandoned and the open source dream slowly passes away.
ndepoel··on Updating Gun Rocket through 10 years of Unity Engine
A lot of the things you mention there have been in development for the better part of 10 years already, and still haven't reach a stable, mature and production-ready state yet. Unity have also kept deprecated stuff around for much longer than they should have, which sounds great on paper for backward compatibility, but it just means they're lugging years of technical debt with them and it's slowed them down immensely.

Looking at the past year of Unity updates, since 6.1 or so, it seems that most of the focus is now going to refactoring major parts of the engine to facilitate backporting HDRP's feature set to URP. It's all good work and high time they did some cleanup and committed to a single standardized render pipeline, but it's not exactly moving the needle forward very much yet.

ndepoel··on Updating Gun Rocket through 10 years of Unity Engine
Unity 2022.3 is a great LTS version to park an older game in maintenance mode on. It's where everything kind of congealed into a solid, reliable engine again, after the hot messes that were 2020.x and 2021.x. It's also still receiving updates for Enterprise users through Unity's xLTS program, which admittedly isn't within reach of most people, but it's a good option for already released, successful games that require continued support.
ndepoel··on Game devs explain the tricks involved with letting you pause a game
It does make quite a big difference. The network packets received from the server in Quake will tell you exactly what state the game is in at any point in time. They contain information about the position and state of every entity and their motion, compressed via delta encoding. That means there's very little room for misinterpretation on the client side that would lead to de-sync issues. In fact clients have quite a lot of freedom in how they want to represent said game state, and can for example add animation interpolation to smoothen things out.

The example you mention of demo playback de-syncing when the circumstances slightly change, that is exactly what you get when you only record inputs from the player. Doom actually did this too for its networking model and demo playback system. That relies much more on the engine being deterministic and the runtime environment behaving consistently, because each client that replays those inputs has to run the exact same game simulation, in order for the resulting game states to match.

ndepoel··on Game devs explain the tricks involved with letting you pause a game
It wasn't really that much to do with determinism. Quake uses a client-server network model all the time, even when you're only playing a local single-player game. What the demo recording system does is capture all of the network packets that are being sent from the server to the client. When playing back a demo, all the game has to do is run a client and replay the packets that it originally received from the server. It's a very elegant system that naturally flows out of the rather forward-looking decision to build the entire engine around a robust networking model.
ndepoel··on The RAM shortage could last years
It kinda does resemble a natural resource though. The machines and technology in use at TSMC are so insanely complex, that there isn't a single person on earth who knows everything about how it works. TSMC functions only because of all of the pieces of the puzzle being together in the right place and arranged in just the right way. It's a very fragile balance that keeps it all running, and a major disruption could mean we get thrown back by a decade in chip-making technology.
ndepoel··on My DIY FPGA board can run Quake II
The PS1 version uses a custom engine based on technology built for the game Shadow Master, the previous title by Hammerhead Studios. It was a technical tour de force for the original PlayStation.
ndepoel··on My DIY FPGA board can run Quake II
Yes but also no. The problem with fixed point arithmetic is a lack of dynamic range compared to floating point. Floats are great at representing both large numbers with limited precision and small numbers with high precision, but with fixed point you have to make a choice based on which kind of number you're trying to represent. Meaning you need to use a mixture of 8.24, 16.16 and 24.8 fixed point types (and appropriate conversions) depending on the context of the calculations that you're doing.

It's possible to write a game engine with that limitation, but there's no easy natural conversion from Quake's judicious use of floats to a fully fixed-point codebase. You'd have to redesign and rewrite the entire engine from scratch, basically.

ndepoel··on I dumped Windows 11 for Linux, and you should too
Windows is not exactly free of this sort of nonsense either. Just recently I built a new PC for a friend, and we wanted to keep using his old SSD and Windows installation. After messing about with Bitlocker recovery keys which was already cumbersome enough, we ran into a catch-22 issue where we needed internet access to be able to log in and verify his Microsoft account, but we needed to install a driver for the new motherboard's networking chipset first, for which you need to be able to log in to an account first. Eventually we found that you can use USB tethering from a phone to gain internet access, for which no special driver is needed, which got around the issue but it was not exactly an obvious solution.
ndepoel··on I dumped Windows 11 for Linux, and you should too
That 20% is mostly covered by competitive online multiplayer games that use kernel-level anti-cheat systems which will only work on Windows. There's not a whole lot Valve can do about that, other than continuing to push Linux for gaming and hope that it gets popular enough to create an incentive for anti-cheat providers to start targeting Linux as well.
ndepoel··on One Formula That Demystifies 3D Graphics
The real "a-ha" demystifying moment for me was not so much learning about the elementary rotation, translation or even perspective projection operations. It was understanding how all of those operations can be composed together into a single transformation and that all that 3D graphics really is, is transforming coordinates from one relative space to another.

One important revelation in that regard for instance, was that moving a camera within a world is mathematically exactly the same as moving the world in the opposite direction relative to the camera. Once you get a feel for how transformations and coordinate spaces work, you can start playing around with them and a whole new world of possibilities opens up to you.

ndepoel··on Reconstructed Commander Keen 1-3 Source Code
Id Software very much skirted the edge of legality by making Commander Keen outside of office hours while still employed by SoftDisk and using SoftDisk computers, and SoftDisk could have easily sued them if they wanted to. They managed to avoid that by striking a deal where the Id guys would continue to make games for SoftDisk while working on Keen and later Wolfenstein 3D.

There was a lot of code reuse between games. John Carmack is on record somewhere that the enemy navigation code from Doom and Quake still has its origins in some of the earliest 8-bit games he wrote in the 1980's.

ndepoel··on Apple is crossing a Steve Jobs red line
Honestly, I think that if Steve Jobs had lived, he would have continued to push the industry in a direction more aligned with his tastes, others would have followed suit, and whatever hot topics we'd be discussing today, they would be very different from the ones we are discussing now.
ndepoel··on Fuck dopamine, we're voluntarily breaking our own brains
I had this epiphany last year when I went through some old holiday pictures and saw a photo of a monument in a location that I had no memory of. So I spent some time retracing our steps on that day, based on other pictures from around the same time, and places that I knew we visited. It took a while, but eventually I managed to zero in on the place and felt pretty satisfied as I starred the location on Google Maps.

Since the monument in question was somewhat relevant to my work, I shared the picture in my company chat and asked if anyone had seen it and knew from the top of their head where this was. Almost immediately one colleague threw the picture into an AI reverse image search and instantly came up with the answer where it was and what the monument represented. I was incredibly annoyed at that; not because someone was able to come up with the answer much faster than I did on my own, but because it took the FUN out of the whole thing.

That's when I realized that my instinctive dislike for AI is because it takes the fun out of everything for me. The process of figuring out where this photo was taken was much more rewarding than the eventual answer. Similarly, when programming I take pleasure out of figuring out difficult problems and coming up with elegant solutions for then. Writing the actual code isn't the interesting or difficult part, and I don't need an AI to do that for me. AI is being hyped up by people who are not interested in the process of learning and understanding and who just want a quick shortcut to the answer, completely missing the point in my opinion.

ndepoel··on Death by a Thousand Slops
> They could offer value, but just rarely, at least with the LLM/model/context they used.

Still a net negative overall, given that you have to spend a lot of effort separating the wheat from the chaff.

> Could have a special area for submitting these where AI does the rejection letter and banning.

So we'll just have one AI talking to another AI with an indeterminate outcome and nobody learns anything of value. Truly we live in the future!

ndepoel··on Digital Minister wants open standards and open source as guiding principle
Us Europeans have been extremely naive and complacent for the past decades. We've been all too happy to rely on America for our tech and defense needs, and America has been all too happy to provide. There have been plenty of warning signs in the past that this situation is not as self-evident as we'd like to believe and not sustainable in the long term, but so long as things keep churning along we'd rather just ignore the problem instead of proactively tackling it and becoming more self-sufficient.

And yes, now that America are showing their true colors with Trump leading the way, finally, finally we are starting to see that maybe this isn't how we should want things to be. It's still going to take a long time for Europe to shake off its dependence on the US tech industry and truly start to challenge it, but hopefully this is a wake-up call that will gradually push things in the right direction.

ndepoel··on The Turkish İ Problem and Why You Should Care (2012)
Ahh yes, been there, done that.

Several years ago we had issues with certification of our game on PS4 because the capitalization on Sony's Turkish translation for "wireless controller" was wrong. The problem being that Turkish dotless I. What was the cause? Some years prior we had had issues with internal system strings (read: stringified enums) breaking on certain international PC's because they were being upper/lowercased using locale-specific capitalization rules. As a quick fix, the choice was made then to change the culture info to invariant globally across the entire game. This of course meant that all strings were now being upper/lowercased according to English rules, including user-facing UI strings. Hence Turkish strings mixing up dotted and dotless I's in several places. The solution? We just pre-uppercased that one "wireless controller" term in our localization sheet, because that was the only bit of text Sony cared about. An ugly fix and we really should have gone through the code to properly separate system strings from UI texts, but it got the job done.

ndepoel··on Vibe Coding is not an excuse for low-quality work
This all reminds me a lot of the early 2000's, when big corporations thought they could save a lot of money by outsourcing development work to low-income countries and have their expensive in-house engineers only write specifications. Turns out most of those outsourcing parties won't truly understand the core ideas behind the system you're trying to build, won't think outside the box and make corrections where necessary, and will just build the thing exactly as written in the spec. The result being that to get the end product you want, the spec needs to be so finely detailed and refined that by the time you get both specification and implementation to the desired quality level, it would have been the same amount of effort (and probably less time and frustration) to just build the system in-house.

Of course outsourcing software development hasn't gone away, but it hasn't become anywhere near as prevalent and dominant as its proponents would've had you believe. I see the same happening with AI coding - it has its place, certainly for prototyping and quick-and-dirty solutions - but it cannot and will not truly replace human understanding, ingenuity, creativity and insight.

ndepoel··on Reverse engineering the Sega Channel game image file format
4 MB is the maximum size of the console's ROM address space, so this would've allowed for any Genesis game to be published through this service, with the exception of the few games that used bank switching to go beyond 4 MB (really only Super Street Fighter II). 4 MB was a lot of RAM to be putting into a relatively cheap consumer electronics device in 1994, so I imagine some of the cost of that was subsidized by Sega and had to be covered by the subscription fees.
ndepoel··on INNER JOIN ON vs WHERE clause (2009)
It's all about clearly stating your intent. With INNER JOIN you're literally saying "I want to join these two tables together on this particular relation and work on the result", while with the more basic WHERE form you're saying "just lump these two tables together and then we'll filter out the rows that we actually want to see". The join becomes more of a happy side-effect with that, rather than the thing you clearly want to do.

Not only does writing your code in such a way that it states your intent make it easier to read for other humans, it also makes it easier for compilers/query planners to understand what you're trying to do and turn it into a more efficient process at run-time. Now query planners are usually pretty good at distilling joins from WHERE clauses, but that form does also make it easier for mistakes to creep in that can murder your query performance in subtle and hard-to-debug ways.

ndepoel··on Hallelujah, Leonard Cohen, and a Pulitzer Prize-winning writer's suicide
The thing about Nine Inch Nails version of 'Hurt' is that it works best within the context of the album 'The Downward Spiral'. As a song by itself it's fine, but it doesn't really hit home unless you've been through the entire journey that the album takes you on. It segues right from the album's title track and maintains the noisy crackling from that song, making it feel incredibly fragile. It's a great way to cap off a very personal and self-reflective album, but take it out of that context and it's just, eh, pretty good I guess.

Johnny Cash's version takes the song and puts it into a new context, specifically as a reflection on Cash's own life and career. It hits very differently that way, and I think it's easier for people to relate to. Both versions are excellent in their own way, and I am grateful to Johnny Cash for bringing this song into the public consciousness.

ndepoel··on Google Cuts Jobs in Engineering and Other Divisions
Oh I'm sure they exist, that's why I said "a lot", not "all". My point is more about how managers perceive the employees they manage. They all want to believe that they found the goose that lays the golden eggs, but in reality so many perceived rockstar engineers are just over-confident or over-eager people mass producing garbage.

That's the important parallel with using AI in production: on the surface it may seem like the solution to all productivity problems, but in reality it still takes a lot of human brainpower to review, assess, fix and maintain whatever the AI model spits out. Especially since generative AIs like to present their work with supreme confidence, and it's getting increasingly hard to separate the chaff from the wheat.

ndepoel··on Google Cuts Jobs in Engineering and Other Divisions
Not just innovation, but layoffs are also devastating to the morale of the employees who are allowed to stay. This I feel is a factor that managers tend to grossly overlook when planning mass layoffs.
ndepoel··on Google Cuts Jobs in Engineering and Other Divisions
AI has increased the perception of productivity to unwitting managers, which is a dangerous pit to be falling into.

It's like a lot of those fabled 10x engineers that I've run into over the years; they may seem like they're incredibly productive and managers love them, but in reality their work is so riddled with issues and rushed half-baked ideas, that they end up costing the other engineers on the team 10x the amount of their time to review and fix it all. And it's those other engineers who do all of the invaluable but underappreciated cleanup work who are getting the boot right now.

ndepoel··on Queen guitarist and astrophysicist Brian May to release 3D atlas of asteroid
Considering Brian May played God Save The Queen on top of Buckingham Palace for the Queen's Golden Jubilee in 2002... yes, yes she had.
ndepoel··on Quake's lightning gun bug explained [video]
I'm not sure if it would've been John Carmack in this particular case. He was more concerned with the engine and rendering side of things, less with the gameplay logic stuff. More likely it would've been either John Romero or John Cash who wrote this code, but it's hard to say for sure. Best thing we can hope for is that John Romero pitches in with his impeccable memory :D
ndepoel··on Ask HN: How do you approach a problem you are not sure has a solution?
An example of how you could fill this in: identify a small subset of the problem that is relatively quick and easy to test. If the entirety of the problem can be solved, then for sure this small subset has to be solvable too. If you can't solve this small sub-problem, then you know there's not much point diving into the larger rabbit hole yet. However if you do solve the sub-problem, then that might show you the potential that exists, it may allow you to already look at adjacent problems using the results of this early test, and also important: it will give you additional motivation to keep going.
Page 1 of 3Next →