#HORSEY TIME ZEEHAW

1 messages · Page 6 of 1

muted ridge
#

Because it would need the other custom animals to use the horse animations

#

Unless you mean just for the player animations

#

Which here would basically be the whole point of the framework part

eternal briar
#

a barebones example gets me, for the fallout animals most of the way there,

for other animals just as quick too,

as i lack the... mental accuity to make things from scratch

#

XML work is hell. having something to live tune that worked for a horse, when making a Dog or cat mod, is immensely helpful

brisk iris
#

It would require a bit of manual work to adjust for other animals, but at least most of the tricky parts about when to use pathfinding vs Walk/Run, and how to set up different turns and stuff like that would be done.
You'd pretty much just have to change the animations to use and some blend times

muted ridge
#

Yea so just share example files on how to add your own riding animations

#

And the framework handles the mounting part

thin crescent
muted ridge
#

Also a lot of animals can already be added without riding animations technically

#

(also cow riding added when ?)

brisk iris
#

Yeah exactly, I guess I meant more of a template rather than a full plug and play framework

#

Haha cow riding would honestly be easy to do

eternal briar
#

template is the idea yeah 🙂

brisk iris
#

How important is being dragged off by zombies for first release? Currently you can get attacked by them while on the horse, is that enough for initial release or should I make it so the player can be dragged off with animations and everything?

thin crescent
#

I don't think anyone would be fussed not having that right away. if you couldn't take any damage while on one that would be the problem

muted ridge
brisk iris
muted ridge
#

Yea

agile shoal
#

A bit of wonk is expected for a first release anyway!

#

Its already looking far more professional than most mods anyway

#

Whos ready for MP to shadow drop when we launch the horse mod just so it breaks immediately

brisk iris
#

hahaha yeah watch it happen

#

or they drop their own horse

short cloak
#

the game itself is an animal modding framework, it's literally just nobody else has actually tried that hard to add one

#

the whole design of animals is catered towards modders

#

i think the horse mod will be a poor example since we're already starting to do quite strange things with it

#

it mostly serves as proof that you can... just make animal mods, before this everyone was sitting about making up reasons why it was probably impossible

astral rover
agile shoal
#

Here's the blend file @astral rover

astral rover
agile shoal
#

Im not sure which rig hes using actually

#

Might be mine, might be another one

astral rover
agile shoal
#

Yeah Im sorry I fell off the face of the earth, im gonna update the rig soon and see if we can tackle this rotation issue

brisk iris
#

Oh yeah give me one sec I'll upload one where it has a mounted start position too

#

I'm using Paddle's yeah

astral rover
agile shoal
agile shoal
#

Happens here when he mounts the second horse

#

Its pretty annoying

astral rover
brisk iris
astral rover
#

maybe y rot got mirrored>

#

Thanks alex

brisk iris
#

If I approach from the center it doesn't happen

agile shoal
#

What weird trigonometry nonsense is happening here lol

astral rover
agile shoal
#

To be blunt, I dont know much about the programming side of the modding part

#

Maybe we could look into the files and see if theres some sort of equation being used when the game is deciding what the character needs to do to get to an action?

brisk iris
#

You can see it more clear here, approaching from dead center, no issue. Approach from diagonally behind, rotation issue.
I think it's because I override the 90 degree turn but not the 45 degree, so the 45 turn node gets thrown in between the idle and mount

brisk iris
astral rover
astral rover
brisk iris
short cloak
#

i would be shocked if the game actually uses xyz rotation

astral rover
short cloak
#

well, if fbx supports it, pz does, they use assimp for parsing so there isn't much room for error from tis

#

at worst it's converted automatically

brisk iris
#

Also to note is that the animation works perfectly fine once it finishes blending, it's only during the blending of a vanilla and custom animation that there's an issue

#

So if it didn't support what the animation uses then it shouldn't work at all I feel

agile shoal
#

It's certainly worth a shot

#

Although I do doubt thats the issue as Alex is right, if it didnt support Quaternions the animations shouldnt work at all I think

agile shoal
#

Ok I'm gonna see if I can do a test mod and look at the animation data during the glitch with -imgui

#

We can slow down the game with it and see the specific variables as it's happening

brisk iris
#

If it's any help, the issue also triggers if I try to use deferred rotation in custom animations:

    <m_DeferredBoneName>Bip01</m_DeferredBoneName>
    <m_deferredBoneAxis>Z</m_deferredBoneAxis>
    <m_useDeferedRotation>true</m_useDeferedRotation>

The vanilla turn animations use this setup, but if I try to use it with custom animations it does the same rotation glitch where it lies down. On vanilla animations it makes the player turn normally

brisk iris
agile shoal
#

Yeah that would be useful, I think I have it downloaded

brisk iris
#

Changing deferredBoneAxis doesn't fix anything btw

#

Oh I've never heard of -imgui

#

wait that looks super useful wtf

short cloak
#

we don't really use it since it tends to crash the game constantly

#

but the tools in there are theoretically quite useful

brisk iris
#

Oh lol, well damn

agile shoal
#

Its working fairly well for me

#

It has to have something to do with the animangle value

astral rover
agile shoal
#

Ill make it go slower lol

astral rover
# agile shoal

Does that also have to do with b42 animations being broken?

astral rover
silver holly
astral rover
agile shoal
astral rover
#

Its when almost nothig is weighted??

agile shoal
#

Why are there duplicate Bob_TPose weights?

astral rover
muted ridge
brisk iris
silver holly
brisk iris
#

Or it could be that the same animation is used for several xmls

brisk iris
agile shoal
#

so the 'angle' variable is the player input direction, and the 'animangle' variable is interpolating towards 'angle' until it reaches it

#

But that mostly seems to pertain to the z axis

short cloak
#

i always go for 'don't release until the core features are (close to) perfect'

brisk iris
#

Yeah exactly, that's the vibe

muted ridge
brisk iris
#

Well dang looks like I need a different sound system than the in-built one.
There's no volume control and changing volume on the sound clip in the script does fuck all. It also plays the sounds longer than it should and doesn't blend well at all when going from walk to trot to gallop for example.
Luckily I can re-use the system I have for my skateboard

short cloak
muted ridge
brisk iris
#

Ah wait I know what it is actually. When I was setting up the mounting stuff I had an intermediary animation between idle and mounting, but it's no longer necessary. Removing that fixed it

agile shoal
slender plank
brisk iris
astral rover
brisk iris
limber plinth
brisk iris
limber plinth
#

That's so weird

#

But I wouldn't be too surprised if they devised a new system for animal sounds

short cloak
#

i'm a little surprised it can ignore the sound script's volume

brisk iris
#

Although, I didn't actually do a full game restart between changing volumes

#

I'll try that just in case

#

Nope full restart did nothing. Maybe if I remove the animal category

#

It is actually using the emitter, let me see if I can figure out how to change the volume using setVolume but for a sound that was started using an event. I've only done it with sounds I stary myself using playSound

brisk iris
brisk iris
# astral rover yeah

I don't have any no, I was just gonna use the vanilla ones and disable the legs from animating basically

limber plinth
#

You'd need to have the sound ref number somehow

brisk iris
limber plinth
#

Changing the general volume may not do anything to actively played sounds?

#

You can also check if a sound is playing using string

#

That may return the ref id?

brisk iris
#

Doesn't seem like it :/ The isPlaying(string) only returns a bool

#

Seems footstep sounds are hard coded to some specific sound volume

limber plinth
#

Oh yeah footsteps are notoriously hardcoded for players

brisk iris
#

I guess I can just lower it in the sound files themselves, and to interrupt sounds so they don't overlap I can use emitter:stopOrTriggerSoundByName(string)

#

Actually no I'll just play the sounds myself, I will probably want to have more control later on anyways. I can keep some stuff with the base system like the idle/stressed/death sounds and stuff like that

brisk iris
#

It'll also be nicer because then I can use longer sound loops which will make it much nicer to listen to during long rides

slender plank
brisk iris
astral rover
muted ridge
#

Also I just noticed these I missed them it looks so good !

brisk iris
brisk iris
muted ridge
brisk iris
#

I can add a slider in mod options for volume

muted ridge
#

Even with different sounds based on the material too

muted ridge
brisk iris
#

Oh yeah smart

muted ridge
#

I know in B41 it required DOME to access the sound menu
Idk for B42

#

But DOME should be easy to reimplement in B42 I think

short cloak
#

dome is pretty simple

brisk iris
#

I only have different sounds for concrete and "dirt" surfaces (sand, gravel, dirt and grass all count for that sound)

#

But adding more would be easy

#

What is DOME?

muted ridge
carmine kelpBOT
#
PZwiki

DOME, of the full name Derived Object Module Extractor, is a tool used to intercept freshly derived Lua objects. This is mostly used to access derived objects which are not defined globally but locally in their respective files, thus rendering them inaccessible outside of their scope.

short cloak
#

