Hello all,
I am quite new to jme3, although I read all the beginner tutorials and some advanced ones.
I started making a new game, (Github Link) but I ran into some problems:
I wanted to implement saving and loading right at the start, and use the loading method without loading the save file to re-init the game when I go back to the menu and into the game again. But then the camera acts very weird (turning sideways) and if I’m coming from the main menu, I can’t move my character. Not that when I do a fresh start and go into the game, everything works as expected.
Please tell me if you can’t understand what I’m saying, I will try to explain it a little better then.
OK,
If I load a game or go from the first game init from the menu and back to the game (method loadGame in GameState), the camera turns sideways.
Also, I can’t control my player.
How you are “loading” your game ?
And, what do you mean with the “camera acts very weird” ?
If you think its hard to explain, try to post some videos, people will not download your entire game code compile and find your bugs for you, you will need to explain what you want and what you do think its wrong.
Also, an tip for you, this kind of problems from new jmonken devs are normally related with the knowledge on how game states works, try to read a bit more about game states and do some debugs, I have a felling you will found out what is wrong doing this.
Obs: @normen, I laugh a lot on your comment .
Thank you for your answer.
I will read a bit on game states.
The camera shoudl just move up/down and turn left/right. However, it also turns around the view axis.
EDIT: Strange, I can’t get the bug ATM… But then there’s another one: The first-person cam, which should be locked on the player position, now always uses the viewing position of the 3rd-person cam as new position…
EDIT²: It seems that the bug only appears when loading the game…
I’m holding a piece of string. Can you tell me how long it is?
(ie: we can’t debug code we can’t see and none of us have ever experienced your problems. Boil things down to a simple test case that exhibits the issue and post that code.)
You can see the code, I linked to my github repo…
EDIT: Right, seems like I’m dumb. I didn’t even try to replicate the conditions for loading the game with those for re-initializing it from the menu. Now it’s the same state, but the player is locked in position,
and I get a nullpointer for line 220 on my FirstPersonCam.
The firstPersonCam is a copy of the FlyByCam, and nullpointer is on rotateCamera(value, cam.getLeft());.
EDIT: Here is the changed code for the loading method:
public void loadGame()
{
this.cleanup();
stateManager.getState(MenuState.class).setEnabled(false);
getInputManager().setCursorVisible(false);
guis.gotoGameScreen();
flyByCam.setEnabled(false);
initKeyBindings();
initPhysics();
startChunk = new Chunk(getAssetManager(), rootNode, camera, bulletAppState, null);
if(player == null)
player = new Player();
player = (Player) SaveGame.loadGame("Steam/Saves/", "Player.sav");
if(player == null)
player.init(camera, getAssetManager(), bulletAppState);
player.addControls(getInputManager());
player.attach(rootNode);
initLights();
initSound();
this.setEnabled(true);
}
You know that when you create an empty project it assign default behavior for the camera and keys right ?
So you need to disable it in order to make your custom behavior to work…
Yes,
I am using a FirstPersonCamera and ThirdPersonCamera which are basically copies of FlyByCam and ChaseCam. But what I described is the default behaviour, isn’t it?
Also, I changed some code (should be on git any minute now) and now the problem only occurs when loading a second time…
Also, it doesn’t apply the player position after load, although it saves and loads correctly.
EDIT: This is so strange. Now the camera problem appears when I come from the menu as well as when I load.
And if I come from the menu, the player is locked in position. I just don’t get what’s wrong.
Note: if you are not using the default flyByCam (ie: you never set enabled to true) then it’s way better just to remove it or not include it in the first place. Search the forum for “remove FlyCamAppState”
Found a thread.
I added this line to the init method of my GenericGameState:
stateManager.detach(stateManager.getState(FlyCamAppState.class) ) );
But the problem still persits…
It’s very hard for some of us to go through someone’s entire project to find a problem. It’s way better if you can reduce your issue down to a simple test case. The added benefit is that 99% of the time you find the problem yourself when doing that.
Well, if you have it reduced down to a simple one class test that exhibits the issue then go ahead and paste it directly into a code block here. If you don’t have it reduced down that far then try building one up from a simple one class test case.
…then when that works (or not) you’ll have something to go on.
The thing is,
I can’t make my own copies of Cameras with just one class,
and I generally wouldn’t know how to do that. Sorry.
But I found out something: I think the problem has to do with the flyByCam.
I removed the flyByCam now,
I had the line in the wrong place.
What would cause the bug if it also happened with just flyByCam? Because it did, in a small test phase.