É possível implementar a funcionalidade Steamworks em um jogo Java? Quão?

11

Eu tenho um jogo básico que eu quero me transformar em algo melhor. O jogo é todo Java a partir de agora, mas quero implementar o Steamworks SDK no meu jogo (para que ele possa ter conquistas, e o Workshop e assim por diante). Mas o Steamworks requer C ++. É possível ter meu jogo Java completo implementando o Steamworks SDK sem reescrevê-lo em C ++? Atualmente, estou usando o jMonkey Engine 3 para o meu jogo.

1Poseidon3
fonte

Respostas:

11

É definitivamente possível, você apenas precisaria criar uma camada fina envolvendo o Steam SDK (ou parte dele) para java via Java Native Interface

Não estou ciente de nenhum esforço para ter uma biblioteca de código-fonte aberto para isso.

Elva
fonte
Esta parece ser uma solução muito viável. Meu único problema com isso agora é que não sei como implementar isso no meu código ou onde. Eu diria que estaria em algum lugar no arquivo principal, certo?
1Poseidon3
Dei uma olhada mais profunda e tenho certeza de que poderei descobrir. Essa resposta foi realmente útil para me colocar no caminho certo.
1Poseidon3
1
Existe o steamworks4j , um wrapper Java em torno de algumas das APIs do steamworks C ++ usando JNI.
Mucaho 18/05
6

O JNI é um caminho a percorrer, se você deseja acesso total, mas a API da Web Steamworks pode ser o caminho mais fácil. É basicamente um canal baseado em HTTP / HTTPS para as funções do Steamworks, projetado para ser instantaneamente compatível com o acesso de Java, Python, Ruby e realmente qualquer coisa que não seja intrinsecamente C / C ++.

É claro que você sabe que o problema com a JNI é que você precisaria compilá-lo separadamente para cada sistema operacional disponível, o que meio que anula o objetivo de qualquer um desses idiomas. Os métodos Getter podem ser executados com HTTP básico; setters (como definir uma conquista), pelo que entendi, exigem HTTPS e um identificador de desenvolvedor exclusivo; mas a interface ainda é relativamente simples.

Michael Eric Oberlin
fonte