it's a b41 mod that just caches every call to ISBaseObject:derive()

#

which sometimes gives you access to otherwise file local objects

muted ridge
brisk iris
#

Ooooh

muted ridge
#

So the sound option panel wasn't accessible globally

muted ridge
#

Bcs I'm sure that'll be useful to some people

short cloak
#

you probably won't even need to change the code

muted ridge
brisk iris
#

Did the hotkey menu require DOME for b41? Because it doesn't in B42 so maybe the sound menu doesn't either

muted ridge
short cloak
#

i think the hotkey menu is just a weird global table

brisk iris
#

Oh yeah true

#

I always do sandbox/mod options for all my stuff instead of putting them in vanilla menus

silver holly
agile shoal
#

Looking phenomenal

astral rover
muted ridge
#

Yea

#

No reasons for not being able to do that since I believe Alex here triggers the sounds from Lua ?

brisk iris
#

Yeah definitely possible, it's indeed triggered from Lua using the emitter

#

But right now I'm only doing the movement sounds with Lua, the idle/eat/death sounds use the vanilla system instead

brisk iris
silver holly
#

btw how did you layer this? did you do it in blender or another program? i'm like finally sitting down at my pc and gonna see how this looks on the other textures 🙂

#

oh jk there we go

#

i think they look pretty nice on all of em

#

i can't upload to the github so they're on the trello - "GBASHADEDNEW" "aqhpSHADED" "APHSHADEDNEW"

short cloak
#

looks great!!

brisk iris
#

Also I for sure thought you named them by just slamming your fists on the keyboard lol, but I see now they have words

brisk iris
#

Ah is it appaloosa? The coat looks like it for sure

#

They look great!

#

Although I noticed a weird thing with the lighting on it (not related to the texture, seems like something else), look at this video.
When facing directly left/right it's darker than other angles

brisk iris
#

I can ask in the modeling channel if they know what's up with that

limber plinth
#

I think that's the shader being poo poo

#

It also ups the contrast and lowers the saturation for colors iirc

thin crescent
# silver holly

Random critique but if it's not too late you should consider increasing the thickness and length of the tail. It's really the only part of the model that looks off to me. Totally not saying this because I started watching 1923

#

Also the lack of a Maine

brisk iris
#

oooh yeah, that's true they don't have any manes

thin crescent
#

Horse pattern baldness

#

It came paired with the Knox virus

dawn geyser
#

Ehm...i know I'm not a modder but i have horses, and if i can give an hint, the anterior legs they should be thinner at the area of the hoof

#

Sorry if i disturb

brisk iris
brisk iris
#

Action and idle sounds are in (eating, idle snort, stressed, pain, death) Need to just test the stressed one

stoic lily
# brisk iris I can ask in the modeling channel if they know what's up with that

I've been lurking here and checking this every now and then, you guys have been making insane progress. Literally coolest PZ project I've seen. This could be caused by a normals issue, at least to me it looks like something like that, but idk to which degree PZ gets broken by weird normals. Could be worth checking if they are set proper in Blender

brisk iris
stoic lily
brisk iris
stoic lily
brisk iris
silver holly
#

@thin crescent @brisk iris Maybe the tail can be changed in the future, I think it fits fine for now. 🙂 as for the hair, I think we decided we wanted the hair to be modeled separately so that it can be customized by the player. (So it'll go on like a hat, accessory item)

silver holly
brisk iris
stoic lily
silver holly
#

Yay!! Thanks kyne!!!

muted ridge
short cloak
#

thank god, that was really annoying me 😅

#

it does make sense for it to be normals now that i think about it

brisk iris
#

@stoic lily can say what he did to fix it, but from the looks of it, the normals were inverted? Facing left/right made it darker, facing up/down made it lighter, which is the opposite of what it should do

stoic lily
#

I tend to always set to face, then recalculate the normals, and then apply the weighted normals modifier on any models I do to ensure the normals will work fine, that's what I did here aswell

brisk iris
#

Re manes; I think to make them clothing we'd have to have 3 separate meshes for one mane. One that follows DEF_Head, one for DEF_Neck1 and one for DEF_Neck2.
If we keep it as one mesh we'd either have to figure out how to weight paint it like human clothing is done, or it will just track one bone which will make it look weird when the horse turns their head/moves their neck.

short cloak
#

hmmm, we'd have to look into if weight painting is possible, from what i know the vanilla examples of animal clothing wouldn't use it, but since everything's built on top of players it might still be possible

muted ridge
#

And we can still improve the model

#

Just move a bit the faces to improve it I guess and still keep existing textures

silver holly
#

Manes being customizable is ideal, however not totally necessary 🙂
We could try a base mane that all the horses have(?) but I'm not sure

#

@eternal briar can possibly assist with clothing and weight painting questions since they do clothing mod packs

agile shoal
#

Ill look into improving the tail

silver holly
# muted ridge And we can still improve the model

Yeah things can definitely be improved and changed, and yeah it's a valid critique for realism.
I think I'm gonna go with what Alex said, I'm sure someone else will make an update if not us in the future.
Making a model change this far down the line might make a lot more work for us, specifically Alex and Paddle(?) I'm assuming, unsure if it's true though

short cloak
#

we don't actually go through the clothing system

#

the fact that they're called 'attachments' worries me that we probably can't weight them

silver holly
#

Ahhh

agile shoal
#

I could make the tails model more volumous without it affecting textures (maybe)

silver holly
#

It could be nice but it's not totally necessary! It fits in with the rest of the game aesthetic, honestly.
When I look up base game animals or other modded animals, everyone seems to have a straight stick situation.

silver holly
brisk iris
brisk iris
eternal briar
#

there is a way to force clothing, but if its not weighted its bad news

#

otherwise. when the mods out ill overhaul the horse model with proper stuff.

silver holly
#

You have access to the model now 🙂 feel free to try something out an show us how it ends up or wait if you'd like no rush

brisk iris
#

Actual worn clothing is a no go :/ Looking at the decompiled code, clothing items are equipped using setWornItem but IsoAnimal never calls initWornItems, only initAttachedItems

#

So unless attachments can be weight painted we might have to go with solid static meshes and just be smart with bone usage

short cloak
#

initWornItems is public, could we just call it?

brisk iris
#

Hmm, interesting idea

muted ridge
#

Could you add an ItemVisual which is the clothing piece ?

brisk iris
#

I have no idea, I'll do some digging but this is not an area I'm familiar with at all

carmine kelpBOT
muted ridge
#

I've seen one or two applications for IsoPlayer clothing, mostly was that mod which allowed you to swap your clothing to other clothing visuals

#

For zombies it's basically the only method to properly change zombie clothings

#

And since IsoAnimal inherits IsoPlayer ...

#

Maybe there's something to fuck around with on that part

brisk iris
#

I think it might be a no-go unfortunately, it seems to require a HumanVisual but the horse only has AnimalVisual which doesn't seem to be wired up to accept clothing at all (unless I'm reading things wrong)

public ItemVisual addBodyVisualFromItemType(String string) {
        IHumanVisual iHumanVisual = Type.tryCastTo(this, IHumanVisual.class);
        if (iHumanVisual == null) {
            return null;
        } else {
            Item item = ScriptManager.instance.getItem(string);
            if (item == null) {
                return null;
            } else {
                ClothingItem clothingItem = item.getClothingItemAsset();
                if (clothingItem == null) {
                    return null;
                } else {
                    ClothingItemReference clothingItemReference = new ClothingItemReference();
                    clothingItemReference.itemGUID = clothingItem.m_GUID;
                    clothingItemReference.randomize();
                    ItemVisual itemVisual = new ItemVisual();
                    itemVisual.setItemType(string);
                    itemVisual.synchWithOutfit(clothingItemReference);
                    if (!this.isDuplicateBodyVisual(itemVisual)) {
                        ItemVisuals itemVisuals = iHumanVisual.getHumanVisual().getBodyVisuals();
                        itemVisuals.add(itemVisual);
                        return itemVisual;
                    } else {
                        return null;
                    }
                }
            }
        }
    }
muted ridge
#

Hmm

muted ridge
#

getItemVisuals on an animal

#

This gives you their ItemVisual array

muted ridge
#

But I've never ever used this

short cloak
#

TIS have very little respect for the liskov principle 😅

brisk iris
#

Maybe I should read more into it, this is what seemed like the function to use when setting an itemvisual

muted ridge
#

To modify ItemVisuals you just get the ItemVisuals array, add, remove or modify clothing then update the model

#

All this are available for IsoPlayer and IsoZombie

muted ridge
#

It explains everything

brisk iris
#

Okay I'll give it a shot and see if it pulls anything

short cloak
#

basically: any operation that is valid for type X must also be valid for every subtype of type X

muted ridge
short cloak
#

no

muted ridge
#

Shit I'm not crazy then

#

This seems to be networking stuff ?

short cloak
#

not really

muted ridge
#

You can getFluidContainer of an entity ?

