TUER: Truly Unusual Experience of Revolution, FPS using JOGL

Hi,

It ran well here, and I like the sound effects when you die!

It’s quite playable, except for how the mouse look only moves in large angle increments, rather than small amounts. So when a baddy was far away, I couldn’t aim at him since it went from left to right to left, and he was always in the middle.

Also, it would be cooler if strafe left and right were the left and right keys, rather than those keys being mouse look.

Nice work

Keith

Thanks. Vincent Stahl chose an evocative sound. I hope you will like to see the blood sinking on the screen when it is finished. I hesitate, I would like to implement the time-based animation system right now rather than using a fast fix that doesn’t respect the MVC pattern and the roles I planned but I have a lot of unfinished modules: MD3 loader, OBJ loader, 3DS loader (not yet in the source code but I will put it in the next update), full 3D objects, rocket displayer, cells-and-portals algorithm…

Yes this is a more problematic point. If I divide this increment by two, will it be enough on your view?

The problem is that many players asked me to use the left and the right keys to look as they use only the keyboard in order to play. Then, I will allow the player to configure the keyboard to allow everyone to be satisfied.

Finally, thank you very very much for testing my game. I needed someone to do it absolutely as my machine is quite “slow”. ;D

[quote][quote]
It’s quite playable, except for how the mouse look only moves in large angle increments, rather than small amounts. So when a baddy was far away, I couldn’t aim at him since it went from left to right to left, and he was always in the middle.
[/quote]
Yes this is a more problematic point. If I divide this increment by two, will it be enough on your view?
[/quote]
To make the game feel ‘solid’, mouse moves really need to be 1 for 1 with the mouse move distance (like other 3D shooters). Otherwise it’s not controllable, makes you dizzy when you turn, and doesn’t do justice to the excellent frame rate that you’ve achieved - after all, what’s the point of running at 60 fps when the rotation increments make it look like you’re turning at 3 FPS?

About the strafing, maybe you can make the WASD keys do forward, back and strafing (like how most games work), and the arrow keys do forward,back,look left and look right, then everyone’s happy! :slight_smile:

Many Linux users and French users complaint about the frame rate because they have not reliable drivers and/or small graphics cards. That is why I must still improve the frame rate. The geometry of the level is quite simple, the game won’t work as “fast” as now with a complex level. I will try to improve the mouse move, you’re right.

I already do this, look at main.GameKeyboardController.java in the method “keyPressed”. I already do what you say. I don’t understand. Didn’t you try to move by using WSAD keys? Watch this:

case GAME:
{gameModel.setRunningFast(event.isShiftDown());
switch(event.getKeyCode())
{case KeyEvent.VK_UP:
{if(!gameModel.getPlayerHit())
gameModel.setRunningForwards(true);
break;
}
case KeyEvent.VK_DOWN:
{if(!gameModel.getPlayerHit())
gameModel.setRunningBackwards(true);
break;
}
case KeyEvent.VK_LEFT:
{if(!gameModel.getPlayerHit())
gameModel.setTurningLeft(true);
break;
}
case KeyEvent.VK_RIGHT:
{if(!gameModel.getPlayerHit())
gameModel.setTurningRight(true);
break;
}
case KeyEvent.VK_W:
{if(!gameModel.getPlayerHit())
gameModel.setRunningForwards(true);
break;
}
case KeyEvent.VK_Z:
{if(!gameModel.getPlayerHit())
gameModel.setRunningForwards(true);
break;
}
case KeyEvent.VK_S:
{if(!gameModel.getPlayerHit())
gameModel.setRunningBackwards(true);
break;
}
case KeyEvent.VK_Q:
{if(!gameModel.getPlayerHit())
gameModel.setLeftStepping(true);
break;
}
case KeyEvent.VK_A:
{if(!gameModel.getPlayerHit())
gameModel.setLeftStepping(true);
break;
}
case KeyEvent.VK_D:
{if(!gameModel.getPlayerHit())
gameModel.setRightStepping(true);
break;
}
case KeyEvent.VK_ESCAPE:
{//it will require to be modified when the game will be online
gameModel.performAtExit();
break;
}
case KeyEvent.VK_SPACE:
{if(!gameModel.getPlayerHit())
gameModel.tryLaunchPlayerRocket();
break;
}
}
break;
}

I’ve almost finished to display the rockets correctly. The rockets launched by the player are visible. I think I will finish it tomorrow and then, I will update the game. ;D

Game updated! Enjoy yourselves ;D

It is a little bit more interesting with the rockets. Now it is time to display the explosions and to implement a time-based animation system.

[quote=“gouessej,post:266,topic:29428”]
The walk-speed and rocket-speed should not be dependant on my framerate. ( I walk very fast, I can hardly see a rocket)

I was going to record a video to show this.

I opened FRAPS, it capped the framerate to 60fps, the walk speed and rocket speed was completely different…(I saw a rocket)

So when you say implement a time-based system would this fix walk-speed/ rotate-speed/ rocket-speed ?

My specs are Intel Quad Q6600, Nvidia 8800GTS

