Particle Effects - "You do not have the correct version..." Error
by Ingo Seidel · in Technical Issues · 02/16/2010 (5:51 am) · 5 replies
hi,
i tried to integrate a simple smoke effect into my game, but theres always the same result. the effect appears for about half a second, then the game stops and shows the following error message:
"You do not have the correct version of the 3D Cilent or the related art needed to enter this world. (invalid packet (failed to register ghost))."
the console shows this:
"Could not register base emitter for particle of class: FireParticleEmitterNode"
i am usinger version 1.8.1 and the art is definitely in the right folder. so where could be the problem?
here is my campFireFx.cs source file:
datablock ParticleData( FireParticle )
{
textureName = "~/data_icura/shapes/campfire_particles/fire";
dragCoefficient = 0.0;
gravityCoefficient = -0.3; // Gravity pulls down, but a negative value makes the particles rise instead of sink
inheritedVelFactor = 0.00;
useInvAlpha = false;
spinRandomMin = -30.0;
spinRandomMax = 30.0;
lifetimeMS = 500;
lifetimeVarianceMS = 250;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
colors[0] = "0.8 0.6 0.0 0.1";
colors[1] = "0.8 0.6 0.0 0.1";
colors[2] = "0.0 0.0 0.0 0.0";
sizes[0] = 1.0;
sizes[1] = 1.0;
sizes[2] = 5.0;
};
datablock ParticleEmitterData( FireParticleEmitter )
{
particles = "FireParticle";
ejectionPeriodMS = 15;
periodVarianceMS = 5;
ejectionVelocity = 0.25;
velocityVariance = 0.10;
thetaMin = 0.0;
thetaMax = 90.0;
};
datablock ParticleEmitterNodeData( FireParticleEmitterNode )
{
timeMultiple = 1;
};
//-----------------------------------------------------------------------------
// Where there's fire... there's smoke, so the second thing we need to do is
// create a second particle system to represent the smoke.
//
// SmokeParticle - Defines how individual particles behave.
// SmokeParticleEmitter - Defines how the particles enter the world.
// SmokeParticleEmitterNode - The particle system's node for world placement.
//-----------------------------------------------------------------------------
datablock ParticleData( SmokeParticle )
{
textureName = "~/data_icura/shapes/campfire_particles/smoke";
dragCoefficient = 0.0;
gravityCoefficient = -0.2; // Gravity pulls down, but a negative value makes the particles rise instead of sink
inheritedVelFactor = 0.00;
useInvAlpha = false;
spinRandomMin = -30.0;
spinRandomMax = 30.0;
lifetimeMS = 3000;
lifetimeVarianceMS = 250;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
colors[0] = "0.6 0.6 0.6 0.1";
colors[1] = "0.6 0.6 0.6 0.1";
colors[2] = "0.6 0.6 0.6 0.0";
sizes[0] = 0.5;
sizes[1] = 0.75;
sizes[2] = 1.5;
};
datablock ParticleEmitterData( SmokeParticleEmitter )
{
particles = SmokeParticle;
ejectionPeriodMS = 20;
periodVarianceMS = 5;
ejectionVelocity = 0.25;
velocityVariance = 0.10;
thetaMin = 0.0;
thetaMax = 90.0;
};
datablock ParticleEmitterNodeData( SmokeParticleEmitterNode )
{
timeMultiple = 1;
};
i tried to integrate a simple smoke effect into my game, but theres always the same result. the effect appears for about half a second, then the game stops and shows the following error message:
"You do not have the correct version of the 3D Cilent or the related art needed to enter this world. (invalid packet (failed to register ghost))."
the console shows this:
"Could not register base emitter for particle of class: FireParticleEmitterNode"
i am usinger version 1.8.1 and the art is definitely in the right folder. so where could be the problem?
here is my campFireFx.cs source file:
datablock ParticleData( FireParticle )
{
textureName = "~/data_icura/shapes/campfire_particles/fire";
dragCoefficient = 0.0;
gravityCoefficient = -0.3; // Gravity pulls down, but a negative value makes the particles rise instead of sink
inheritedVelFactor = 0.00;
useInvAlpha = false;
spinRandomMin = -30.0;
spinRandomMax = 30.0;
lifetimeMS = 500;
lifetimeVarianceMS = 250;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
colors[0] = "0.8 0.6 0.0 0.1";
colors[1] = "0.8 0.6 0.0 0.1";
colors[2] = "0.0 0.0 0.0 0.0";
sizes[0] = 1.0;
sizes[1] = 1.0;
sizes[2] = 5.0;
};
datablock ParticleEmitterData( FireParticleEmitter )
{
particles = "FireParticle";
ejectionPeriodMS = 15;
periodVarianceMS = 5;
ejectionVelocity = 0.25;
velocityVariance = 0.10;
thetaMin = 0.0;
thetaMax = 90.0;
};
datablock ParticleEmitterNodeData( FireParticleEmitterNode )
{
timeMultiple = 1;
};
//-----------------------------------------------------------------------------
// Where there's fire... there's smoke, so the second thing we need to do is
// create a second particle system to represent the smoke.
//
// SmokeParticle - Defines how individual particles behave.
// SmokeParticleEmitter - Defines how the particles enter the world.
// SmokeParticleEmitterNode - The particle system's node for world placement.
//-----------------------------------------------------------------------------
datablock ParticleData( SmokeParticle )
{
textureName = "~/data_icura/shapes/campfire_particles/smoke";
dragCoefficient = 0.0;
gravityCoefficient = -0.2; // Gravity pulls down, but a negative value makes the particles rise instead of sink
inheritedVelFactor = 0.00;
useInvAlpha = false;
spinRandomMin = -30.0;
spinRandomMax = 30.0;
lifetimeMS = 3000;
lifetimeVarianceMS = 250;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
colors[0] = "0.6 0.6 0.6 0.1";
colors[1] = "0.6 0.6 0.6 0.1";
colors[2] = "0.6 0.6 0.6 0.0";
sizes[0] = 0.5;
sizes[1] = 0.75;
sizes[2] = 1.5;
};
datablock ParticleEmitterData( SmokeParticleEmitter )
{
particles = SmokeParticle;
ejectionPeriodMS = 20;
periodVarianceMS = 5;
ejectionVelocity = 0.25;
velocityVariance = 0.10;
thetaMin = 0.0;
thetaMax = 90.0;
};
datablock ParticleEmitterNodeData( SmokeParticleEmitterNode )
{
timeMultiple = 1;
};
#2
02/16/2010 (11:12 am)
Check you haven't deleted/are missing the png for the related particle, and also that you aren't renaming new/custom data the same as old/existing data.
#3
datablock ParticleEmitterData( FireParticleEmitter )
{
particles = "FireParticle";
02/16/2010 (3:24 pm)
Try taking the quotes out around FireParticledatablock ParticleEmitterData( FireParticleEmitter )
{
particles = "FireParticle";
#4
@Raymond: I tried it, but it didn't work :-(
@David: I thing that's the point. In the course of time we made some modifications to the engine. Just small changes, but many of them :-) I hoped to find a solution for the problem but I think I will continue without particles...
thx anyway.
02/17/2010 (5:11 am)
@Steve: The pngs for the related particles are in the correct folder. And we didn't rename them. @Raymond: I tried it, but it didn't work :-(
@David: I thing that's the point. In the course of time we made some modifications to the engine. Just small changes, but many of them :-) I hoped to find a solution for the problem but I think I will continue without particles...
thx anyway.
#5
After some debugging in the engine we found out that the ParticleEmitter class expects the ClientMissionCleanup to be existent when a new ParticleEmitter is added (ParticleEmitter::onAdd()) function. Unfortunately, we had overwritten the clientCmdMissionStart callback in the script code base in which the ClientMissionCleanup object is initialized. So, we simply had to create the ClientMissionCleanup object on start up and everything worked fine then ... :-)
02/17/2010 (7:14 am)
Tedious Problem, simple solution.After some debugging in the engine we found out that the ParticleEmitter class expects the ClientMissionCleanup to be existent when a new ParticleEmitter is added (ParticleEmitter::onAdd()) function. Unfortunately, we had overwritten the clientCmdMissionStart callback in the script code base in which the ClientMissionCleanup object is initialized. So, we simply had to create the ClientMissionCleanup object on start up and everything worked fine then ... :-)
Torque 3D Owner Dave Potter
I can't see anything wrong here. Do you use any other modifications in your engine? The reason I ask is I was getting problems like this when I tried to implement the PathedShape resource. It was causing invalid packets because of the amount of data it was trying to send to the client being too big for the packet size.
(Never did find a solution, so I backed it out).