Show More
Commit Description:
Add issue.
Commit Description:
Add issue.
References:
File last commit:
Show/Diff file:
Action:
TODO.taskpaper
303 lines | 14.1 KiB | text/plain | TextLexer
303 lines | 14.1 KiB | text/plain | TextLexer
r48 | ||||
Gameplay: | ||||
Money: | ||||
r63 | - Add basic subsidy @milestone(1: Basic Money) @done(2021-01-27) | |||
r55 | - Basic Balance sheet | |||
r63 | - 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 | ||||
r420 | - Money graph @maybe | |||
r103 | Procgen: | |||
r94 | short phase, maybe? | |||
r420 | - Add some procedurally generated dialog @maybe @milestone(2: Procgen) | |||
r129 | - Add some procedurally generated newspaper @maybe @milestone(2: Procgen) @done(2021-03-15) | |||
r103 | - Basic NEWS tab @milestone(2: Procgen) | |||
r129 | - Different tabs for different sources @done(2021-02-21) | |||
r103 | Straight-ahead news, tabloid, and something environmental? | |||
r128 | - Write a small number of testing @done(2021-03-15) | |||
r129 | - Write five stories for each source | |||
- Arborist | ||||
r145 | - Wire @done(2021-03-22) | |||
r129 | - True | |||
r145 | - Figure out update interval @done(2021-03-22) | |||
r129 | - Better NEWS tab | |||
- Images for some stories | ||||
- More stories—a dozen for each source? | ||||
r48 | Logging: | |||
r202 | - Add contract struct @milestone(3: Contracts) @nvm | |||
r218 | - Add tree simulation @milestone(3: Contracts) @done(2021-04-27) | |||
r217 | - Add contract generation @milestone(3: Contracts) @done(2021-04-12) | |||
r203 | - Outline reserved areas @milestone(3: Contracts) @done(2021-04-09) | |||
r297 | - Add company images @milestone(3: Contracts) @maybe @done(2021-05-21) | |||
- Contracts should end | ||||
r48 | Trees: | |||
r53 | - Add basic maintenance cost @milestone(1: Basic Money) @done(2021-01-27) | |||
r48 | - Add basic age simulation | |||
r636 | - Add water @milestone(6: Trees and Tiles) @done(2022-07-24) | |||
r418 | - Biodiversity @maybe @milestone(6: Trees and Tiles) | |||
r552 | - Tree Types @done(2022-01-27) | |||
r550 | - Grass? | |||
- Biodiversity score? | ||||
r48 | - Research agreements @maybe | |||
r63 | - Forest rangers allocatable as law enforcement? @maybe | |||
Have to think about thematic implications | ||||
r216 | - Have an "enforce trespassing" policy | |||
Seems like a good way to get started? | ||||
Reduces cost of vandalism repair? | ||||
- Sell Firewood? | ||||
r551 | - Preserve @milestone(6: Trees and Tiles) | |||
r552 | - Add preserve tool @done(2021-02-17) | |||
r583 | - Add bulldozer @done(2022-03-16) | |||
r552 | - Adjust odds in preserve @done(2021-02-20) | |||
- Dialog | ||||
- Assistant warns when a lot of the map has been made into preserve? | ||||
r677 | Maybe a lot made into preserve at once? | |||
- Congratulations when reaching a majority @done(2022-12-14) | ||||
r552 | Maybe 75 percent | |||
r677 | - Make them less easy to game | |||
Right now they are free to add and remove, meaning you could make the whole map preserve until you need it for something else | ||||
One option: penalize if user switches them too early | ||||
Another option: charge nominal amount | ||||
Another option: benefits take time to accrue. Avoids punishment | ||||
Maybe a combination: benefits accrue after an area has been preserved for a while? Tourism ceases immediately. And you don't get offers to build on that land? Or fewer offers? | ||||
r63 | Staff: | |||
r420 | - Ranger staffing? @maybe @milestone(1: Basic Money) | |||
r63 | - Staffing window | |||
- Ranger allocation | ||||
r130 | - Set employee salaries, leave, etc. @maybe | |||
r63 | - Figure out roles: ranger, educator, researcher? | |||
Don't want to be too derivative | ||||
r103 | - Employee training mechanic @maybe | |||
r48 | Leisure: | |||
r418 | - Add way to mark off area for leisure @milestone(7: Leisure) | |||
r551 | Maybe add leisure items instead? | |||
r604 | Or both? | |||
r551 | - Add paths @milestone(7: Leisure) | |||
r418 | - Basic satisfaction @milestone(7: Leisure) | |||
r420 | - Set | |||
r48 | End games/outcomes: | |||
r458 | - Financial mismanagement @milestone(5: Events) @done(2021-10-23) | |||
- Figure out threshold @done(2021-11-07) | ||||
r48 | - Self-sufficient | |||
i.e., no need for subsidy | ||||
May not be ending | ||||
r552 | - Forest mismanagement @milestone(5: Events) @done(2021-12-12) | |||
r583 | - Figure out threshold | |||
r48 | - 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 | ||||
r94 | - 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) | ||||
r48 | - Research center @maybe | |||
r94 | 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.) | ||||
r420 | Maybe a procedurally generated set of groups with some hard-coded elements? E.g | |||
r48 | Misc: | |||
- Assistant commentary @milestone(5: Events) | ||||
Need to ensure it's not annoying | ||||
r583 | - Basic random events | |||
r474 | - Tree planting campaign @done(2021-09-28) @milestone(5: Events) | |||
- Friends of the park fundraiser @done(2021-11-07) @milestone(5: Events) | ||||
- Federal grant @done(2021-11-27) @milestone(5: Events) | ||||
r484 | - Celebrity visit @original_milestone(5: Events) @nvm | |||
r474 | Probably neets to affect reputation or attendance, which aren't implemented yet. | |||
r94 | - Disasters @maybe | |||
r420 | - Fire | |||
r94 | would probably have to animate | |||
- Disease | ||||
r103 | - Photos for dialog? | |||
r552 | - Graphs window @done(2021-01-05) | |||
r245 | Could use ImPlot for this | |||
r420 | ||||
r48 | Structure: | |||
r583 | - Add modes | |||
r48 | - Refactor stuff out of FNAGame | |||
r373 | At this point, virtually everything in FNAGame is setting up key Engines or doing drawing | |||
r244 | - Saving @prototyped @milestone(4: Beginning) | |||
r583 | - Options are duplicated in too many places: | |||
- Replace Options with OptionComponent? | ||||
- Put Options in OptionMessage? | ||||
- Remove Options from Encompass? | ||||
Options don't seem like a great fit for th ECS model. | ||||
- OptionsWindow should use two Options instances instead of recreating each field. | ||||
Adding an option requires adding variabls | ||||
r216 | - Encompass @maybe @done(2021-04-03) | |||
r94 | 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? | |||
r103 | - Ensure library loads | |||
- Windows | ||||
r213 | - Linux @done(2021-04-19) | |||
r216 | - macOS @done(2021-04-27) | |||
r213 | Technically done | |||
r103 | - Decide how to handle ImGUI ref parameters | |||
Basically have to decide whether to embrace its style or go toward a more functional approach | ||||
r373 | - Add Ink @maybe | |||
r419 | - Add NuGet package @done(2021-08-14) | |||
- Load .Ink files @done(2021-08-14) | ||||
- Rewrite Dialog to show Ink @done(2021-08-14) | ||||
r373 | - SetTextVariable also sets variables within Ink | |||
Technically doesn't have to be done this way, but having what would essentially be separate namespaces for Tracery variables and Ink ones seems confusing. | ||||
r419 | - Integrate with Tracery @done(2021-08-14) | |||
Could run everything through Tracery or could create an Ink function that calls Tracery | ||||
r458 | - Change conversation to use Encompass @milestone(5: events) @done(2021-08-04) | |||
r373 | - Refactor out common ImGUI patterns | |||
r419 | - Tooltips @done(2021-08-21) | |||
- Status indicators (not yet implemented) @done(2021-08-21) | ||||
r373 | By status indicators, I mean putting an icon on, say, the Contracts button to indicate a contract is about to expire. | |||
r218 | - Rearchitect to avoid giving everything access to Simulation | |||
r307 | - Add a start screen @milestone(4: Beginning) @done(2021-06-08) | |||
r244 | - Add a create park dialog @milestone(4: Beginning) | |||
r692 | - Procgen park names (that player can override) @done(2022-08-02) | |||
r244 | - Button to generate new name? | |||
r365 | - Allow player to choose title @maybe @done(2021-07-29) | |||
r244 | 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.) | ||||
r369 | - Allow player to choose difficulty @done(2021-07-30) | |||
r244 | 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) | ||||
r307 | - Basic In-game menu @milestone(4: Beginning) @done(2021-06-13) | |||
r244 | At minimum, New Game, Quit, and Quit to Menu | |||
- Graphics options | ||||
r307 | - Add to in-game menu @done(2021-06-13) | |||
r244 | - Additional in-game menu | |||
- Save | ||||
- Save & Quit | ||||
r635 | - Fix selection | |||
Selections require two components to really work, which is messy and doesn't really fit. A Selection without some sort of associated selection that describes what's selected doesn't really work | ||||
- Turn tools into classes? | ||||
Creating a shallow hierarchy seems a little nicer than the current setup. | ||||
r94 | ||||
r550 | Music and Audio: | |||
Sound Effects: | ||||
r636 | - Generic click sound (push button) @done(2022-05-09) | |||
r550 | - Cheer/boo crowd sound effect | |||
r586 | This is a sorta easter egg and a reference to SimCity | |||
r550 | - Explosion effect (for bulldozer) | |||
r692 | Music: | |||
- Shuffle songs | ||||
- Menu control | ||||
- Experiment with alternate sound font? | ||||
r550 | ||||
r586 | Performance: | |||
Issues: | ||||
r591 | - Seeing up to 32 ms in update on framework-release? @done(2022-05-16) | |||
r596 | - Drawing very large areas is very slow. @done(2022-05-16) | |||
Sorta fixed | ||||
r617 | - Slows to a halt (~7fps) when drawing many preserve squares. | |||
r636 | Drawing each tile individually is very silly when it's just a (big) square anyway. | |||
For edges: Using a dictionary with counts doesn't work either. (~5 fps) Nor using sets. | ||||
Instead need to do the fill and edge-drawing as large regions. | ||||
r669 | - Draw slows down after merely leaving it running @done(2022-11-14) | |||
Debug issue; could be faster but basically solved | ||||
r692 | - Tiles are slow to draw | |||
Sometimes bumps up to 10ms. | ||||
r586 | Structural improvements: | |||
- Button to clear/thin debug buffers? | ||||
Take every nth to reduce counters to past 100 measurements | ||||
- Disable some timing code in release mode? | ||||
Needs some way to enable it. | ||||
- Avoid redrawing tiles every time? | ||||
r669 | Draw tiles once into buffer | |||
r586 | Instrumentation: | |||
r591 | - Time individual sections of update loop @done(2022-05-16) | |||
- Time simulation @done(2022-05-16) | ||||
r586 | - Time each engine? | |||
r48 | Other features: | |||
Accessibility: | ||||
- Verify contrast | ||||
r64 | - Option to Increase display size | |||
r314 | - Add message for font changes @done(2021-06-26) | |||
- Relocate fonts to central place @done(2021-06-26) | ||||
- Remove fonts from DebugWindow? | ||||
- Adjust window dimensions when font changes | ||||
r420 | - Option to Turn off bad outcomes or disasters @maybe | |||
r314 | - Dyslexic-friendly font @maybe @done(2021-06-26) | |||
Cursory research indicates open sans-serif fonts are best, | ||||
although fonts only help so much. (Monospaced fonts are also cited as good options so Iosevka might already be good enough. Still, I added Roboto.) | ||||
r420 | ||||
r244 | - 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 | ||||
r205 | - No fees when contracts break | |||
- Contracts go dormant instead of ending. | ||||
r48 | Other QoL things: | |||
r313 | - Adjust display size @done(2021-06-23) | |||
r48 | - Toggle trees translucency | |||
r244 | Right now we hide trees outright, which probably should be limited to debugging | |||
r313 | - Right click to center @done(2021-06-06) | |||
r244 | 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. | ||||
r567 | Balance: | |||
- Hard mode is impossible with current map size. | ||||
Upkeep is too much money. | ||||
Might be addressed by adding staff instead of fixed upkeep. | ||||
r128 | Bugs: | |||
Graphics: | ||||
r526 | - Trees jump around when pressing show/hide grid @done(2022-01-23) | |||
r391 | - Grids sometimes overlap trees, including area overlays | |||
r526 | - Trees sometimes overlap each other @done(2022-01-23) | |||
r527 | - Area overlays overlap trees @done(2022-01-24) | |||
r128 | - Sometimes framerate jumps to 180-200 fps. (Better than reverse, but kinda weird) | |||
r311 | - Graphics don't adjust for the resolution | |||
r312 | - Scroll area @done(2021-06-23) | |||
r311 | - Ingame Menu @done(2021-06-22) | |||
- Main Menu | ||||
r391 | Simulation: | |||
r583 | - Can keep playing after losing if you don't acknowledge the loss in the dialog | |||
r550 | - Create preemption/priority system | |||
Have to decide whether to have two levels: normal/preempting or a series of priorities | ||||
r392 | - Expired areas can't be reused. @done(2021-08-07) | |||
r669 | - Trees seem to spawn in lines. | |||
Is it only spawning neighbor trees in one direction? | ||||
r458 | Dialog: | |||
- Dialogs don't appear after | ||||
r567 | Crashes/Stability: | |||
- News window crashes. | ||||
- Drawing error when clicking sometimes on main screen. @done(2022-04-27) | ||||
Tries to draw area? | ||||
- Crash when extending preserve past bottom. @done(2022-04-27) | ||||
- Segfault on quit (when it tries to dispose of the sound) or on playing sound on Linux | ||||
May be due to a quirk of my Linux setup | ||||
r583 | - Weird ImGui crash: | |||
dotnet: /home/alys/repos/outside/ImGui.NET-nativebuild/cimgui/imgui/imgui.cpp:6293: bool ImGui::Begin(const char*, bool*, ImGuiWindowFlags): Assertion `name != __null && name[0] != '\0'' failed. | ||||
r586 | - Crashes after exiting a game. | |||
Seems to be a draw issue (Batch hasn't begun.) | ||||
In Area renderer? | ||||
r680 | Also happens when you lose. | |||
Unhandled exception: System.InvalidOperationException: Draw was called, but Begin has not yet been called. Begin must be called successfully before you can call Draw. | ||||
- No handler for Ink errors. | ||||
There really shouldn't be any way to run into an Ink error, but they will probably slip in. | ||||
r707 | - Seems to get stuck and the simulation stops updating | |||
This has been around for a while, but this is getting more noticeable. | ||||
r213 | Misc: | |||
r586 | - Starting a game after exiting a previous one doesn't really work, afaict | |||
Also crases, but I suspect the crash isn't related. | ||||
r458 | - Events may not be deleted | |||
r474 | - Exits are messy (does Encompass add threading?) @done(2021-11-28) | |||
r583 | Appears to be fixed by using Game.Exit | |||
r213 | [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) | ||||