Grid controller simulator banner

Grid controller simulator

35 devlogs
79h 0m 17s

My most ambitious project. This has been a project of mine for years but I finally have the ambition and skills to complete this. What this promises to be is a realistic video game with intricate simulation mechanics and interesting challenges for…

My most ambitious project. This has been a project of mine for years but I finally have the ambition and skills to complete this. What this promises to be is a realistic video game with intricate simulation mechanics and interesting challenges for the player. It is going to have realistic simulation, sandbox mode, campaign mode, custom map support and even achievements and custom scenarios, could add a market if I am feeling spicy. I hope you find the premise and execution fun as I try to balance realism with complexity and enjoyment.

This project uses AI

Used claude to help with some advanced vector math for the icons and complicated ui math suggestions
Run the code through claude to catch any bugs I may have missed during development and testing
and some light formatting on the readme

Demo Repository

Loading README...

georgegk

Shipped this project!

Hours: 19.67
Cookies: 🍪 546
Multiplier: 27.77 cookies/hr

Showcase video: https://youtu.be/BI512Jm9dFE
Showcase video events, sandbox and achievements: https://www.youtube.com/watch?v=GzSUHPZH3YY
Showcase video map importer and map builder: https://youtu.be/VwgSZX_GIEE
What is this project? If I had one word to describe it it would be: an experience. You really get a feel for the job a grid controller has, what happens in our daily lives to maintain this service with a nearly 100% uptime. It almost feels like magic. That’s what I was going for. The physics behind it are pretty complex, I am sure you don’t wanna hear about that right now and get bored (all the details are in the readme if you are interested). Generally this project helped me grow a lot as a developer and further develop the skillset required to create amazing videogames. But this story is far from over, we still have so many features left to implement (over half the buttons are still locked!). Hope you enjoy this game and I will be here for the next part of this journey.
UPDATE 1:Since the last ship I mainly added the settings menu, fixed bugs and added music
UPDATE 2:Since the last ship I added random events and control centers
UPDATE 3:Since the last ship I added a sandbox mode, notifications and achievements
UPDATE 4:Since the last ship I added a custom map manager, a custom map builder and whole new second map

georgegk

Wow this project is finally coming to a close.
It’s far from finished but flavortown is ending, so you won’t ever see this project again.
Anyways over this past hour I finally finished the map builder and made it be able to export to json.
I will write the rest tomorrow I am ready to fall asleep on my pc rn.

0
georgegk

Heyo did you miss me? I know you did.
Today is the day we ship and for that I need to finish up the map builder. Before anyone can export a map obviously they need to know if it is at least it is structurally sound and that’s what the map validator is there for. It goes through multiple rules like if the node is connected or isolated, if there are substations, if there are generators, if there are control centers, or if there are too many control centers. Oh yeah did I forget to mention that I added control centers? I realised that if the map didn’t have any control centers then that loss condition would just be immidiatly activated on startup and I could not have that happening.

0
georgegk

And for the first and last project of the day I went ahead and added a few more features to the map builder. It was mostly another menu, this time a metadata builder that will allow the user to input some basic info on the map like where it is located, the name of the grid, the climate and the default demand profile for the region. Now I would have added some more options but it is getting close to the date I need to ship by and there is still work to do here. I need to get this map builder finished before flavortown ends and the pressure is starting to get to me a bit.

0
georgegk

I think this is the last devlog of the day, and I believe I got some good progress in. This last hour I worked on a line propery panel that gives you the ability to change line attributes like name, impedance pu, thermal limit, voltage kv. It is pretty similar to the node one but it is displayed a bit lower to be able to show both at the same time. I really don’t got much to say on the devlogs, this one was basically the same concept repeated. Anyways imma go get some sleep, signing off!

0
georgegk

And after the last devlog I decided that the user needed some way to customize that default to node to their liking, cause just having a bunch of plants named New Generator would be a bit rediculus. So I went for this simplified format where you can right click a node to open a panel on the top right. There you can edit each attribute of the node to create your perfect map. That’s it for the devlog, it was still just a bunch of data formatting to allow each type of node to have each own attributes visible.
P.S. Wow I am getting tired but I will code a few hours longer before I go to sleep.

0
georgegk

