Plan for Mathieu
by Mathieu · 04/27/2004 (6:55 am) · 8 comments
Here we are, my first .plan on GG.
You hadn't heard much from me since then for many reasons. The more obvious is that Christophe (Cannnnon) used to keep you informed of MiniOne developpement in a regular basis. I also have a day job that takes me a lot of my time, that's why I have little time to spent on .plan but I think it's could be a nice exercice so I will try to write some when I can.
As you may already know, MiniOne Racing is near completion.
Christophe do is possible to complete a lot of small tasks that must be done before Beta testing and I'm trying to get ride of our 2 main bugs.
Here a brief description of the 2 bugs I spoke about. It's seems to me that we're walking with those two since years - it may not be as inexact as it sound. I had spent so much time on this! It's killing me. I'm not a professional C++ developper with 10 years of experience neither I can't take 3 months to understand exactly how the TGE manage with network, 3D rendering, ressources...
Vehicle interpolation problems / collision detection problems
It was like a relief to see that we're not the only one in this situation:
www.garagegames.com/mg/forums/result.thread.php?qt=16254
We have latency problems with AI and networked players.
Adjusting

As you can see the dust particles are preceeding the vehicles. This could be considered as a minor bug if this was not related with some other misterious network error that leads us to our major bug : collisions detections between this vehicles are horrible! It's killing the fun factor of MiniOne :(
After hours/days/months of research my only hope now is that Josh Williams and the GG team can take a moment to investigate this. I sent to Josh instructions to reproduce that on a HEAD, if anyone want to take a look at it, contact me. It's too much related to network and vehicles physics for me.
2nd player on the same computer
I take exemple on aiClient and aiConnection to create a new class : OPlayer who is designated to be the connection used by the 2nd player. (It works as an AI but the player keeps the command of the vehicle)
All is working greatly until we add a getCameraTransform in WheeledVehicle. Since then, the OPlayer did not works when players are using 3rd-person cameras.
As you can understand 3rd-person camera is the only kind of camera that can work on a game like MiniOne.
We identified the function that seems to cause this behavior but we can't understand why.
If we deleted this line from our getCameraTransform the 2nd player works.

