skotz / volcanoes

Prototype for a new board game
4 stars 1 forks source link

rotate the world (the Pentakis Icosidodecahedron board) #9

Closed simondorfman closed 5 years ago

simondorfman commented 5 years ago

it's easier for me to see the path from one side of the world to the other side when there's no white space between the tile connections.

image

image

this UI feature idea would allow me to rotate the world so i can see any connection path without any whitespace between any tiles.

one way "panning" could work: I click and drag the board to the south-east. all triangles (and all the pieces on them) move one space to the south-east, and the pieces on the bottom and right wraparound to the other side. So the board always looks like the same shape, but you're able to drag the board and emulate spinning a globe.

one way rotating could work: have a globe icon on the corner with rounded arrow buttons (clockwise & counter-clockwise). pressing the buttons would rotate the world in that direction. perhaps the rotation would be anchored on the upper left triangle. Or anchor on a more central tile.

very bad mockup of the world with two arrow buttons on it:

image

skotz commented 5 years ago

This was a lot to visualize in my head, but here's what I think a "rotation" would look like.

image

I'll keep this in the back of my mind. I don't think I want to transform how the board itself is stored since that'll mess with the engines, but I could make some kind of rotation translation layer in the UI.

The math to translate every single tile to its rotated tile will probably be a nightmare, especially if we want the ability to rotate around any selected point.

simondorfman commented 5 years ago

@skotz nice illustration of what rotate would look like. that's exactly what I was thinking.

yeah, some kind of rotation translation layer in the UI makes sense, rather than actually changing how the board itself is stored.

I get that this is may be a pie-in-the-sky idea for a prototype, because it works well enough as-is. but while I'm thinking of pie-in-the-sky UI stuff, it would also be cool if the board could transform from a 2D board to the 3D Pentakis Icosidodecahedron shape. Basically, give players two different modes to play the game, 2D and 3D.

I've got big ideas about how cool the 3D version graphics could look. Something like this:

  1. Pentakis Icosidodecahedron is rendered as a skeleton shape: only the intersections of the triangles are shown.
  2. in the center of the Pentakis Icosidodecahedron is a ball-shaped solid core, similar in size to the Earth's inner core (about 20% of the size of the Pentakis Icosidodecahedron)
  3. the core has swirling ying-yang orange-blue patterns swirling around it, like an animated planet Jupiter with multiple giant red storms (except the storms are orange & blue)
  4. when a player takes a turn, their color (orange or blue) shoots up from the core to spot they played on and causes it to grow. the shooting up graphic may look something like the lightning on a plasma ball when you touch it
  5. the same plasma ball magma shooting up happens on growth phases, but it happens to all the active pieces at once
  6. the magma chambers and volcanoes are semi-transparent, so you can see all the cool graphics underneath when you play your turn, and you can see the other side of the world.
skotz commented 5 years ago

I have some experience with 3D programming, but at least for now I'd rather not go down that path. Everything gets significantly more difficult when you add a dimension. The trig involved in perfectly placing 80 triangles is no joke. Plus you'd need a way to let the user rotate the model, select tiles, etc... It took me like 2 hours just to make the 2D board align and scale appropriately.

skotz commented 5 years ago

I have the basic structure in place to translate between graphical tile indexes and game board indexes. It looks pretty cool. Now I just need to add some intuitive rotation buttons.

rotate

skotz commented 5 years ago

This really messes with your mind, and I love it.

rotate-2

skotz commented 5 years ago

Implemented in v0.2.8