Show More
Commit Description:
Update README to accknowledge Procjam 2020.
Commit Description:
Update README to accknowledge Procjam 2020.
References:
File last commit:
Show/Diff file:
Action:
README.mkd
167 lines | 7.9 KiB | text/x-markdown | MarkdownLexer
167 lines | 7.9 KiB | text/x-markdown | MarkdownLexer
r118 | ||||
# isometric-park-fna | ||||
r309 | As the director of a small state park, your job is to balance conservation, leisure, and fiscal sustainability. Gameplay is still being added. | |||
r118 | ||||
r465 | This is inspired by Maxis' Sim series of games, particularly SimSafari, and Chris Sawyer's Tycoon games. Its premise more closely resembles SimPark, but I never played it except for a demo. (Alternatively, watch [1990's Sim Games. SO GOOD!](https://www.youtube.com/watch?v=APFnM6DqtiA)) | |||
r118 | ||||
r558 | I rewrote the core of this game for Procjam 2020, but the majority of the game has been added since. | |||
r118 | ## Controls ## | |||
r475 | Use the arrow keys or move the mouse to the edges to scroll around on the map. The plus and minus keys zoom in and out. 0 toggles pause. F opens the Forest Policy. B opens the budget. N opens News. Escape opens the in-game menu. | |||
## Accessibility ## | ||||
To change the font or font size: | ||||
1. Open the in-game menu (with Escape) | ||||
2. Click Options. | ||||
3. Change Font and Size as necessary. | ||||
You can also change the scaling, but this should be a last resort if other | ||||
options aren't sufficient. | ||||
Currently, there are no options for adjusting the difficulty beyond the settings | ||||
that appear on the initial selection. | ||||
r118 | ||||
r466 | ## Relationship to past work ## | |||
r118 | ||||
r308 | This game is a total rewrite of the original version in C#. I honestly like the original language and library more (Clojure and Quil), but Quil was starting to struggle with the amount of drawing, and I was hitting the limit of my optimization abilities and available information online. (Another drawback: I'm also giving up the browser version, unless people get XNA in the browser working.) | |||
r118 | ||||
r287 | ## Installing and Running ## | |||
* macOS users need to do an [extra step](https://support.apple.com/guide/mac-help/open-a-mac-app-from-an-unidentified-developer-mh40616/11.0/mac/11.0) the first time because the app is unsigned. | ||||
* Windows and Linux users should be able to double-click the EXE and run it. | ||||
* BSD users can try using [fbsd-fnaify](https://github.com/oshogbo/fbsd-fnaify), although I have yet to confirm it works with Isometric Park. (If you do try it, let me know!) | ||||
r118 | ## Developing ## | |||
To run from the command line, `make run`. | ||||
You can build and run the project using VSCode actions. | ||||
r465 | You can debug the project using the Debug pane in VSCode. | |||
r505 | ### Updating implot ### | |||
This is a huge pain. The last thing I tried: | ||||
1. Download the latest version of ImGui.Net, corresponding to DearImGui 1.86. | ||||
2. Removed the ImGui folder: `rm -r ImGui.NET/` | ||||
3. Copied `cp -r /tmp/ImGui.NET/src/ImGui.NET .` | ||||
r309 | ### File Structure ### | |||
r475 | <pre> | |||
r309 | . | |||
├── *encompass-cs* ECS library (vendored) | ||||
├── **FNA** Graphics and media library | ||||
├── **ImGui.NET** GUI library | ||||
├── **isometric-park-fna** | ||||
│ ├── **bin** | ||||
│ │ ├── **Debug** Debug version | ||||
│ │ └── **Release** Release version | ||||
│ ├── *Camera.cs* | ||||
│ ├── *CellMap.cs* | ||||
│ ├── **Components** Components that store data on entities. | ||||
│ ├── **Content** | ||||
│ │ ├── **DejaVuSerif-BoldItalic.ttf** | ||||
│ │ ├── **DejaVuSerif-Bold.ttf** | ||||
│ │ ├── **DroidSans.ttf** | ||||
│ │ ├── **grammar.json** | ||||
│ │ ├── **images** images | ||||
│ │ ├── **iosevka-medium.ttf** | ||||
│ │ ├── **iosevka-term-extendedmediumitalic.ttf** | ||||
│ │ ├── **iosevka-term-extendedmedium.ttf** | ||||
│ │ ├── **iosevka-term-medium.ttf** | ||||
│ │ ├── **news_items_pregenerated.yaml** | ||||
│ │ ├── **news_items.yaml** | ||||
│ │ ├── **part4_tileset_alt.png** | ||||
│ │ ├── **part4_tileset.png** | ||||
│ │ ├── **part4_tileset.xcf** | ||||
│ │ ├── **photos_converted3.png** | ||||
│ │ ├── **photos_converted.png** | ||||
│ │ ├── **solid_tileset.png** | ||||
│ │ └── **typicons.ttf** | ||||
│ ├── *DllMap.cs* (vendored) | ||||
│ ├── *DrawVertDeclaration.cs* | ||||
│ ├── **Engines** Engines | ||||
r466 | │ ├── *FilledRectangle.cs* Class for drawing a filled rectangle. | |||
r309 | │ ├── *FNAGame.cs* Primary game class. | |||
│ ├── **fnalibs** Compiled native libraries. | ||||
│ │ ├── **lib64** | ||||
│ │ ├── **osx** | ||||
│ │ ├── **x64** | ||||
│ │ └── **x86** | ||||
│ ├── *ImageMap.cs* Map of images. | ||||
│ ├── *ImGuiRenderer.cs* Renderer backend for ImGui. (vendored) | ||||
│ ├── **isometric-park-fna-core.csproj** | ||||
│ ├── *isometric-park-fna-core.sln* | ||||
│ ├── **isometric-park-fna.csproj** | ||||
│ ├── *Line.cs* Class for drawing a line. | ||||
│ ├── *Logging.cs* Logging class. | ||||
│ ├── **Messages** Message classes. | ||||
│ ├── *Quad.cs* Draw a quadrilateral. | ||||
│ ├── **Renderers** Renderer classes. | ||||
│ │ ├── *AreaRenderer.cs* Renders areas on the map. | ||||
│ │ ├── *BudgetWindowRenderer.cs* Renders the budget window. | ||||
│ │ └── *ImGuiWindowRenderer.cs* Renders ImGUI windows. | ||||
│ ├── *Simulation.cs* Primary simulation class. | ||||
│ ├── **Sources.md** List of sources. | ||||
│ ├── *Tile.cs* Draws tiles. | ||||
r465 | │ ├── **UI** User interface code, one for each window. | |||
r309 | │ │ ├── *StyleSet.cs* Utility class for setting multiple style variables and colors at once. | |||
│ │ ├── . | ||||
│ │ ├── . | ||||
│ │ └── . | ||||
│ └── **Utils** | ||||
│ ├── *Extensions.cs* Extension methods. | ||||
│ ├── *MathUtils.cs* Math utility mentions. | ||||
│ └── *Node.cs* Simple tree. | ||||
├── *isometric-park-fna-core.sln* .NET Core solution. | ||||
├── *isometric-park-fna.sln* .NET Framework solution. | ||||
├── **README_future.mkd** | ||||
├── **README.mkd** | ||||
├── **scripts** Helper scripts. | ||||
r465 | │ ├── *add-branches.sh* Creates a Mercurial bookmark for each branch | |||
│ ├── *gitmirror.sh* Mirrors this Mercurial repository to a Git repository | ||||
│ ├── *LoadInk.csx* Loads Ink file, ensuring its validated | ||||
│ ├── *LoadYaml.csx* Loads and validates YAML | ||||
│ ├── *package.py* Creates packaages. | ||||
│ └── *UpdateYaml.csx* Adds missing entries to the YAML file. | ||||
r309 | ├── **SpriteFontPlus ** Font library. (Vendored) | |||
r465 | └── **TODO.taskpaper** Tasks, feature ideas, requests, and bugs. | |||
r475 | </pre> | |||
r309 | ||||
r373 | Right now, the largest parts of the code are `UI/`, `Engines/`, `FNAGame.cs` (which | |||
still contains a lot of drawing code), and `Simulation.cs`. | ||||
r309 | ||||
r118 | ## Acknowledgements ## | |||
r130 | Art: [Isometric 64x64 Outside Tileset by Yar](https://opengameart.org/content/isometric-64x64-outside-tileset), various images from the Library of Congress and USDA Forest Service | |||
r465 | ||||
r308 | Libraries: [FNA](https://fna-xna.github.io/), [SpriteFontPlus](https://github.com/rds1983/SpriteFontPlus), [Tracery.Net](https://github.com/josh-perry/Tracery.Net), [ImGui.NET](http://imgui.net/), and [Encompass-cs](http://moonside.games/docs/encompass/) | |||
r465 | ||||
r130 | Fonts: Droid Sans, [Iosevka,](https://typeof.net/Iosevka/) [Typicons by Stephen Hutchings](https://www.s-ings.com/typicons/) | |||
r118 | ||||
r143 | Sources for the procedural generation are documented in Sources.md. | |||
r309 | Watching Thin Matrix's [video devlogs](https://www.youtube.com/watch?v=90CZ7Q17sls&list=PLRIWtICgwaX1gcSZ8qj8Q473tz7PsNmpR) for Equilinox inspired me to press on. :) Despite some similarities, the design of this game wasn't really inspired by Equilinox. (I've also enjoyed Thoughtquake's [video devlogs](https://www.youtube.com/user/Thoughtquake/videos) for Cargo Defense and Cliff Harris' Democracy 4 [video devlogs](https://www.youtube.com/user/cliffski2/videos)) | |||
r118 | ||||
The original versions used art from the [Low Poly Forest Pack](https://devilsworkshop.itch.io/lowpoly-forest-pack) by [Devil's Work.Shop](https://devilsworkshop.itch.io/). (I had converted the models into isometric 2D images, using [this process.](https://www.youtube.com/watch?v=bk0PXMgZgQg)) | ||||
## License ## | ||||
© 2021 Alys S. Brooks | ||||
r308 | I haven't decided on a license. | |||
r118 | ||||