Game overlay with jmonkeyengine possible?

Hi all,

I would like to know if it’s possible to create a game overlay with jmonkeyengine to any game I want just like Steam has for example

Thank you all in advance

There is nothing in jme3 which can help you with that - you would need to intercept opengl/direct3d calls and then draw directly somewhere there. Putting jvm into equation is not going to make it any easier.

Unless you mean being able to draw overlays on top of game written by you in jme3 - then yes, of course, jme3 is supporting screen-coordinate gui components.


thank you so much for the prompt reply. unfortunately my requirement is the first one u r mentioning so guess i do not have a choice other than delving into C++ or C#

What do you mean by “overlay”? The message box up right? All OSs have notification centers for this kind of stuff.

While being in a game started by Steam you can press ALT-TAB and the overlay comes up. U can see the Steam browser, chat with firends etc. This is exactly what I want to do

…thats just another application… You can switch to anything with Alt-Tab, ever noticed? Just make a starter application that launches your game.

normen I am sorry I meant SHIFT-TAB

Same thing really, just make a starter app and communicate to it via RMI or so.

No, it is slightly dfferent. Steam is actually drawing the overlays on top of existing game. You can be inside a full screen mode, firing away and as soon as you press shift-tab, extra steam menus appear on top of your game and you can interact with them with the mouse - but game is still below it (they are semitransparent). I don’t remember now if game is paused or is it still running below.

It is a like what teamspeak/mumble/etc are doing to display active speakers inside a game.

Steam probably has dedicated hooks put in game for that, teamspeak/mumble are intercepting opengl calls which flush the buffer and inject their own rendering at last possible moment. It is not rocket science, but it involved low-level windows dll hacking and playing directly with opengl calls. I really don’t think that jme3 is a proper solution here - unless you want to render another game on top of existing one…

abies thanks again. i am already looking at

oh and something else. the game is not paused when u open up the overlay in Steam

Its up to the game what it does when the steam overlay opens. Some pause, some don’t.

To the OP - are you actually looking for the steam thing or do you just mean a GUI/menus/etc?

zarch i am looking for the steam thing man

Explain more about what you want and we can probably help more. At the moment its all rather vague…

I think I know what he wants. He wants to write an application which would be able to write some overlays onto the screen renderered by any game running on his PC. Think fraps - it is rendering fps in the corner.
This has nothing to do with jme3 or java.

I just wanted to do it through Java if possible and since your engine is gaining more and more popularity i thought it would be a good place to start since your guys are experts.

Thank you very much for the help

All of you!!!

interesting topic, i’ve also wondered about this. Hacks for games do a lot of stuff like this, injecting code and putting extra info on the screen

I think I have used
in the past for reverse engineering some stuff. There are some links from that to other tools. They are focused on dumping the command stream to file for debugging, but it should be trivial to extend them to inject some extra commands before swapping buffers/flushing screen/whatever. Just be sure to restore all state after that.

If the OP’s goal is to properly use Steam’s overlay last I checked Valve will give you all the information once your game has been accepted. Actually it might be freely available now though. I haven’t checked that in quite some time.

In short Valve has dlls you would be able to use to call to trigger the overlay. Now, as to how you can call methods inside a dll is a different topic altogether.

Yeah, this isn’t really a JME3 question though. jme is designed for creating games, not creating overlays on other games…