So, the question is, how "freeform" do we want this game to go?
btw, if I talk about track, I mean track, road and canals.
- landscape cells = building units
- each building has a footprint which is a collection of a few complete cells (eg: 1 house = 1 cell)
- each building can be rotated in 4 orientations (if we use squares) or 6 orientations (if we use triangles)
- track also have 8 orientations in square systems and 6 in triangle systems (maybe 12?)
- Each tracksection either goes border-to-border or center-to-center, but is essetially always 1 cell long.
- tunnels / bridges are cell-based (1 cell = start & 1 cell = end), some kind or Rollercoaster Tycoon / Locomotion system.
- cargo is transported between those cells
- clearly visible grid, players will calculate in grid-units
- the landscape cells are not = building units
- each building has a footprint which is a collection of a lot of such units (eg: 1 house = 8*8 units).
- buildings can be rotated in any direction
- tracks can also be rotated in any direction
- tracksections are treated as normal buildings, they have a certain footprint (eg 8*4) and can be rotated in any direction.
- tunnels/bridges are not restricted to cells. They start/stop like any other track.
- cargo is transported between ???
- most players won't care about the grid, but it can be turned on for more control.
The biggest advantage of a cell-based system = less memory used. If we compare equal size of maps (eg: 1 K houses²), the cell based one uses 1024*1024 cells, where the freeform one would need a building unit grid of 8192*8192. The later uses 64 times more memory.
The biggest advantage of a freeform system = you are not restricted to 4 orientations for buildings and 8 orientations for tracks + it looks more realistic.
Another thing, if we use a cell-based system, we can use sprites because of the limited number of orientations. If we use the freeform system, everything has to be fully rotatable 3D model. Usually sprites look better and use less resources.
I haven't made my mind up yet...