Os scripts devem interagir com uma abstração do mecanismo?


10

Estou usando Java e Jython e, depois de algumas pesquisas, descobri que dar scripts de acesso direto à interface do mecanismo pode ser um erro, pois isso acopla os dois.

Parece que a maioria dos scripts que permite aos mods criar e gerenciar entidades faz isso através de algum tipo de abstração. Essas abstrações existem por esse motivo, ou é apenas para fornecer uma maneira mais intuitiva para não programadores de modificar o jogo?

Respostas:


7

Ambos, em geral. Seus scripts devem conversar com uma camada de funcionalidade abstraída - ou pelo menos intermediária - e não com o próprio mecanismo.

Primeiro, isso fornece uma medida extra de controle e segurança. Ele permite que você defina de forma fácil e limpa a interface que um script pode ter com o seu jogo e, portanto, o que ele pode mexer com, além de permitir que você faça verificações de segurança extras no intermediário posteriormente que não seriam necessariamente apropriadas no jogo. própria camada de funcionalidade real.

Segundo, ele permite que você simplifique a interface exposta aos scripts para ser mais não programador ou mais fácil de usar em geral.

Ele fornece um pouco de isolamento contra o acoplamento entre os dois, mas geralmente não é tão importante, porque os scripts sempre serão acoplados às interfaces com as quais eles têm permissão de interagir, por natureza. Os outros dois pontos são muito mais benéficos.


3

Eu também acho que isso ajuda você no caso de você querer fazer modificações no mecanismo. Você pode fazê-los sem se preocupar em alterar todos os seus scripts desde que o mecanismo foi alterado. Você apenas precisa alterar a camada de abstração mencionada por Josh.


1

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.