Go to file
2023-10-25 22:03:42 +11:00
Data fp: Remove unused hero sprites 2023-10-25 21:59:34 +11:00
External fp: Add dev fast build, remove tely_ui 2023-10-25 20:17:30 +11:00
Tools fp: Add emsdk 2023-10-25 21:56:19 +11:00
_clang-format fp: Make transported entities adopt the new mob spawner waypoints 2023-10-14 12:01:22 +11:00
.clangd fp: Get closer to supporting web deployment 2023-10-15 01:31:33 +11:00
.gitattributes fp: Add readme 2023-10-25 21:55:19 +11:00
.gitignore fp: Add readme 2023-10-25 21:55:19 +11:00
.gitmodules git: Re-add TELY as submodule 2023-09-17 18:24:33 +10:00
build_assets.bat fp: Integrate perry assets 2023-10-21 16:30:15 +11:00
build.bat fp: Add readme 2023-10-25 21:55:19 +11:00
deploy_website.bat fp: Build web in non-debug mode 2023-10-16 21:54:34 +11:00
feely_pona_build.cpp fp: Add readme 2023-10-25 21:55:19 +11:00
feely_pona_emscripten_shell.html build: Generate versioning information for the website 2023-10-17 22:07:20 +11:00
feely_pona_entity_create.cpp fp: Rename String8 to Str8 2023-10-24 23:41:15 +11:00
feely_pona_entity.cpp fp: Integrate new billboard 2023-10-23 22:13:03 +11:00
feely_pona_entity.h fp: Rename String8 to Str8 2023-10-24 23:41:15 +11:00
feely_pona_game.cpp fp: Add dev fast build, remove tely_ui 2023-10-25 20:17:30 +11:00
feely_pona_game.h fp: Rename String8 to Str8 2023-10-24 23:41:15 +11:00
feely_pona_misc.cpp fp: Prepare for emscripten (web) support 2023-10-14 17:21:23 +11:00
feely_pona_sprite_packer.cpp fp: Add billboards, fix terry attack scale, optimise atlas size and packaged audio 2023-10-17 00:35:41 +11:00
feely_pona_stdlib.h fp: Prepare for emscripten (web) support 2023-10-14 17:21:23 +11:00
feely_pona_unity_nodll.cpp fp: Prepare for emscripten (web) support 2023-10-14 17:21:23 +11:00
feely_pona_unity_nodll.h fp: Add dev fast build, remove tely_ui 2023-10-25 20:17:30 +11:00
feely_pona_unity.h fp: Add dev fast build, remove tely_ui 2023-10-25 20:17:30 +11:00
feely_pona.cpp fp: Make terry more animation respond immediately to movement 2023-10-25 20:23:42 +11:00
feely_pona.h fp: Rename String8 to Str8 2023-10-24 23:41:15 +11:00
project.rdbg fp: Add dev fast build, remove tely_ui 2023-10-25 20:17:30 +11:00
readme.md fp: Add note about hot-reloading 2023-10-25 22:03:42 +11:00

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.