Data | ||
External | ||
Tools | ||
_clang-format | ||
.clangd | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
build_assets.bat | ||
build.bat | ||
deploy_website.bat | ||
feely_pona_build.cpp | ||
feely_pona_emscripten_shell.html | ||
feely_pona_entity_create.cpp | ||
feely_pona_entity.cpp | ||
feely_pona_entity.h | ||
feely_pona_game.cpp | ||
feely_pona_game.h | ||
feely_pona_misc.cpp | ||
feely_pona_sprite_packer.cpp | ||
feely_pona_stdlib.h | ||
feely_pona_unity_nodll.cpp | ||
feely_pona_unity_nodll.h | ||
feely_pona_unity.h | ||
feely_pona.cpp | ||
feely_pona.h | ||
project.rdbg | ||
readme.md |
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
- 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: Engine & gameplay programmer
- Joshalosh: Game designer, sound, gameplay programmer
- Tom: Art
This game is currently available online at 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.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. 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 --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 a the sprite
sheet.