<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: Ogre</title><link>https://news.ycombinator.com/user?id=Ogre</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 27 May 2026 18:39:12 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=Ogre" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by Ogre in "The worst job interview I ever had"]]></title><description><![CDATA[
<p>I'm with you, came here to ask this too.  This is how I would have read it:<p>"Crack engineer" someone who is an excellent engineer, I feel like this goes back to at least the early 20th century, certainly long before gaming culture.<p>"Cracked engineer" a damaged person who is an engineer<p>Shrug. Language changes all the time!</p>
]]></description><pubDate>Tue, 26 May 2026 23:49:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=48287570</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=48287570</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48287570</guid></item><item><title><![CDATA[New comment by Ogre in "Accelerando (2005)"]]></title><description><![CDATA[
<p>The Merchant Princes series is fun, and I really enjoy the story of why he wrote it.  It starts out as fantasy for basically the whole first novel and then some. But you can find some evidence from the start that it's really sci-fi, and by the end of the series it has dropped all pretense.  It's sci-fi through and through.<p>This is all because he had an exclusive contract for sci-fi with his other publisher.  But not an exclusive contract period.  So he stealth wrote a second sci-fi series without actually breaking that contract until later.<p>I'm not sure if The Laundry Files was done for the same reason.  It's possible.  I haven't read those past the first novel.  But I'm a big fan of everything else he's done.</p>
]]></description><pubDate>Sat, 16 May 2026 20:38:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=48163580</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=48163580</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48163580</guid></item><item><title><![CDATA[New comment by Ogre in "Never trust the client"]]></title><description><![CDATA[
<p>"Moving left" is NOT an input.  An input is "The controller is pushed to the left" (with perhaps a numeric value of how far it is pushed to the left).  "Firing once" is similarly NOT an input.  "The fire button is down" and "The fire button is up" are inputs.  That is how well implemented first person shooters have worked since the Quake days (I think Quake 2 actually).<p>The point of the article is actually that the server doesn't validate anything.  There's nothing to validate.  The only data it gets from the client is the state of the controls.  Then it runs the real simulation.  The client only ran a prediction of what it thought the server would do.  Sometimes, it's wrong and corrects itself when it gets new values from the server.</p>
]]></description><pubDate>Thu, 28 Apr 2016 05:12:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=11586671</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=11586671</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11586671</guid></item><item><title><![CDATA[New comment by Ogre in "Never trust the client"]]></title><description><![CDATA[
<p>You can handle orders of magnitude more users with the same hardware if you don't have to run the game simulation on the server.</p>
]]></description><pubDate>Thu, 28 Apr 2016 04:47:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=11586607</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=11586607</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11586607</guid></item><item><title><![CDATA[New comment by Ogre in "Homestead High School Newspaper, May 22, 1977"]]></title><description><![CDATA[
<p>Don't know about those, but here's an Apple ][ still in use in 2009 (How it's made - player piano rolls of all things) <a href="https://m.youtube.com/watch?v=uL9NudhhSQE" rel="nofollow">https://m.youtube.com/watch?v=uL9NudhhSQE</a><p>It's like an obsolete technology fractal.</p>
]]></description><pubDate>Mon, 11 Jan 2016 06:48:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=10879235</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=10879235</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10879235</guid></item><item><title><![CDATA[New comment by Ogre in "“Stop reverse engineering our code”"]]></title><description><![CDATA[
<p>Just today I was arguing for not moving something off of Oracle.  No one's really happy the thing in question is on Oracle, but it is live in production and most of the time does what it needs to. It ain't broke.  Changing to "something else" carries way too many unknowns for my comfort level.<p>If I'd read this last night... I still would've argued the same thing, but I would've been really unhappy about it.</p>
]]></description><pubDate>Tue, 11 Aug 2015 08:07:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=10039636</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=10039636</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10039636</guid></item><item><title><![CDATA[New comment by Ogre in "Reverse engineering the binary data format for Star Wars: Yoda Stories"]]></title><description><![CDATA[
<p>The author also created SpaceChem, which is one of the best programming/engineering games out there. For just programming games, I'd call it my second all time favorite just behind Robot Odyssey, an ancient Apple ][ game.<p>This gives some great context to where SpaceChem came from. Thanks Zach!</p>
]]></description><pubDate>Tue, 07 Oct 2014 04:52:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=8419714</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=8419714</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8419714</guid></item><item><title><![CDATA[New comment by Ogre in "Making Fast-Paced Multiplayer Networked Games Is Hard"]]></title><description><![CDATA[
<p>I only skimmed it, but I didn't see anyone in there who took years.  They were all on the order of months.  Entirely possible I missed it.<p>That said, adding networked multiplayer to a game is very difficult.  But designing a game around networked multiplayer is not nearly as hard. Single player or local only multiplayer games can get away with lots of assumptions that completely break multiplayer, and detangling all of those assumptions is the most time consuming part of converting a game. If you do it "right" from the start, you don't ever allow yourself to make any of those assumptions and everything just works. If you know you're going to build a multiplayer game, then write it as a client server architecture from day one even if you know you're not going to play with other people for the first several months of development.  Future you will thank present you.</p>
]]></description><pubDate>Thu, 02 Oct 2014 18:15:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=8402159</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=8402159</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8402159</guid></item><item><title><![CDATA[New comment by Ogre in "Not a bash bug"]]></title><description><![CDATA[
<p>> So ruby and perl are specifically designed to be a handler of untrusted data?<p>Perl actually is when used in taint mode.  <a href="http://perldoc.perl.org/perlsec.html" rel="nofollow">http://perldoc.perl.org/perlsec.html</a></p>
]]></description><pubDate>Sat, 27 Sep 2014 17:21:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=8377581</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=8377581</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8377581</guid></item><item><title><![CDATA[New comment by Ogre in "Swift Has Reached 1.0"]]></title><description><![CDATA[
<p>In the 1990s, people used to write these things called plugins to add features, like support for specific video containers and codecs, to browsers.  Now I guess browsers have to have everything built in or not at all. "Progress".</p>
]]></description><pubDate>Wed, 10 Sep 2014 04:49:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=8294974</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=8294974</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8294974</guid></item><item><title><![CDATA[New comment by Ogre in "The Advanced Cave Culling Algorithm – making Minecraft faster"]]></title><description><![CDATA[
<p>Yeah, see my reply to myself, I beat you by a few minutes =)  Whether 6X the searches is worth it or not is something only testing can answer, I think.</p>
]]></description><pubDate>Mon, 01 Sep 2014 22:09:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=8254884</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=8254884</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8254884</guid></item><item><title><![CDATA[New comment by Ogre in "The Advanced Cave Culling Algorithm – making Minecraft faster"]]></title><description><![CDATA[
<p>Partly answering my own question after mulling it over, the difference in the pre-pass is that you're not actually coming "from" an edge or going "to" one when you're doing the flood fills, you're just testing which edges are connected to any given empty cell.  But I still think there might be something to this idea.  The simplest thing I can think of is to do no-backwards searches out from all the empty cells on each edge  and see which other edges you reach.  That's potentially 6x as many searches (slightly smaller and with some early outs since the connectivity is bi-directional), but at least it's still finite and predictable and isn't who knows how many raycasts.  I don't know if that's acceptable for the pre-pass or not.  But I also think there might be smarter ways to do it that only require a single search from each empty cell but remember directions traversed so you know if a particular path you've reached an edge along implies visibility or not.<p>Maybe you can do the 6 searches in parallel, such that whenever they meet you know you've found a connection between the two edges they were coming from?  I don't know if that means any less work except in cases where all 6 edges are trivially connected.</p>
]]></description><pubDate>Mon, 01 Sep 2014 21:45:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=8254797</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=8254797</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8254797</guid></item><item><title><![CDATA[New comment by Ogre in "The Advanced Cave Culling Algorithm – making Minecraft faster"]]></title><description><![CDATA[
<p>For the actual occlusion test, you have a "don't go backwards" rule.  If you have to go backwards to reach a chunk, you know it's not visible along that path (but may be on a different path, which you will eventually find).  Without having thought about it a whole lot, does that work for the inside-a-chunk tests too?  If you have to traverse an edge facing back towards the face you're coming from, does that mean there's no visible path from the first edge to the second?  And if so, would that give a meaningful reduction in connectivity?</p>
]]></description><pubDate>Mon, 01 Sep 2014 19:15:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=8254284</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=8254284</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8254284</guid></item><item><title><![CDATA[New comment by Ogre in "The Advanced Cave Culling Algorithm – making Minecraft faster"]]></title><description><![CDATA[
<p>Glitchiness of occlusion may be driver or hardware dependent.  I've been using it successfully, but haven't tested on a variety of hardware.  The bigger issue is the two way communication between GPU and CPU. You want your pipeline to be one way, otherwise you either have stalls waiting for results (poor or inconsistent framerates), or things becoming visible one or more frames later than they should.  For some applications, the latter is acceptable.  For Minecraft (style) chunks, it might mean sometimes large amounts of terrain popping in a frame or two too late, which could be very noticeable.<p>It seems like a combination of both might be feasible. Do something smart like this article on the CPU, which feeds into a greatly reduced set of occlusion queries, small enough to perhaps not introduce significant stalls using the first method.<p>However, in this article's case, he's specifically targeting the mobile edition of minecraft, where hardware occlusion is not yet universally available!  So fast CPU versions are definitely warranted, and I think he's got a really good solution.</p>
]]></description><pubDate>Mon, 01 Sep 2014 18:37:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=8254150</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=8254150</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8254150</guid></item><item><title><![CDATA[New comment by Ogre in "Why do all code editors look the same?"]]></title><description><![CDATA[
<p>I approve of people trying to improve the editor experience. This is a good project!  I have a nitpick though:<p>"forking the current panel using Ctrl+F is a game changer, as you don’t have to scroll away from your current code location when looking up something at a different place in the same file."<p>A game changer over what? Are there editors that don't let you do this?  The two I mostly work in are Emacs and Visual Studio, and you can do this in both. (I'd actually have to hunt around for how to do it in VS, I use both side by side because of a whole lot of Emacs muscle memory, but it's there for sure)<p>It worries me that he's not actually aware of the features available in the editors he's trying to improve upon.</p>
]]></description><pubDate>Sat, 23 Aug 2014 18:15:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=8216443</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=8216443</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8216443</guid></item><item><title><![CDATA[New comment by Ogre in "Exploring No Man’s Sky, A Computer Game Forged by Algorithms"]]></title><description><![CDATA[
<p>It's likely coming to PC as well.  It was announced last year without any console attached.  At E3, it was at Sony's keynote, but it wasn't announced as an exclusive. On the other hand, they haven't explicitly said it will be on PC either, it's just an educated guess.</p>
]]></description><pubDate>Wed, 23 Jul 2014 05:46:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=8073082</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=8073082</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8073082</guid></item><item><title><![CDATA[New comment by Ogre in "Surface Pro 3"]]></title><description><![CDATA[
<p>For MacBooks there's these things: <a href="http://hengedocks.com" rel="nofollow">http://hengedocks.com</a><p>I had one for an older laptop. Worked fine, but I didn't use it much just because I wasn't at my desk at home very much.</p>
]]></description><pubDate>Sat, 24 May 2014 05:20:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=7792676</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=7792676</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=7792676</guid></item><item><title><![CDATA[New comment by Ogre in "Working on The Witness, Part 1 (2012)"]]></title><description><![CDATA[
<p>I can't speak for all games, but this sort of visualization is something I believe to be common in large AAA games, and is something I've had (and continue to have) in the small subset I've worked on.  On the other hand, it's always been custom code (like the engines themselves) and I would guess not something a lot of smaller studios would feel justified spending time on until they needed it.  I don't know if that's true.  I've found that just providing some simple easy to use debug line and shape drawing that lives outside the rest of the rendering systems means people will use it for this sort of thing all the time.  After a while there'll be a bunch of useful visualizations built up and if none of them do quite what you want, it'll probably be easy to modify an existing one.<p>I do think Unity and Unreal both probably provide a lot of tools in this department, so the situation outside crazy developers still using custom engines is probably a lot better than I think it is.<p>Also, it's almost certainly true that way more time goes into mundane, repetitive game testing than you thought.  The QA budgets for AAA titles are quite large, and a lot of that testing work is horrifyingly dull. Methods like this post outlines help a lot, but there's no substitute for actual people getting paid to try to break your game.</p>
]]></description><pubDate>Thu, 08 May 2014 05:18:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=7714049</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=7714049</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=7714049</guid></item><item><title><![CDATA[New comment by Ogre in "“Game Programming Patterns” is now finished"]]></title><description><![CDATA[
<p>Something you can do with components if you set some strict restrictions is do static or runtime analysis to determine which sets of components are disjoint in terms of systems that access them.  For example, if the combat system only needs access to combat components, and the builder system needs pathing and inventory components, then those two systems can run completely in parallel.<p>One place this is likely to break down is the transform (position) component, but one strategy for that is to differentiate between read-only and write access.  Lots of systems need to know where things are (const access) but few need to change where things are (write access).  All the systems that can deal with const access can still run in parallel.<p>The trick here is you have to strictly enforce all this.  You CAN'T have a method for getting an arbitrary component from an entity, and this may drive you nuts.  Instead you have to have each system specify ahead of time exactly what components it needs and how it uses them, and then hand them those components, and only those components.  As soon as you let someone write "entity->GetComponent(Physics)" in leaf code, you've lost your ability to analyse the dependency tree.<p>For a lot of games, the other problem you're going to run into is that one or two systems are going to take up most of your time and every other system is just going to sit around waiting for those anyway.  Usually those are physics and rendering.  Which you might be happily avoiding by making a dwarf fortress style game!<p>I have a coworker who's got a "toy" engine at home that does all this and some other fairly amazing tricks.  He says he's going to open source it, still waiting on that.  Sorry for this pointless tease, just wishing he'd hurry up out loud.</p>
]]></description><pubDate>Thu, 24 Apr 2014 04:02:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=7638449</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=7638449</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=7638449</guid></item><item><title><![CDATA[New comment by Ogre in "Project Naptha: a browser extension that enables text selection on any image"]]></title><description><![CDATA[
<p>Powersnap was amazing.  I seem to recall it was usually able to figure out what font each program was using and only had to search for letters for that specific font, and only fall back to a bigger search if that failed. I might be misremembering, but regardless, it was essentially as fast as any copy-paste today, in an environment where many programs weren't even written to support it.<p>Even though it solved a problem we don't usually have today (this story notwithstanding), it was still one of the most amazingly useful programs ever.</p>
]]></description><pubDate>Wed, 23 Apr 2014 03:57:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=7632004</link><dc:creator>Ogre</dc:creator><comments>https://news.ycombinator.com/item?id=7632004</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=7632004</guid></item></channel></rss>