short cloak
#

this is the game's implementation of ECS

short cloak
muted ridge
#

WAIT

#

You can set an animal with a freaking fluid container lol ?

#

That's incredible

silver holly
#

sorry to interrupt - uploaded two more updated textures with the same shading layer 🙂
american quarter horse blue roan is "aqhbrSHADEDNEW" as well as a leopard appaloosa "LPASHADEDNEW"
❤️

muted ridge
short cloak
#

all components are (or should be) valid for all entities

short cloak
muted ridge
#

An entity can be associated to a mod ID and module

short cloak
muted ridge
#

The component system being modded via Leaf is even more interesting since entities can have those actually

short cloak
muted ridge
#

Zombies and players are defined in scripts ?

short cloak
#

no, those probably aren't associated with them

#

everything is an entity, but not everything has an entity script

#

entity scripts seem to just be for tile objects

#

it's sort of awkward but more or less the natural result of switching to ECS so late

#

in a standard ECS implementation you would not have entity subclasses, components would provide all functionality for an entity

#

but it would be pretty insane for them to separate everything out like that now

muted ridge
muted ridge
short cloak
#

don't worry there's several armchair devs who say they can rewrite the whole game in a different language in a week, i'm sure we can get them to do it 😅

muted ridge
#

Are you talking about aoqia ? 😂

short cloak
#

not really aoqia, just a general pattern i've noticed of new people joining the server, saying something like 'wow this game's code sucks, i could do it way better, they should've done it in <my favourite language>' and then vanishing

brisk iris
#

So I can add to the list, just not sure how to make it render

muted ridge
short cloak
#

i don't think this is going to work

#

i looked a bit more into it and it looks like we are dependent on a humanvisual to actually render something

muted ridge
#

Yeaaa idk

silver holly
#

darn alright - it would've been cool to have a customizable mane but it's really not something we need to sweat about, if someone really needs it they can do it on their own time and energy.

short cloak
#

i'm not really sure why isoplayer has itemvisuals, it doesn't look like they do anything with it, the humanvisual itemvisuals are used

muted ridge
#

Bcs the game code makes sense, did you forget albion ? drunk

#

I suppose you guys tested it ?

short cloak
#

does nothing

muted ridge
#

Fucking hell

short cloak
#

it only exists because the base visual class requires it, but it's not really clear why there is a base visual class or why it requires something that only one of two subclasses implements

silver holly
#

don't judge this is very very unfinished
but i've been straying away from doing these darker coats because i just don't know how to go about the shading/highlighting. anyone have ideas?

#

i'm also not using a straight black, i'ts a really dark brown

#

i tried it a few times before, but i just don't know how to make it look good.

restive steppe
#

Maybe a super dark blue or purple instead of brown?

silver holly
thin crescent
silver holly
silver holly
restive steppe
#

What did you use for the head and legs on this one?

silver holly
#

like a blue grey!

brisk iris
restive steppe
brisk iris
#

We could kind of cheat it by just adding a bunch of bones that relate to each other, and then add meshes to each bone. So for example instead of one mesh that deforms with the bones based on weighting, we have 10 meshes that just follows 10 bones that go up the entire neck and head and curves with the movement of the neck/head.
So each mane is made up of 10 identical meshes that gets added in a row from the bottom of the neck to the top of the head as attachments. If we make them overlap and clip into each other a bit and make them all the same color with minimal added texture/shading to it, it should blend pretty seamlessly right?

brisk iris
silver holly
restive steppe
silver holly
restive steppe
silver holly
#

do you happen to have the hex codes for these? o: if not, i can probably just eyeball it

restive steppe
silver holly
#

thank you ❤️ i'll see how this goes! and they look warm/light enough that maybe the shading layer we already have might just work 🙂

astral rover
astral rover
agile shoal
#

Im pretty sure I did the normals correctly but ill take another look

astral rover
silver holly
#

Chuck did a great job with the shading layer, I was skeptical at first but it really breathes life into my textures 🙂

agile shoal
#

The normals seem good on both sides, so I don't think that's what's causing the shading issue

short cloak
#

i don't really know what they did to them but it did fix it

agile shoal
#

What did?

silver holly
#

Whatever that means

#

#1345522089720942665 message

agile shoal
#

Oooooo interesting

#

So for some reason PZ needs the normals to be inverted?

#

Weird

short cloak
#

i don't think he inverted them

agile shoal
#

I'll have to look at what he did, sounds useful

agile shoal
silver holly
coarse tinsel
#

Maybe merge by distance?

#

Could be an overlapping issue

stoic lily
# agile shoal Thanks for helping us!! Would you mind walking us through the process you did fo...

It wasn’t inverted normals. Just woke up so I don’t have blender in front of me, I can do with screenshots in a bit, but basically- I first “set to face”, an option in the Mesh menu, I think it’s also under Shading or Normals, can’t remember the name of the menu. It also could be “Set From Face”, can’t remember which name blender uses. This I normally (haha) use to fix lots of normal issues

Then I “recalculate from outside”, in the same menu. Just in case there was any flipped, to help just reset it all

And then in the modifiers tab of the model, I added a “weighted normals” modifier and applied it.

The weighted normals modifier gives you very nice shading, and also keeps sharp bits. So if you were to right click on an edge and say “set as sharp”, and in weighted normals modifier click on “keep sharp” it also keeps that as sharp. Just remember to apply the modifier when you’re done with it just in case it isn’t applied on export

stoic lily
#

Basically just this

brisk iris
brisk iris
muted ridge
#

Amazing !

brisk iris
#

@silver holly You put that heart on the butt there on purpose didn't you? 😄

muted ridge
#

For sure hahalol

silver holly
brisk iris
muted ridge
#

HMMMMMMMMMMM

astral rover
muted ridge
#

At some point even if it manages to load stuff, your PC will die if you end up going too fast I guess lol ?

silver holly
#

What do y'all think?

foggy jewel
#

just wanted to pop in and say~ y’all are doing some amazing work here with this mod! Custom animals are a huge step

especially as a newer pz dev, this project is super inspirational. I cant wait to see how it continues to evolve! care

silver holly
#

i forgor the texture

mighty flower
mighty flower
#

As for my opinion on sewerrabbit's textures, I don't think they're bad. I like the colors, and they add variety to the horses. However, I see a slight shading (I don't know if I'm explaining myself well). Maybe it's because I'm used to Chuck's style and it's just my personal preference to see the horse's muscles well defined. It's just an opinion, I hope you don't take it the wrong way, I know there's a lot of work to be done and all this may be subject to change.

silver holly
#

Unless chuck did other textures for the model? I haven't seen them if he did!

#

I could probably darken the shaded layer on this one and make it stand out more

brisk iris
#

Seems we don't have to worry about TIS dropping their own horse anytime soon, so that's nice to hear 😄

brisk iris
#

@agile shoal I need to ask for your help with adding some bones to the rig one more time 😅
Seems the dead body uses some different shadow calculation function that requires Bip01_Head, Bip01_L_Foot, and Bip01_R_Foot bones to exist

#

Not sure if the vanilla animals use front or back for left/right foot, but either should be fine to relate to I think

agile shoal
#

U got it

#

Ill make it soon and send it

brisk iris
muted ridge
limber plinth
#

It's probably a lot lower on the priority list

#

I'm a bit curious what is on the agenda - the road map iirc was "crafting"

#

The crafting overhaul was finished although not fully fleshed out as they showed it will be.

#

The render engine change was a huge thing - maybe cars are closer to the to-do? I'm curious how they'll behave on ramps

short cloak
#

i've been assuming the main thing is the missing crafting skills

limber plinth
#

Ah yeah

#

Man, it would be great to have control over that more lol

#

I have so many ideas bouncing around 😅

#

Having sat with the XP system for so long

#

They recently added category collapse in the skill window right?

short cloak
#

oh yeah, isn't the whole trait and skill revamp still supposed to be happening?

limber plinth
#

I didn't know there was one

short cloak
#

something about breaking up skills more, and experience in related skills would help you gain xp faster

#

i think traits and skills are a massive mess so it was one of the things i was most looking forward to 😅

limber plinth
#

I didn't realize this was the horsey thread lmao

short cloak
#

oops 😅

limber plinth
#

#general message

agile shoal
#

Let me know if this works!

astral rover
#

ykw let me check later on

agile shoal
#

Both, which might be uneccesary but it works

#

It's nothing crazy, just dummy bones

#

I put them in the 'MISC' collection

astral rover
agile shoal
#

Oh I should specify its not using a 'Child Of' constraint, its literally just a child of the bone it's a dummy copy of

astral rover
#

also Could you standardize the visual transforms of the ik legs and arms of both the character and horse? making them go all the way to the bottom of the mesh?

#

I just find posing arms a bit annoying tbh

agile shoal
#

Let me take a look

astral rover
#

also why does it have a roll? Im geniunely curious

agile shoal
#

