Unsure how to tackle player vs npc creation in my life sim game

Godot Version

v4.6.2

Question

Hello! I'm new to programming as a whole and while I've managed to solve a lot of my other issues through Youtube videos and googling - I can't figure this one out. My game is going to be a animal life simulator where you pick a creature and enter an ecosystem where you try to survive. Currently there are only two test species: fox and rabbit. My problem is I haven't programmed long and need help figuring out which would be best:

A. Do I create a Player character for each species (Player_rabbit, Player_fox, and so on) and a NPC character for each species (NPC_rabbit, ect.)?

or

B. Do I create a stripped down version of a Player character with movement and such but then allow the character select screen to assign values to this empty husk of Player? Example: If you pick fox, it'll give Player the fox sprite, fox stats, ect.

I guess the main difference between A and B is that with A I'd have to create a Player_species and an NPC_species and for B I'd have to create an empty husk for Player and NPC alike, then send the Rabbit data to both the Player and NPC. My main issue with this is I have no idea how to code with things that don't exist yet (such as a node that doesn't exist yet because it hasn't been added to player yet through character select)

Any help would be appreciated! Sorry if this post is messy, it's my first and I tried to be thorough! (This is more about a concept rather than actual code so I didn't include any screenshots)

Inheritance and resources are your friends.

class_name RabbitData
extends Resource

var important_stat
class_name RabbitBase
extends CharacterBody2D

## Available to all who inherit from this class
var data: RabbitData
class_name RabbitPC
extends RabbitBase
class_name RabbitNPC
extends RabbitBase
1 Like

Thank you for laying it out like that, it really helped me visualize how it would work! Ty!