Hi there,
my unity web project runs great with Firefox. But there is an “internal error” when using Chrome or IE.
I found the exact part in my code where it starts to crash on Chrome/IE but can only guess where the problem is.
When excluding the part from this point it runs on Chrome/IE as well.
Short description:
While initialising lots of variables to define monster waves for my tower defense game at a certain point Chrome/IE crashes,
while Firefox still runs the web application. I use multi-dimensional arrays which size is predefined by static integers. The
code to define my monster waves weights about ~3000 lines of code (10 levels à 20 waves à 50 different monsters…). It seems
that at a certain point the variable definitions are “too much” for Chrome/IE…
My assumption: Chrome/IE use a maximum of variables, breaking the limit causes the crash.
Anyone knowing this problem?
Strange: When I initialize all the monsters with one big loop, it also runs well in Chrome/IE, see last code part:
Variable definitions:
private static var max_challenges: int = 11;
private static var max_monster : int = 61; //maximale anzahl an monster pro welle
private static var max_waves : int = 31; //maximale anzahl an wellen pro challenge
private static var max_addition : int = 30; //maximale anzahl an zusätzlichen Kategorien
private static var max_monstertype : int = 21; //maximale anzahl an verschiedenen monster typen
private static var max_monsterlevel : int = 11; //maximales monster level
private var wave_count : int[] = new int[max_challenges];
private var monster_count : int[,] = new int[max_challenges,max_waves];
private var monster_type : int[,,] = new int[max_challenges,max_waves,max_monster];
private var monster_level : int[,,] = new int[max_challenges,max_waves,max_monster];
private var monster_strength : int[,,] = new int[max_challenges,max_waves,max_monster];
private var monster_armor : int[,,] = new int[max_challenges,max_waves,max_monster];
private var monster_addition : int[,,,] = new int[max_challenges,max_waves,max_monster,max_addition];
Extract of the code producing the crash on Chrome/IE:
var challenge : int = 10;
var wave : int;
var monster : int;
var i : int;
//-----------------------------------------------------------------
//Defining monsters for challenge 1
challenge = 1;
wave_count[challenge] = 8;
//-->
//Defining monsters for wave 1
wave = 1;
monster_count[challenge,wave] = 1;
//----->
monster_type[challenge,wave,monster] = 1;
monster_level[challenge,wave,monster] = 1;
monster_strength[challenge,wave,monster] = 1;
monster_armor[challenge,wave,monster] = 1;
for(i = 0; i < max_addition; i++) {
monster_addition[challenge,wave,monster,i] = 0;
}
...
//-->
//Defining monsters for wave 8
wave = 8;
monster_count[challenge,wave] = 15;
//----->
for(monster = 1; monster <= 5; monster++) { //alle monster gleich abfrühstücken
monster_type[challenge,wave,monster] = 2;
monster_level[challenge,wave,monster] = 1;
monster_strength[challenge,wave,monster] = 1;
monster_armor[challenge,wave,monster] = 1;
for(i = 0; i < max_addition; i++) {
monster_addition[challenge,wave,monster,i] = 0;
}
}
for(monster = 6; monster <= 10; monster++) { //alle monster gleich abfrühstücken
monster_type[challenge,wave,monster] = 2;
monster_level[challenge,wave,monster] = 2;
monster_strength[challenge,wave,monster] = 1;
monster_armor[challenge,wave,monster] = 1;
for(i = 0; i < max_addition; i++) {
monster_addition[challenge,wave,monster,i] = 0;
}
}
for(monster = 11; monster <= 15; monster++) { //alle monster gleich abfrühstücken
monster_type[challenge,wave,monster] = 2;
monster_level[challenge,wave,monster] = 3;
monster_strength[challenge,wave,monster] = 1;
monster_armor[challenge,wave,monster] = 1;
for(i = 0; i < max_addition; i++) {
monster_addition[challenge,wave,monster,i] = 0;
}
}
//-----------------------------------------------------------------
//Defining monsters for challenge 1
challenge = 2;
wave_count[challenge] = 14;
//-->
...
//all-including-loop runs great with Firefox/Chrome/IE
for(challenge = 1; challenge < max_challenges; challenge++) {
for(wave = 1; wave < max_waves; wave++) {
for(monster = 1; monster <= max_monster; monster++) { //alle monster gleich abfrühstücken
monster_type[challenge,wave,monster] = 1;
monster_level[challenge,wave,monster] = 1;
monster_strength[challenge,wave,monster] = 1;
monster_armor[challenge,wave,monster] = 1;
for(i = 0; i < max_addition; i++) {
monster_addition[challenge,wave,monster,i] = 0;
}
}
}
}
My Project: a roleplay tower defense browser game developed with unity
visit my homepage