Hacker News new | past | comments | ask | show | jobs | submit | Bekwnn's comments login

Working on low level performance sensitive code in games, this is something I see in code LOTS.

As mentioned in the article, data oriented design runs into the pattern of wanting to iterate over parallel arrays of data frequently.


Starting this year I'm switching from gameplay programmer to game engine programmer. I originally studied computer graphics a lot while I was in school, and I really enjoyed the time I spent working on optimization as a gameplay programmer.

As a gameplay programmer, a lot of the problem solving and work I did was insular and particular to the game. Engine development feels like a much bigger world where very similar problems are being worked on by many people all over the world. I feel there's a lot more material I need to go read.

I also want to start learning how to song write and improvise on piano. I'm starting to get some grasp on music theory finally and can probably not be totally lost when placing chords next to each other.


I try to stress this more than anything when talking about the merits of vim/emacs/etc. It's not about speed, it's about how effortless and 2nd nature editing text becomes.

Which is really counterintuitive when you look at how complicated the programs are. But I felt that it became better/easier than regular text editing after only 3 weeks of fulltime use. The uninterrupted flow of keyboard use, and reduced mouse navigation, feels great.

You only need to learn a very small subset of features to be very effective with it. Some people just stick to that forever. But you can also slowly add to it.


I'm a long-time vim user, and haven't really used anything else over the past 15-20 years. I use a nice color scheme, barely any plugins and a moderate but static vimrc. I feel like this is my happy place, it let's me write with the setup I'm used to, in any terminal, on any machine, and on any codebase (JS, Python, Go, HTML, C, etc).

Every now and then I see the magic of modern text-editors (VSCode et al), especially with code completion /intellisense and file trees. For me, I rarely feel like I need to be able to complete function parameters in my code to be more productive. Code-writing takes up such a small amount of the creative process that I'm perfectly fine looking up seldom-used functions in a web-browser. I wonder if anyone has ever attempted the jump from longtime-vim-user to these and can share their stories about why or why not.


My co-founder/ collaborator has. He is a 100% vim person, to the extent that he has Firefox configured to let him do things with vim key bindings (I believe using imperator).

He's switched over to VScode with vim key bindings and has been happy as a clam. He's heavily using Python with pylance plus copilot for the python side of what we do (which is most things).

I'm an emacs user who has made a similar switch (but with a horribly weird mix of native and emacs keybindings). Oh, and the VScode sync extension for me. I use and love the rust-analyzer extension.


I've been using vim since perhaps 2004.

Switched to IntelliJ in 2018 when writing Scala. IdeaVim is fine, it even lets me switch to normal mode with jk/kj [0]. What more could I want?

I've been using IntelliJ for Scala, Elm, and Python, and still use (neo)vim for editing other languages and random files. I'm prepared to jump ship to vim+LSP on short notice.

[0]: https://github.com/tasuki/dotrc/blob/master/.ideavimrc#L5


Any advice for someone who wants to switch to vim for Go development but struggling to find a good workflow? Using vscode it's so easy to rely on the auto complete, click a function name to go to it's definition, etc. I haven't found a good guide on getting that sort of basic workflow going which is unfortunate because I would love to stop using my mouse so much.


Have you tried something like JetBrains tooling with IdeaVim, or one of the Vim plugins for VSCode? Might help with the transition.


Lost Ark and Genshin manage to be both very cash grab and very reasonable as a free-2-play. You can spend a lot of money on both, and pay-2-win in both, but still get to experience the whole game at a reasonable pace as a f2p player.

Diablo Immortal seems to do many of the same things, but just in a much more egregious way. So far I've heard a lot about how much money you can spend on the game, but not much about how bad it makes the f2p player's experience.

In Lost Ark and Genshin most players don't care that much about whales spending 10k to deal 100% extra damage because it's purely player-vs-environment and that sort of damage boost is totally excessive and unnecessary.

But many games make progress feel extremely slow or otherwise aggravating to push purchases.

I haven't really heard much about where Diablo Immortal lies on that scale.


I'm just interested in something like a "not interested" button distinct from the thumbs down button. Netflix insists on suggesting the same shows I've never clicked for months or even years of them showing on my front page. I'd like to say, "Hey, stop suggesting this."

