Czy można zaimplementować funkcjonalność Steamworks w grze Java? W jaki sposób?

11

Mam podstawową grę, którą w końcu chcę zmienić w coś lepszego. W tej chwili gra jest w całości w Javie, ale chcę zaimplementować SDK Steamworks w mojej grze (aby mogła mieć osiągnięcia, warsztat i tak dalej). Ale Steamworks wymaga C ++. Czy jest możliwe, aby moja pełna gra Java implementowała pakiet Steamworks SDK bez przepisywania go w C ++? Obecnie używam jMonkey Engine 3 do mojej gry.

1 Posejdon 3
źródło

Odpowiedzi:

11

Jest to zdecydowanie możliwe, wystarczy utworzyć cienką warstwę owijającą pakiet Steam SDK (lub jego część) w java za pośrednictwem Java Native Interface

Nie jestem świadomy żadnych wysiłków, aby mieć do tego bibliotekę typu open source.

Elva
źródło
To wydaje się być bardzo realnym rozwiązaniem. Moją jedyną przeszkodą jest to, że nie wiem, jak zaimplementować to w moim kodzie i gdzie. Zakładam, że będzie to gdzieś w głównym pliku, prawda?
1Poseidon3
Przyjrzałem się temu głębiej i jestem pewien, że będę w stanie to rozgryźć. Ta odpowiedź była naprawdę pomocna w ustawieniu mnie na właściwej ścieżce.
1Poseidon3
1
Istnieje Steamworks4j , opakowanie Java wokół niektórych API Steamworks C ++ korzystających z JNI.
mucaho
6

JNI jest dobrym rozwiązaniem, jeśli chcesz mieć pełny dostęp, ale interfejs API Steamworks Web może być łatwiejszy. Zasadniczo jest to kanał oparty na HTTP / HTTPS na funkcjach Steamworks, zaprojektowany tak, aby był natychmiast kompatybilny z dostępem z Java, Python, Ruby i naprawdę wszystko, co nie jest wewnętrznie C / C ++.

Oczywiście wiesz, że problem z JNI polega na tym, że będziesz musiał go osobno skompilować dla każdego dostępnego systemu operacyjnego, co w pewnym sensie jest sprzeczne z celem któregokolwiek z tych języków. Metody Gettera można uruchamiać za pomocą podstawowego HTTP; setery (jak ustawianie osiągnięcia), jak rozumiem, wymagają HTTPS i unikalnego identyfikatora programisty; ale interfejs jest nadal stosunkowo prosty.

Michael Eric Oberlin
źródło
-3

Użyj zestawu SDK Steam, a U może użyć jar, jeśli zapewniają. sprawdź ich problem i API. i po przemyśleniu wdrożenia. http://steamcommunity.com/dev/

Głęboki
źródło