Ok so after my last devlog I went ahead and build a system for wires to connect between nodes. It basically allows you to click on one node, then on a second one and create a connection between the two. I did have some issues with getting the nodes to cooperate, they would ofter overlap which led me to discovering a bug in the id assigning that caused that weird behaviour. That’s basically all I did for this hour, it was a very confusing bug cause sometimes I could just not get it to replicate since you needed to place down 2 generator nodes that used a diffrent fuel type for it to actually appear.

0
georgegk

Ok this is a bit of a shorter devlog but after the last one I decided to get right into the placing mechanic. You can now place down the a default version of the type of node you selected on the left side toolbar and plot it down. You can’t do anything to it just yet but it’s cool to see how it is placed down right there. I reused the icons.py for the icons so most the heavy lifting was already done, I just did a bunch of boring data formatting :(. But I guess the end result is worth it :).
P.S. I broke the pan and zoom in the demo but I fixed it right after that, I am just too lazy to rerecord :)

0
georgegk

Ok so I got amazing stuff to show you here (It is crazy what you can build in such little time when you already have the bones for the project!). I immidiatly started work on the map builder since my last devlog and I think it might just be the prettiest menu I have ever designed. Now it is not too functional just yet but you can see how you have your toolbox on the left with everything you can use, and you can place those nodes in the map( I mean not yet I am working on that) and you can also view you location and zoom on the bottom and all that in this insane dot grid. I mean you cannot deny how beautiful it is. I don’t got much else to say since it was mostly visual work and you will have to see that in the video below!

0
georgegk

I just saw the stupidest thing ever and I need to document it before I forget it! So you know how you need to switch to the backup control center if a cyberattack happens to end it? I kind of left the simulation on in the background and I saw that a cyberattack happened, which accidentally tripped the control center feeder, causing controls to switch to the backup center and defeat the cyberattack on all it’s own. I had a good laugh at that!
Well uh I am sorry for not devlogging for so long, but I was literally just writing nonstop code, I had nothing to showcase. I was kind of just writing the whole menu and praying it would work without testing it at all in the meantime. I kind of had an idea of how I wanted it look and how the funtions would interact with eachother so I just built that and fixed the errors it had. I did not realise how long I was even coding for.
Now in those 6 hours I created the menu that allows you to import custom maps. It is split in 3 tabs:

  1. The built in tab: Here you can view maps designed by me. It currently has only 2 maps, the oakridge map which you have all played before and the game is based on and the Harrowgate map which I just created and I am not exactly sure how balanced it is. If I ever want I can just drop in more maps in the maps folder and they will appear there
  2. The external file: Here you can type or paste a path to a .json file containing a map. You can then validate that with the validate button and play on it, but I can promise you that it will balanced or even functional! But you can try to have your fun.
  3. The map builder: Here you can launch the Map Builder: an interactive visual node editor that allows you to build your own maps and export them to .json files. It is probably one of the most advanced features here but I do not have it built yet. That is exactly what I will work on next

P.S. I also fixed a bug in the generator setpoint and made it automatically balance the map on startup to prevent immidiate fa

0
georgegk

Shipped this project!

Hours: 12.77
Cookies: 🍪 272
Multiplier: 21.3 cookies/hr

Showcase video: https://youtu.be/BI512Jm9dFE
Showcase video events, sandbox and achievements: https://www.youtube.com/watch?v=GzSUHPZH3YY
What is this project? If I had one word to describe it it would be: an experience. You really get a feel for the job a grid controller has, what happens in our daily lives to maintain this service with a nearly 100% uptime. It almost feels like magic. That’s what I was going for. The physics behind it are pretty complex, I am sure you don’t wanna hear about that right now and get bored (all the details are in the readme if you are interested). Generally this project helped me grow a lot as a developer and further develop the skillset required to create amazing videogames. But this story is far from over, we still have so many features left to implement (over half the buttons are still locked!). Hope you enjoy this game and I will be here for the next part of this journey.
UPDATE 1:Since the last ship I mainly added the settings menu, fixed bugs and added music
UPDATE 2:Since the last ship I added random events and control centers
UPDATE 3:Since the last ship I added a sandbox mode, notifications and achievements

georgegk

So after I created that beautiful achievements menu and made it scrollable I had to properly wire them up in order to actually award the user. It wasn’t too difficult, first I transfered everything over to a json and made it load that every time you open the achievements menu. Then in the simulation engine it also loads the json, checks every tick for the conditions to award the achievements and once it find them it checks if the user already has it and if not writes to the json and pushes a notification to the engine’s stack. Every tick the main program checks the engines stack and pashes on to the main notification stack anything it finds. The notification handler then goes through the stack wrapping the achievement descriptions in order to properly fit in the menu. Then I just had to write the conditions for all 9 achievements and test them to make sure they work properly and from what I saw they do.