It probably shouldn't but that number is so absurdly small it doesnt really matter

agile shoal
astral rover
agile shoal
#

Oh, I see

astral rover
#

its annoying because when it rotates the mesh doesn't pull or stretch so I kinda loose track, But my opinion doesnt really matter, ask alex, he probably should have the final say

agile shoal
#

I do think it's more personal preference, if you want to fix it you can change it yourself in your own file by tweaking the custom shape settings

#

I haven't done a quadraped rig before but I suppose that makes more sense

brisk iris
#

I think I like how the legs are now, but I can also see why someone would prefer it to go all the way down

#

It could be because it's the only way I've tried, if it's an easy change to do locally I might play around with it a bit, unless it means I have to change existing animations because then I'll just leave it 😄

brisk iris
agile shoal
#

or they can end up using ours 😎

silver holly
#

I think we've got something so special here that people will check it out, even if TIS did release horses the same day we did 🙂

vocal hatch
#

My ex-girlfriend use to say you can never have too many horses

brisk iris
#

Cleaning up the attachment system so equipping/unequipping goes through the animal menu and has timed actions.
Also set it up so it's easy to add new items, just add any item that has a StaticModel to global HorseMod.HorseAttachments along with the target attachment slot:

HorseMod.HorseAttachments["Base.SpiffoBig"] = { slot = "Back" }
brisk iris
#

@agile shoal Your fix works! Just remembered to test

#

There's another issue though, it seems to want to ragdoll on death, and it looks like it needs the Dummy01 bone to do that. But I would rather use death animations I think, since ragdoll is likely to get glitchy.
Trying to figure out if I can disable it just for the horse

#

Actually wait I don't think it uses ragdoll, something else is going on

silver holly
#

did that death animation ever get applied? o: unsure if that's a thing

silver holly
#

is this dark enough on the shading layer

astral rover
brisk iris
# silver holly did that death animation ever get applied? o: unsure if that's a thing

I'm using the idle animation as placeholder for now.
It seems to be that even if you have ragdoll disabled, which animals have by default from what I can tell, it still calls some ragdoll related stuff which I'm pretty sure needs a Dummy01 bone. It's the only bone I can think of that is missing and would be at the top of the bone hierarchy. The other would be Bip01 but we have that already

#

@agile shoal Would it be easy to have the Dummy01 included in the export without breaking stuff? If it's annoying to change, could you instead try adding a Dummy01 bone like you did with the others?

I don't think the bone will actually be used for anything, but it makes some important stuff fail without it

agile shoal
#

From everything we've tried, including the Dummy01 parent object seems to break everything but lets give it another shot

#

Ill also try including a dummy bone

#

Here's the rig that just has a random bone named 'Dummy01' in it

#

@brisk iris

agile shoal
#

If that doesnt work there are a few other avenues I could try

brisk iris
brisk iris
#

Ah nice, time to butcher my horse ball

brisk iris
#

@agile shoal I think we have a bit of a doozy on our hands with the dead horses.
When they die they properly play the death animation and then stays in the deadbody animation and looks fine.
But on restart it seems to clear the animation on the horse and reinits their pose using ragdoll logic or something else that sets a pose, which probably relies heavily on the bones being weighted/related in a specific way.
I think it's happening for the same reason the horse meatballs in the attachment editor view

#

Hmm, but vanilla animals get put in the exact same pose after reloading a save, so they have a static death pose

#

I wonder if we can just cheat it by detecting dead horses, removing their bodies and just adding a new dead horse back in

brisk iris
#

Hmm, I think it's gotta be something with IsoDeadBody:getDiedBoneTransforms() and then reapplying it to corpses

#

wait I think I'm on to something, but I might need some more bones lol

brisk iris
#

@agile shoal I'm gonna have to do some more digging, but I think the issue is that Bip01_Head, Bip01_L_Foot and Bip01_L_Foot are not included in the skinning data, which from googling around seems to do with vertex weights? Does that sound right?

#

I see none of those are in the vertex groups list when clicking on the horse mesh, but importing a vanilla player mesh shows those bones there.
I think if we could have those 3 (head, feet) bones showing in that vertex groups list we might be in the clear

agile shoal
#

I see, I can add some skinning data for those bones to the mesh

agile shoal
#

I just put empty vertex groups on the mesh with those bone names, let me know if you need the mesh to be weighted with some dummy values as well

brisk iris
muted ridge
silver holly
# silver holly What do y'all think?

@limber plinth I've been staring at the shading layer you did for a while - It's perfect and I've only just noticed because I had to double layer it but I think the shading on the eyes is uneven.

agile shoal
#

Also I should specify this FBX and the last one I posted include the Dummy01 object as a parent, you said that worked, correct?

brisk iris
#

Yeah everything else is working, all the old animations and everything is all good. It's literally just when a horse tries to set the death pose when loading back in to a game. It seems to need to save some bone data, and for that it needs to go through some ragdoll logic, which gets messed up if it can't find certain bones that I assume are critical to the ragdoll system working. Even though the horse doesn't actually use the ragdoll pose at all...

#

I'll test with the latest version right now 🙌

limber plinth
brisk iris
#

Hmm still not working. I might have to try the route where I remove and re-add the body, or remove and spawn a new horse that is instantly killed.

agile shoal
#

Am I crazy but doesnt the game just cache the image of the dead animal and use that to render rather than using 3D models?

#

Is that what is saved between sessions?

brisk iris
#

Basically yeah, it becomes a sprite instead, but it seems to re-do that on game load for some reason, or I'm misreading something

silver holly
agile shoal
#

Do we know the file that has the logic that does that?

short cloak
#

yeah, basically every static 3d object is really a pre-rendered sprite

#

they aren't saved, it'd bloat saves immensely and wouldn't really improve performance much

brisk iris
#

It seems to be done by zombie\core\skinnedmodel\DeadBodyAtlas.java from my best understanding of reading through IsoDeadBody it basically saves the bone transforms on death, builds a DeadBodyAtlas, sets that as sprite. On game load it does not reload the old DeadBodyAtlas as mentioned by albion since it's not saved, instead it takes the bone transform data and rebuilds the DeadBodyAtlas with it

#

Problem seems to be that for the bone transform data to be saved, ragdollFall has to be enabled on the animal, but if I do, I get error:

ERROR: General      f:2911, t:1756988056218> ExceptionLogger.logException> Exception thrown
    java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 38 at AnimationPlayer.getModelTransformAt(AnimationPlayer.java:2088).
    Stack trace:
        zombie.core.skinnedmodel.animation.AnimationPlayer.getModelTransformAt(AnimationPlayer.java:2088)
        zombie.core.skinnedmodel.model.Model.BoneToWorldCoords(Model.java:157)
        zombie.characters.IsoGameCharacter.calculateShadowParams(IsoGameCharacter.java:8155)
        zombie.core.skinnedmodel.advancedanimation.AnimatedModel.calculateShadowParams(AnimatedModel.java:1885)

Which when I got it last time I traced it to the head and feet bones, but I'm not sure if it actually needs all of the bones to have bip01 version that are weighted or something

agile shoal
#

Seems to be done in the functions calcModelBounds and calcModelOffset

brisk iris
#

It's getting way above my knowledge level 😅

#

That's why I'm thinking maybe it's just easier to re-kill the horse on game load. It saves all the dead body data to modData so it's easy to recreate it at the same death age and state

agile shoal
#

It's certainly a workaround until we can figure it out better

#

Seems like this is the function thats at the end of the trace? (in AnimatedModel.java, but this is from 42.4 so maybe it changed)

public boolean renderMain() {
            if (!this.animatedModel.isReadyToRender()) {
                return false;
            } else {
                this.animatedModel.renderMain();
                this.m_animPlayerAngle = this.animatedModel.getAnimationPlayer().getRenderedAngle();
                boolean _boolean = this.body.ragdollFall && !PZArrayUtil.isNullOrEmpty(this.body.diedBoneTransforms);
                this.animatedModel.calculateShadowParams(this.entry.shadowParams, _boolean);
                return true;
            }
        }
brisk iris
#

Yeah this ragdollFall seems to keep popping up everywhere I look, but from what I can tell the vanilla animals don't have this set to true by default.
It's all very confusing

agile shoal
#

I need to decompile the newest version

#

For now, probably look into doing that loophole while we try to figure it out

brisk iris
#

Yeah gonna give that a go now.
Seems easy to use horse:becomeCorpse() but it doesn't go through the death animation so probably gotta do something that kills it differently

#

Oh it's literally just horse:setHealth(0)

#

Seems we have another problem.
When putting the horse on a butcher hook it seems to use the animation that is made for the "onhook" state, and uses that transform data to make a deadbodyatlas for the horse on the hook.
So it will look like a meatball on the hook :/

agile shoal
#

Yummy

#

I'll decompile and take another look at it soon, doing my uni homework rn lol

brisk iris
#

