Show More
Commit Description:
Add dialog when there's a significant amount of preserve....
Commit Description:
Add dialog when there's a significant amount of preserve. Plus some thoughts on avoiding gaming.
Show/Diff file:
Action:
TODO.taskpaper
292 lines | 13.5 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?
Maybe a lot made into preserve at once?
- Congratulations when reaching a majority @done(2022-12-14)
Maybe 75 percent
- 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?
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)