Bam4d / Griddly

A grid-world game engine for game AI research
https://griddly.readthedocs.io
MIT License
235 stars 24 forks source link

Feature request: Animate player movements #242

Open cool-RR opened 1 year ago

cool-RR commented 1 year ago

I just found Griddly and I'm psyched. This'll be very helpful for me, and I still need to understand how it works.

One thing I was disappointed with is that the game visualization doesn't animate the player movement, i.e. the players jump discretely from cell to cell rather than move there in a linear motion. It's weird to me that you'd take this design choice, since I would think that slick visualizations are a prime feature of Griddly. The difference between the experience of watching a game with movement animation and one without is substantial. Check out this "GridRoyale" environment and UI I designed two years ago with movement animation: https://grid-royale.herokuapp.com/

I'm guessing you may have discussed this before, but I couldn't find it on the issue tracker.

What do you think about adding this feature?

Bam4d commented 1 year ago

Hi @cool-RR. As Griddly is a tool for discrete grid-world environments primarily for use in reinforcement learning, the movements are typically discrete because they happen within single time-steps.

I agree adding this linear movement would look slick, but it will not reflect what is happening in the underlying game engine itself. Many people will want to use algorithms that learn directly from the pixel representations, and in this case the linear interpolation will not reflect the underlying MDP state.

It would be possible to add these animations for visualization/demo purposes, but this will probably only be a feature in the browser itself. I think this could be added fairly easily using phaser ....

cool-RR commented 1 year ago

Thanks for the quick reply.

Yes, linear movements don't represent what actually happens in the game mechanics; neither do the sprites that Griddly uses nor the clever tiling logic that makes walls look great when placed next to each other.

Like these two features I mentioned, the movement animation feature I'm proposing is strictly for improving the viewing experience, and it should definitely be implemented only when visualizing for humans.