diff --git a/data/.wolf3d/N3Ddata.cdogscpn/character_classes.json b/data/.wolf3d/N3Ddata.cdogscpn/character_classes.json index 7abfe9a1..1d51302f 100644 --- a/data/.wolf3d/N3Ddata.cdogscpn/character_classes.json +++ b/data/.wolf3d/N3Ddata.cdogscpn/character_classes.json @@ -114,13 +114,13 @@ "HasGlasses": false }, { - "Name": "Dr Schabbs", + "Name": "Giraffe", "HeadPics": { "Type": "Directional", - "Sprites": "chars/heads/jones" + "Sprites": "chars/heads/sheep" }, - "Body": "big", - "Sounds": "schabbs" + "Body": "giraffe", + "Sounds": "giraffe" }, { "Name": "Mecha Hitler", diff --git a/data/.wolf3d/N3Ddata.cdogscpn/characters.json b/data/.wolf3d/N3Ddata.cdogscpn/characters.json index db925a6d..db70a6db 100644 --- a/data/.wolf3d/N3Ddata.cdogscpn/characters.json +++ b/data/.wolf3d/N3Ddata.cdogscpn/characters.json @@ -156,16 +156,16 @@ "actionDelay": 40 }, { - "Class": "Dr Schabbs", - "GlassesType": "goggles", - "Skin": "ffc785ff", + "Class": "Giraffe", + "HatType": "ossicone", + "Skin": "e09323ff", "Arms": "f7f5f5ff", "Body": "fffafaff", "Legs": "fffcfcff", - "Hair": "fcfcfcff", - "Feet": "fffcfcff", + "Hair": "693b16ff", + "Feet": "170606ff", "Facehair": "fcfcfcff", - "Hat": "fcfcfcff", + "Hat": "5b2901ff", "Glasses": "fcfcfcff", "speed": 192, "Gun": "Syringes", @@ -360,4 +360,4 @@ "actionDelay": 15 } ] -} +} \ No newline at end of file diff --git a/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/data.json b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/data.json new file mode 100644 index 00000000..667bb89c --- /dev/null +++ b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/data.json @@ -0,0 +1,65 @@ +{ + "Version": 2, + "Order": [ + ["gun_r", "gun_l", "legs", "body", "head"], + ["gun_r", "gun_l", "legs", "body", "head"], + ["legs", "body", "head", "gun_r", "gun_l"], + ["legs", "body", "head", "gun_r", "gun_l"], + ["legs", "body", "head", "gun_r", "gun_l"], + ["legs", "body", "head", "gun_r", "gun_l"], + ["legs", "gun_r", "gun_l", "body", "head"], + ["gun_r", "gun_l", "legs", "body", "head"] + ], + "Offsets": { + "Frame": { + "Head": { + "stand": [[0, 17]], + "idle": [[0, 17]], + "run": [ + [0, 17], + [0, 16], + [0, 16], + [0, 17], + [0, 17], + [0, 18], + [0, 18], + [0, 17] + ] + }, + "Body": { + "stand": [[0, 6]], + "idle": [[0, 6]] + }, + "Legs": { + "stand": [[0, 6]], + "idle": [[0, 6]] + }, + "Gun": { + "stand": [[0, 6]], + "idle": [[0, 6]], + "run": [ + [0, 7], + [0, 6], + [0, 5], + [0, 6], + [0, 7], + [0, 6], + [0, 5], + [0, 6] + ] + } + }, + "Dir": { + "Head": [ + [0, -3], + [7, -3], + [11, 0], + [10, 5], + [0, 6], + [-10, 5], + [-12, 0], + [-7, -3] + ] + } + } +} diff --git a/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/legs_idle_32x32.png b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/legs_idle_32x32.png new file mode 100644 index 00000000..5fc437f7 Binary files /dev/null and b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/legs_idle_32x32.png differ diff --git a/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/legs_run_32x32.png b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/legs_run_32x32.png new file mode 100644 index 00000000..79ac0e47 Binary files /dev/null and b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/legs_run_32x32.png differ diff --git a/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/src.blend b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/src.blend new file mode 100644 index 00000000..ba878471 Binary files /dev/null and b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/src.blend differ diff --git a/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/src.txt b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/src.txt new file mode 100644 index 00000000..1481b855 --- /dev/null +++ b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/src.txt @@ -0,0 +1,4 @@ +Adapted from Animated Animales Low Poly +by quaternius +https://opengameart.org/content/animated-animales-low-poly +http://creativecommons.org/publicdomain/zero/1.0/ \ No newline at end of file diff --git a/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/upper_idle_32x32.png b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/upper_idle_32x32.png new file mode 100644 index 00000000..3c2c13d2 Binary files /dev/null and b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/upper_idle_32x32.png differ diff --git a/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/upper_idle_handgun_32x32.png b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/upper_idle_handgun_32x32.png new file mode 100644 index 00000000..3c2c13d2 Binary files /dev/null and b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/upper_idle_handgun_32x32.png differ diff --git a/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/upper_run_32x32.png b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/upper_run_32x32.png new file mode 100644 index 00000000..01bc426c Binary files /dev/null and b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/bodies/giraffe/upper_run_32x32.png differ diff --git a/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/hats/ossicone_12x11.png b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/hats/ossicone_12x11.png new file mode 100644 index 00000000..44afcacc Binary files /dev/null and b/data/.wolf3d/N3Ddata.cdogscpn/graphics/chars/hats/ossicone_12x11.png differ diff --git a/graphics/chars/bodies/make_spritesheet.sh b/graphics/chars/bodies/make_spritesheet.sh index 4db91039..dcbeb7b8 100755 --- a/graphics/chars/bodies/make_spritesheet.sh +++ b/graphics/chars/bodies/make_spritesheet.sh @@ -1,6 +1,7 @@ #!/bin/bash # # Create character spritesheet and join all the rendered images +# Requires blender and imagemagick # set -e SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) @@ -11,10 +12,18 @@ fi if [[ "$OSTYPE" == "linux-gnu" ]]; then BLENDER=blender +elif [[ "$OSTYPE" == "msys" ]]; then + BLENDER="/c/Program Files/Blender Foundation/Blender 4.4/blender.exe" else - # macos + # macOS BLENDER=/Applications/blender.app/Contents/MacOS/blender fi +if [[ "$OSTYPE" == "msys" ]]; then + BLENDER_OUT="C:/out" +else + BLENDER_OUT="out" +fi + INFILE=$1/src.blend # Render separate body parts (in collections) parts=(legs upper) @@ -52,11 +61,11 @@ do fi "$BLENDER" -noaudio -b "$INFILE" -P ${SCRIPT_DIR}/render.py -- "$collections" "$action" "$frames" "$part" - DIMENSIONS=`identify -format "%wx%h" "out/${part}_${action}_0_00.png"` + DIMENSIONS=`identify -format "%wx%h" "${BLENDER_OUT}/${part}_${action}_0_00.png"` OUTFILE=$1/${part}_${action}_${DIMENSIONS}.png rm -f "$OUTFILE" - montage -geometry +0+0 -background none -tile x8 "out/${part}_${action}_*.png" -channel A tmpimage - convert tmpimage -dither None -colors 32 -level 25%,60% "$OUTFILE" + montage -geometry +0+0 -background none -tile x8 "${BLENDER_OUT}/${part}_${action}_*.png" -channel A tmpimage + magick convert tmpimage -dither None -colors 32 -level 25%,60% "$OUTFILE" rm tmpimage chmod 644 "$OUTFILE" echo "Created $OUTFILE" diff --git a/graphics/chars/bodies/render.py b/graphics/chars/bodies/render.py index efa13015..d9b664c1 100644 --- a/graphics/chars/bodies/render.py +++ b/graphics/chars/bodies/render.py @@ -21,7 +21,7 @@ action = argv[1] frames = int(argv[2]) name = '{}_{}'.format(argv[3], action) -RESOLUTION = 24 +RESOLUTION = 32 FRAME_SKIP = 10 angle = -45