Show More
Commit Description:
Update TODO with bug.
Commit Description:
Update TODO with bug.
Show/Diff file:
Action:
TODO.taskpaper
285 lines | 12.9 KiB | text/plain | TextLexer
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 @done(2021-05-21)
- Contracts should end
Trees:
- Add basic maintenance cost @milestone(1: Basic Money) @done(2021-01-27)
- Add basic age simulation
- Add water @milestone(6: Trees and Tiles) @done(2022-07-24)
- Biodiversity @maybe @milestone(6: Trees and Tiles)
- Tree Types @done(2022-01-27)
- Grass?
- Biodiversity score?
- 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?
- Preserve @milestone(6: Trees and Tiles)
- Add preserve tool @done(2021-02-17)
- Add bulldozer @done(2022-03-16)
- Adjust odds in preserve @done(2021-02-20)
- Dialog
- Assistant warns when a lot of the map has been made into preserve?
- Congratulations when reaching a majority
Maybe 75 percent
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(7: Leisure)
Maybe add leisure items instead?
Or both?
- Add paths @milestone(7: Leisure)
- Basic satisfaction @milestone(7: Leisure)
- Set
End games/outcomes:
- Financial mismanagement @milestone(5: Events) @done(2021-10-23)
- Figure out threshold @done(2021-11-07)
- Self-sufficient
i.e., no need for subsidy
May not be ending
- Forest mismanagement @milestone(5: Events) @done(2021-12-12)
- 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
- 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)
- Celebrity visit @original_milestone(5: Events) @nvm
Probably neets to affect reputation or attendance, which aren't implemented yet.
- Disasters @maybe
- Fire
would probably have to animate
- Disease
- Photos for dialog?
- Graphs window @done(2021-01-05)
Could use ImPlot for this
Structure:
- Add modes
- Refactor stuff out of FNAGame
At this point, virtually everything in FNAGame is setting up key Engines or doing drawing
- Saving @prototyped @milestone(4: Beginning)
- 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
- 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
- Add Ink @maybe
- Add NuGet package @done(2021-08-14)
- Load .Ink files @done(2021-08-14)
- Rewrite Dialog to show Ink @done(2021-08-14)
- 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.
- Integrate with Tracery @done(2021-08-14)
Could run everything through Tracery or could create an Ink function that calls Tracery
- Change conversation to use Encompass @milestone(5: events) @done(2021-08-04)
- Refactor out common ImGUI patterns
- Tooltips @done(2021-08-21)
- Status indicators (not yet implemented) @done(2021-08-21)
By status indicators, I mean putting an icon on, say, the Contracts button to indicate a contract is about to expire.
- Rearchitect to avoid giving everything access to Simulation
- Add a start screen @milestone(4: Beginning) @done(2021-06-08)
- 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 @done(2021-07-29)
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 @done(2021-07-30)
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) @done(2021-06-13)
At minimum, New Game, Quit, and Quit to Menu
- Graphics options
- Add to in-game menu @done(2021-06-13)
- Additional in-game menu
- Save
- Save & Quit
- 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.
Music and Audio:
Sound Effects:
- Generic click sound (push button) @done(2022-05-09)
- Cheer/boo crowd sound effect
This is a sorta easter egg and a reference to SimCity
- Explosion effect (for bulldozer)
Performance:
Issues:
- Seeing up to 32 ms in update on framework-release? @done(2022-05-16)
- Drawing very large areas is very slow. @done(2022-05-16)
Sorta fixed
- Slows to a halt (~7fps) when drawing many preserve squares.
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.
- Draw slows down after merely leaving it running @done(2022-11-14)
Debug issue; could be faster but basically solved
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 into buffer
Instrumentation:
- Time individual sections of update loop @done(2022-05-16)
- Time simulation @done(2022-05-16)
- Time each engine?
Other features:
Accessibility:
- Verify contrast
- Option to Increase display size
- 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
- Option to Turn off bad outcomes or disasters @maybe
- 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.)
- 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
- No fees when contracts break
- Contracts go dormant instead of ending.
Other QoL things:
- Adjust display size @done(2021-06-23)
- Toggle trees translucency
Right now we hide trees outright, which probably should be limited to debugging
- Right click to center @done(2021-06-06)
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.
Balance:
- Hard mode is impossible with current map size.
Upkeep is too much money.
Might be addressed by adding staff instead of fixed upkeep.
Bugs:
Graphics:
- Trees jump around when pressing show/hide grid @done(2022-01-23)
- Grids sometimes overlap trees, including area overlays
- Trees sometimes overlap each other @done(2022-01-23)
- Area overlays overlap trees @done(2022-01-24)
- Sometimes framerate jumps to 180-200 fps. (Better than reverse, but kinda weird)
- Graphics don't adjust for the resolution
- Scroll area @done(2021-06-23)
- Ingame Menu @done(2021-06-22)
- Main Menu
Simulation:
- Can keep playing after losing if you don't acknowledge the loss in the dialog
- Create preemption/priority system
Have to decide whether to have two levels: normal/preempting or a series of priorities
- Expired areas can't be reused. @done(2021-08-07)
- Trees seem to spawn in lines.
Is it only spawning neighbor trees in one direction?
Dialog:
- Dialogs don't appear after
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
- 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.
- Crashes after exiting a game.
Seems to be a draw issue (Batch hasn't begun.)
In Area renderer?
-
Misc:
- Starting a game after exiting a previous one doesn't really work, afaict
Also crases, but I suspect the crash isn't related.
- Events may not be deleted
- Exits are messy (does Encompass add threading?) @done(2021-11-28)
Appears to be fixed by using Game.Exit
[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)