HN user

gabereiser

5,056 karma

I’m not the droid you’re looking for, move along.

Posts0
Comments1,497
View on HN
No posts found.

”Learning assembly language is basically useless at this point.”

I whole heartedly disagree. There’s an entire class of performance tuning you can do to math intensive applications that absolutely require knowledge of assembly to squeeze that last 0.5% out of the machine.

Video Games, Video Editing, Image Editing, Simulations, Scientific applications, all benefit from having some assembly sprinkled into their algorithms for speed.

Because of this, I don’t need crates or packages to do things for me, I’m capable of doing it on my own. I’m capable of building a 64kb demo scene executable. I’m capable of building a hardware accelerated video decoder. I’m capable of parallel vector operations because I can haz assembly. I can disassemble and reassemble binaries, libraries, files, stacks. I can even inject my own code.

If you have no need for speed and efficiency, then I’m sure a browser-based desktop app with some JavaScript will be fine for your use case.

alias and type redefinitions are conceptually the same. int and int_t are conceptually the same. I’m going to assume it’s my type, as defined in the signature of my method you’re calling. If you don’t adhere to the contract then the onus is on you. I’ll check existence, I’ll check conformity, but I won’t check that your string = my string.

Stored in binary format, validation, more efficient due to non-cast, faster access due to non char*, being able to split the high-low, indexing and uniqueness at the byte level.

We all know the Vorbis is supreme. Get out of here with your 15 year old DRM compression riddled subpar listening formats. OGG is all that matters. Without it… we wouldn’t have Spotify. <leaves before shoe is thrown>.

While I commend his efforts, it’s not even remotely MMO. A few thousand can be handled by one server. One beefy server, but one server nonetheless.

I’m talking about 10,000+ players. Where you need clusters of servers and synchronization techniques.

There have been some small multiplayer games that have tried to pass as mmo’s but without the player base in the 10k+ range, you never encounter certain classes of engineering problems.

It is enforced by the compiler, what it doesn't do is guarantee it at runtime. I agree with you on the enums. Go doesn't have a reliable enum construct. But the argument that I, the library author, must validate and check against any possible type of "color" you, the program author, can come up with is just crazy talk. I'll provide a Color type, I'll even pre-define some colors for you, but if you send me a Color that's rainbow, I'll panic.

‘type Color string’ is just a type alias for string.

Likewise GLint is just a type alias for int. There are only value types (str, int, float, etc), everything else is a construct. The only true types are those value types (and pointers to them). If you call a type a Color and I call a type a Color, you are using my lib to build a program (not me using yours), you must adhere to my contract of what a Color type is to my API. Period. You can not call a function with an unknown type and expect it to behave properly.

If it panics, it’s your fault.

Oh I feel for the author. I’ve made games. I’ve made distributed web platforms. I have profound respect for modern mmo architectures because of one, nasty, “I wish this wasn’t a thing” class of data. State. Who, where, what animation, what modeled entity, is in my party, on my screen, under my axe. Synchronized playback of my swing to my party members so we all yell in excitement at the same time when the boss falls. This level of synchronization across shards (server clusters of servers) is enormously complex. Not to mention just writing “net code” in general. Network speed is the biggest issue and often TCP isn’t enough. You need network prediction. Where will they be based on position, direction, etc until I receive the next packet. I can then error check the prediction with the actual and correct. If UDP is available to you, you use it so you can deliver that state as fast as possible, with no ACK back and forth. A combination of UDP state transfer peer2peer for animation and basic state, TCP network connections for services and server state, REST for that auction house. SQS or pub/sub for that item delivery and party/match making/world chat. It’s a beast of a problem.

Rewind 15-20 years ago and all the folks who wanted to make a game, their first game, and they want to build an mmo. None of them succeeded. Not 1. The only ones since were from people who knew the ask. Or had a crowdfunded ponzi scheme.

“My truck is so badass you can feel the ground shaking.”

Such a Texas thing to say.

I had my fair share of wind turbines on my sailboat. Nothing this guy is taking about is 1) new. 2) novel. 3) revolutionary.

What he’s trying to do is white-wash and “patriot”ize a simple existing technology. Only with half a brain cell so he thinks he’s solving the worlds energy crisis.

