Brandling Safari: LAN safari-zone creature catching on the HD-2D engine

- Authoritative 30 Hz server (ENet, SQLite): accounts, characters, wild AI, tall grass /
  water / wandering spawns, fishing, captures, follower chains, clock + weather, LAN beacon
- Client: title / join / character creator / play screens, prediction + reconciliation,
  interpolated players and parties, HD-2D UI (dialogue with Professor Henry, HUD, collection)
- Shared deterministic zone generator, movement, protocol, roster, appearance
- Paper-doll character art pipeline (PixelLab base walk + per-item animation edits)
- Brandling roster from the company list (logo colors, jev types), Blender safari props
- Headless test bot
This commit is contained in:
Gabe
2026-10-02 15:20:27 -05:00
commit 238cd9c6c3
3409 changed files with 100493 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 849 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 768 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1016 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 765 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1010 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 804 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1023 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 755 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 861 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 966 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 928 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 979 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 812 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 923 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 994 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 956 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 997 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 863 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 818 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 843 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 801 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 898 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 937 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 712 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 997 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 985 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 629 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1002 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,214 @@
{
"cell": 64,
"directions": [
"south",
"east",
"north"
],
"framesPerDirection": 5,
"walkFrames": 4,
"shades": 4,
"note": "row = direction, column 0 = standing, 1.. = walk; west = east mirrored",
"slots": {
"shoes": 10,
"bottom": 20,
"top": 30,
"hair": 40,
"hat": 50
},
"skinTones": [
"#ffdcc2",
"#f1c27d",
"#e0ac69",
"#c68642",
"#8d5524",
"#5c3a21"
],
"palette": [
"#f2f2f2",
"#2b2b33",
"#6b6b6b",
"#c0392b",
"#e67e22",
"#f1c40f",
"#27ae60",
"#16a085",
"#2e6da4",
"#4a6fa5",
"#6b4c8a",
"#9b3d6b",
"#e07aa5",
"#5a3a22",
"#7a4a26",
"#c8902e",
"#b89a5e",
"#6d6447",
"#3a2418",
"#d9d0b0"
],
"bodies": {
"male": {
"label": "Masculine",
"anchorRow": 54,
"items": [
"top_tee",
"bottom_shorts",
"hair_short",
"hair_spiky",
"hair_long",
"hair_ponytail",
"hair_curly",
"hat_cap",
"hat_bucket",
"hat_beanie",
"top_hoodie",
"top_jacket",
"top_vest",
"top_sweater",
"bottom_pants",
"bottom_cargo",
"bottom_skirt",
"shoes_sneakers",
"shoes_boots",
"shoes_sandals"
]
},
"female": {
"label": "Feminine",
"anchorRow": 54,
"items": [
"top_tee",
"bottom_shorts",
"hair_short",
"hair_spiky",
"hair_long",
"hair_ponytail",
"hair_curly",
"hat_cap",
"hat_bucket",
"hat_beanie",
"top_hoodie",
"top_jacket",
"top_vest",
"top_sweater",
"bottom_pants",
"bottom_cargo",
"bottom_skirt",
"shoes_sneakers",
"shoes_boots",
"shoes_sandals"
]
}
},
"items": {
"top_tee": {
"slot": "top",
"label": "T-Shirt",
"color": "#f2f2f2",
"fromBody": true
},
"bottom_shorts": {
"slot": "bottom",
"label": "Shorts",
"color": "#6b6b6b",
"fromBody": true
},
"hair_short": {
"slot": "hair",
"label": "Short & Messy",
"color": "#5a3a22"
},
"hair_spiky": {
"slot": "hair",
"label": "Spiky",
"color": "#2b2b33"
},
"hair_long": {
"slot": "hair",
"label": "Long",
"color": "#7a4a26"
},
"hair_ponytail": {
"slot": "hair",
"label": "Ponytail",
"color": "#c8902e"
},
"hair_curly": {
"slot": "hair",
"label": "Curly",
"color": "#3a2418"
},
"hat_cap": {
"slot": "hat",
"label": "Cap",
"color": "#c0392b"
},
"hat_bucket": {
"slot": "hat",
"label": "Safari Hat",
"color": "#b89a5e"
},
"hat_beanie": {
"slot": "hat",
"label": "Beanie",
"color": "#2e6da4"
},
"top_hoodie": {
"slot": "top",
"label": "Hoodie",
"color": "#4a6fa5"
},
"top_jacket": {
"slot": "top",
"label": "Jacket",
"color": "#a33b3b"
},
"top_vest": {
"slot": "top",
"label": "Explorer Vest",
"color": "#8a7a4a"
},
"top_sweater": {
"slot": "top",
"label": "Sweater",
"color": "#6b4c8a"
},
"bottom_pants": {
"slot": "bottom",
"label": "Long Pants",
"color": "#34495e"
},
"bottom_cargo": {
"slot": "bottom",
"label": "Cargo Pants",
"color": "#6d6447"
},
"bottom_skirt": {
"slot": "bottom",
"label": "Skirt",
"color": "#9b3d6b"
},
"shoes_sneakers": {
"slot": "shoes",
"label": "Sneakers",
"color": "#e8e8e8"
},
"shoes_boots": {
"slot": "shoes",
"label": "Boots",
"color": "#5b3a1e"
},
"shoes_sandals": {
"slot": "shoes",
"label": "Sandals",
"color": "#a0703c"
}
},
"npcs": {
"henry": {
"sheet": "henry/henry.png",
"portrait": "henry/portrait.png",
"anchorRow": 55
}
}
}