Show More
Commit Description:
Remove CI validation for now.
Commit Description:
Remove CI validation for now.
File last commit:
Show/Diff file:
Action:
README.mkd
132 lines | 6.7 KiB | text/x-markdown | MarkdownLexer
# isometric-park-fna
As the director of a small state park, your job is to balance conservation, leisure, and fiscal sustainability. Gameplay is still being added.
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!]())
## Controls ##
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.
## Overlap with past work ##
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.)
## 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!)
## Developing ##
To run from the command line, `make run`.
You can build and run the project using VSCode actions.
### File Structure ###
```
.
├── *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
│   ├── *FilledRectangle.cs* Helper class for drawing a rectangle.
│   ├── *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.
│   ├── **UI** User interface code,, one for each window.
│   │   ├── *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.
│   └── *package.py* Creates packaages.
├── **SpriteFontPlus ** Font library. (Vendored)
└── **TODO.taskpaper** Tasks, feature requests, and bugs.
```
Right now, the largest parts of the code are `UI/`, `Engines/`, `FNAGame.cs` (which
still contains a lot of drawing code), and `Simulation.cs`.
## Acknowledgements ##
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
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/)
Fonts: Droid Sans, [Iosevka,](https://typeof.net/Iosevka/) [Typicons by Stephen Hutchings](https://www.s-ings.com/typicons/)
Sources for the procedural generation are documented in Sources.md.
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))
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
I haven't decided on a license.