The DeadBodyAtlas is reconstructed using the animation set for deadbody, which I had set and everything, but it specifically looks for the m_Name to be "deadbody", and I had it set as "Horse_deadbody" lmao

#

It works absolutely fine now

#

The hook is probably the exact same thing

agile shoal
#

Hey progress is progress!

brisk iris
#

Hahaha yeah 😄

#

Yup, exact same thing for the butcher hook yeow

agile shoal
#

Only here are we excited about butchering horses

brisk iris
#

Hahaha

dawn geyser
#

i love too horse meat

brisk iris
#

I had to turn the volume off after hearing the stressed out neighing for the 600th time

agile shoal
#

You're going to turn vegan like how meat packing plant factory workers do

dawn geyser
#

i am lucky i am a chef

#

i buy entire animales

#

or i go hunt

#

or fishing

brisk iris
muted ridge
#

cute !

astral rover
#

Also, has anyone else's project zomboid been running especially laggy recently?

brisk iris
#

If I want to run some code when exiting the save, which event is best to use? Or better to hook into some method?
Can't find a clean like OnExit or something

short cloak
#

there isn't anything like that

#

you can hook the exit game button but there is no guaranteed way to run any code if the game crashes

muted ridge
#

Which is kind of surprising we don't have an event for that tbf

brisk iris
#

Yeah that's kinda ass 😬

#

I wonder if I should use that container teleport method I was gonna implement for my bike instead then for functional containers attached to the horse?
It'll be easy to lose all your loot if the game crashes and we can't drop the container from the horse, causing it to get purged

#

So basically you attach a dummy bag that looks like a container but actually isn't, it's just a visual representation on the horse. The real container is invisible and gets spawned in when the dummy one is attached to the horse. Then the invisible container teleports with the horse and player when they move

#

Would make it so I don't have to fuck around with the inventory UI which would be nice to skip

thin crescent
#

Wish I could manage to fix those 2 things but I think only an upgrade will do it

dawn geyser
#

as far i know...many people are reporting a lag problem...mostly from when they use cars

thin crescent
#

I would get it on build 41 as well so it's nothing new.

mighty flower
#

There are very few things that can cause lag for me, unless I'm moving very quickly around the map (areas not previously loaded), there are hundreds of zombies, or I'm having the chicken apocalypse problem in the chicken coops.

#

I used a mod to use the processor more and increase the RAM used by the game, which practically fixed the lag

mighty flower
silver holly
#

Yeah it really adds another layer of depth

astral rover
mighty flower
astral rover
ebon flame
slender plank
#

Could you in theory, scale up the racoon model, slap a saddle on it and make it ridable 😂

dawn geyser
#

I have a question....we gonna be able, while on the horse, to attach to a rope another animal and move it?

#

It's gonna be funky like in a rp server being a cowboy moving cattlea to another settlement in a world without cars

muted ridge
#

@brisk iris based on how it works it seems likely ?

brisk iris
#

That'll be nice for the inevitable mule mod, just bind a bunch together and form a mule train to carry all your shit 😄

dawn geyser
#

Also can be possible to make a special saddle for the horse to use it as amule

#

The player ride an horse and lead another one as transport

brisk iris
#

In that clip the player is holding both ropes, but it can easily be attached between animals from what I can tell

dawn geyser
#

With this u have basically unlocked the possibility to be a cowboy a real one!!!!

brisk iris
#

Oh that's nice, didn't know there was a global table for contextual action handlers 😮 Could have used that for my rideables lol, but looks like I can easily add the mount/dismount to it

dawn geyser
#

I think in the 42 we can move with max of three animals on ropes... i should try

brisk iris
dawn geyser
#

Nice!!!!

#

Even better than the cow one

#

But i remember there is actually a problem with the meat

brisk iris
#

Thank you 😄 I tried having it hanging straight but it's too long

dawn geyser
brisk iris
#

What kind of problem? I have fixed a lot of butchering stuff in my local version. It needed a parts definition file

dawn geyser
#

There is a problem that animals not on the hook give more meat than the ones on the hook

brisk iris
#

Oooh I see

#

A vanilla bug

dawn geyser
#

Yes

#

And tis don't really want to touch it

#

For now

#

Is relate to a different size of the animal

brisk iris
#

Ah that makes sense

dawn geyser
#

Unhooked animals are bigger

#

There is a mod and a loooong thread on bug's report

#

O. The tis website

brisk iris
#

Seems mine don't have that same problem, right now I have disabled varying sizes for them, maybe that's why

dawn geyser
#

Ok i just wanted to say so un don't have to patch it later

#

And again guys u are making an amazing job.....

brisk iris
#

I butchered on hook and it gave 12 pieces of beef and 6 steaks, butchering on ground gave 2 beef and 3 steaks

#

I appreciate the heads up!

thin crescent
brisk iris
# muted ridge Contextual action ?

Basically when you press E (or your bound interact button) it goes through a table of handler functions and does an action based on the criteria met.
lua\client\TimedActions\ISContextualActions.lua
So when you go to an animal and press E, it calls ContextualActionHandlers.AnimalsInteraction and you will try to milk or shear first, and if it can't it will try to pet the animal.
Using that I can just hook into the AnimalsInteraction and add a check for mountable/dismountable horse before the pet action.
So now when facing the horse and pressing E it will try to mount from closest position. When mounted it will dismount

#

But you can also just add a function to the table and it will get called when pressing E.
So for my skateboard/bicycle I could use that instead of wiring up my own custom key handler and key bind

#

Now it does the action based on which attachment location you're closest to.
If you're close to the head you will pet, close to the sides and you will mount.
Also added the dismount action and animation

brisk iris
#

Actually maybe not

thin crescent
#

Yea idk if it's the model or the scale of certain tiles when side by side with the horse

brisk iris
#

oh wait yeah the model I use in blender for animation reference is scaled slightly smaller than the in-game one

#

The horse is a bit big

thin crescent
#

Glad I'm not crazy

#

The hook really put it in perspective because not even the cow is that big in comparison

slender plank
#

How does it look riding into a garage at that height. Will probably end up using those as makeshift Paddocks when on the road

brisk iris
dawn geyser
#

The garages in pz are always too small

#

Rarely a car fit in it🤣🤣🤣

brisk iris
#

Oh sick, someone posted a full guide a few days ago on how to add animals to the map over in the mapping discord #1361696212277006570 message

#

I think we're getting real damn close now

slender plank
brisk iris
muted ridge
muted ridge
#

Oh yea you can get the attachment points right ?

muted ridge
slender plank
brisk iris
agile shoal
brisk iris
silver holly
#

@brisk iris by the by @agile shoal Unsure if it's already on yalls to do list but was the model warping ever solved?

brisk iris
#

I think I just need to roll back to an earlier version before those bones were weighted and stuff

#

Or do you mean the character rotation in the animation?

silver holly
#

Yeah the front feet - They were always funky like that when idling

brisk iris
#

Oh really? I must have never really paid attention

#

Let me go back and check some footage

silver holly
#

At least I remember this always being a thing, it gets fixed in animations but then goes back when idling

brisk iris
#

Huh, yeah you're right, it's in very early versions too

#

Only the front legs too

#

I wonder if I should just add some slight movement to the bones to the idle animation

#

as a quick fix

silver holly
#

I'd assume that would fix it since the other animations work

#

Could I suggest?

brisk iris
#

I added just one frame where they were moved just a tiny tiny little bit and it fixed it

brisk iris
agile shoal
#

I believe so

#

I cant find much reference online about how horses are posed when idling

silver holly
brisk iris
brisk iris
silver holly
silver holly
brisk iris
#

Hell yeah, figured out how to add new objects as hitching posts just using sprite names 😄
Basically have to first add CanAttachAnimal on the sprite property, and then hook the ISAttachAnimalToTree and add the object to the square´s special objects list before it calls the setAttachedTree(object)

muted ridge
#

Wait we couldn't do that ?

#

Might as well make it a patch mod to allow players to attach any animals that way

brisk iris
#

Yeah I thought it would be a bit easier, but the IsoAnimal.java has this block:

            for (int int0 = 0; int0 < square.getSpecialObjects().size(); int0++) {
                IsoObject object = (IsoObject)square.getSpecialObjects().get(int0);
                if (object.getProperties().Is("CanAttachAnimal")) {
                    this.getData().setAttachedTree(object);
                    this.attachBackToTreeX = 0;
                    this.attachBackToTreeY = 0;
                    return;
                }
            }

So strictly looks for a special object with CanAttachAnimal property

#

This is the reattach of the rope that needs to happen. You can attach them to non-special objects, but they won't re-attach on the next tick so it does virtually nothing

#

If anyone has the energy/patience to go through the sprites and pick the ones that could be nice to add as hitchable objects, that would be a huge time saver so I can work on other stuff

silver holly
#

And should I just make a list in a google doc or on the Trello?

brisk iris
# silver holly I can definitely sit down and do this 🙂 How do you think I should pick sprites/...

