Credit Claude Code: note at the top of the README, in CREDITS and the standalone file; pixel-art mark with link next to the licence on title and login screens

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-03 14:44:28 +01:00
1 parent ea0623fbe3
commit d92b45a0b8
7 files changed
+47 -1

No files matched your search

+3
View File
@@ -5,5 +5,8 @@
- License: **Creative Commons Attribution 4.0 International (CC BY 4.0)** – https://creativecommons.org/licenses/by/4.0/ - License: **Creative Commons Attribution 4.0 International (CC BY 4.0)** – https://creativecommons.org/licenses/by/4.0/
- File: `assets/dbyte_1x.png` (unmodified). In the game it is scaled by integer factors and tinted. The swapped glyphs ö/ò are corrected in the character mapping, not in the file. - File: `assets/dbyte_1x.png` (unmodified). In the game it is scaled by integer factors and tinted. The swapped glyphs ö/ò are corrected in the character mapping, not in the file.
## Made with Claude Code
The game was developed with the help of [Claude Code](https://claude.com/claude-code), Anthropic's AI coding assistant. The small pixel-art mark next to the note on the title and login screens is a rendition of the Claude Code logo. Claude, Claude Code and Anthropic are trademarks of Anthropic; the mark only credits the tool and is not covered by the MIT licence of this project.
## Everything else ## Everything else
Code, procedural graphics and game design: the DungeonCraft project. Code, procedural graphics and game design: the DungeonCraft project.
+3
View File
@@ -1,5 +1,8 @@
# DungeonCraft # DungeonCraft
> **Made with the help of [Claude Code](https://claude.com/claude-code).** The code, graphics, texts and
> documentation of this game were written together with Claude Code, Anthropic's AI coding assistant.
An original dungeon building & defence game that runs in the browser (Rust + [macroquad](https://github.com/not-fl3/macroquad), compiled to WebAssembly). An original dungeon building & defence game that runs in the browser (Rust + [macroquad](https://github.com/not-fl3/macroquad), compiled to WebAssembly).
Dig out your underground realm, claim the portal to attract creatures, keep them fed, rested and paid, fend off endless hero waves that adapt to your army – and finally destroy the Hero Gate. Dig out your underground realm, claim the portal to attract creatures, keep them fed, rested and paid, fend off endless hero waves that adapt to your army – and finally destroy the Hero Gate.
+1
View File
@@ -551,6 +551,7 @@ unit.owl = Arkane Eule
unit.wyrm = Glutwyrm unit.wyrm = Glutwyrm
job.rest = Erholt sich im Horst job.rest = Erholt sich im Horst
job.torment = Bearbeitet einen Gefangenen job.torment = Bearbeitet einen Gefangenen
menu.made_with = Erstellt mit Hilfe von Claude Code
menu.license = DungeonCraft - MIT-Lizenz - (c) 2026 Richard Zink menu.license = DungeonCraft - MIT-Lizenz - (c) 2026 Richard Zink
# steel walls # steel walls
+1
View File
@@ -552,6 +552,7 @@ unit.owl = Arcane Owl
unit.wyrm = Ember Wyrm unit.wyrm = Ember Wyrm
job.rest = Recovering in the aerie job.rest = Recovering in the aerie
job.torment = Working on a prisoner job.torment = Working on a prisoner
menu.made_with = Made with the help of Claude Code
menu.license = DungeonCraft - MIT License - (c) 2026 Richard Zink menu.license = DungeonCraft - MIT License - (c) 2026 Richard Zink
# steel walls # steel walls
+1
View File
@@ -792,6 +792,7 @@ async fn main() {
autosave_t = 0.0; autosave_t = 0.0;
} }
MenuAction::OpenRepo => platform::open_url(menu::REPO_URL), MenuAction::OpenRepo => platform::open_url(menu::REPO_URL),
MenuAction::OpenClaudeCode => platform::open_url(menu::CLAUDE_CODE_URL),
a @ (MenuAction::Login(..) a @ (MenuAction::Login(..)
| MenuAction::Logout | MenuAction::Logout
| MenuAction::OpenAccount | MenuAction::OpenAccount
+37
View File
@@ -205,6 +205,7 @@ enum Btn {
StartMission, StartMission,
Goals, Goals,
Repo, Repo,
ClaudeCode,
Field(usize), Field(usize),
DoLogin, DoLogin,
Account, Account,
@@ -216,6 +217,27 @@ enum Btn {
} }
pub const REPO_URL: &str = "https://git.familie-zink.org/zink/dungeoncraft"; pub const REPO_URL: &str = "https://git.familie-zink.org/zink/dungeoncraft";
pub const CLAUDE_CODE_URL: &str = "https://claude.com/claude-code";
// the Claude Code mark as pixel art (drawn next to the "made with" note)
const CLAUDE_MARK: [&str; 5] = [
"...############...",
"...##.######.##...",
".################.",
"...############...",
"....#.#....#.#....",
];
pub fn draw_claude_mark(x: f32, y: f32, px: f32) {
let c = Color::from_rgba(0xd9, 0x77, 0x57, 255);
for (r, row) in CLAUDE_MARK.iter().enumerate() {
for (k, ch) in row.chars().enumerate() {
if ch == '#' {
draw_rectangle(x + k as f32 * px, y + r as f32 * px, px, px, c);
}
}
}
}
pub enum MenuAction { pub enum MenuAction {
None, None,
@@ -236,6 +258,7 @@ pub enum MenuAction {
EditName, // the name field was tapped (touch: ask with a browser dialog) EditName, // the name field was tapped (touch: ask with a browser dialog)
StartMission(usize), StartMission(usize),
OpenRepo, OpenRepo,
OpenClaudeCode,
Login(String, String), Login(String, String),
Logout, Logout,
OpenAccount, OpenAccount,
@@ -478,6 +501,7 @@ impl Menu {
} }
Some(Btn::NameField) => MenuAction::EditName, Some(Btn::NameField) => MenuAction::EditName,
Some(Btn::Repo) => MenuAction::OpenRepo, Some(Btn::Repo) => MenuAction::OpenRepo,
Some(Btn::ClaudeCode) => MenuAction::OpenClaudeCode,
Some(Btn::Field(i)) => { Some(Btn::Field(i)) => {
self.focus = i; self.focus = i;
MenuAction::EditField(i) MenuAction::EditField(i)
@@ -620,6 +644,19 @@ impl Menu {
pub fn draw_license(&mut self, gfx: &Gfx) { pub fn draw_license(&mut self, gfx: &Gfx) {
let (sw, sh) = (sw(), sh()); let (sw, sh) = (sw(), sh());
let (mx, my) = mouse(); let (mx, my) = mouse();
// "made with Claude Code" with the pixel mark, a link to Claude Code
let made = tr("menu.made_with");
let px = (SMALL() * 2.0).round().max(2.0);
let mark_w = 18.0 * px;
let tw = gfx.measure(&made, SMALL());
let total = mark_w + CW() * 0.5 + tw;
let mx0 = grid_center(sw, total);
let my0 = sh - CH() * 4.0;
let r = Rect::new(mx0, my0, total, GH * SMALL() + 2.0);
let hot = r.contains(vec2(mx, my));
draw_claude_mark(mx0, my0 + (GH * SMALL() - 5.0 * px) * 0.5, px);
gfx.text(&made, mx0 + mark_w + CW() * 0.5, my0, SMALL(), if hot { FRAME_HI } else { Color::from_rgba(0xd9, 0x77, 0x57, 255) });
self.buttons.push((r, Btn::ClaudeCode));
let lic = tr("menu.license"); let lic = tr("menu.license");
gfx.text(&lic, grid_center(sw, gfx.measure(&lic, SMALL())), sh - CH() * 2.5, SMALL(), DIM); gfx.text(&lic, grid_center(sw, gfx.measure(&lic, SMALL())), sh - CH() * 2.5, SMALL(), DIM);
let url = REPO_URL.trim_start_matches("https://"); let url = REPO_URL.trim_start_matches("https://");
+1 -1
View File
@@ -39,7 +39,7 @@ html = f"""<!DOCTYPE html>
</head> </head>
<body> <body>
<canvas id="glcanvas" tabindex="1" oncontextmenu="return false"></canvas> <canvas id="glcanvas" tabindex="1" oncontextmenu="return false"></canvas>
<!-- DungeonCraft standalone - MIT License - (c) 2026 Richard Zink - https://git.familie-zink.org/zink/dungeoncraft --> <!-- DungeonCraft standalone - MIT License - (c) 2026 Richard Zink - https://git.familie-zink.org/zink/dungeoncraft - made with the help of Claude Code (https://claude.com/claude-code) -->
<script>var register_plugin; /* expected by the quad_net plugin in the bundle */</script> <script>var register_plugin; /* expected by the quad_net plugin in the bundle */</script>
<script> <script>
// the game module is embedded: fetching it is answered from these bytes // the game module is embedded: fetching it is answered from these bytes