Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte ao desenvolvimento de jogos


    H-Mode7 Engine

    Valentine
    Valentine
    Administrador
    Administrador


    Medalhas : H-Mode7 Engine ZgLkiRU
    Mensagens : 5336
    Créditos : 1163

    H-Mode7 Engine Empty H-Mode7 Engine

    Mensagem por Valentine Sex Jun 03, 2022 10:02 pm

    H-Mode7 Engine
    Versão: 1.4.4


    Introdução

    Este motor é uma alternativa ao motor NeoMode7.
    Embora o objetivo do NeoM7 seja emular o recurso Mode7 do NES, este novo motor vai mais longe na sensação 3D.
    A principal causa de feedbacks negativos em relação ao NeoM7 é que o mapa parece muito plano, como uma folha de papel.
    O motor HM7 é uma resposta a essas críticas. Ele lida com mapas de altura para que o mapa renderizado seja em relevo.
    O relevo não é muito pronunciado, então este mecanismo é mais adequado para mapas do tipo world maps, onde os elementos gráficos são pequenos.
    O script pode ser difícil de dominar, porque requer gráficos específicos e é importante entender como os elementos são desenhados para criá-los corretamente.

    Recursos
    • mais 3D, mais lag (nem tente este motor se achar o NeoM7 muito lento)
    • ângulo de inclinação ajustável
    • Rotação de 360°
    • aumentar e diminuir zoom
    • autotiles animados
    • provavelmente uma multidão de bugs, já que é a primeira versão
    • funciona com mapas de 200 * 200 tiles² (HM7 não será ativado se a largura ou altura exceder 200 tiles)
    • código-fonte aberto para a dll necessária agora disponível


    Screenshots
    H-Mode7 Engine Hm7_00

    Download
    H-Mode7 V1.4.4
    MGC Hmode7 1.4.4

    Como funciona?
    Este script modifica um objeto Bitmap que representa a tela.
    É um objeto Bitmap 640 * 480/480 * 360/320 * 240 (dependendo da resolução escolhida), contido em um sprite que é exibido sobre o panorama, mas abaixo de todos os outros sprites.
    Para cada pixel deste bitmap é calculado um pixel de mapa correspondente a ser exibido, por uma projeção 3D de um polígono texturizado (o mapa).
    Em seguida, um deslocamento vertical é determinado dependendo da inclinação, os mapas de altura do solo e os mapas de altura dos ladrilhos para as três camadas.
    Todos os pixels entre a posição original e seu deslocamento são desenhados: isso torna o mapa "em relevo".

    Mapas de altura:
    Um mapa de altura é uma imagem em tons de cinza que contém dados de alturas para cada pixel.
    As áreas pretas significam nenhum deslocamento de altura, enquanto as áreas brancas significam um deslocamento de altura máximo.
    O deslocamento de altura máximo tem um valor fixo de 32 pixels, portanto, um bloco com um mapa de altura totalmente branco será renderizado como um cubo.
    - mapa de altura do solo
    Você pode associar um mapa de altura a um mapa RMXP (opcional) que será usado para adicionar um efeito de relevo independentemente aos ladrilhos de 3 camadas.
    O mapa de altura é automaticamente estendido para as dimensões do mapa RMXP, usando uma interpolação linear.
    Os arquivos de mapas de altura do solo, denominados "Heightmap_XXX" (XXX representando um número de identificação), devem ser colocados na pasta "Imagens".
    - mapas de altura de blocos
    Eles são reunidos em um conjunto semelhante ao conjunto de blocos do mapa. Um "heightmapset", denominado "[nome do tileset] _Hmap" e colocado na pasta "Tilesets", é obrigatório para cada tileset usado em um mapa HM7.
    - mapas de altura autotiles
    É o mesmo sistema aqui. Um mapa de altura que corresponde graficamente ao arquivo autotile, denominado "[nome do autotile] _Hmap", pode ser colocado na pasta "Autotiles" (é opcional).

    Existe uma maneira fácil de criar mapas de altura?
    Não.
    Para padrões simples, você pode usar seu programa de manipulação de imagens favorito.
    Para objetos mais complexos, uma solução é usar um modelador 3D, em seguida, aplicar uma textura gradiente e recuperar uma imagem de vista superior.

    Texturas verticais:
    Por padrão, ao desenhar um pixel da tela, todos os pixels entre o "solo" (altitude 0) e a altitude calculada são preenchidos com a cor do pixel de destino.
    Quando a inclinação é muito importante (paredes verticais, por exemplo), é deselegante:
    H-Mode7 Engine Hm7_01
    Para resolver este problema, você pode usar um mapa de textura por bloco: é uma imagem composta por cinco áreas de 32 * 32 px²: um mapa de cores e quatro texturas verticais diferentes (uma para cada lado).
    H-Mode7 Engine Hm7_02
    O mapa de cores é uma área de quatro cores (vermelho, verde, azul, preto) que coincide com o bloco: para um pixel da tela, quando o pixel de origem do mapa é determinado, o pixel correspondente no mapa de cores indica qual textura vertical deve ser aplicada (vermelho => primeira textura, verde => segunda textura, azul => terceira textura, preto => quarta textura).
    Um pixel transparente em um mapa de textura significa que a cor do pixel de origem do mapa será usada.
    H-Mode7 Engine Hm7_03
    Os conjuntos de texturas devem ser colocados em uma pasta "Tilesets/[nome do tileset] _Textures" e devem ser nomeados "Texture_ [índice do tile]".
    O índice do tile representa sua posição no tileset (o primeiro índice é 0).

    NOVO (01/01/2011): Arquivo de ajuda do DerVVulman para texturas: Arquivo de ajuda

    - texturas autotiles
    Existe apenas um mapa de cores para todos os autotiles, denominado "Texture_Auto". Deve ser colocado em uma pasta "Autotiles/Textures" (é obrigatório).
    Conjuntos de texturas, contendo apenas as quatro texturas verticais, também devem ser colocados nessa pasta. Eles devem ser nomeados "Texture_ [autotile name]".

    Diversos:
    - O efeito de iluminação automática não é ajustável no momento (mas você pode desativá-lo). Isso significa que as sombras têm sempre a mesma orientação e comprimento.
    - Como os sprites de personagens estão sempre acima do sprite HM7, eles não são usados para exibir personagens (caso contrário, os personagens não poderiam estar atrás dos elementos do mapa).
    Os caracteres são renderizados diretamente no bitmap HM7 e, portanto, existem limitações: a transparência e o tipo de mesclagem são ignorados.
    - Por padrão, os caracteres são desenhados na altitude máxima de suas coordenadas: solo + 3 camadas.
    Você pode ativar a bandeira bush na guia tilesets do banco de dados para que a altitude do tile seja ignorada ao desenhar personagens.

    Instruções

    O que é pedido :
    - o script (acima de Main, como de costume)
    - o arquivo MGC_Hmode7.dll na pasta raiz do seu projeto
    - autotiles, tilesets, texturas e mapas de altura específicos

    Para ativar o H-Mode7, você deve adicionar [HM7] ao nome do mapa.
    As seguintes tags são opcionais:
    [HMAPXXX]: XXX é o identificador do mapa de altura do solo que deve ser usado para o mapa
    [#XX]: XX é o ângulo de inclinação (em graus): 0 -> 80, 0 por padrão
    [% XXX]: XXX é o ângulo de rotação (em graus): 0 -> 359, 0 por padrão
    [X]: habilitar o loop do mapa horizontal
    [Y]: permite o loop vertical do mapa
    [DA]: desativar autotiles animados
    [AFXXX]: XXX é o período de animações para autotiles animados: 1 -> 999, 20 quadros por padrão
    [DL]: desativa os efeitos de iluminação automáticos
    [RX]: X = 1 -> alta resolução (padrão)
    X = 2 -> resolução média (para aumentar o desempenho)
    X = 3 -> baixa resolução (para aumentar drasticamente o desempenho)
    [CX]: X = 0 -> sem deslocamento vertical (padrão)
    X = 1 -> deslocamento vertical para que a câmera não corte o solo na parte inferior da tela.
    Deve ser usado apenas quando o horizonte é visível.
    X = 2 -> deslocamento vertical para que a câmera não corte o mapa na parte inferior da tela.
    Deve ser usado apenas quando o horizonte é visível.
    X = 3 -> deslocamento vertical para que o jogador esteja sempre no centro da tela.
    [DF]: desativa o filtro (melhor qualidade, diminui drasticamente o desempenho)
    [HF]: atualiza o mapa a cada dois quadros (menos fluente, aumenta o desempenho)
    [E] (V.1.2.1): solicitação de edmhotta para ter menos elementos cortados na parte inferior da tela. Pode causar um grande atraso, especialmente ao girar.
    [DB] (V.1.2.1): os elementos cortados na parte inferior da tela não são preenchidos com preto (mas ainda são cortados).

    Você também pode associar uma palavra-chave a uma configuração no início do script.
    Por exemplo, com o seguinte comando:
    HM7::Maps_Settings["MyKeyword"] = ["# 60", "X", "HMAP3"]
    se um nome de mapa contém "MyKeyword", então o HM7 será ativado, com um ângulo de inclinação de 60 graus, loop horizontal,
    e usando a imagem "Heightmap_003" como mapa de altura do solo.

    Comandos

    - Para definir um novo ângulo de inclinação (0 ~ 80):
    $ scene.hm7_set_alpha(novo ângulo)
    Para deslizar progressivamente para um novo ângulo de inclinação:
    $ scene.hm7_to_alpha(novo ângulo, velocidade)
    Para aumentar/diminuir a inclinação:
    $ scene.hm7_increase_alpha (valor)

    - Para definir um novo ângulo de rotação (0 ~ 379):
    $ scene.hm7_set_theta(novo ângulo)
    Para deslizar progressivamente para um novo ângulo de rotação:
    $ scene.hm7_to_theta(ângulo, velocidade, direção)
    Para aumentar/diminuir o ângulo de rotação:
    $ scene.hm7_increase_theta(valor)

    - Para definir um novo nível de zoom (em porcentagem - padrão = 100):
    $ scene.hm7_set_zoom(novo valor)
    Para deslizar progressivamente para um novo nível de zoom:
    $ scene.hm7_to_zoom(valor, velocidade)
    Para aumentar/diminuir o nível de zoom:
    $ scene.hm7_increase_zoom (valor)

    - Para alterar o desbotamento da luz do horizonte:
    $ scene.hm7_set_fading(vermelho, verde, azul, bandeira)
    bandeira = 1: a cor determinada por (vermelho, verde, azul) será adicionada à linha do horizonte
    flag = 0: a cor determinada por (vermelho, verde, azul) será subtraída à linha do horizonte

    - Para definir a altitude de um evento:
    adicione um comentário na lista de comandos com: "Altitude X", onde X é o
    valor de altura ("Altitude 64" desenhará o evento 64 pixels acima de sua posição original)
    - Para definir a altitude do jogador:
    use: $ game_player.altitude = X
    - Ter uma altitude fixa para um evento (independente das alturas dos mapas):
    adicione o comentário "Flutuante" na lista de comandos
    - Para ter uma altitude fixa para o jogador:
    use: $ game_player.floating = true

    Versão 1.3 :
    • eventos de "parede": a classe HM7::Surface tem algumas mudanças importantes, e a parte DLL foi totalmente reescrita.
      Adicione um comentário "Parede" na lista de comandos (e verifique o sinalizador "Correção de direção")

    H-Mode7 Engine 2011-09-26_143357
    Você pode especificar o ângulo com o comentário "Angle X", onde XX é um valor de ângulo em graus.
    Exemplo: "Angle 30"
    H-Mode7 Engine 2011-09-26_144559
    Por padrão, o personagem é desenhado no centro do ladrilho.
    Você pode especificar novas coordenadas para o meio do caractere com o comentário "Pos X Y", onde X e Y são respectivamente as posições horizontal e vertical em pixels (entre 0 e 32 - os valores padrão são X = 16 e Y = 16-)
    Exemplo: nada especificado, então "Pos 32 0"
    H-Mode7 Engine 2011-09-26_144740
    H-Mode7 Engine 2011-09-26_144822
    • texturas verticais animadas: use uma imagem com largura de n * 160px (ou 128px para autotiles) para a textura vertical.
      exemplo (normal e depois automático):

    H-Mode7 Engine Texture_040
    H-Mode7 Engine Texture_Auto99
    • manuseio de resoluções menores: para quem usa resoluções menores (usuários de PSPDS, por exemplo), agora você pode especificar a parte da tela que será usada para renderizar o HM7. Na parte inferior da parte "---- MGC: H-Mode7 ----", você pode encontrar as constantes WIDTH, HEIGHT, X e Y. Elas especificam as dimensões e a posição da renderização HM7.

    Por exemplo :
    WIDTH = 288
    HEIGHT = 216
    X = 200
    Y = 100
    H-Mode7 Engine 2011-09-26_145527
    • Usar uma resolução pequena pode diminuir muito o atraso.
    • incluiu o recurso [OV]: adicione [OV] no nome do mapa, e adicione um comentário "OV" nos eventos que deseja redimensionar.
      O valor do zoom pode ser definido com OV_ZOOM, na parte inferior da parte "---- MGC: H-Mode7 ----"
    • consertou um bug com vários eventos translúcidos
    • manipulação de pivô incluída (um recurso NeoM7):
      $scene.hm7_set_pivot(new value)
      $scene.hm7_to_pivot(new value, speed)
      $scene.hm7_increase_pivot(value)

    Notas do autor

    No momento, há apenas um punhado de elementos tileset compatíveis com este script.
    Seria ótimo se alguém que cria esses elementos decidisse compartilhá-los.

    DLL de código aberto!

    Agora disponível, o código-fonte para a DLL que lida com o especialmente renderizado gráficos já estão disponíveis. A solicitação do código-fonte foi feita por
    finalholylight, e agora está disponível no link aqui, e logo abaixo do próprio demo

    MGC Hmode7 1.4.4

    Tópico original: https://save-point.org/thread-3151.html

    Adanrox e Nando Moura gostam desta mensagem


      Data/hora atual: Qui maio 02, 2024 6:24 pm