Thank you! I think the easiest way would probably be to open the .pack files

You can open the pack files by downloading the "Project Zomboid Modding Tools" which can be found by enabling the tools in your steam library. (Image 1)

After downloading do this:

  1. Open the modding tools and select the Tile Zed option.
  2. Select from the top menu Tools > .pack files > Pack Viewer (Image 2)
  3. In the pack viewer, in the top corner, select file > Open .pack (Image 3)
  4. Navigate to ...\Steam\steamapps\common\ProjectZomboid\media\texturepacks
  5. Select a pack to open (I think only the Tiles2x.pack is relevant tbh)
  6. Hover over an image to see the sprite name

Then I think google doc would be easiest for me to copy in a nice format after, just a list of the sprite names would be absolutely amazing

silver holly
#

Thank you!!! I'll get started in a few minutes 🙂

brisk iris
#

Awesome, thanks again! It's no rush so don't go crazy staring at a bunch of fence posts 😄

#

We can easily add more later as well

silver holly
#

or like these ones?

brisk iris
#

And you can skip all trees because they work by default

brisk iris
silver holly
brisk iris
#

So to "pause" XP gain, do I basically just listen for the AddXP event, and then remove the XP that was gained using player:getXp():setTotalXP()?

astral rover
narrow lynx
silver holly
narrow lynx
silver holly
narrow lynx
brisk iris
#

Horses can now mate and have foals (which are just scaled down horses 😄 )

thin crescent
#

can the game even do something like that?

brisk iris
thin crescent
#

that is so cool

brisk iris
#

I think we should provide genetic info based on animal care level. So at level 1 if you check the animal info you just see the basic fed/thirsty/pregnant status, but if say you reach level 10 then you can see the full genetic breakdown of every horse, so you can selectively breed for certain traits

silver holly
#

I'm not trying to pile more onto your plate BUT if it's ez then I'll make some foal textures

brisk iris
silver holly
#

YESSSSSSS I'll get on that ASAP 😊

#

Also! @narrow lynx had an interesting idea? He was thinking about adding rocks as something horses can tie off on?

Personally, I think it's a fun idea and I'm sure useful in game but it doesn't make sense in my brain

brisk iris
#

Hmm, like you would tie a loop around the bottom of a big rock (like boulder sized) or something? I could see it working for some rock shapes, but not sure if it logically works for the rock shapes that exist in game

#

I could make a new tile that just looks like the wooden stake sticking out of the ground, and we could allow people to build that on dirt/grass if they have a wooden mallet with them, and then tie the horse off of that.
Like a portable hitching post you drive into the ground with a mallet

#

But I feel a scared horse would tear that shit out with 0 effort

silver holly
#

Logically and realistically, it doesn't really make sense especially since most of the rocks in game are like flat, round boulders.

BUT I know it's a video game, so I didn't wanna just shoot down the idea because it's not realistic enough lol

A portable post is a good idea, I do like that!

#

And yeah you're right, in real life a horse would tear that out of the ground BUT also I tie my horse to bailing twine so that if she pulls it will break instead of breaking her neck - A lot of people use twine that can snap easy if the horse spooks

narrow lynx
#

The stones I added are SolidTransparent stones, medium or large. I added some sprites to the list—feel free to take a quick look at the ones I added and remove any you don’t want.

brisk iris
silver holly
#

It's perfect

#

!!

brisk iris
#

@silver holly I'm building a stamina system for the horse so that after galloping for a while it runs out and needs to trot/walk/idle to recover before it can run again.
What would a reasonable stamina drain be? Right now the stamina is from 0-100 and drains at 1 stamina point per running second.
So the horse can run for about a minute and a half before needing a bit of rest.
Can they gallop for long periods at a time?

silver holly
#

If anything maybe if you can do a point for every 1/2 second or vice versa(?)

brisk iris
#

Yeah sure can! Maybe for gameplay purposes we let the default values allow for 3 minutes of run time, and then you can find horses with better/worse cardio that affects maximum stamina and regen rates

short cloak
#

whatever plays best imo, no point trying to be realistic because in default game time a horse should only be able to run for a couple real seconds 😅

silver holly
#

The goal is playable and realistic

brisk iris
#

Very true!

silver holly
#

I feel like 3 minutes at max speed is very forgiving considering horses don't need gasoline 🙂

brisk iris
#

I will make most of these as sandbox options as well, so it can be tweaked to peoples liking. But we should have a nice default that we all think feels good as a base

#

Did we have a horse skeleton model btw? I see one in trello but it's not rigged or anything

silver holly
#

We have one but I haven't looked at it

#

@karmic vortex made it if I remember right!

#

🙂

brisk iris
#

I found this one, but it needs to be rigged the same as the regular horse so that I can apply the death pose to it

karmic vortex
silver holly
#

Oh sorry it was the other J name!!

#

Oh this might actually be from here

brisk iris
#

Oooh okay yeah

#

There are a few things needed for the dead horse stuff that I need help with as it has to do with modeling and texturing.

  1. Skeleton mesh that is rigged with the same rig as the regular horse so I can apply dead pose animation
  2. Texture for when the horse has been skinned
  3. Textures for the skeleton, bloody and non-bloody
  4. Separate the head into its own mesh so it can be made into a "Horse head" item (will be fun to see how long it takes before the first The Godfather reference)
  5. Make the headless horse into its own mesh
  6. Repeat step 4 and 5 for the skeleton
  7. Make a "carcass" model, gonna look at some vanilla versions of that to see what they look like
silver holly
astral rover
brisk iris
#

But we're definitely getting somewhere!

I've got the stamina system working and I tested mating which works well.
I think today I might try to get shooting from horseback to work

silver holly
#

idk. thoughts?

#

at first i was thinking about doing it like how red dead did it with the major muscle groups being visible

#

but that seems hard to do with my mouse and pz's way is much simpler

#

this is bugging me

agile shoal
#

This would be a sick Metal album cover art

#

Maybe a bit less blood to match the vanilla carcasses?

#

Looks good nontheless

agile shoal
agile shoal
#

Holy shit you're a madwoman 😆

thin crescent
# silver holly idk. thoughts?

less blood like paddle said and I think some more gaunt detail on the face like you can see on the sheep and it would look on par with vanilla

#

and yea drawing all that with a mouse is insane good stuff!

silver holly
thin crescent
#

since it's meant to be a skinned corpse there wouldn't be any lips

silver holly
#

they just made little zig zags haha

thin crescent
#

better than my attempt at teeth

brisk iris
#

So I think combat is gonna be a bit tricky and might have to wait.
The aim state is not very friendly to work with. I basically can't find a way to nicely limit the direction the player can aim in while mounted so they don't spin on the horse.
I have some ideas on how it could be done, like for example I can fully disable the turn delta, so I could theoretically set it up so that if I aim past a certain angle relative to the direction the horse is facing, then it disables the turn delta so they player doesn't turn.
Then when moving on the horse it re-enables it but only while aiming in allowed ranges.
It'll be pretty messy though.

My other idea is to make basically 4 different aim animations. I can control the twist angle of the torso before it starts turning, so I should be able to have one animation where I aim forward (relative to the horse facing direction), two animations for aiming left/right and one for aiming behind and then rotate the player in the animation to face the correct way, letting the torso twist handle the angles in between the animations.

I think the second option will be cleaner, but it will take a lot of tinkering to get the animations lined up nicely.

#

What I could do is add a kick that replaces the shove, so you can kick nearby zombies with your feet while on the horse

silver holly
#

and yeah that sounds like a pain - if you're willing to tinker with that, sounds like our best option o: maybe some other folks will have suggestions for animations

silver holly
#

make the player really tall

silver holly
#

more? less? opinions?

narrow lynx
#

more transparent blood

silver holly
silver holly
thin crescent
# silver holly

this looks pretty much perfect. Maybe add some like red scratch lines to make the white look less pristine

#

the horse there still looks kinda clean and not so "skinned" I think it mostly has to do with the texture res being higher than the sheep so it looks more crisp

silver holly
astral rover
astral rover
thin crescent
silver holly
silver holly
#

I will be going through and making injured versions of the other horse textures, though 🙂

silver holly
foggy jewel
#

random question, if custom animals can be given a health ui like the player - would it be feasible to do something like this?:
if “X” bodypart is injured; trigger texture “injured bodypart”
Say for example the leg gets injured, it’d use an “injured leg” texture. applying this even further, maybe “bandaged” textures could be used once the wound is treated, idk.
though i imagine this would need code for each bodypart. plus overlaying the textures on top of each other might be tricky (transparent blood decals maybe?)

overall not a crazy important idea for development, but it’d boost realism

short cloak
#

a health ui is possible but it'd basically be entirely from scratch if we decided to do something like that, the vanilla health system isn't moddable at all

#

i doubt it would be possible to show injures visually on the horse unfortunately

#

