MicroCity FX Development

Starting this thread to discuss options for extending MicroCity for the new hardware.

This is quite an interesting idea and potentially the best approach for extending the play space for the game. It also adds the mechanic of purchasing extra areas to expand your city. The only short fall is that any chunk that is not currently loaded is essentially ‘frozen’ and can’t be simulated but this might be an acceptable compromise to make.

It should actually be possible to view a neighbouring chunk if you are the at the edge of the currently focused one, allowing you to connect roads or power lines. It might be a bit tricky to get things like power management working correctly as I would expect that some players may want to keep all of their power plants in one chunk.

2 Likes

It can be done by calculating base production values for every chunk and and save them in the metadata. Then in the current game/chunk add some real time fluctuations to it and use them as production values form that area.

If the current chunk distributes any resources to multiple neighbours these values in % could be stored too. When playing on the adjacent chunk and pulling resources this percentages can be taken as base.

Also a chunk can never pull more than the last stored value neighbour. Of course this would be a nice to have but i think this already would be a really nice upgrade.

Another proposal from me: switch to an isometric view and call it MicroCity 2000 :sunglasses:.

Performance wise it is easily possible, only keep the drawing order right. The downside is that sprites need to be bigger which result in a larger filesize. This of course shouldn’t be a problem anymore.

And a nice hack when using ArdBitmap is, that zooming out is almost for free and decently looking. I’ve tried it once in a battleships game for arduboy and loved the visuals.

So at the moment in MicroCity, you only ever need one power station as it will essentially have infinite power. It made sense for the small map size and keeping things simple for the limited amount of resources. Potentially I could keep this behaviour to keep things simple or rework it so that power stations have a limited output.

It does make sense to boil down the contents of a chunk to input / output of power / economy and just use that to drive the currently focused chunk. One problem is this: if the currently focused chunk is powering neighbouring chunks, but the power station burns down, how does this affect the neighbouring chunks if they aren’t being simulated?

This is a neat idea! It would be a lot of work to recreate everything with an isometric view though

Sprites would really need to be kept in PROGMEM since the data needs to be accessed quickly for rendering. From what I remember though, MicroCity still had quite a bit of wiggle room there.

1 Like

I can’t imagine isometric would work on 1 bit lol.

I think Sim City 4 is basically this model. So here is the example:

  1. Create new city
  2. Purchase first chunk
  3. Build city with infrastructure
  4. Purchase second chunk
  5. User selects to load the new chunk
  6. Current chunk is saved to external flash memory
  7. Metadata is generated from the current state and either saved within the external flash memory chip so that it can be extracted or simply stored in ram.
  8. Second chunk is loaded into ram.
  9. User builds a city based on deals with the first chunk, (no power station)
  10. User switches back to first chunk (and goes through the save load cycle)
  11. Explodes the Power Station
  12. Current city loses power
  13. User switches back into second chunk
  14. The metadata is updated to say the power output is zero
  15. When the new chunk is loaded, it checks power output and sees that it is zero and then everyone is sad

Depending on the size of the metadata and how many chunks you want to load concurrently (max of 4 adjacent chunks?) I suppose that will need to be stored in ram somehow. But you might be able to simplify the routine so that at the loading screen it simply sums up all of the outputs of each 4 cities and only stores the result in ram. The downside to that fuzzy method is that it doesn’t count which power lines are actually connected to what city, so you would have to write some “city connection” code. I guess that code has to be written anyways, so that’s probably the new limiting factor I would guess.

1 Like

This is exactly what i have meant!

Of course it can :smiley:

3 Likes

and then there’s TEAMarg’s Escaper Droid

3 Likes

It works if most of what you are displaying is empty tiles. If your city grows to have buildings higher than 1 unit high it will be pretty hard to distinguish one building from the next.

And yes that isometric game is wicked nuts, I’ve seen it over at @JO3RI s house. He actually has a few games very far along in the development pipeline but he is still taking time to focus on himself and weary of diving back into development again.

3 Likes

Although I think the isometric style could look really nice, I don’t think that it is really that practical for the game. As @bateske mentioned, buildings obscuring each other could make things difficult to see what is going on. If the game was colour then this would be less of a problem.

The other issue I foresee with an isometric game is how to map controls to move the selection around. Would have to either map the d-pad to be diagonal movement (which way is up? is it up-left or up-right?) or alternatively have a smooth moving cursor (imagine a virtual mouse). One thing that worked quite well in MicroCity was how easy it was to move around the grid to place down roads and buildings, and that would be lost.

2 Likes

Usually up-right is up, but games that do isometric stuff usually make it configurable.