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:
1 parent
ea0623fbe3
commit
d92b45a0b8
7 files changed
+47
-1
No files matched your search
@@ -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.
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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://");
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in new issue
Block a user