82 lines
3.0 KiB
Markdown
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.
|