Giter VIP home page Giter VIP logo

sure_wp3's Introduction

  • ๐Ÿ‘‹ Hi, Iโ€™m a computer nerd from Switzerland who likes thinking about languages and how we can make them better.
  • ๐Ÿ‘€ I like designing tools that make it easier to describe complex things correctly and reliably. When I get imposter syndrome, I try building some automated testing thingies to convince myself that the stuff I build works.
  • ๐Ÿ“ซ You can reach me via email ([email protected]) or on mastodon.
  • โœจ You can find my favorite stuff pinned on my profile ;), as well as on personal my website (WIP).

For Software

  • Most of my work is usually working on a compiler or building some automated testing thingy. I do occasionally still dable in video-game dev, but I feel like that arc has reached its end.
  • I will sometimes dable in something completely unrelated, so always keep your eyes open for that ;).

For Hardware

  • I like reasoning about hardware, not so much developing it.
  • Most of my work here will be on the languages people use to express designs and not the designs themselves.
  • I've been doing a lot of work on the verification parts of CIRCT and Chisel lately.

For Video-Games

  • Godot is great, lightweight, easy to use and FOSS.

Current Projects I'm Working on

Here is a list of the different projects that I'm currently actively working on.

Various CIRCT, Chisel, and FIRRTL verification stuff

  • Field: Hardware Verification / Hardware Compilers
  • Language: C++ / MLIR / LLVM / FIRRTL / Scala / BTOR2 / SMTLib / SystemVerilog
  • Description: Extending and unifying the verfication features of CIRCT.

sure_wp3's People

Contributors

astonedf avatar dobios avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

daveb-dev

sure_wp3's Issues

Model Shocks

The goal is to have events that are triggered at the end of each turn and effect specific aspects of the player's resources.

A detailed list of the shocks can be found on notion.

Dynamic UI

The goal is to make the current static UI dynamic. This means enabling all of the interactions as well as dynamic updates of the different fields in the UI, such as resource bars, info boxes, etc...

Model Societal impacts

The goal is to model the impact certain decisions have on the people. This is done by managing the modelling metrics:

  • Salary range: a fixed unit that shows the overall wealth your population has
  • Energy stability: Models the frequency at which the population's energy demand is met.
  • Energy Affordability: Models how affordable the current energy is. This becomes lower if there is a higher availability than demand.

All of these metrics are then put together into an overall "support" amount.

Model Importing Energy from the global market

The goal is to be able to import energy from abroad in order to meet the current demand. This can be modeled as a percentage of the total energy demand, and will simply be a field inside of the overall energy management system. The idea is to have this increase every turn by a linear factor scaled by said percentage, such that the more we import, the more expensive it gets to import.

The game needs to be in 4 languages (CH + EN)

I'm gonna start by extracting all of the text to xml files, then work on translating stuff.

  • Extract text to XML Files
  • Read out XML Files to display the text generically
  • Translate the text to French
  • Translate the text to German
  • Translate the text to Italian
  • Give the user access to a language button somewhere

This is probably going to take a while to fully implement.

The game needs an end screen

We need an end screen after 2050 that lets the player know they've finished the game and gives them their stats and a score (TBD)

Create Buildings

The goal is to allow the player to be able to create new buildings such that:

  • They are only placed in designated locations on the map
  • Some buildings (such as the hydro-electric plant) can only be built at specific locations
  • When a build button is clicked, it shows all available buildings that can be built

Buildings would be modeled using the following units:

  • Pollution amount (can be negative)
  • Land use amount (can increase over time if unit grows)
  • Production cost (cost of keeping the unit active)
  • Building cost (cost of creating the unit)

For the demo, we will allow for the following units to be built:

  • Hydrolic power plant: Can only be built at specific locations, is a long term project that takes 5 turns (15 years) to complete, with a high building and production cost during the construction turns, but a very low production cost and high energy yield after the construction.
  • Gas power plant: Causes a high amount of pollution, has a low construction cost, requires raw material imports which yield a production cost, produces the same amount of electricity year round.
  • Solar power plant: Has a dynamic size that can be increased over time (varied building cost but low/no production cost), does not pollute, has a negative impact on land aesthetics and takes up a lot of space.
  • Plant Trees: This uses up any build spot, but reduces the net pollution.

