skotz / volcanoes

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

update coordinate system to make opposite sides more apparent #31

Closed simondorfman closed 4 years ago

simondorfman commented 4 years ago

goal:

  1. organize the coordinates to make it easier for humans to grok where the opposite side of the world is
  2. while trying to: organize the numbers so they're easy-to-find (logically ordered) in this 2D-representation

The algorithm I came up with to try and easily explain opposites to a new player: "Whatever coordinate you're looking at, add or subtract 10 to the number, and that's the opposite side of the world. So 1A is opposite to 10A and 15D is opposite to 5D, etc."

Suggested changes detailed in the attached spreadsheet: coordinate update suggestion.xlsx

skotz commented 4 years ago

Doesn't this all fall apart when you rotate around an axis? Both of these images represent the exact same board state.

image

image

Also, I spent a good amount of time coming up with the math to link a tile with its neighbors, and it's not as simple as adding or subtracting numbers. The actual logic can be found here: https://github.com/skotz/volcanoes/blob/547c05db8bc13fd32b271fe02833d6c2fc1ede88/Volcanoes/Game/Constants.cs#L44-L157

simondorfman commented 4 years ago

Yes, rotating does mess up the 2nd point of trying to keep the tiles organized. But I think the 1st point still has merit.

I studied the code with the logic. I still don't really understand it. But I respect that you're not interested in messing with this. So I'll just close this ticket.

skotz commented 4 years ago

Maybe there's another way to accomplish this without renumbering the tiles. There's already a graphics setting for highlighting the neighbors of a tile. The color is set to light grey by default, so it's not super apparent. The setting is HoverAdjacentTileBorderColor if you wanted to play around. Note that it's a graphics.json setting, not a volcano.json one.

simondorfman commented 4 years ago

Interesting idea. I was trying to play around with the color, but can't figure out what to put in the graphics.json exactly. Looking at the code nearby, I tried this:

{
    "HoverAdjacentTileBorderColor": "Color.FromArgb(26, 196, 196)"
}

But it's not working. I tried variations on that but couldn't get it to work. Could you please give me an example of a value that goes in the json?

skotz commented 4 years ago

Colors can be specified in hex like this: "HoverAdjacentTileBorderColor": "#FF0000"

https://github.com/skotz/volcanoes/blob/ed3cc72a818e90dbffbc2fa224f1a6a03cb47221/Volcanoes/Interface/JsonColorConverter.cs#L26

skotz commented 4 years ago

I wonder if the board would be more intuitive if a side numbered X were to always oppose a side numberd X+10 or X-10, and if cells always opposed cells with the same letter.

This would work if instead of breaking the board into 20 numbered groups of 4 letters (as it in now ) we used a single system where each of the first 40 tiles matched up with it's antipode (like A1-A40 and B1-B40). That still wouldn't solve the issue of wrapping your mind around the edges of the map, but it would help with understanding where the antipode for a given tile is.

simondorfman commented 4 years ago

I like that A1-A40 and B1-B40 idea! I think that would definitely help with understanding the antipode.

I wonder if North-South would be even more intuitive. Maybe N1-N40 and S1-S40? Or North1-North40 and South1-South40. Too verbose even if it's more grokable. What do maps use coordinates on the globe? https://en.wikipedia.org/wiki/Geographic_coordinate_system

I guess they use things like 45N for 45 degrees north. We're obviously not using degrees, but I think I like that idea of number first, then N or S for north or south.

So my current favorite idea is: 1N-40N and 1S-40S

simondorfman commented 4 years ago

updated spreadsheet showing where updates would happen with the 1N-40N and 1S-40S idea: coordinate_update_suggestion_v2.xlsx

skotz commented 4 years ago

Note that part of this will involve making the saved game loader backwards compatible with the old notation.

simondorfman commented 4 years ago

If it's less work, I vote to break backwards compatibility and just move to the new notation.

But I guess it would be nice to have so that my R parsing analysis stuff still works. Actually, I'm going to be continually redoing the analysis with each change of rules, so I don't think we really need backwards compatibility. Do we?

skotz commented 4 years ago

There were some errors in the spreadsheet so I corrected them based on what I believe was intended.

skotz commented 4 years ago

What do you think about this for formatting? Started the name with the letter, and then zero padded the number to make them consistent.

image

skotz commented 4 years ago

Done

simondorfman commented 4 years ago

Looks awesome!