Reverse Climate Change! is an idle game designed to simulate a highly-simplified view of the systematic problems we have in first-world countries that cause climate change and some equally-simplified solutions.
Everything in this document is subject to change based on the ideas and preferences of the ACM Projects participants.
The player will start with a city with 5x5 tiles with a random distribution of open, power plant, metropolis, and water tiles with a bias to grouping i.e. where there’s a power plant, it’s more likely that it will be neighbored by another power plant than a metropolis. The goal is to grow your city, in population, money, and land, while keeping your carbon footprint as low as possible. For this goal, the mechanics are similar to SimCity, citizens pay taxes, adding to your money, but having metropolis tiles also costs some money, so you need to make sure that every metropolis tile has enough citizens to turn a profit. And citizens will start moving away if you do not improve the metrics above. As you add more metropolises, they need more power, and sometimes it will make more sense to buy a faster-yielding but high-carbon-footprint power plant to supply it.
The player can expand their city when they have enough money to do so, and the amount of money that this costs is based on the number of tiles added i.e. expanding a 5x5 city to a 6x6 will cost (36-25) * cost per tile.
| Power Plant | Cost to build | Time to build | Carbon footprint |
|---|---|---|---|
| Coal | 45 | 20 | 100 |
| Natural Gas | 50 | 20 | 75 |
| Nuclear | 45 | 60 | 20 |
| Solar | 100 | 75 | 0 |
| Wind | 75 | 75 | 0 |
| Hydroelectric (must be built on water) | 40 | 100 | 0 |
| Metropolis | Cost to build | Max. Citizens | Carbon footprint |
|---|---|---|---|
| Large | 100 | 100 | 100 |
| Medium | 50 | 50 | 50 |
| Small | 25 | 25 | 25 |
For simplicity, the time to build is set at 0 for metropolises
These are all relative values between the highest value 100 and the zero-value 0. The recurring cost of each structure is a function of its cost to build.
An application that implements the features of the game above on a simple GUI. The most important part is implementing the game logic, so I will suggest that we do this on a primarily text-based format before tackling a GUI.
MongoDB. For storing game state because it is open-source and NoSQL which will make it flexible-enough for our needs, and we can use it for free at our scale.
Cocos 2D-X. Completely cross-platform, so it can be used on mobile, web, or desktop, and Corona is cross-platform for mobile environments, though we will be focusing on one over the course of development.
Assets. The art is a super fun part of building a game, but I think it will be helpful to have a few places to go to look for sprites so that does not take up too much time. This pack or this pack might be good for the tiles in the game. We have Oliver Baker creating sprites for us, thank you Oliver!
Cocos Creator (for Cocos 2D-X), a favorite text editor (my personal favorite is Atom but Visual Studio Code is also very good), and everyone’s best friend, Git!
For post-MVP, we could add different types of metropolises or some kind of zoning system à la SimCity. Add upgrade options for power plants in efficiency and carbon footprint Add population expansion for the metropolises
City2048. A beautiful isometric 2D game that inspires my vision of the graphics. SimCity. One of my favorite games ever, inspired the content of Reverse Climate Change!
- Download Git
- Go to the repository, and find "Clone or Download," and copy that link
- Go to a directory on your system
- Open a terminal in that directory
- Run
git clone <URL you copied> - Run
cd <Project directory name>
- Go to the directory from the previous instructions
- Open a terminal in that directory
- Run
git checkout <branch>orgit checkout -b <branch>to start a new branch never develop on the master branch - Run
git pull, this should be done everytime you sit down to develop to help avoid huge merge conflicts - If there are merge conflicts, got to "When resolving merge conflicts"
- Make your changes
- Run
git add <files you want to commit>orgit add --allto commit all changed files - Run
git commit -m <descriptive commit message> - Run
git pushor if there is an error, copy the command given
- Git will throw some ugly looking error
- Go into the files it lists, and you will see some blocks of coded that are divided by
>>>>>>>> <some numbers>
this is some code
======
this is some different code
>>>>>>>> HEAD
Delete all of the tags and one of the blocks of code
- Do this for every file in the list
- Commit those changes
Every feature should exist only on a branch until this happens...
- When a feature is complete and well-tested, push all of the finished code to that branch in GitHub
- Go to the repository and click "Branches," find your branch, and click "New Pull Request"
- Title the Pull Request and write a detailed description of the feature and changes
- Assign us as reviewers
- Once the pull request has been reviewed, the Project Manager only will merge it