2021-07-18 – A criação de uma Media Layer para tornar o código mais portável, no meu Game Engine, em C/C++…
DML – Direct Media Layer.
É o nome que dei à layer que tenho entre o código e o hardware da máquina, e já explico o que é.
E podem ver à direita o tamanho do executável com uns 11 megas (enorme) e já explicarei porquê também.
E chamei DML (Direct Media Layer ou Multimedia Library?) porque é um nome muito usado, tipo SDL (Simple DirectMedia Layer, SFML acho que é Simple and Fast Multimedia Layer, etc, o meu será do estilo “media layer” como alguns outros, mas não será toda ela feita do zero, tentarei usar coisas já criadas como a libPNG, etc.
E assim quis que fosse DML (Direct Media Layer) acho eu.
Vai ser a minha layer de abstracção do hardware.
Isto porquê? Para tornar o código portável.
O Game Engine funciona em Linux, e estou a migrá-lo agora para Windows também, e para isso tenho de ajustar várias coisas.
Se tiver de mudar para outra máquina e não sistema operativo apenas, tipo um MAC ou um Commodore Amiga antigo, terei de usar outro hardware, e teria de alterar centenas de ficheiros de código, certo?
Errado. Todo o código invoca funções da DML e quando mudar de máquina, não mexo no código, só tenho de criar uma layer na DML que seja do Commodore Amiga.
O que essa layer faz é executar as instruções no hardware.
Tipo, quero criar uma imagem, a layer irá usar código específico para máquinas PC, seja Windows ou Linux, e se usar o DML de Amiga, usará um código diferente para usar na máquina antiga.
Assim, poderei criar o código que quiser, e usar o mesmo código em 1001 máquinas, em cada máquina só terei de adaptar a DML e criar uma layer própria para essa máquina e já está.
O código é o mesmo, usa sempre a DML, os nomes das funções são os mesmos (não terei de alterar nada no código), as próprias funções é que saberão o que fazer consoante a máquina que uso.
Isto para ter portabilidade.
Podem ver ali já o nascer da DML, e estou a alterar o código todo para usar a DML e não o hardware directamente, para a poder usar noutras máquinas, e agora inicialmente em Windows também.
Estive os últimos dias nisto.
Isto e o ter as imagens e músicas embebidas no executável, o que faz com que tenha vários megas de tamanho (pois tenho lá muitas imagens de teste e ficheiros de música) e ficou enorme.
Essa parte também já está a funcionar, e permitir-me-á distribuir um jogo que seja um único ficheiro executável sem 1001 pastas e directorias atrás, como eu gosto, à “old school”.
Vou voltar durante uns dias à chuva, para melhorar os efeitos e dar uma pausa nisto da DML.
2021-07-18.