feely_pona/readme.md

82 lines
3.0 KiB
Markdown

# Feely Pona (aka. Terry Cherry)
This is the repository for the game Terry Cherry that was developed as part of
an impromptu game-jam in September 2023 over 4 weekends to make a hero cross
x tower-defense mashup combination game. The game was developed in C++ using
Raylib 4.5.0 as the base framework for the game.
This game was developed with 3 people
- [Doyle](https://doylet.dev): Engine & gameplay programmer
- [Joshalosh](https://github.com/joshalosh): Game designer, sound, gameplay programmer
- Tom: Art
This game is currently available online at [Terry
Cherry](https://game.doylet.dev/terry_cherry).
## Building
We target Windows and the web via WASM using Emscripten. The game is built
using our C++ meta build program (which generates command invocations and
forwards them to the command line).
### Windows
You must ensure you have MSVC's `cl.exe` on your path to build. This game was
tested on MSVC 2023 (v14.34.31933).
For most intents and purposes you may simply execute `build_all.bat` on Windows
which bootstraps the build program and automatically calls the meta-build
program. With fast computers nowadays our default is to build all targets by
default (except web due to extra toolchain requirements).
The game supports hot-reloading by storing the game code in the DLL. 2 variants
of the build are published, the DLL and non-DLL version. The DLL version can be
rebuilt whilst running to hot-reload game code whereas the non-DLL variant bakes
the entire game into one executable.
### Web
A web ready version using WASM can be built by passing `--web` to the meta build
program/script. You must have the EMSDK toolchain activated and in your path
from [Emscripten SDK](https://github.com/emscripten-core/emsdk). This repository
provides a slimmed down version of EMSDK in the `Tools` folder zipped up and
served over Git LFS.
The slimmed down EMSDK is the official download with a bunch of unused binaries
and directories removed that aren't strictly necessary for building the web
target (e.g. provide a stub Java version file to skip it, delete unused clang
binaries).
Unzip the slimmed down EMSDK `Tools/2023-10-10_emsdk_40e9cd8f.7z` or install
from Github and download the latest SDK. A full build for the web target can
then be done by
```
# Run EMSDK's script to add the toolchain to the path
Tools\emsdk\emsdk.bat activate latest
# Build the game
build_all --web
```
This will produce at `Build\Terry_Cherry_Emscripten` a HTML and WASM file ready
to be served by the browser. To test it locally you may start up a local server
for that directory, e.g.
```
cd Build\Terry_Cherry_Emscripten
python -m http.server
```
## Asset Packaging
Assets are stored in the `Data` folder. In particular, textures are stored as
individual sprites and combined using a utility program to pack them into
a sprite sheet with their positions annotated into a specification file that is
loaded at runtime.
Textures are specified in the `sprite_spec.txt` file and given to the sprite
packer tool from this repository. The sprite packer will generate the sprite
sheet.