You’re right, it is important to precise this point. It is strange that you walk still too fast whereas I tried to correct it recently. All the animated elements and the player itself will depend on the time and not on the frame rate. To answer you more precisely, yes, it will fix what you’re talking about.

I’m sorry, there are some problems with the association that hosts my website. Sometimes this host becomes unreachable.

On the other hand, erikd and some french users complained about the fact that it is possible to see through a wall. That’s why I will try to fix this bug by improving the collision detection.

I get this error at startup :
xset -r off
java.lang.UnsatisfiedLinkError: no gluegen-rt in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1030)
at com.sun.gluegen.runtime.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:91)
at com.sun.gluegen.runtime.NativeLibLoader.access$000(NativeLibLoader.java:50)
at com.sun.gluegen.runtime.NativeLibLoader$1.run(NativeLibLoader.java:69)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.gluegen.runtime.NativeLibLoader.loadGlueGenRT(NativeLibLoader.java:67)
at com.sun.gluegen.runtime.NativeLibrary.ensureNativeLibLoaded(NativeLibrary.java:399)
at com.sun.gluegen.runtime.NativeLibrary.open(NativeLibrary.java:163)
at com.sun.gluegen.runtime.NativeLibrary.open(NativeLibrary.java:129)
at com.sun.opengl.impl.x11.DRIHack.begin(DRIHack.java:109)
at com.sun.opengl.impl.x11.X11GLDrawableFactory.(X11GLDrawableFactory.java:99)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at javax.media.opengl.GLDrawableFactory.getFactory(GLDrawableFactory.java:111)
at javax.media.opengl.GLCanvas.chooseGraphicsConfiguration(GLCanvas.java:520)
at javax.media.opengl.GLCanvas.(GLCanvas.java:131)
at javax.media.opengl.GLCanvas.(GLCanvas.java:90)
at main.GameView.(GameView.java:54)
at connection.GameServiceProvider.main(GameServiceProvider.java:81)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.javaws.Launcher.executeApplication(Launcher.java:1272)
at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1218)
at com.sun.javaws.Launcher.doLaunchApp(Launcher.java:1065)
at com.sun.javaws.Launcher.run(Launcher.java:105)
at java.lang.Thread.run(Thread.java:619)

Can someone test my game and tell me what happens?

Just tried it here and it works fine.

Thank you for this test. The problem happened under Debian Etch but not under Mandriva Linux. I’m going to investigate.

I’ve solved a problem that erikd discovered some months ago. It was sometimes possible to see through the walls. I will update the game this morning. I’m improving the collision detection in order to solve this kind of problem and to increase the accuracy of the collision.

The server is down. It might work anew in the afternoon. Sorry.

The server is up now. Sorry for the disturbance.

The internal clock is now working. I have been synchronizing everything on it inside the game to go from frame-based animation to time-based animation. I will update the source code in a few days.

Just tried it, but I now everything’s time based I think you should slow down everything (i.e. make all steps for movement and aiming and such smaller). I’m getting a steady high framerate, and movement and aiming and everything is still way too fast and sensitive here.
Now you have everything time based, slowing down things should for example finally solve the sluggish aiming.

Ok, I will modify the aiming system because it is still unfair. If you move hugely your mouse, you will move the player as much as if you moved your mouse only a very little bit but in the same duration. It is often hardly possible to aim some guys, it needs to be improved. Then, I will reduce the step and the speed.

You spoke about steady high frame rate. As I said, the complexity of the geometry is quite low, I will still have to improve the performance before trying to display more complex levels, ennemies, items and weapons.

Thank you very much for your feedback.

I’m going to update the source code and the Java archive in some hours. I have been preparing some modifications in the behavior of the weapon(s), it is not finished (look at the package called “weapon”). I have improved the accuracy of collisions (in the class “main.GameModel” in the method called “hasPlayerMoved”). I must improve the performance before using heavier computations or it will decrease the frame rate.

On the other hand, I will tell you in some weeks the tasks that will be performed by the second person temporarily working on this project.

Bad news:

  • the students who decided some months ago to reuse my engine for their own project forgave up. They didn’t succeed in installing JOGL and in compiling my source code under Eclipse even with my detailed explanations. They have never been able to explain to me what was wrong, no trace of exception, no error message…
  • the rockets seem to be buggy. Sometimes, they didn’t disappear at the end when they reach their aim
  • the rocket launcher doesn’t work at all after having been killed once
  • 3 collision handling systems are communicating together to detect the collisions and correct the way that the objects move, it is a huge source of bug. After implementing the explosions, I will have to harmonize the collision handling system in order to improve the performance, improve the readability of the code and drive my game more stable, it is a priority before adding important new features
  • I need to improve the way of handling the rockets in order to allow the player to look up and down

Good news:

  • the bug of the rockets can be fixed by retaining in my system of collision only the rockets whose position have been updated, the bug of the rocket launcher is corrected, the game is going to be updated tonight
  • the “model” part of the explosions works fine, the “controller” part too, I need to write the “view” part