Duvida sobre desempenho e elegancia em inicializacao de variaveis

Ola a todos, queria tirar uma duvida sobre o que é mais correto de fazer no seguinte caso:

Estou fazendo um jogo em java2d e as entidades do meu jogo(personagens) segue a seguinte herança:

Personagem extends Atirador, Atirador extends Creatura, Creatura extends Elementos.
A classe Atirador, Creatura e Elemento são abstratas e com varios atributos.

Minha duvida é sobre o modo de iniciar esses atributos…
Inicialmente eu estava passando tudo no contrutor do personagem e dai o personagem ia chamando o super herança por herança passando os atributos… Porem percebi que os construtores estavam com parametros demais ja que a Elemento é uma das que mais tem atributos.

Entao pensei em colocar os atributos de todas como protected e em vez de receber tudo no construtor do personagem fiz que cada personagem ja tem seus valores padroes iniciais, entao eu iniciava todos os atributos no construtor do personagem(chamava os super tb que colocava tudo 0 só para não deixar nada com lixo)… Isso é muito errado de se fazer?

Tambem pensei em deixar tudo como privado e no construtor do personagem dar varios this.setXXX… Qual seria a melhor abordagem?

Olha, se são tantos atributos assim e são várias chamadas sucessivas às superclasses, sugiro utilizar os métodos getters e setters.
Você até pode instanciar valores padronizados para os atributos, mas utilizar os setters para modificar em tempo de execução, afinal, se são personagens de jogo eles perdem vida, ganham pontos, etc.

Entendo, entao vou inicializar os personagens com getters e setter… Tenho uma classe que carrega varios atributos staticos(Imagens) em seu construtor, dai o player por exemplo eu ja inicio dando um setImage colocando a imagem do player no construtor. Essa classe que tem os atributos staticos eu instancio logo no inicio do jogo ja que n tem como carregar uma imagem em uma classe estatica (pelo menos nao consegui).