Criar, na minha opinião, uma camada entre o núcleo do jogo e os scripts, usado para criar modificações, é necessário.
Você ganha várias vantagens usando este método:
Mais fácil para modders:
Uma boa razão para fazer isso é, como você mencionou, uma maneira mais fácil de fazer mods. Escrever menos linhas de código significa mais legibilidade e minimiza os problemas de compreensão para iniciantes de programação. Idealmente, essa API deve ser uma coleção de métodos para alterar algo no alto nível do jogo . Isso significa, por exemplo: Gerar uma entidade sem saber como ela realmente é gerada ou exibir uma imagem com uma chamada, o que leva apenas o nome da imagem como parâmetro.
Você, como programador, também se beneficia com isso, pois pode escrever mais em menos tempo do que o necessário com Java.
Segurança:
É essencial impedir que as pessoas controlem o jogo inteiro. Eu não me importaria se o jogo fosse um título para um jogador, mas me importaria quando o jogo tiver alguma ação multiplayer. Mesmo que seja apenas uma tabela de recordes.
Outras pessoas sempre ficam frustradas quando alguém ganha por trapaça (por exemplo: mudanças de posição, mais específicas: mudança de posição e captação direta de sinalização). Impedir que jogadores façam isso é sua principal tarefa aqui.
Lembre-se de que o trapaceiro sempre pode descompilar, alterar o código, recompilar e jogar com esse cliente; portanto, adicione verificações no servidor. Geralmente, a "Segurança" fornecida é apenas outra opção não 100% segura para dificultar a vida dos trapaceiros.