Wind turbines are loud. The faster they spin, the louder. The faster they spin the more potential for hazardous blade separation. I once sliced right through a dinghy with one. Imagine if that was little Melody with her stuffed animal.

The future of energy is not physical force pushing propellers to drive alternators, it’s capturing (and harnessing) the power of the sun. Solar panels provide 2-3x the output, none of the physical dangers, and are quieter than an ants whisper.

It’s actually not and is one of those Java isms that have made its way into generalized software engineering.

If I write a function that takes Foo as an argument. I have a Foo implementation exposed elsewhere in my program. It is absolutely expected that I mean MY Foo, not your Foo. If you pass me your Foo, you will get unexpected results that are not a bug, not a side effect, not my responsibility. It’s yours, the caller, to adhere to the contract.

There are valid reasons to not adhere. To pass your own implementation. At that point, you are responsible for its use. Not me. If it adheres to MY Foo’s interface, you might get by, but it’s is not my responsibility to validate all permutations of unknown types to ensure you’re passing me mine. In go, it’s perfectly valid to return structs but accept interfaces as arguments so that you, the program author calling my api, can craft the correct program flow.

So please, leave that runtime type check reflection for Java and C# and the land of JS. We have no need for it here in machine code land.

Draggable objects 3 years ago

Find starting point in dungeon. A* to every room. Rooms with a large distance (iter count) and with only one or two paths out (choke points, use graph to see edges) become potentials, every potential that is _far & narrow_ is flagged “enclave” with rewards increasing by distance to start.

This is one way to approach the problem. The other way is to do prefab rooms and when generating your dungeons, randomly select one or two prefab enclave rooms to throw into the shuffle. Shuffle the rooms and spread them out then connect hallways and such. This is the approach that Enter the Gungeon took.

Another approach is what @otikik describes. Tracing the walls buy assigning a value to the cells that can then be scored. Minesweeper style.

Meta Quest 3 3 years ago

As stated before, YMMV, because the killer apps for me have been iRacing and DCS in VR. If you aren't into simulation games, VR isn't really there yet for your genre. FPS's are getting there, kinda. Your brain still has to remind your body to crouch. Beatsaber, tennis, there's some novelty games but if you're asking yourself why would you buy VR, you already answered your own question. You shouldn't. Apple's headset, like the iPhone, will take some time to get apps working and finding their market fit. I do have hopes that Apple's headset brings VR into a more "stable" marketplace. Instead of just the few niche titles here and there that you play with Valve's headset or Oculus/Meta Quest.

Simulation games will ALWAYS benefit from more VR, more hardware, more wheels, more human interface controls.

Dead Cells, HLD, both have much better art styles than Fez. Fez’s worlds were great but the choice of 16px vs 32px limited it in details, hence geometry carving of the 3D world to add more detail impossible to achieve with pixel art tiled textures without overdraw.

I’m not saying I disliked Fez, but to compare the art of Fez to Chronotrigger is like holding a child’s finger painting to a Van Gogh. From a distance they may look the same…

I mean mediocre. There was nothing special about it. It wasn’t even that good. There have been much better looking pixel art games made. The style of Fez came from Phil redoing the art 3 times, outsourcing the character design, and still managed to release it.

And never seen old games? I grew up on Atari. I’ve been playing games since. Even made a few. Fez was amazing but not for its art. It was flat. I still enjoyed it. I think gamers shouldn’t get so hung up on pushing their systems to the limits and instead should focus on pushing their play to the limit.

Not at all. I think Indie Game The Movie took a lot of liberties to show him a certain way. I think the stress of it all got to him and now he does other things. I’m more aquatinted with the programmer Renaud from back in the days. I think the media loves a juicy meltdown story and tried to make him a scapegoat for the indie game industry going mainstream.

Indie games not on magazines says more about the indie games at the time, nothing more. How many times you going to feature Jonathan Blow?

Was Phil Fish insufferable? I don’t know, never met him. Did he say some things that were not in alignment with my worldview? Yeah, sure.

I do think Fez, the game, the wonderful spectacularly clever game, was the indie equivalent of a Mario brothers hit.

The void I think you speak of was when XNA died, MonoGame wasn’t quite there yet, people jumped to Unity and it took them awhile to get up to speed in it. Others like me went off and wrote their own engines and stuff, others joined the ranks of the studios.

I think Phil made the best game he could. That’s all that matters. Everything else is superfluous.