Show More
Commit Description:
Add timers for Simulation and various engines...
Commit Description:
Add timers for Simulation and various engines
Starting to add additional timers for different stages of the process of
updating in order to get more insight into what is slowing it down.
The update takes 9ms, which is much longer than it used to.
Engine-specific timers are coming later.
References:
File last commit:
Show/Diff file:
Action:
TODO.taskpaper
270 lines | 11.9 KiB | text/plain | TextLexer
270 lines | 11.9 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 | |||
r418 | - Add water @milestone(6: Trees and Tiles) | |||
- 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? | ||||
r583 | - Congratulations when reaching a majority | |||
r552 | Maybe 75 percent | |||
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? | |||
- 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) | |||
- Procgen park names (that player can override) | ||||
- 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 | ||||
r94 | ||||
r550 | Music and Audio: | |||
Sound Effects: | ||||
- Generic click sound (push button) | ||||
- Cheer/boo crowd sound effect | ||||
r586 | This is a sorta easter egg and a reference to SimCity | |||
r550 | - Explosion effect (for bulldozer) | |||
r586 | Performance: | |||
Issues: | ||||
- Seeing up to 32 ms in update on framework-release? | ||||
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? | ||||
Draw tiles once | ||||
Instrumentation: | ||||
- Time individual sections of update loop | ||||
- Time simulation | ||||
- 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) | |||
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? | ||||
- | ||||
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) | ||||