Gameplay: Money: - Add basic subsidy @milestone(1: Basic Money) @done(2021-01-27) - Basic Balance sheet - Basic balance sheet @milestone(1: Basic Money) - Basic display @done(2021-01-27) - Movement @done(2021-01-27) - Close button @done(2021-01-28) - Better appearance - Money graph @maybe Procgen: short phase, maybe? - Add some procedurally generated dialog @maybe @milestone(2: Procgen) - Add some procedurally generated newspaper @maybe @milestone(2: Procgen) @done(2021-03-15) - Basic NEWS tab @milestone(2: Procgen) - Different tabs for different sources @done(2021-02-21) Straight-ahead news, tabloid, and something environmental? - Write a small number of testing @done(2021-03-15) - Write five stories for each source - Arborist - Wire @done(2021-03-22) - True - Figure out update interval @done(2021-03-22) - Better NEWS tab - Images for some stories - More stories—a dozen for each source? Logging: - Add contract struct @milestone(3: Contracts) @nvm - Add tree simulation @milestone(3: Contracts) @done(2021-04-27) - Add contract generation @milestone(3: Contracts) @done(2021-04-12) - Outline reserved areas @milestone(3: Contracts) @done(2021-04-09) - Add company images @milestone(3: Contracts) @maybe Trees: - Add basic maintenance cost @milestone(1: Basic Money) @done(2021-01-27) - Add basic age simulation - Biodiversity @maybe - Research agreements @maybe - Forest rangers allocatable as law enforcement? @maybe Have to think about thematic implications - Have an "enforce trespassing" policy Seems like a good way to get started? Reduces cost of vandalism repair? - Sell Firewood? Staff: - Ranger staffing? @maybe @milestone(1: Basic Money) - Staffing window - Ranger allocation - Set employee salaries, leave, etc. @maybe - Figure out roles: ranger, educator, researcher? Don't want to be too derivative - Employee training mechanic @maybe Leisure: - Add way to mark off area for leisure @milestone(6: Leisure) - Basic satisfaction @milestone(6: Leisure) - Set End games/outcomes: - Financial mismanagement @milestone(5: Events) - Figure out threshold - Self-sufficient i.e., no need for subsidy May not be ending - Forest mismanagement @milestone(5: Events) - Figure out threshold - High biodiversity? @maybe - High satisfaction - Figure out how to differentiate this from forest health - Hat Trick: Satisfaction, Forest Health, **and** Self-Sustaining - Figure out extent that this should even be possible? Thematically, maybe dubious? On the other hand, could be something that requires luck It's possible in SimSafari - Land repatriation to indigenous @maybe Like the acknowledgement, don't want it to be too white savior-y (although obv. player isn't necessarily white) - Research center @maybe - Community: Differing reputation with different groups. Could mix more and less political. Don't want to go too Democracy 3/4: being able to affect the group size via policy is probably out. (Groups being intersectional might work, but is kind of tricky.) Maybe a procedurally generated set of groups with some hard-coded elements? E.g., Misc: - Assistant commentary @milestone(5: Events) Need to ensure it's not annoying - Basic random events @milestone(5: Events) - Tree planting campaign - Friends of the park fundraiser - Federal grant - Celebrity visit - Disasters @maybe - Fire would probably have to animate - Disease - Photos for dialog? - Graphs window Could use ImPlot for this Structure: - Add modes @milestone(5: Events) - Refactor stuff out of FNAGame - Saving @prototyped @milestone(4: Beginning) - Encompass @maybe @done(2021-04-03) Currently thinking about a hybrid model where the Simulation class receives a lot of the events from Encompass. so things like Events, Contracts, and Research agreements are handled by Encompass. Perhaps Input, too? - Ensure library loads - Windows - Linux @done(2021-04-19) - macOS @done(2021-04-27) Technically done - Decide how to handle ImGUI ref parameters Basically have to decide whether to embrace its style or go toward a more functional approach - Change conversation to use ImGui - Rearchitect to avoid giving everything access to Simulation - Add a start screen @milestone(4: Beginning) - Add a create park dialog @milestone(4: Beginning) - Procgen park names (that player can override) - Button to generate new name? - Allow player to choose title @maybe Some possibilities: Mr., Ms., Mx., Director, Dr., Professor, Miss, Col., Herr Dr. Dr. nothing, custom Might be fun to have tiny acknowledgement of choice — probably dialog only, no mechanical change. (E.g., a researcher might allude to you having a PhD. or an enby character might say something comiserating.) - Allow player to choose difficulty I'm thinking: Easy would be constant subsidy, Medium would be declining subsidy, and Hard would be none. Could name them Benevolent, Austerity, and Hostility? Or Conservationist, Austerity, Libertarian? (Maybe too pointed!) I kind of like describing these as the government's "orientation" or "attitude" toward park. - Allow player to choose profile image @maybe Same style as rest of the game (dithered b&w, at least right now) - Basic In-game menu @milestone(4: Beginning) At minimum, New Game, Quit, and Quit to Menu - Graphics options - Add to in-game menu - Additional in-game menu - Save - Save & Quit Other features: Accessibility: - Verify contrast - Option to Increase display size - Option to Turn off bad outcomes or disasters @maybe - Dyslexic-friendly font @maybe - Screen reader support @maybe Would probably be a big undertaking (sort of opposite to the web, where things tend to be accessible unless you start reimplenting things or going more advanced) - Investigate .NET support for screen readers - Ask on social media - Moontools Discord - FNA Discord - Mastodon - Figure out a good screen reader to use for testing - macOS - Windows - Linux - Look for prior art - Add a "describe" button/key that speaks the current scene @maybe - - Option to Turn off bad outcomes or disasters? - No fees when contracts break - Contracts go dormant instead of ending. Other QoL things: - Adjust display size - Toggle trees translucency Right now we hide trees outright, which probably should be limited to debugging - Right click to center Internationalization: - Probably won't pay to translate or anything, but should consider setting up the structure @maybe @milestone(4: Beginning) If nothing else, might be useful for future projects. Bugs: Graphics: - Trees jump around when pressing show/hide grid - Trees sometimes - Sometimes framerate jumps to 180-200 fps. (Better than reverse, but kinda weird) Misc: - Exits are messy (does Encompass add threading?) [xcb] Unknown sequence number while appending request [xcb] Most likely this is a multi-threaded client and XInitThreads has not been called [xcb] Aborting, sorry about that. dotnet: ../../src/xcb_io.c:145: append_pending_request: Assertion `!xcb_xlib_unknown_seq_number' failed. Aborted (core dumped)