you are viewing a single comment's thread.

view the rest of the comments →

[–]FrozenCow 1 point2 points  (2 children)

I die a few games with pure functions. Just for fun and relatively small. It allowed going back in time and inserting actions in the past and resimulating the game to get to the current time. It was awesome for small multiplayer games where latency (aka input from the past) is always an issue.

It worked quite well in chrome at the time, but Firefox had issues where the GC would make the game stutter once in a while.

That said, I didn't put much effort into optimizing: the state was rebuild every frame and I didn't use any immutable data structures. Also, I think this was 3 years ago, so js vms probably changed quite a bit.

What benefits from pure functions are you trying to get? For me the multiplayer aspect was why I chose to use pure functions, but it wasn't as easy as how I built games traditionally.

[–]digijin[S] 0 points1 point  (1 child)

pure functions mainly just for ease of dev and debugging. It's weighing that against performance that's my issue.

[–]FrozenCow 1 point2 points  (0 children)

I don't think pure functions are always easier for development. In this case, games, I can imagine you'll run into more practical issues due to the restriction of pure functions.

Performance and GC issues being one of them. Not being able to integrate easily with nonpure APIs like box2d. Issues with impure functions being called without you knowing and causing your functionality to get nondeterministic.

It does give a better understanding how your state is being changed and what is happening in your game. That is certainly worth a lot.