0
georgegk

As I said in my last devlog I started work on the achievements! First I needed to design a menu where you can view all of them and your progress on each one, as well as what type of achievement it is and its description. Now it did take me more time than I like to admit to build this cause as you already know I am not the best UI designer but I think I did a good job at displaying the information needed in an organized fashion. It actually doesn’t even work yet it just has some placeholder values that it loads. But that’s it from me for today, I am feeling a bit burnout and I honestly cannot code anymore! I will see everyone tomorrow, signing off for the night

0
georgegk

After I got all of the sandbox features working to my liking I realised that I needed some way to give basic notifications to the player. And so I designed a full notification system where the notification slides in, stays for an amount of time and then goes. It has an icon, a title label and then a text body all thought out to be as seamless as possible. I even thought of stacking multiple notifications so I made a stack where notifications further down it are displayed lower to not overlap and as soon as a notification dissapears all the other ones move up. For now the only 2 use case I have thought of are music info and achievments(yes that’s what I am going to be doing right after this). But now it’s getting a bit late and I have classes tomorrow so I am going to be signing off.. goodnight

0
georgegk

I just realised I start every single devlog with after … but I can’t think of any better way. Anyways after I designed and made the sandbox menu slide in and out of the screen I went ahead and added some functionality to it, cause the buttons are pretty and all but pretty useless if I don’t wire them up properly. And so I managed to route the button clicks to my simulation engine (holy shit this architecture is getting a bit difficult to track, I have so many subscripts on the subscripts that I just spend my time figuring out the optimal way to transport info). I also had to make sure the green colour was always synced even if the buttons were destroyed and recreated by saving their state and finally make the simulation engine properly handle the buttons which wasn’t too difficult since most of the infrastructure was already there.

0
georgegk

So after the last ship I realised that there is not time to waste if I want to get everything in for the lockin deadline so I got started on the next game mode, and that is sandbox. Now what I envision for it is basically the base oakridge map with a custom menu that allows you to trigger all kinds of cool stuff, like events and generator trips and cyberattacks ect. So I built a nice menu that you can open like the FNAF cameras if you have ever seen those, you swipe your mouse to the right and it slides open where you have a bunch of buttons you can use to control the game. You can see that in the video attached below.

0
georgegk

Shipped this project!

Hours: 10.36
Cookies: 🍪 301
Multiplier: 29.09 cookies/hr

Showcase video: https://youtu.be/BI512Jm9dFE
What is this project? If I had one word to describe it it would be: an experience. You really get a feel for the job a grid controller has, what happens in our daily lives to maintain this service with a nearly 100% uptime. It almost feels like magic. That’s what I was going for. The physics behind it are pretty complex, I am sure you don’t wanna hear about that right now and get bored (all the details are in the readme if you are interested). Generally this project helped me grow a lot as a developer and further develop the skillset required to create amazing videogames. But this story is far from over, we still have so many features left to implement (over half the buttons are still locked!). Hope you enjoy this game and I will be here for the next part of this journey.
UPDATE 1:Since the last ship I mainly added the settings menu, fixed bugs and added music
UPDATE 2:Since the last ship I added random events and control centers

georgegk

Ok so I decided to integrate a few more random events. For starters I added a random line trip that can happen during the winter due to heavy snow build up. After that I decided to add a winter storm( or whiteout as I like to call them) that causes power demand to increase by up to 10% and increases the rate at which lines trip due to snowfall. That’s mostly it, other than that I rewrote some parts of the readme to reflect the new changes in control, random events and build the new executables for the release. After I uploaded everything I discovered a game breaking bug in the storm alarm and had to rebuild everything but it should be fine now.

Attachment
0
georgegk

So after my last update I went ahead and started to integrate that cyberattack random event but I realised that the tripped line alarm was not informative enough. What I mean is that you can’t easily pinpoint which line tripped since you either had to know each line’s name by heart or quickly opened every info panel and compare the name. That’s why I decided to make the tripped lines display a redder colour but still with respect to the voltage of each line. Then I decided that every 5-7 minutes during the cyberattack a random line will be tripped until you boot up and change to the backup center. 55-65 minutes after you switch the cyber attack will end (the expected time of end is displayed in the backup center’s info panel) and you can go back to normal.

