Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a basic game that I want to eventually turn into something better. The game is all Java as of right now, but I want to implement the Steamworks SDK into my game (so it can have achievements, and the Workshop, and so on). But Steamworks requires C++. Is it possible to have my full Java game implement the Steamworks SDK without rewriting it in C++? I am currently using the jMonkey Engine 3 for my game.

share|improve this question
up vote 9 down vote accepted

It's definitely possible, you would just need to create a thin layer wrapping the Steam SDK (or part of it) to java via the Java Native Interface

I'm not aware of any efforts to have an opensource library for this.

share|improve this answer
This appears to be a very viable solution. My only snag with this now is that I do not know how to implement this into my code or where. I would assume it would be somewhere in the main file, right? – 1Poseidon3 Mar 27 '14 at 16:23
I took a deeper look at it and I am sure I will be able to figure it out. This answer was really helpful in setting me on the right path. – 1Poseidon3 Mar 28 '14 at 13:32
There's steamworks4j, a Java wrapper around some of C++ steamworks API using JNI. – mucaho May 18 '15 at 14:59

JNI is a way to go if you want full access, but the Steamworks Web API might be an easier way to go. It's basically an HTTP/HTTPS-based channel to the Steamworks functions, designed to be instantly compatible with access from Java, Python, Ruby, and really anything that isn't intrinsically C/C++.

Of course you know that the issue with JNI is that you would need to compile it seperately for each available OS, which kind of defeats the purpose of any of those languages. Getter methods can be run with basic HTTP; setters (like setting an achievement), as I understand it, require HTTPS, and a unique developer identifier; but the interface is still relatively simple.

share|improve this answer

Use Steam SDK and U can use Jar if they provide. check them issue and API. and after think about implementation.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.