for players and zombies injuries are technically just hidden clothing, but animals can't wear any

silver holly
foggy jewel
#

yeah, stacking multiple “injured” textures might be impossible

silver holly
#

My idea was make one or two additional textures per horse coat/breed, like a scratch on the back leg or scratch on the chest/shoulder. Unsure if maybe a new texture could be inserted when put into an injured state(?)

short cloak
#

it seems like it should be possible to swap their textures but how any rendering stuff actually works is a little hard to decipher

#

animal code has pleasantly surprised us a few times already so i'm staying optimistic about it

silver holly
#

Me too! But not to worry if it's not possible 🙂 I am so impressed with everything that has been possible so far

brisk iris
#

I can dig around a bit and see how easy/hard it would be to swap textures

short cloak
#

animalvisual has a method for it, i'm just hoping it actually works, because similar things on humanvisual don't

brisk iris
brisk iris
#

Would be fun to have a full health UI for it with treatment options and health status etc. but as Albion said we'd have to make it from scratch so it will take quite a while to do it as fleshed out as the vanilla one.
What we could do is make it so there's just a general "Bandage Horse" action that heals it

#

I need to look into how animals actually bleed, because when you shoot an animal and it runs away and eventually dies, there's a timer set in the animal definition that triggers death after X seconds:
AnimalDefinitions.animals["fawn"].wildFleeTimeUntilDeadTimer = 300; -- this will be used as a random timer to make the animal drop dead once you shot him, he'll flee and drop lots of blood before dropping dead, it's lowered by the aiming skill

#

Yeah I don't think animals actively bleed at all

#

Seems to just drop health when directly hit, if the animal is wild the timer kicks in and kills them unless the player does it first
So I guess the bandage horse would just heal max health

brisk iris
#

Ugh the sound system is so annoying. The stressed/death/hurt etc. sounds are on full volume and aren't affected by the volume param either. So I can't use the vanilla system for those, gotta build my own system for idle sounds, eating, hurt etc.

narrow lynx
brisk iris
#

Need some help brainstorming solutions for camera panning.

The situation is that right now I'm not gonna do combat because it will require a lot of time and attention to get it right.
So what I was gonna do was disable aiming fully because when aiming it overrides all my direction stuff and makes it so the player and horse can face completely different directions.

Note that everything mentioned below will be a non-issue when I implement combat as I will be able to use the same aim system with weapons for bare hands.

The problem I'm currently facing is that aim and camera pan seem to be coupled, so if I disable aiming you won't be able to pan the camera (you can zoom in/out still).

So our options seem to be:

  1. We just disable the aim and camera pan and leave it as an unfortunate limitation.
  2. I make it so that if you hold down the aim button the horse and the player both face the direction of the cursor. Basically making it so you can steer the horse using the aim button. Could be bad if people get used to it and then we change it when implementing the combat system. However, we could make it so you can steer using mouse if you have no weapon equipped, making the aiming combat stuff only kick in if you hold a weapon.
  3. We let the player spin around on the horse which will look bad but keeps the camera panning.

We could also implement all 3 and let people choose in mod options

muted ridge
#

That would fix the issue

#

Since the horse wouldn't be dependent on the aiming direction

brisk iris
#

I don't think it would fix it unfortunately, because even with tank driving if you hold down aim and aim anywhere that is not in the direction the horse is facing, then the character will turn their body.

The player and horse has to face the same direction or the animation doesn't line up anymore

#

There's maxTorsoTwist that let's me change how far a player can twist their upper body before the lower body follows, but it caps out at 90 degrees

#

If it had 360 support it would be easy

muted ridge
#

Hmmm

#

Could make a custom camera system maybe....

brisk iris
#

I was playing around a bit with IsoCamera to see if I could jerryrig something, but I have no idea how it works and couldn't get it to move around.
But I'm definitely open to that if anyone knows how to work with it

brisk iris
#

@silver holly Thank you for the list of sprites, I just put them in and tested and it's working perfectly! Been walking up to random stuff that makes sense to tie it to, and they've all been possible 💯

slender plank
silver holly
#

Standing pose is a good idea

restive steppe
#

Is there a way to lock the aiming into a certain cone in front of the rider/horse? That way it gives a range of motion but you still have to turn the horse at a certain point

muted ridge
#

I'd say yes

brisk iris
# restive steppe Is there a way to lock the aiming into a certain cone in front of the rider/hors...

In a way yes, I was experimenting with it. The only way to really do it though is to set the turn delta of the player to 0, then when they're supposed to turn they just don't, but it still allows for torso twisting which is what we want.
So it sounds perfect in theory, but it's unfortunately too good to be true. When you aim outside of the 180 degree cone in front of you, the aim glitches out and resets to the middle and gets stuck in a like 10 degree cone until you slowly rest the aim in the smaller cone which then "unlocks" the larger cone again.
Super janky, and it also keeps the direction locked when you turn the horse, so we'd need a system that dynamically locks and unlocks the turn delta based on aim direction, movement direction etc. etc.

restive steppe
#

It might be worth having a chat with papachad if they're willing, since they've set up that whole shooting system on their vehicles, dunno if it'll be any help with animals though

muted ridge
restive steppe
#

Hm, what about separating the upper body and lower body? It would still look a bit goofy twisting 360, but it wouldn't be as much as the whole body

muted ridge
brisk iris
#

Yeah I have an idea on how to make it work when I do the combat.
Basically I negate the body twisting by making an animation that twist it the same amount in the opposite direction. Since I can make the torso twist 90 degrees before turning, I only need 4 animations to cover all directions.
It's just gonna be a lot of tinkering to make sure it's all set up well, so I'm trying to figure out the best workaround/compromise for now.

I found some discussion about camera stuff in a different channel so I'm gonna play with that a bit tomorrow and see if I can make my own camera panning system, that would solve it for now if it works well

silver holly
#

little red lines only

#

red lines and noise

vagrant fjord
#

So is it safe to assume this will be a b42 mod only? Or is it possible for a b41 (lite) version?

muted ridge
vagrant fjord
#

Gotcha

muted ridge
#

So B41 is out of the question

vagrant fjord
#

We've been working on a wild west event on a multiplayer server so didn't know if we should push it off until this wonderful mod is completed. Sounds good though

short cloak
#

yeah unfortunately literally nothing we've made could be ported to b41 at all

vagrant fjord
#

Amazing work nonetheless

muted ridge
short cloak
#

if you want to fly in the air 😅

muted ridge
#

I mean, Alex could replace his bike by a horse in a mod

#

And since he uses his bike systems, they should work in B42 for the most part

short cloak
#

the horse won't be animated 😅

vagrant fjord
#

This is the current bar for b41 lol

#

Iconic for sure but needs some cooking

silver holly
# vagrant fjord We've been working on a wild west event on a multiplayer server so didn't know i...

if you haven't seen it already, there's one or two mods which add unfunctional horse props. they're really good models though!
there's a certain kind of railing you can use that looks great as a hitching post
and, if you're interested i can tell you about the travel system i made up with the horses!
i too had a western rp event a while ago on my server which what eventually lead to me wanting real horses lol

muted ridge
agile shoal
#

I feel like theres not much need to invest time into making B41 stuff anymore, B42 MP feels around the corner to me at least

vagrant fjord
#

Would screw alot of servers over if they dont give a proper heads up on that

brisk iris
brisk iris
muted ridge
brisk iris
brisk iris
#

If I get it working well, maybe we have two options for players to choose from:

  1. The player model spins on the horse when aiming around, but the vision cone and camera pan behavior is exactly as vanilla
  2. The player model stays facing the direction of the horse, but the camera pan is custom (will try to make it as close to vanilla as possible) and the vision cone doesn't move unless you change direction with movement input.
brisk iris
#

Kinda got it to work, but it's pretty jittery.
Not sure if there's an easy fix for that, I'll play around a bit more but might just have to leave it for now

astral rover
brisk iris
muted ridge
#

Which event do you run this on ?

brisk iris
muted ridge
#

Or PreRender, PostRender, try these

#

OnRenderTick I think it is ?

#

I don't remember, but yea one of these instead I'd say

brisk iris
#

Sweet tip, I'll give it a try when I get home!

brisk iris
#

Still pretty jittery unfortunately, especially when moving so on the horse it's super jittery

muted ridge
#

@karmic vortex probably had the problem, and can probably give some insight on it

#

I think he had the same problem yea

brisk iris
#

You know what fuck it I'm gonna just dive into the 2dblends system and see if I can figure out exactly how it works because I think it could be the solution here

#

and it's also needed for combat to work

#

So if I can spend a day getting that to work it will be worth it

muted ridge
brisk iris
#

I wonder if I can wrestle this thing into submission by now also twisting the torso the wrong way in the animation

#

nope

#

Damn, that might be a dealbreaker for ranged combat that doesn't look super janky

#

Could still do melee combat pretty clean though

foggy jewel
#