Attachment
Attachment
Attachment
0
georgegk

Ok so after the last devlog I decided that to actually integrate that cyber attack random event the player needed to have the ability to manually transfer operations to the backup control center without causing a 15m control black out. The main control center now has 2 buttons, when you press startup the startup sequence on the backup center starts up and after it completes you press the transfer button put the main center on standby. Now to transfer the control back you just press startup and after 60 in game minutes control is automatically transfered back. Additionally I added a way for you to view at what time the center will startup, then copied the same system for the generator startups and lastly fixed a weird bug with the interconnect where the load bar was subtracting the import mw from the total generation instead of adding it (oops:))

Attachment
Attachment
Attachment
Attachment
0
georgegk

Ok so I forgot to devlog for a bit but I have been working hard to implement a few new features mostly random events. My first one was a relatively simple one where you randomly get notified that a large vessel will dock at the port in 2 hours. This will marginally increase the power draw of the port load node by up to 200 MW and it will stay that way for 8 hours until it departs and the load returns to normal. Integration was not that hard since I already had a _tick_events() function that handled random generator malfuntions so I just added this new event with all the managment it needed, altough I am still trying to figure out the rate at which it should happen. I then decided to go with an event where cyber attacks by foreign actors caused your control to be interrupted but I then realised that I never placed down any control centers. So I went ahead and designed to icons one for the normal control center and one for the backup control center and placed them down near the center of the map manually creating 2 distribution lines connected to each center the central substation. The main center starts as operational and draws 90MW while the backup center starts as standby at a flat 10MW draw. If for any reason power to the main center fails the backup center begins a startup sequence to take over that takes 15 minutes. When the main center comes back online it starts at standby and automatically enters a startup sequence that takes 60 minutes after which it takes over and puts the backup center back at standby. Now at any moment that neither center is operational (backup center starting up, major power failure ect.) the user loses control of everything: All of their info panels are closed and they are prevented from opening new ones, the frequency gauge goes gray and shows N/A, the alarm panel clears and only shows “No operational control centers”, the status panel shows no score/generation and the gen/load bar shows nothing. This state is automatically reverted when a control center boots up but in the event that no center can the player has effectively lost. And that’s where we are at right now, this was a long one and there are more to come!

Attachment
Attachment
Attachment
Attachment
Attachment
0
georgegk

Shipped this project!

Hours: 11.42
Cookies: 🍪 283
Multiplier: 24.81 cookies/hr

Showcase video: https://youtu.be/BI512Jm9dFE
What is this project? If I had one word to describe it it would be: an experience. You really get a feel for the job a grid controller has, what happens in our daily lives to maintain this service with a nearly 100% uptime. It almost feels like magic. That’s what I was going for. The physics behind it are pretty complex, I am sure you don’t wanna hear about that right now and get bored (all the details are in the readme if you are interested). Generally this project helped me grow a lot as a developer and further develop the skillset required to create amazing videogames. But this story is far from over, we still have so many features left to implement (over half the buttons are still locked!). Hope you enjoy this game and I will be here for the next part of this journey.
Since the last ship I mainly added the settings menu, fixed bugs and added music

georgegk

Ok so I didn’t do too much, I just updated the readme with the new info, pushed all of the project files to github, built the game for macos using github actions (took a while to get it working) and built the game for linux using my dual boot ubuntu. I also recorded and published a showcase https://youtu.be/BI512Jm9dFE

Attachment
0
georgegk

Ok so I was just testing the game when realized that I didn’t have any way to view the status of a specific power line. So I went ahead and made a menu that displayed that with all of its stats like status, voltage, thermal limit, load ect. But as I was looking around the map with the new menu I saw that every line had a load of 0. Obviously that shouldn’t be possible so I dug around my simulation engine to try and find an explanation. I won’t bore you with the technical side of things it was basically numpy silently failing when it recieved arrays full of zeros but I fixed that and everything looked good to go. But then I tried to trip a line as a test and the network beyond it somehow still functioned like it was connected. It was more technical math that was causing the issue so I decided to fix it by calculating which nodes where connected by active lines to the main substation and only allowing them to operate if they were. I then had to go to the generators and make them immediately trip and go to 0 if they aren’t connected, go to storage and make it disconnect and stop providing power if it isn’t connected and go to loads and make them disconnect and not have any demand if it isn’t connected. After that was fixed I saw that many power plants did not have any lines connecting them to the grid so I went and manually edited the map json to create a few new lines. And last but not least many lines would just immediately trip cause I set the thermal limit on most of them way too low and had to calculate new values for every line.

