Live data from Hacker News

How to program independent games (Johnathan Blow of Braid fame)

the-witness.net

11–19 of 19 posts

Re: How to program independent games (Johnathan Blow of Braid fame)

#11
post #3

I liked a lot of Johnathan's ideas about writing simple code. One idea that I don't think fits for the type of system I develop is the idea of preferring huge blocks code over function calls (around 30:00). He counters the benefit that the function name documents the chunk of code it encloses, but an even bigger benefit, in my opinion, is that the function signature documents the function's inputs and outputs. If you…

A lot of game code is actually "data" code, so the large functions come about naturally because so many assumptions and special-cases are made that you don't have anything resembling a CS-style algorithm, just a blob of "integrated assets" - and so the only route for further progress is a new syntax tailored towards the particular methods of integration being addressed.

That said, a new syntax can work, if it's the right one.

Re: How to program independent games (Johnathan Blow of Braid fame)

#12
post #4

I was writing the first lines of code for a game prototype while listening to this. I looked at the code I was writing, and promptly put it aside -- I was coming up with a nice advanced, performance implementation of dynamic octrees to represent the voxels my world is based on ... but why do I need that, before anything runs at all? Sure, I will need it in the future (although not the super, super optimized version u…

I made an iPhone game (tower defense) where everything used std:vectors until I ran into performance problems. And lo and behold they could all be solved with using data structures for which the necessary operations where less expensive. The changes were quite easy to make since the containers use a common interface.

The real gotcha is that the vast majority of containers are still vectors, since the operations on them didn't show up in profiling. So I guess yeah create some gameplay and optimize your bottlenecks not your lack of Data structure fun.

Re: How to program independent games (Johnathan Blow of Braid fame)

#14
post #9

Earlier quoted context omitted.

If Braid is in your top three, I'm curious: what other games do you really like?

Braid is in my top three alongside Ico/Shadow of the Colossus and Civilization IV.

I'm sorry, but I do believe that the size of your top 3 is in fact... 4 :)

(I really rate SOTC, but never really got on with Ico. Not the same game at all!)

Re: How to program independent games (Johnathan Blow of Braid fame)

#15
post #14

Earlier quoted context omitted.

Braid is in my top three alongside Ico/Shadow of the Colossus and Civilization IV.

I'm sorry, but I do believe that the size of your top 3 is in fact... 4 :) (I really rate SOTC, but never really got on with Ico. Not the same game at all!)

Actually he only says it is beside those other games, and not explicitly that they are in the top 3 too :P

Re: How to program independent games (Johnathan Blow of Braid fame)

#16
post #12
post #4

I was writing the first lines of code for a game prototype while listening to this. I looked at the code I was writing, and promptly put it aside -- I was coming up with a nice advanced, performance implementation of dynamic octrees to represent the voxels my world is based on ... but why do I need that, before anything runs at all? Sure, I will need it in the future (although not the super, super optimized version u…

I made an iPhone game (tower defense) where everything used std:vectors until I ran into performance problems. And lo and behold they could all be solved with using data structures for which the necessary operations where less expensive. The changes were quite easy to make since the containers use a common interface. The real gotcha is that the vast majority of containers are still vectors, since the operations on th…

I'm curious: what optimized or special-purpose containers did you replace your std::vectors with?

A co-worker once joked that "real world" programs have only two container types: hash tables and arrays.

Re: How to program independent games (Johnathan Blow of Braid fame)

#17
post #9

Braid is a wonderful game, for anybody who hasn't played it. Probably one of my top 3 favorites of all time. I really enjoyed this talk, the bit about optimizing for years of my life per program implementation (life) was great.

If Braid is in your top three, I'm curious: what other games do you really like?

I would say Half Life 1 and Banjo Kazooie (N64) would also be in my top 3, not sure what order though :)

Re: How to program independent games (Johnathan Blow of Braid fame)

#18
post #9

Earlier quoted context omitted.

If Braid is in your top three, I'm curious: what other games do you really like?

I would say Half Life 1 and Banjo Kazooie (N64) would also be in my top 3, not sure what order though :)

Now I'm curious what your top 10 looks like. With BK and Braid in the top maybe it's just an affinity with anything containing jigsaw puzzle pieces? =P

Re: How to program independent games (Johnathan Blow of Braid fame)

#19
post #12

Earlier quoted context omitted.

I made an iPhone game (tower defense) where everything used std:vectors until I ran into performance problems. And lo and behold they could all be solved with using data structures for which the necessary operations where less expensive. The changes were quite easy to make since the containers use a common interface. The real gotcha is that the vast majority of containers are still vectors, since the operations on th…

I'm curious: what optimized or special-purpose containers did you replace your std::vectors with? A co-worker once joked that "real world" programs have only two container types: hash tables and arrays.

In the most important case it was sets. There was a collision detection routine that took up too much time because checking membership for vectors is not constant time. The sets/vectors were very small though, low double digits, but once you do stuff 30 times per second for a couple a hundred objects it can get slow. (only on the iPhone though, in the simulator everything was good)

For the general world representation I used a static grid, as the object size was very homogenous, so a quad tree would have been overkill.

Post reply on HN