I don't feel like Netflix lacks things to watch, I just feel it does a terrible job keeping its suggestions fresh.


I'd really like to be able to say "I like this _kind_ of thing, just not this specific one." You know, just because I don't like "Valerian", I still enjoy sci-fi.

Thumbs-down on a video seems to remove the whole category.


There's an open issue to add some kind of function annotation+errors for functions which require you to call a cleanup function.

The discussion has had a lot of back and forth and they haven't really settled on a desirable solution yet, but it's something they're hoping to add.

https://github.com/ziglang/zig/issues/782

I work in games with C++ and we already do so much manual management and initialization+teardown functions that lack of RAII isn't a deal-breaker. Though I'd definitely prefer it if there was something either well-enforced or automatic.


This sounds good. While I don't have much preference about "being explicit" vs having automatically-invoked dtors, it will be nice to be nudged when I actually forget to clean up.


On the flip side, I work at a 100+ person studio and have enjoyed great work life balance the entire 4 years I've been working there, including a major release. It hasn't killed my passion or made me like video games any less.

I also work on a game I like and have played it a fair bit without being paid to do so.

It is hard to break into games, and harder still to find work on game projects you want to work on, but it is possible. Lots of people do.


> The components on the entity define not only it's data but also it's behavior by the set of systems that act on the corresponding components. And you can take these object definitions and inherit them to add additional behavior or change the existing behavior by adding more components to the new definition.

This seems to miss what ECS actually is, unless you're just referring to the old-school way of doing entity components and not the data-oriented way.

Data-oriented ECS way of doing things is to separate state and behaviour. Entity components essentially become structs where their only behaviour is potentially some getter/setter utilities.

Behaviours are then state-less systems (just functions, essentially) which act on a set of components.

For example, a PhysicsUpdateBehaviour might take in a RigidBodyComponent and a HealthComponent to perform a physics update and apply physics/fall based damage.

The main benefit of ECS (imo) isn't even really performance. It makes code in complicated game projects much easier to manage by clarifying the game loop and by making it much more obvious how and when entity state is being modified.

It's the kind of thing that potentially complicates a smaller project, but makes larger more complex projects easier to manage.

This Overwatch GDC talk is the best breakdown/example of data-oriented ECS in a AAA game that I know of: https://www.youtube.com/watch?v=W3aieHjyNvw


I know what an ECS is. Components are decoupled from systems (not not visa versa) but the actual behavior of an entity is defined by the set of systems that run on the set of components so in that sense the set of components defined what the Entity is including it's behavior. An Entity is defined in terms of it's data and it's data brings along behavior.


Power tripping mods/mod dictatorship is definitely a problem on reddit, but really post locking doesn't happen much and isn't responsible for the worsening quality of discussion the top level comment mentions.

The increasingly mobile-browsing user base is by far the biggest reason. I'm not hating on mobile really, but it's just a fact that people on a phone aren't going to be writing comments the way people sitting down at home on a PC are, and they'll also tend towards more content that's easy to browse from their mobile app/on mobile data.

There was an entire thread at the top of r/unpopularopinion (which if you don't know the subreddit at all is really just full of popular opinions) the other day of mobile users bashing threads which link to YouTube and how they downvote/won't click on them.

They likely use chrome mobile which doesn't let you install adblocker.

Which in turn pushes reddit's freebooting-encouraging and self-advertising v.reddit video player.

The site's increasingly resembling some mix of twitter and tiktok.


I started learning piano just over a year ago and picked up reading sheet music decently in an extremely short amount of time.

The gaps is the treble clef are

    | F | A | C | E |

The bass clef is the same but shifted down one gap (and the highest note is G)

  F | A | C | E | G |

And then middle C is, well, C. Just remembering that FACE goes in two places you get:

    bass clef          (C)  treble clef
  F | A | C | E | G |   |   | F | A | C | E |
And from that it's easy to go to the closest note and the count up/down one note and gradually memorize more. This was, at least to me, a drop dead simple way to memorize where everything goes.


This is a little better, but don't do this. You still need to calculate what are the notes outside of F A C E. Just memorize each note independently, it may take longer but it is much easier after that. If you continue using clutches like this, you'll forever have to do the translation in your head, which takes a lot of time and effort.


Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: