https://github.com/bramp/fodder
A canon fodder clone
https://github.com/bramp/fodder
Last synced: about 1 month ago
JSON representation
A canon fodder clone
- Host: GitHub
- URL: https://github.com/bramp/fodder
- Owner: bramp
- License: bsd-3-clause
- Created: 2026-02-28T21:36:12.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-03-10T06:47:40.000Z (4 months ago)
- Last Synced: 2026-04-08T15:42:43.572Z (3 months ago)
- Language: Dart
- Size: 1.07 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: agents.md
Awesome Lists containing this project
README
# fodder
This repository is a monorepo managed with [Melos](https://melos.invertase.dev/).
## Project Layout
- `apps/fodder_game`: The main Flutter application.
- `packages/fodder_tools`: Pure Dart tools for archive extraction and sprite processing.
## Getting Started
To initialize the project and link all packages:
```bash
git clone --recursive git@github.com:bramp/fodder.git
# or `git submodule update --init --recursive` if you forgot
dart pub global activate melos
dart run melos bootstrap
```
## Re-generating Flutter App
To re-generate the Flutter application with a new bundle identifier (e.g., when the Flutter project structure needs updating or you're changing the package name), run the following from the `apps/fodder_game` directory:
```bash
cd apps/fodder_game
flutter create --org net.bramp --project-name fodder .
```
## Importing Original Game Assets
The tools are now part of the `fodder_tools` package. To run them:
### Extract Game Assets
To run the game, you need the original assets. You can extract them using the provided tools.
First, clone the OpenFodder campaign data (contains mission objectives, aggression
levels, and demo data):
```bash
git clone https://github.com/OpenFodder/data.git vendor/openfodder-data
```
#### Cannon Fodder 1
```bash
SRC=original_game/Dos_CD
OUT=packages/fodder_assets/assets/cf1
# Extract the archive
dart run packages/fodder_tools/bin/extract.dart -i ${SRC?}/CF_ENG.DAT -o ${SRC?}_Extracted --extract-all
# Extract sprites, maps, and audio
dart run packages/fodder_tools/bin/sprites.dart -i ${SRC?}_Extracted -o ${OUT?}/sprites
dart run packages/fodder_tools/bin/maps.dart -i ${SRC?}_Extracted -o ${OUT?}/maps -c 'vendor/openfodder-data/Campaigns/Cannon Fodder.ofc'
dart run packages/fodder_tools/bin/audio.dart -i ${SRC?}_Extracted -o ${OUT?}/audio
```
#### Cannon Fodder 2
```bash
SRC=original_game/Dos2_CD
OUT=packages/fodder_assets/assets/cf2
# Extract the archive
dart run packages/fodder_tools/bin/extract.dart -i ${SRC?}/CF_ENG.DAT -o ${SRC?}_Extracted --extract-all
# Extract sprites, maps, and audio
dart run packages/fodder_tools/bin/sprites.dart -i ${SRC?}_Extracted -o ${OUT?}/sprites
dart run packages/fodder_tools/bin/maps.dart -i ${SRC?}_Extracted -o ${OUT?}/maps
dart run packages/fodder_tools/bin/audio.dart -i ${SRC?}_Extracted -o ${OUT?}/audio
```
```bash
# Debug issues with
dart run packages/fodder_tools/bin/audit_sprite_names.dart --html ${OUT?}/sprites
dart run packages/fodder_tools/bin/audit_sprite_names.dart --coverage
dart run packages/fodder_tools/bin/audit_sprite_names.dart
```