I can't be very specific cause it's would be to long to explain here, but if someone is interested in this I could make a little package as I done for our 1st bug in order to reproduce it with the minimum of changes from the HEAD.
enough :D
Ok so I remember someone saying that he would liked to see developement screenhots from "alternative OS". Here one of my own, Mac OS X 10.3, XCode, MiniOne and thousands of windows opened (you can see only half of them cause I'm working on a dual screen configuration)

Next time I will upload a photo of my desktop and maybe one or two of Christophe after a WE of MiniOne developement. this could be used as an educational document for indie wannabe teenagers ("indie game developpement is not only a wonderful dream") :p
You hadn't heard much from me since then for many reasons. The more obvious is that Christophe (Cannnnon) used to keep you informed of MiniOne developpement in a regular basis. I also have a day job that takes me a lot of my time, that's why I have little time to spent on .plan but I think it's could be a nice exercice so I will try to write some when I can.
As you may already know, MiniOne Racing is near completion.
Christophe do is possible to complete a lot of small tasks that must be done before Beta testing and I'm trying to get ride of our 2 main bugs.
Here a brief description of the 2 bugs I spoke about. It's seems to me that we're walking with those two since years - it may not be as inexact as it sound. I had spent so much time on this! It's killing me. I'm not a professional C++ developper with 10 years of experience neither I can't take 3 months to understand exactly how the TGE manage with network, 3D rendering, ressources...
Vehicle interpolation problems / collision detection problems
It was like a relief to see that we're not the only one in this situation:
www.garagegames.com/mg/forums/result.thread.php?qt=16254
We have latency problems with AI and networked players.
Adjusting
$Pref::Net::PacketRateToClient $Pref::Net::PacketRateToServer $Pref::Net::LagThresholdhelps to get less unwanted moves from the vehicles but we still have some strange behaviours

As you can see the dust particles are preceeding the vehicles. This could be considered as a minor bug if this was not related with some other misterious network error that leads us to our major bug : collisions detections between this vehicles are horrible! It's killing the fun factor of MiniOne :(
After hours/days/months of research my only hope now is that Josh Williams and the GG team can take a moment to investigate this. I sent to Josh instructions to reproduce that on a HEAD, if anyone want to take a look at it, contact me. It's too much related to network and vehicles physics for me.
2nd player on the same computer
I take exemple on aiClient and aiConnection to create a new class : OPlayer who is designated to be the connection used by the 2nd player. (It works as an AI but the player keeps the command of the vehicle)
All is working greatly until we add a getCameraTransform in WheeledVehicle. Since then, the OPlayer did not works when players are using 3rd-person cameras.
As you can understand 3rd-person camera is the only kind of camera that can work on a game like MiniOne.
We identified the function that seems to cause this behavior but we can't understand why.
MatrixF OrientationCamera = MathUtils::createOrientFromDir(VecteurOrientationCamera);
If we deleted this line from our getCameraTransform the 2nd player works.

I can't be very specific cause it's would be to long to explain here, but if someone is interested in this I could make a little package as I done for our 1st bug in order to reproduce it with the minimum of changes from the HEAD.
enough :D
Ok so I remember someone saying that he would liked to see developement screenhots from "alternative OS". Here one of my own, Mac OS X 10.3, XCode, MiniOne and thousands of windows opened (you can see only half of them cause I'm working on a dual screen configuration)

Next time I will upload a photo of my desktop and maybe one or two of Christophe after a WE of MiniOne developement. this could be used as an educational document for indie wannabe teenagers ("indie game developpement is not only a wonderful dream") :p
About the author
#2
04/27/2004 (11:28 am)
Yeah, that problem, I hope, will get fixed. You look much more dedicated than I am right now, and I wish you good luck!
#3
The interesting thing about those particles that I've noticed EVERYTHING is having this problem, even projectiles. I took this screenshot the other day:

So its definately not an interpolation problem with the vehicles alone. Sounds to me like its a compression point bug, or some other wierd error somewhere between the GameBase to SceneObject level. Or it could possibly be something wierd w/ the particle code.
04/27/2004 (5:00 pm)
Phil,The interesting thing about those particles that I've noticed EVERYTHING is having this problem, even projectiles. I took this screenshot the other day:

So its definately not an interpolation problem with the vehicles alone. Sounds to me like its a compression point bug, or some other wierd error somewhere between the GameBase to SceneObject level. Or it could possibly be something wierd w/ the particle code.
#4
I'm glad that the issues raised in that thread are getting more attention. I looked into these a little bit, and I know Ben's spent some time on them too, but things have been extremely busy here in the office (as always), so we haven't done much.
I hope someone will figure out what's going on soon (and that it's a simple problem). If not, I'll keep checking in when there's time (and I'm sure Ben will too).
Btw, I didn't know you dev'd on the Mac. Cool stuff. I've just been getting into Mac dev too... XCode is pretty damn slick.
Good luck with the progress.
04/27/2004 (10:20 pm)
Looking great Mathieu. Mini-One is fun! I am becoming a master Jump expert. ;) I'm glad that the issues raised in that thread are getting more attention. I looked into these a little bit, and I know Ben's spent some time on them too, but things have been extremely busy here in the office (as always), so we haven't done much.
I hope someone will figure out what's going on soon (and that it's a simple problem). If not, I'll keep checking in when there's time (and I'm sure Ben will too).
Btw, I didn't know you dev'd on the Mac. Cool stuff. I've just been getting into Mac dev too... XCode is pretty damn slick.
Good luck with the progress.
#5
04/28/2004 (3:31 am)
On particles, in the particleEmitter datablocks make sure your ejectionoffset is 0. You may also have to play with the theta and phi levels. IIRC, make them all zeros too (unless your dust has to have them to look good).
#6
@Phil, I used a modified movemanager to control the OPlayer (who use a connection similar to the AI). The ressource from Cory Osborn definitely worth a look, I will read it the evening.
@Josh, Mac is my main platform since I started playing with computers. Working on OSX is a real pleasure!
@Eric, I wwil take a look at our datablocks, but the fact that our dust particles are not in the same position as our vehicle is only one consequence of the problem (I think).
04/28/2004 (10:38 am)
Thanks for all your comments and encouragements!@Phil, I used a modified movemanager to control the OPlayer (who use a connection similar to the AI). The ressource from Cory Osborn definitely worth a look, I will read it the evening.
@Josh, Mac is my main platform since I started playing with computers. Working on OSX is a real pleasure!
@Eric, I wwil take a look at our datablocks, but the fact that our dust particles are not in the same position as our vehicle is only one consequence of the problem (I think).
#7
Mathieu, might want to take a look at your shapes and make sure you have the bounding box setup right. This maybe the cause of your problems. If not, be sure to let me know.
04/29/2004 (4:42 am)
Just an update. Found out the problem w/ the projectiles. Seems that the bounding box is flawed with the projectile dts shape.Mathieu, might want to take a look at your shapes and make sure you have the bounding box setup right. This maybe the cause of your problems. If not, be sure to let me know.
#8
All bounding boxes are ok. The problem appears when a vehicle moves, and not appears when the same vehicle stops.
Christophe
www.frogames.com
04/29/2004 (5:22 am)
Robert,All bounding boxes are ok. The problem appears when a vehicle moves, and not appears when the same vehicle stops.
Christophe
www.frogames.com
Torque Owner Phil Carlisle
Hmm, the bugs.. The second one sounds the easiest to fix. You are using an AI player for the second player. But where are the players moves coming from for that player?
It might be easier, to add a second move manager, like Cory O did in his seperate camera/control object resource a few weeks back.
I cant see the createOrient function being the problem though, because AFAIK it doesnt touch anything, it merely sets some angles in the matrix.
I guess its possible that the looking straight down matrix means the other player goes out of scope for the camera? try running the second player's car behind the camera in the "working" mode and see if the car still works :)
I'd say its probably something to do with the scoping. But it still sounds to me like you need another movemanager (or alter the original move manager to add second player controls?).
Other than that, for the first bug, I'd be inclined to think that the emmitter for the dust is the correct position, but that the car is somehow lagged behind (possible an error when doing the interpolation?, see if the delta is calculated correctly?).