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/
- 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
Code, procedural graphics and game design: the DungeonCraft project.
+3
View File
@@ -1,5 +1,8 @@
# 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).
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
job.rest = Erholt sich im Horst
job.torment = Bearbeitet einen Gefangenen
menu.made_with = Erstellt mit Hilfe von Claude Code
menu.license = DungeonCraft - MIT-Lizenz - (c) 2026 Richard Zink
# steel walls
+1
View File
@@ -552,6 +552,7 @@ unit.owl = Arcane Owl
unit.wyrm = Ember Wyrm
job.rest = Recovering in the aerie
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
# steel walls
+1
View File
@@ -792,6 +792,7 @@ async fn main() {
autosave_t = 0.0;
}
MenuAction::OpenRepo => platform::open_url(menu::REPO_URL),
MenuAction::OpenClaudeCode => platform::open_url(menu::CLAUDE_CODE_URL),
a @ (MenuAction::Login(..)
| MenuAction::Logout
| MenuAction::OpenAccount
+37
View File
@@ -205,6 +205,7 @@ enum Btn {
StartMission,
Goals,
Repo,
ClaudeCode,
Field(usize),
DoLogin,
Account,
@@ -216,6 +217,27 @@ enum Btn {
}
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 {
None,
@@ -236,6 +258,7 @@ pub enum MenuAction {
EditName, // the name field was tapped (touch: ask with a browser dialog)
StartMission(usize),
OpenRepo,
OpenClaudeCode,
Login(String, String),
Logout,
OpenAccount,
@@ -478,6 +501,7 @@ impl Menu {
}
Some(Btn::NameField) => MenuAction::EditName,
Some(Btn::Repo) => MenuAction::OpenRepo,
Some(Btn::ClaudeCode) => MenuAction::OpenClaudeCode,
Some(Btn::Field(i)) => {
self.focus = i;
MenuAction::EditField(i)
@@ -620,6 +644,19 @@ impl Menu {
pub fn draw_license(&mut self, gfx: &Gfx) {
let (sw, sh) = (sw(), sh());
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");
gfx.text(&lic, grid_center(sw, gfx.measure(&lic, SMALL())), sh - CH() * 2.5, SMALL(), DIM);
let url = REPO_URL.trim_start_matches("https://");
+1 -1
View File
@@ -39,7 +39,7 @@ html = f"""<!DOCTYPE html>
</head>
<body>
<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>
// the game module is embedded: fetching it is answered from these bytes