Attachment
Attachment
Attachment
Attachment
Attachment
Attachment
0
georgegk

So I kinda forgot to devlog for a bit so here is a breakdown of what I did in those 4 hours. I first integrated the menu option fullscreen which I had literally no idea how to do but after googling it I just need to put a specific flag in the screen command so I messed around with different flags until I got a configuration that worked. Then I needed to integrate the different frequency options in the second option which required me to find every single use of frequency and change it to accommodate both 50 and 60hz. After that I had to find a few good royalty free songs for the soundtrack. I settled on 4 songs with 1 being a bit more fast paced. I then created a system that automatically plays songs and advances the current track index but has a fallback in case for some reason if fails to initialize the audio to prevent crashes. I also integrated the last option that simply prevented the fast paced from playing when enabled. Lastly I decided to add your battery usage as a factor to determining your score and made it so when you hover your mouse above the menu it displays a breakdown of what’s contributing.

P.S. I completely forgot about this but I improved the tutorial like a lot. I made your screen pan by itself to not cover the node you needed to click and highlight the menu of said node when necessary. Overall it should make it much clearer and more understandable!

Attachment
0
georgegk

Ok so I continued to work on the menu, trying to think of more ideas for the settings. I eventually decided on those 4 and built 2 other reusable input classes: slider and toggle button. The implementation wasn’t too complicated since I just copied the toggle class and made adjustments to fit each time. It took a bit to get each slider working but overall I am incredibly happy with this result

Attachment
0
georgegk

I read all of your feedback and I am very thankful for your incredibly high votes ❤️! I wrote down in my todo list all the suggestions so I will have to integrate those before I move on to the other features. Now I decided to ditch claude on the ui help and do everything myself so naturally I am way slower but it does feel better. I just hope I maintain the high quality. Right now I am working on the settings menu and I made a reusable toggle button class to choose the frequency.

Attachment
0
georgegk

Shipped this project!

Hours: 24.75
Cookies: 🍪 665
Multiplier: 26.86 cookies/hr

What is this project? If I had one word to describe it it would be: an experience. You really get a feel for the job a grid controller has, what happens in our daily lives to maintain this service with a nearly 100% uptime. It almost feels like magic. That’s what I was going for. The physics behind it are pretty complex, I am sure you don’t wanna hear about that right now and get bored (all the details are in the readme if you are interested). Generally this project helped me grow a lot as a developer and further develop the skillset required to create amazing videogames. But this story is far from over, we still have so many features left to implement (over half the buttons are still locked!). Hope you enjoy this game and I will be here for the next part of this journey.

georgegk

Nothing much to say I just wrote up the readme.md and pushed everything to github. It was pretty easy, mostly a lot of copy and pasting from different documentation I have written up to help me with development and giving claude a final pash to have it polish it

Attachment
0
georgegk

This alpha is ready to be published. Now I don’t have all the features ready just the tutorial and simulation, but I want to get some feedback on the game and physics before I continue, that’s why I am going to ship shortly after I write the readme.md. In the meantime I added this tutorial with gates to guide the player through the mechanics and allow them to interactively learn the game. Lastly I also added a small disclaimer to the main menu when you boot the game that includes some important info about the current state of development.

Attachment
Attachment
Attachment
Attachment
Attachment
0
georgegk

After the last devlog I decided the simulation itself was good so I went on to build the game over screen and main menu. I started with the game over making it show your score and reason for failure and allowing you to either restart (click or press R) or return to the main menu. Now for the main menu I decided to show all the game modes I am planning and have described above and have them locked. All except for the Realistic Simulation which is the one I have developed currently. Now as you see I have high ambitions for this project and I hope I will be able to complete it. For now I am going to build the tutorial, see you later!

Attachment
Attachment
0
georgegk

