mr.floppy
28th Feb 2005, 10:26 AM
Fisrt of all, let me introduce myself:
Im a coder since 8 years, mainly doing stuff on c, c++ and java.
Lately ive been messing around with unrealscript as right now im coding some mutator to add smilies and avatars for screen messages in a game called "Rune" based on the unrealengine.
Now to the problem, I decided to split up the textures for icons and fonts into separate utx files and planned having a server side configuration (.ini) file for that emotes pack holding variable configuration for emote sizes, associated tags, frames of animation, delays for animation etc. Meaning like 4 or 5 arrays of integers or strings.
For that parameters to work in a "server to client" direction (not in anyother way) i had to replicate such values for clients ill paste a little snip:
EDIT: sorry forgot to use the code tags before...
var config int EmoXL[20];
var int A_EmoXL[20];
var config int EmoYL[20];
var int A_EmoYL[20];
var config string EmoTexIndexes[20];
var string A_EmoTexIndexes[20];
var config int EmoMaxRate[20];
var int A_EmoMaxRate[20];
var config int NumEmos;
var int A_NumEmos;
var config string EmoString[20];
var string A_EmoString[20];
replication
{
reliable if( Role == ROLE_Authority )
A_EmoXL;
reliable if( Role == ROLE_Authority )
A_EmoYL;
reliable if( Role == ROLE_Authority )
A_EmoMaxRate;
reliable if( Role == ROLE_Authority )
A_EmoTexIndexes;
reliable if( Role == ROLE_Authority )
A_EmoString;
reliable if( Role == ROLE_Authority )
A_NumEmos;
}
Well this thing should work but just when the actor is created on the client and it gets to be replicated the whole server crashes, complaining that:
appError called:
Assertion failed: !Bunch->IsError() [File:D:\Rune\Engine\Src\UnChan.cpp] [Line:
310]
Executing UObject::StaticShutdownAfterError
UChannel::SendBunch
DoSendBunch
UActorChannel::ReplicateActor
(Actor TRServerEmoData0)
UpdateRelevant
ULevel::ServerTickClient
ULevel::TickNetServer
UpdateNetServer
ULevel::Tick
(NetMode=1)
TickLevel
UGameEngine::Tick
UpdateWorld
UServerCommandlet::Main
Assertion failed: !Bunch->IsError() [File:D:\Rune\Engine\Src\UnChan.cpp] [Line:
310]
History: UChannel::SendBunch <- DoSendBunch <- UActorChannel::ReplicateActor <-
(Actor TRServerEmoData0) <- UpdateRelevant <- ULevel::ServerTickClient <- ULevel
::TickNetServer <- UpdateNetServer <- ULevel::Tick <- (NetMode=1) <- TickLevel <
- UGameEngine::Tick <- UpdateWorld <- UServerCommandlet::Main
Exiting due to error
Exiting.
Name subsystem shut down
Well with big testing on this matter i tried removing some of those arrays
from the replication section. Et voilá, worked pretty fine, the rest of replication variables were replicated without a single error...
Further tests revealed that none of that arrays was responsible for the crash
alone (trying every kind of possible combination).
So the final question is: is there any byte length limit for data which is to be replicated?, if thats the case do you know about any workaround i could use to get the thing working proper?
Thank you very much in advance, and a warm hello to the comunity!
Im a coder since 8 years, mainly doing stuff on c, c++ and java.
Lately ive been messing around with unrealscript as right now im coding some mutator to add smilies and avatars for screen messages in a game called "Rune" based on the unrealengine.
Now to the problem, I decided to split up the textures for icons and fonts into separate utx files and planned having a server side configuration (.ini) file for that emotes pack holding variable configuration for emote sizes, associated tags, frames of animation, delays for animation etc. Meaning like 4 or 5 arrays of integers or strings.
For that parameters to work in a "server to client" direction (not in anyother way) i had to replicate such values for clients ill paste a little snip:
EDIT: sorry forgot to use the code tags before...
var config int EmoXL[20];
var int A_EmoXL[20];
var config int EmoYL[20];
var int A_EmoYL[20];
var config string EmoTexIndexes[20];
var string A_EmoTexIndexes[20];
var config int EmoMaxRate[20];
var int A_EmoMaxRate[20];
var config int NumEmos;
var int A_NumEmos;
var config string EmoString[20];
var string A_EmoString[20];
replication
{
reliable if( Role == ROLE_Authority )
A_EmoXL;
reliable if( Role == ROLE_Authority )
A_EmoYL;
reliable if( Role == ROLE_Authority )
A_EmoMaxRate;
reliable if( Role == ROLE_Authority )
A_EmoTexIndexes;
reliable if( Role == ROLE_Authority )
A_EmoString;
reliable if( Role == ROLE_Authority )
A_NumEmos;
}
Well this thing should work but just when the actor is created on the client and it gets to be replicated the whole server crashes, complaining that:
appError called:
Assertion failed: !Bunch->IsError() [File:D:\Rune\Engine\Src\UnChan.cpp] [Line:
310]
Executing UObject::StaticShutdownAfterError
UChannel::SendBunch
DoSendBunch
UActorChannel::ReplicateActor
(Actor TRServerEmoData0)
UpdateRelevant
ULevel::ServerTickClient
ULevel::TickNetServer
UpdateNetServer
ULevel::Tick
(NetMode=1)
TickLevel
UGameEngine::Tick
UpdateWorld
UServerCommandlet::Main
Assertion failed: !Bunch->IsError() [File:D:\Rune\Engine\Src\UnChan.cpp] [Line:
310]
History: UChannel::SendBunch <- DoSendBunch <- UActorChannel::ReplicateActor <-
(Actor TRServerEmoData0) <- UpdateRelevant <- ULevel::ServerTickClient <- ULevel
::TickNetServer <- UpdateNetServer <- ULevel::Tick <- (NetMode=1) <- TickLevel <
- UGameEngine::Tick <- UpdateWorld <- UServerCommandlet::Main
Exiting due to error
Exiting.
Name subsystem shut down
Well with big testing on this matter i tried removing some of those arrays
from the replication section. Et voilá, worked pretty fine, the rest of replication variables were replicated without a single error...
Further tests revealed that none of that arrays was responsible for the crash
alone (trying every kind of possible combination).
So the final question is: is there any byte length limit for data which is to be replicated?, if thats the case do you know about any workaround i could use to get the thing working proper?
Thank you very much in advance, and a warm hello to the comunity!