Este blog esta em reforma no momento.

Mais testes com a LibRocket - performance e design

O uso da LibRocket ainda me preocupa um pouco. Nessa imagem dá pra se ver claramente o FPS antes e depois da janela de dialogo abrir.
Mas ela esta ajudando a embunitar e elaborar uma ótima interface de controle.

E a GameKit ainda se mostrou bem flexível para usar vários .blend como bibliotecas.
Game Design
A janela de dialogo tem 3 camadas (DIVs):
O menu superior
1. Histórico de conversas
O registro de todas as conversas do jogo. É uma página em tela cheia e para garantir performance na hora que eu selecionar esta opção o mecanismo de dialogo ativa uma camera livre e a coloca num espaço fora do campo de desenho para que nada alem da RML seja desenhado.

2. Tentar saber mais
Obter mais dados do personagem ou item. Muito provavelmente abrira uma RML com uma ficha estilo Daemon.

3. Inserir marcador
Esta opção faz uma marca no histórico que mais tarde pode ser usada para consulta ou retornar no mapa. Para mim é uma boa opção para resolver "puzzles", eu sou um dos que ficam impacientes em ficar caçando dados nos livros de quests nos jogos por ai.
Para deixar a coisa mais legal eu penso em gravar no marcador uma captura da tela. Esta é uma opção legal para Desktops e Notebooks, mas não parece muito boa para Tablets com SSDs limitados em torno de 2 à 4 GB.

O avatar
É a foto do personagem clicado. Quando não disponível vou mostrar a imagem da Cibele.
Acho que vou experimentar trocara a imagem JPEG por um PNG com transparência assim eu mesclo o avatar com o fundo da cena.

E o texto
Até agora não tive nenhum travamento da aplicação mudando o texto dinamicamente.
Oque ta me irritando é não conseguir o maldito valor do parâmetro onclick da tag BUTTON oque deixaria a marcação HTML mais legível. Mas isto são mistérios do C++ e por enquanto fico improvisando com INPUT mesmo.

A estrutura
Como mencionei da para usar um arquivo .blend diferente para cada coisa, então a estrutura deve ficar assim:
O biblioteca.blend leva todos as imagens e HTML da GUI. Também outros elementos comuns como cursores, marca de seleção, emoticons, etc
cibele.blend é a malha e animações da personagem principal e o sistema pode carregar outros personagens também.

O cenario.blend é que vai dar trabalho, é nele que fica toda a cena corrente e toda vez que eu mudo de cenário eu devo reinstanciar a personagem principal, elementos de controle e etc.
Por isso a estrutura do script Lua acaba ficando enorme, pois precisa fazer muito mais doque simplesmente carregar um .blend e rodar, precisa gerenciar TODOS os objetos e arquivos.
Por enquanto esta assim:

E vai aumentar quando eu fizer a linkagem com a inteligencia artificial dos personagens.

Performance
Uma queda de 803 para 340 realmente é preocupante. Mas como mencionei em outro post não é fácil avaliar, vou saber melhor quando formatar o PC (que já esta no segundo ano sem formatar) e tiver a versão para Android em teste.

Eu pensava inicialmente que a queda da velocidade quando usava a LibRocket se dava pela quantidade de texto inserida. Eu fiz o teste inicial com um Loren Ipsun. Mas acho que parte da questão ainda é baseada no uso de recursos.

Infelizmente é apartir de tentativa e erro que vou achar as razões. Por exemplo a lib pode estar redesenhando elementos a cada render (redesenho da tela que ocorre a cada FPS) ao invés de fazer cache.

Comentários