A full list of the available buildings can be found on notion.

Model Environmental impacts

The goal is to model the impact that certain decisions would have on the environment. To do so we want to focus on:

  • Total net pollution (some buildings generate pollution, some are neutral, and some reduce pollution)
  • Total land use (all buildings take up space, some more that others, which has a negative impact on the environment).

A low environmental score (high pollution, high land use) will cause a higher amount of shocks to take place each turn. These can lead to difficulties such as droughts (less/no energy is produced by hydrollic plants), harsh winters or so on...
The goal is to reach net zero pollution by 2050.

Add building cost of plants in build menu

The power plants display the energy produced and the production costs but not the building cost which should be a separate label that only appears in the build menu.

Model and Define Policies

The goal is to model all of the policies shown in the policy window.
This can only be done once all of the base-game stuff has been implemented so it will have to wait for now.

Cannot build trees

E 0:00:19:0461 ModelTypes.cs:353 @ Single Capacity._GetField(Building ): System.ArgumentException: No field is associated to the given type!
<C# Error> System.ArgumentException
<C# Source> ModelTypes.cs:353 @ Single Capacity._GetField(Building )
ModelTypes.cs:353 @ Single Capacity._GetField(Building )
Context.cs:125 @ void Context._UpdateModelFromClient(PowerPlant , Boolean )
BuildButton.cs:170 @ void BuildButton.FinishBuild()
BuildButton.cs:130 @ void BuildButton._NextTurn()
ResourceManager.cs:82 @ void ResourceManager._NextTurn(MoneyData& )
GameLoop.cs:173 @ void GameLoop.UpdateResources(Boolean )
GameLoop.cs:287 @ void GameLoop.NewTurn()
Callable.generics.cs:39 @ void Godot.Callable.g__Trampoline|1_0(System.Object , Godot.NativeInterop.NativeVariantPtrArgs , Godot.NativeInterop.godot_variant& )
DelegateUtils.cs:62 @ void Godot.DelegateUtils.InvokeWithVariantArgs(IntPtr , System.Void* , Godot.NativeInterop.godot_variant** , Int32 , Godot.NativeInterop.godot_variant* )

Add Context for data collection

We want to have a cool stats screen at the end of the game. To do this, we need to record the evolution of the different stats at the end of each turn.

Gather player statistics and data for use in model

The model gives us data about the amount of energy produced per plant type.
We want energy per plant, so we need to gather statistics about the types of plants constructed.
This can simply be done by aggregate the powerplant types on demand or via a context object.

Model basic energy systems

The goal is to enable basic energy management, such that:

  • There is an Energy Capacity that represents the theoretical maximum energy production given the current buildings.
  • There is an Energy Availability that represents how much energy can be used right now, this is lower in the winter and higher in the summer
  • There is an Energy Demand that represents how much energy is required to meet the usage of the population. The demand increases linearly each turn, and is higher in the winter and lower in the summer.

Create Game loop

The goal is to have a turn based game loop which handles the updates of all of the elements in the game.

Enable Events for the model

Currently, we are only initializing an instance in the model and gathering data from it, we aren't telling the model anything about our game's state. We can change this by enable the creation of events in the model to update the data.

Factor out Power Plant configurations to an XML file

Currently, all power plant configurations are done directly in the editor. The problem is that there are like 3 different copies of each plant across 3 different scenes, so it's super confusing to update.

As a solution, I propose centralizing the power plant config into an xml file in the db folder. This will make it so that changes only need to be made in a single place and will make UI debugging easier.

Destroy button (x) on new plants

Need a delete button (x) on the newly built power plants to let the player undo the actions for the current turn, but once the next turn is started, the player can no longer delete the new plants (we could hide the x button). He cannot destroy a plant that has taken a few turn to be built but he can cancel it day 1.

Import not working

I think there's something wrong with E.DemandWinter in _ComputeImportAmount() in EnergyManager.cs
It also wasn't updating straightaway due to the predict in ResourceManager.cs

Allow for an offline mode

If the player doesn't have internet access, use to original estimates rather than the model data.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.