ok yeah it was in fact not functional. It was a lot of bug fixes before I got them to work without crashing but they eventually did. Now I realized that I had been applying the droop to the freq wrong so I fixed that, but then realized that I should have been applying it to _tick_dispatch so I moved it over to there, but then again realized that I had the inertia calculations and then finally decided that it made the game too easy so I removed and just kept some basic inertia. Now I also fixed other less note worthy bugs making this game more playable. I think we are approaching a point where I think I can somewhat ship this as a way to get feedback on the concept/gameplay/ everything else. Wait I also forgot to say that I added time multipliers that make the simulation run faster and retrofitted the time indicator to also show minutes

Attachment
0
georgegk

Ok so I finally got back into developing this game after finishing a couple of other projects and I am off to a great start. I started by trying to improve the load shedding simulation cause it was causing this weird oscillation going in a loop low freq -> load shed -> high freq -> load restore - > low freq but I eventually realized that this load/restore would probably make the game way too easy so I am thinking of maybe removing it and having the user manually shed and restore per load (right now I just have the trigger frequency at 50 meaning it just never gets triggered). Other than that I started work on the controls which I have scripted in but am like 95% sure don’t actually work without crashing the game (I guess we will find out soon enough). I had to do some weird spaghetti code to get everything properly wired up for the event loop so I got no idea what consequences that had for the rest of the triggers. That’s all for now let’s get back to it.

Attachment
Attachment
Attachment
0
georgegk

I did not in fact add controls. I was about to but I got side tracked cause my simulation script has a lot of bugs. First of all I had to readjust the demand tick function to gradually move from hour to hour instead of instantly changing and making the grid collapse. I also had to add a clear alarms button since alarms just kept pilling on without being removed and I realized that load never got shed, since I have made a typo when reading the node data and the script thought that no nodes could shed. It took me a long time to find all those and there are probably way more I just haven’t noticed yet. This is more complex than I thought but I am still having a lot of fun.

Attachment
0
georgegk

log time, no log (or whatever the saying is). I finally made the Simulation Engine™ for the game and let me tell you it was a lot of math/physics. The only thing that saved me was pen and paper where I manually organized the formulas I was gonna use for this. I won’t get into it here but it’s a lot of math, swing equations and so on and so on (some I didn’t even know myself, google saved me). I kind of haven’t connected it to the interactive menus (or created any controls), expect for the HUD, so I don’t exactly know if it’s functioning or not, I guess we will find out soon enough once I connect everything together. I fear that I haven’t written _tick_dispach() correctly to account for wind and solar so I will have to correct that like right now.

Attachment
0
georgegk

I completed the rest of the HUD. It has a gen VS load bar in the bottom middle that shows out difference in production/ demand, a panel in the top left to show the time, season, day, and some production statistics and lastly an alarm panel that shows how much we are exporting/ importing and a few important alarms whenever they happen. This project is going really well however the complicated math is starting to get to me.

Attachment
Attachment
Attachment
0
georgegk

So I designed this analog meter to display the current grid frequency to the player, but then I realized that it is a bit hard to read so I also added a digital display and a label to describe the current state. I will also have those warning displayed elsewhere in the HUD but it’s nice to have them right below there too. I like this design a lot I feel like the colours just pop

Attachment
0
georgegk

So I made this nice info screen. It might not look like much but it took quite some time to have it all functional and displaying text (I just noticed that the label text can overflow, I only fixed the overflow in the content area), after all I had to make the program that read the saved map file and rendered the data. I haven’t talked about the map at all. So I want it to be totally customizable and be able to include custom scenarios that’s why I have decided to save the maps as .json files that the player can choose from.

Attachment
0
georgegk

So update time! over this 1.5h I decided that I didn’t want to load the icons as files but instead have them generated using python, so with some help from claude I designed this system that creates an icon for each type of node. Now it did take quite some time to figure everything out but overall I like the new look, it feels very pygamey which is what I am going for with this project. I have zoomed in a bit so the labels are visible (I will probably need to fix that overlap won’t I)

Attachment
0
georgegk

So I mostly worked on getting everything basic setup, I have brain stormed this project quite a lot and I have decided to base the main map around oakridge alaska (shoutout: Oakridge Nuclear Power Station you have been a great inspiration in this project that’s why I am giving you the main map). It is a “small” exporter city with nuclear, hydro, solar, wind and gas peakers a perfect combo to implement a variety of features. Plus the subarctic location allows for weather features and interesting ice/temp related challenges. This is nothing too complicated yet just some transmission lines, a pannable map and some random nodes.

Attachment
0