idk if it’s feasible, but here’s an idea for melee combat…
(the Mount & Blade games implemented this mechanic very well)

pretty much, the game calculates momentum based on how fast the horse is moving. that momentum then gets added to a melee attack and boosts its damage

brisk iris
foggy jewel
#

fascinating

muted ridge
brisk iris
brisk iris
#

It's tricky as hell to work with but there kinda seems to be a way to animate it so it looks good

#

But yeah this is what I was planning for the combat system and I knew it was gonna be hell to get working nicely lol.

Maybe let's just leave it as spin around on the horse to pan camera, no ranged combat for now, and then I make some simple melee combat

silver holly
#

Perfect perfect

restive steppe
#

Is there a way to add an animation that triggers at a certain point to flip it so you're riding backwards? Could be a work around

#

Just add a higher chance of falling off lol

brisk iris
restive steppe
#

Yeah basically

agile shoal
#

Its fine to not have combat be complete ar first

#

What you have is already looking great

astral rover
# silver holly Oh this might actually be from here

I just did the retopology to reduce vertices, the OG model was around 225000, the one I made is around 2600 verts... But yeah If we use that one we'll have to attribute it, I could make a new one completely by myself if that's what the project needs

thin crescent
#

Can we all pour one out for this great loss

thin crescent
ebon flame
# agile shoal Its fine to not have combat be complete ar first

I agree! For the point of view of software development, release as simple as you can and add more features later. People will be using it a lot (pretty sure this will be top 1 for a long time haha) and with that they can provide feedback on errors, stuff to improve and even good ideas.
Just the fact that we will have a freaking ridable horse, it's crazy already! Have been waiting for this mod for years 😂

brisk iris
brisk iris
brisk iris
# brisk iris You mean to basically have transitions between facing forward and facing backwar...

Even a transition animation while on the horse will be hard to pull off it seems. I have to juggle idle, turn, walk, and run states and make sure it transitions correctly based on the angles and stuff.
It's not impossible, just going to be a lot of work right now.

I'm gonna just make the player spin on the horse for now, it seems any other solution will probably take me at least a week of tinkering to make it look nice

agile shoal
#

I can make the skeleton model

agile shoal
brisk iris
agile shoal
#

Whoaaaa

#

How do you differentiate the input for a right kick vs a left click or does it just change based on aim?

brisk iris
agile shoal
#

Smart

brisk iris
#

It's technically not even an attack. I basically first fully disable the player from attacking, then when pressing shove key it checks if there's a zombie nearby, and which attachment side it's closest to.
Then it grabs the zombie HP, lowers it by 1% and sets knockDown(true)

#

I can do the same for weapons, so it's no aim, just hit the attack button and if a zombie is close enough it'll get hit.
Gonna add so it prioritizes the closest zombie if there are several, and prioritize standing over knocked down zombies

agile shoal
#

Sounds like a good idea

#

We can flesh out the combat system later to be more in depth if need be but this is a good start

#

Also, have we checked if its possible to put a blood mask on the horse so it gets covered in blood like the player does? Certainly not high priority but im curious

brisk iris
brisk iris
#

I guess we could technically make clothing that way too, just paint on as textures and apply when "equipped"

slender plank
#

I know you teased it, but so you intend on adding cow riding or was that more of a mess around/ proof of concept?

agile shoal
#

Does anyone know where the animal skeleton models are stored?

#

Or if it uses a different system entirely?

agile shoal
#

Wow, they're way more detailed than I thought

#

Time to do some archeology

mighty flower
#

Something I forgot to test is if zombies attack you (the player) while you are on horseback, can they?

agile shoal
#

That does raise an interesting question, would the zombies try to attack the horse or just go straight for the player

#

In my eyes, they would probably just go straight for the player as they are exposed

#

But they should only be able to attack the legs and lower body

brisk iris
#

I have a few animations from JBG for being pulled off

mighty flower
#

And yes, the groin would be the highest point that could attack you.

astral rover
#

Bloody Version

astral rover
astral rover
brisk iris
brisk iris
astral rover
#

The textures are Sheep_White and Sheep_Skinned

agile shoal
#

I'm sorry but I don't think this is the right way to go about it

#

The ribs are just a simple shape on the vanilla ones

astral rover
agile shoal
#

I'm already working on one

astral rover
astral rover
astral rover
# agile shoal

Also if we would like to animate this mesh (no idea why honestly) we would need new bones on the rig you made for the knees, neck (each vertebrae which would be insane) and we could basically set weights 100

agile shoal
#

Whoa whoa not really haha

#

I think you might be overcomplicating it

astral rover
agile shoal
#

We do need to actually

#

Pretty sure that's how the skeleton gets posed

brisk iris
#

Yeah we do need to be able to put the animation on it

agile shoal
#

It won't be hard

astral rover
astral rover
silver holly
agile shoal
#

It'll take some trial and error but its not so bad

silver holly
agile shoal
#

I'm mostly just taking bits and pieces from the deer skeleton and adjusting them haha

astral rover
agile shoal
#

No?

#

This is for modding PZ anyway

#

They seem on board with the mod anyway from what Ive heard

astral rover
short cloak
#

the modding policy basically says we can use their stuff as long it's just for modding pz and not enabling piracy or something

silver holly
#

I can texture them to look bloody or worn as well 🙂

agile shoal
#

Yup I'm entrusting you with the texturing after I'm done 😎

#

We might have to do something new with alpha painting to make the ribcage look right

#

If I'm right about how the games works, you essentially will paint the negative space between the ribs

#

@short cloak Does the game support alpha textures?

short cloak
#

yes, in some cases the vanilla shaders won't support it but this can usually be fixed by mods

#

when i was working on a vehicle parts mod we had to use a different vehicle part shader that supported alpha, but all it really came down to was 'actually use the alpha channel that's already there'

silver holly
#

If worst comes down to it, it shouldn't be too difficult to just shade the inside of the bones(?) it's presumably, only gonna be laying on its side

#

I can fiddle around with it

agile shoal
#

Can I ask what you mean by that? Sorry Im not sure I understand lol

silver holly
#

All good I could be confused - trying to read fast and eat on my lunch aha

silver holly
agile shoal
#

Not quite, the way that textures generally work is that they are one-sided, meaning you can't paint the other side of a texture

#

But with alpha you can see through the texture which should work for us

silver holly
#

Oh

astral rover
agile shoal
#

Im not sure

brisk iris
#

Am I blind or is there no event for when player gets hit by zombie?
There's OnPlayerGetDamage but for some odd reason it doesn't count getting hurt by a zombie as getting damage, only the bleeding after getting attacked will trigger the event

muted ridge
#

I need to create a custom event, it should be useful to modders

muted ridge
#

Check how I do it here

brisk iris
#

oh sick okay

#

So basically use OnZombieUpdate to check if the zombie has a target, and then check for the attackoutcome? That's smart, I can do that for sure

muted ridge
#

That's the only way to properly detect a zombie attack to my knowledge

#

It lacks what damage the player takes tho

brisk iris
#

Yeah true, I'll see if I can find which values they use to determine which type of wound should be applied and see if I can mimic it

muted ridge
#

Why do you need to predict it tho ?

brisk iris
#

I guess I should look into what type of info is included first haha
I was thinking that if I can't see if the player is getting scratched vs bit, then I'd have to set up my own logic so the player gets scratched or bit but only on the legs/groin

#

And I want to keep that close to vanilla so it doesn't feel like you're getting hurt more/less while on the horse

muted ridge
#

I highly doubt you can control anything about the damage system sadly ...

#

You'd have to remove the new wound, heal player if needed, remove infected if needed then roll again to your new conditions and roll infection

brisk iris
#

I was thinking if I could find how they apply damage in vanilla I could intercept the attack and cancel/interrupt it so it never actually finished the attack, and then I just mimic the vanilla damage application but make it only target the body parts I want

#

Hmm I'm pretty sure it's all in AddRandomDamageFromZombie from BodyDamage.java

mighty flower
#

You couldn't make zombies use the attack target that crawlers use (attacking the legs or feet), although I'm also speaking from a position of ignorance as to whether that can be used and whether it would also lead to other problems.

brisk iris
#

Oh yeah good call, thanks! There could be something there, I will look into it

#

If I'm reading this correctly it basically first just rolls for the body part, then based on if zombie is behind, rear vulnerability etc. it then basically rolls to see if it's above 15 + getMeleeCombatMod() at which point it's a wound that starts as a scratch, after that it rolls again to see if it's above 65, where it becomes a laceration instead of a scratch, it then rolls again to see if it's above 85 when it becomes a bite instead. These rolls are all affected by the number of surrounding zombies.
Then there's some clothing defense and stuff in there

#

But overall doesn't seem like a super crazy system and it's all there for me to duplicate basically

muted ridge
agile shoal
#

Its affected by number of surrounding zombies? Never knew that

#

But I guess it makes sense, if you're completely surrounded might as well make everything a bite lol