Page 1 of 1

Online Compatability

Posted: Sat Oct 27, 2012 11:35 am
by Cleb
So I was just testing my map online but it crashed when it loaded. I searched for "online compatable" but turned up nothing useful. How can I make my map online compatable? Or is it... impossible? :shock:

Re: Online Compatability

Posted: Sat Oct 27, 2012 12:41 pm
by AQT
It would help if you spelled compatible correctly. :)

A custom map utilizing at least the stock game modes (aside from campaign) should have no problem working online by default, so you did something to cause the incompatibility.

Re: Online Compatability

Posted: Sat Oct 27, 2012 6:10 pm
by Cleb
AQT wrote:It would help if you spelled compatible correctly. :)
:funny2: :oops:
My map only uses conquest at the moment, and I can't think of anything that would make it uncompatible or anything... :(

Re: Online Compatability

Posted: Sun Oct 28, 2012 9:55 am
by Locutus
So your Map works in SP but not in MP?
Have you added custom sides?

Re: Online Compatability

Posted: Sun Oct 28, 2012 11:39 am
by Cleb
Locutus wrote:1.So your Map works in SP but not in MP?
2.Have you added custom sides?
1. Yes
2. Yes

Though after it crashes, if I reopen battlefront my server is still there and where it says who's in the server it says my name as if I'm actually still playing online.

Re: Online Compatability

Posted: Sun Oct 28, 2012 11:55 am
by Locutus
Try a clean/manual clean and then remunge your map but without the sides and try to play it online again. I expect this to work and then you can be sure that it are the sides.

Next step would be to add one unit after another to your side and see when it starts crashing. (Except you are using the disguise kit which is known to break online stability.)

Re: Online Compatability

Posted: Sun Oct 28, 2012 12:40 pm
by Cleb
Wait just had a thought... Maybe the fact that I have ubermode enabled and both sides have way more than 20 people be the problem?

Re: Online Compatability

Posted: Sun Oct 28, 2012 1:20 pm
by Marth8880
Post your LUA, please.

Re: Online Compatability

Posted: Sun Oct 28, 2012 2:45 pm
by Cleb
Hidden/Spoiler:
--
-- Copyright (c) 2005 Pandemic Studios, LLC. All rights reserved.
--

-- load the gametype script
ScriptCB_DoFile("ObjectiveConquest")
ScriptCB_DoFile("setup_teams")

-- REP Attacking (attacker is always #1)
REP = 1;
CIS = 2;
-- These variables do not change
ATT = REP;
DEF = CIS;


function ScriptPostLoad()
SetAIDifficulty(0, 0, "hard")-- I'd say this influences the dumbness of the A.I. to compensate for difficult maps.
DisableAIAutoBalance()--Help requested on explaining this




--This defines the CPs. These need to happen first
cp1 = CommandPost:New{name = "cp1"}
cp2 = CommandPost:New{name = "cp2"}
cp3 = CommandPost:New{name = "cp3"}
cp4 = CommandPost:New{name = "cp4"}
cp5 = CommandPost:New{name = "cp5"}



--This sets up the actual objective. This needs to happen after cp's are defined
conquest = ObjectiveConquest:New{teamATT = ATT, teamDEF = DEF,
textATT = "game.modes.con",
textDEF = "game.modes.con2",
multiplayerRules = true}

--This adds the CPs to the objective. This needs to happen after the objective is set up
conquest:AddCommandPost(cp1)
conquest:AddCommandPost(cp2)
conquest:AddCommandPost(cp3)
conquest:AddCommandPost(cp4)
conquest:AddCommandPost(cp5)

conquest:Start()

SetUberMode(1);

EnableSPHeroRules(0)

end


---------------------------------------------------------------------------
-- FUNCTION: ScriptInit
-- PURPOSE: This function is only run once
-- INPUT:
-- OUTPUT:
-- NOTES: The name, 'ScriptInit' is a chosen convention, and each
-- mission script must contain a version of this function, as
-- it is called from C to start the mission.
---------------------------------------------------------------------------
function ScriptInit()

ReadDataFile("ingame.lvl")


SetMaxFlyHeight(500)
SetMaxPlayerFlyHeight (500)

SetMemoryPoolSize ("ClothData",20)
SetMemoryPoolSize ("Combo",50) -- should be ~ 2x number of jedi classes
SetMemoryPoolSize ("Combo::State",650) -- should be ~12x #Combo
SetMemoryPoolSize ("Combo::Transition",650) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Condition",650) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Attack",550) -- should be ~8-12x #Combo
SetMemoryPoolSize ("Combo::DamageSample",6000) -- should be ~8-12x #Combo::Attack
SetMemoryPoolSize ("Combo::Deflect",100) -- should be ~1x #combo

function la_anim()
if laanim == 1 then
PauseAnimation("fly1");
RewindAnimation("fly1");
PlayAnimation("fly1");
EntityFlyerTakeOff("rep_fly_gunshipbf1propshoot")
laanim = 1

if laanim == 2 then
PauseAnimation("fly2");
RewindAnimation("fly2");
PlayAnimation("fly2");
EntityFlyerTakeOff("rep_fly_gunshipbf1propshoot1")
laanim = 2

if laanim == 3 then
PauseAnimation("fly3");
RewindAnimation("fly3");
PlayAnimation("fly3");
EntityFlyerTakeOff("rep_fly_gunshipbf1propshoot2")
laanim = 3

if laanim == 4 then
PauseAnimation("bombard");
RewindAnimation("bombard");
PlayAnimation("bombard");
EntityFlyerTakeOff("rep_fly_gunshipbombardment")
laanim = 4

end

end

end

end

end

SetTeamAggressiveness(REP, 1.0)
SetTeamAggressiveness(CIS, 0.3)

ReadDataFile("sound\\yav.lvl;yav1cw")
ReadDataFile("SIDE\\cis.lvl",
"cis_hero_darthmaul")
ReadDataFile("SIDE\\rep.lvl",
"rep_inf_ep3_rifleman",
"rep_inf_ep3_rocketeer",
"rep_inf_ep3_engineer",
"rep_inf_ep3_sniper",
"rep_inf_ep3_officer",
"rep_inf_ep3_jettrooper",
"rep_hover_fightertank",
"rep_hero_anakin",
"rep_hover_barcspeeder")
ReadDataFile("dc:SIDE\\cfd.lvl",
"cis_inf_bdroid",
"cis_inf_sprbdroid",
"cis_inf_scout",
"cis_inf_support",
"cis_inf_weapons",
"cis_inf_droid_commander",
"cis_inf_icedroid")
ReadDataFile("dc:SIDE\\327.lvl",
"rep_inf_327",
"rep_inf_command",
"rep_inf_sniper_snow",
"rep_inf_rocketeer_snow",
"rep_inf_medic",
"rep_inf_commando",
"rep_inf_technician")


ReadDataFile("dc:SIDE\\tur.lvl",
"tur_bldg_laser",
"tur_bldg_tower",
"tur_bldg_built_beam",
"tur_bldg_chaingun_tripod",
"tur_bldg_recoilless_lg",
"tur_bldg_recoilless_fel_auto")

SetupTeams{
rep = {
team = REP,
units = 64,
reinforcements = 800,
soldier = { "rep_inf_327",9, 40},
assault = { "rep_inf_command",1, 10},
engineer = { "rep_inf_sniper_snow",1, 10},
sniper = { "rep_inf_rocketeer_snow",1, 10},
officer = {"rep_inf_medic",1, 4},
special = { "rep_inf_commando",1, 4},

},
cis = {
team = CIS,
units = 32,
reinforcements = 300,
soldier = { "cis_inf_bdroid",9, 18},
assault = { "cis_inf_scout",1, 6},
engineer = { "cis_inf_icedroid",1, 4},
sniper = { "cis_inf_droid_commander",1, 4},
officer = {"cis_inf_weapons",1, 4},
special = { "cis_inf_support",1, 4},
}
}

AddUnitClass(REP, "rep_inf_technician",1, 4)
AddUnitClass(CIS, "cis_inf_sprbdroid",1, 4)


-- Level Stats
-- ClearWalkers()
AddWalkerType(0, 0) -- special -> droidekas
AddWalkerType(1, 0) -- 1x2 (1 pair of legs)
AddWalkerType(2, 0) -- 2x2 (2 pairs of legs)
AddWalkerType(3, 0) -- 3x2 (3 pairs of legs)
local weaponCnt = 1024
SetMemoryPoolSize("Aimer", 75)
SetMemoryPoolSize("AmmoCounter", weaponCnt)
SetMemoryPoolSize("BaseHint", 1024)
SetMemoryPoolSize("EnergyBar", weaponCnt)
SetMemoryPoolSize("EntityCloth", 32)
SetMemoryPoolSize("EntityFlyer", 32)
SetMemoryPoolSize("EntityHover", 32)
SetMemoryPoolSize("EntityLight", 200)
SetMemoryPoolSize("EntitySoundStream", 4)
SetMemoryPoolSize("EntitySoundStatic", 32)
SetMemoryPoolSize("MountedTurret", 50)
SetMemoryPoolSize("EntityPortableTurret", 300)
SetMemoryPoolSize("Navigator", 128)
SetMemoryPoolSize("Obstacle", 1024)
SetMemoryPoolSize("PathNode", 1024)
SetMemoryPoolSize("SoundSpaceRegion", 64)
SetMemoryPoolSize("TreeGridStack", 1024)
SetMemoryPoolSize("UnitAgent", 128)
SetMemoryPoolSize("SoldierAnimation", 450)
SetMemoryPoolSize("UnitController", 128)
SetMemoryPoolSize("Weapon", weaponCnt)
SetMemoryPoolSize("ParticleTransformer::SizeTransf", 1554)
SetMemoryPoolSize("ParticleTransformer::ColorTrans", 2301)

SetSpawnDelay(10.0, 0.25)
--ReadDataFile("dc:MNT\\MNT.lvl", "MNT_conquest")
ReadDataFile("dc:MNT\\MNT.lvl", "MNT_conquest")
SetDenseEnvironment("false")
AddDeathRegion("region0")
AddDeathRegion("region12")
AddDeathRegion("region2")
AddDeathRegion("region3")
AddDeathRegion("region4")
AddDeathRegion("region5")
AddDeathRegion("region6")
AddDeathRegion("region7")
AddDeathRegion("region8")
AddDeathRegion("region9")
AddDeathRegion("region10")
AddDeathRegion("region11")
AddDeathRegion("region15")
AddDeathRegion("region16")




-- Sound

SetSoundEffect("ScopeDisplayZoomIn", "binocularzoomin")
SetSoundEffect("ScopeDisplayZoomOut", "binocularzoomout")

voiceSlow = OpenAudioStream("sound\\global.lvl", "rep_unit_vo_slow")
AudioStreamAppendSegments("sound\\global.lvl", "cis_unit_vo_slow", voiceSlow)
AudioStreamAppendSegments("sound\\global.lvl", "global_vo_slow", voiceSlow)

voiceQuick = OpenAudioStream("sound\\global.lvl", "rep_unit_vo_quick")
AudioStreamAppendSegments("sound\\global.lvl", "cis_unit_vo_quick", voiceQuick)

OpenAudioStream("sound\\global.lvl", "cw_music")
-- OpenAudioStream("sound\\global.lvl", "global_vo_quick")
-- OpenAudioStream("sound\\global.lvl", "global_vo_slow")
OpenAudioStream("sound\\yav.lvl", "yav1")
OpenAudioStream("sound\\yav.lvl", "yav1")
OpenAudioStream("sound\\yav.lvl", "yav1_emt")

SetBleedingVoiceOver(REP, REP, "rep_off_com_report_us_overwhelmed", 1)
SetBleedingVoiceOver(REP, CIS, "rep_off_com_report_enemy_losing", 1)
SetBleedingVoiceOver(CIS, REP, "cis_off_com_report_enemy_losing", 1)
SetBleedingVoiceOver(CIS, CIS, "cis_off_com_report_us_overwhelmed", 1)

SetOutOfBoundsVoiceOver(2, "cisleaving")
SetOutOfBoundsVoiceOver(1, "repleaving")

SetAmbientMusic(REP, 1.0, "rep_yav_amb_start", 0,1)
SetAmbientMusic(REP, 0.8, "rep_yav_amb_middle", 1,1)
SetAmbientMusic(REP, 0.2, "rep_yav_amb_end", 2,1)
SetAmbientMusic(CIS, 1.0, "cis_yav_amb_start", 0,1)
SetAmbientMusic(CIS, 0.8, "cis_yav_amb_middle", 1,1)
SetAmbientMusic(CIS, 0.2, "cis_yav_amb_end", 2,1)

SetVictoryMusic(REP, "rep_yav_amb_victory")
SetDefeatMusic (REP, "rep_yav_amb_defeat")
SetVictoryMusic(CIS, "cis_yav_amb_victory")
SetDefeatMusic (CIS, "cis_yav_amb_defeat")

SetSoundEffect("ScopeDisplayZoomIn", "binocularzoomin")
SetSoundEffect("ScopeDisplayZoomOut", "binocularzoomout")
--SetSoundEffect("BirdScatter", "birdsFlySeq1")
--SetSoundEffect("WeaponUnableSelect", "com_weap_inf_weaponchange_null")
--SetSoundEffect("WeaponModeUnableSelect", "com_weap_inf_modechange_null")
SetSoundEffect("SpawnDisplayUnitChange", "shell_select_unit")
SetSoundEffect("SpawnDisplayUnitAccept", "shell_menu_enter")
SetSoundEffect("SpawnDisplaySpawnPointChange", "shell_select_change")
SetSoundEffect("SpawnDisplaySpawnPointAccept", "shell_menu_enter")
SetSoundEffect("SpawnDisplayBack", "shell_menu_exit")


--OpeningSateliteShot
AddCameraShot(0.908386, -0.209095, -0.352873, -0.081226, -45.922508, -19.114113, 77.022636);

AddCameraShot(-0.481173, 0.024248, -0.875181, -0.044103, 14.767292, -30.602322, -144.506851);
AddCameraShot(0.999914, -0.012495, -0.004416, -0.000055, 1.143253, -33.602314, -76.884430);
AddCameraShot(0.839161, 0.012048, -0.543698, 0.007806, 19.152437, -49.802273, 24.337317);
AddCameraShot(0.467324, 0.006709, -0.883972, 0.012691, 11.825212, -49.802273, -7.000720);
AddCameraShot(0.861797, 0.001786, -0.507253, 0.001051, -11.986043, -59.702248, 23.263165);
AddCameraShot(0.628546, -0.042609, -0.774831, -0.052525, 20.429928, -48.302277, 9.771714);
AddCameraShot(0.765213, -0.051873, 0.640215, 0.043400, 57.692474, -48.302277, 16.540724);
AddCameraShot(0.264032, -0.015285, -0.962782, -0.055734, -16.681797, -42.902290, 129.553268);
AddCameraShot(-0.382320, 0.022132, -0.922222, -0.053386, 20.670977, -42.902290, 135.513001);
end

Re: Online Compatability

Posted: Sun Oct 28, 2012 5:49 pm
by Marth8880
Cleb wrote:

Code: Select all

DisableAIAutoBalance()--Help requested on explaining this
[color=#FF8000]AI Difficulty.html[/color] wrote: EnableAIAutoBalance()
Turn on AutoBalancing. This will work for Conquest/Assault/CTF games. Not campaign. Basically if the score gets too far in one teams favor (+/- 40 conquest, 60 assault, 1 ctf) it will make the loosing team better and the winning team worse until things get back to close again.

DisableAIAutoBalance()
Turn off AutoBalancing. It is on by default so you should use this for your campaign mode scripts.
So basically don't disable it unless you really know what you're doing in terms of pure-balancing A.I.

Cleb wrote:

Code: Select all

SetUberMode(1);

EnableSPHeroRules(0)
I'm pretty sure SetUberMode(1); isn't a real function, but I'm not positive. Here's what Geonosis' XL mode states:
geo1c_xl wrote:

Code: Select all

TDM = ObjectiveTDM:New{teamATT = 1, teamDEF = 2, 
						multiplayerScoreLimit = 100,
						textATT = "game.modes.tdm",
						textDEF = "game.modes.tdm2", multiplayerRules = true,
						isUberMode = true,
						uberScoreLimit = 350,
						}
	TDM:Start()

Also,
Cleb wrote:

Code: Select all

function la_anim()
   if laanim == 1 then
      PauseAnimation("fly1");
      RewindAnimation("fly1");
      PlayAnimation("fly1");
      EntityFlyerTakeOff("rep_fly_gunshipbf1propshoot")
      laanim = 1

   if laanim == 2 then
      PauseAnimation("fly2");
      RewindAnimation("fly2");
      PlayAnimation("fly2");
      EntityFlyerTakeOff("rep_fly_gunshipbf1propshoot1")
      laanim = 2

   if laanim == 3 then
      PauseAnimation("fly3");
      RewindAnimation("fly3");
      PlayAnimation("fly3");
      EntityFlyerTakeOff("rep_fly_gunshipbf1propshoot2")
      laanim = 3

   if laanim == 4 then
      PauseAnimation("bombard");
      RewindAnimation("bombard");
      PlayAnimation("bombard");
      EntityFlyerTakeOff("rep_fly_gunshipbombardment")
      laanim = 4
   
            end
      
         end
      
      end
      
   end
      
end
should be

Code: Select all

function la_anim()
		if laanim == 1 then
			PauseAnimation("fly1");
			RewindAnimation("fly1");
			PlayAnimation("fly1");
			EntityFlyerTakeOff("rep_fly_gunshipbf1propshoot")
			laanim = 1
		elseif laanim == 2 then
			PauseAnimation("fly2");
			RewindAnimation("fly2");
			PlayAnimation("fly2");
			EntityFlyerTakeOff("rep_fly_gunshipbf1propshoot1")
			laanim = 2
		elseif laanim == 3 then
			PauseAnimation("fly3");
			RewindAnimation("fly3");
			PlayAnimation("fly3");
			EntityFlyerTakeOff("rep_fly_gunshipbf1propshoot2")
			laanim = 3
		elseif laanim == 4 then
			PauseAnimation("bombard");
			RewindAnimation("bombard");
			PlayAnimation("bombard");
			EntityFlyerTakeOff("rep_fly_gunshipbombardment")
			laanim = 4
		end
	end
and you might wanna put it in between ScriptPostLoad() and ScriptInit(). Again, I'm not sure, but it's worth trying. Also, is this supposed to be a math.random function or what? Because if so, then you're gonna have to wrap it with

Code: Select all

if not ScriptCB_InMultiplayer() then
[insert "laanim" if...then statement]
else
[leave this empty or put one of the "laanim" decisions here without the if/elseif then bit]
end

Re: Online Compatability

Posted: Sun Oct 28, 2012 6:46 pm
by Cleb
Marth8880 wrote:
Cleb wrote:

Code: Select all

DisableAIAutoBalance()--Help requested on explaining this
[color=#FF8000]AI Difficulty.html[/color] wrote: EnableAIAutoBalance()
Turn on AutoBalancing. This will work for Conquest/Assault/CTF games. Not campaign. Basically if the score gets too far in one teams favor (+/- 40 conquest, 60 assault, 1 ctf) it will make the loosing team better and the winning team worse until things get back to close again.

DisableAIAutoBalance()
Turn off AutoBalancing. It is on by default so you should use this for your campaign mode scripts.
So basically don't disable it unless you really know what you're doing in terms of pure-balancing A.I.
Actually I didn't put "help requested on explaining this." Back when I started the map I wanted to do something, I can't recall what it was but I found it in some lost tutorial somewhere deep within Gametoast and I saw fit to put this in there. But now that I've been reminded about it, I will take it away because I don't want it anymore. :lol:
Marth8880 wrote:
Cleb wrote:

Code: Select all

SetUberMode(1);

EnableSPHeroRules(0)
I'm pretty sure SetUberMode(1); isn't a real function, but I'm not positive.
It is a function; I used it and it works fine.
http://www.gametoast.com/forums/viewtop ... 27&t=12147
Marth8880 wrote:
Cleb wrote:

Code: Select all

function la_anim()
   if laanim == 1 then
      PauseAnimation("fly1");
      RewindAnimation("fly1");
      PlayAnimation("fly1");
      EntityFlyerTakeOff("rep_fly_gunshipbf1propshoot")
      laanim = 1

   if laanim == 2 then
      PauseAnimation("fly2");
      RewindAnimation("fly2");
      PlayAnimation("fly2");
      EntityFlyerTakeOff("rep_fly_gunshipbf1propshoot1")
      laanim = 2

   if laanim == 3 then
      PauseAnimation("fly3");
      RewindAnimation("fly3");
      PlayAnimation("fly3");
      EntityFlyerTakeOff("rep_fly_gunshipbf1propshoot2")
      laanim = 3

   if laanim == 4 then
      PauseAnimation("bombard");
      RewindAnimation("bombard");
      PlayAnimation("bombard");
      EntityFlyerTakeOff("rep_fly_gunshipbombardment")
      laanim = 4
   
            end
      
         end
      
      end
      
   end
      
end
should be

Code: Select all

function la_anim()
		if laanim == 1 then
			PauseAnimation("fly1");
			RewindAnimation("fly1");
			PlayAnimation("fly1");
			EntityFlyerTakeOff("rep_fly_gunshipbf1propshoot")
			laanim = 1
		elseif laanim == 2 then
			PauseAnimation("fly2");
			RewindAnimation("fly2");
			PlayAnimation("fly2");
			EntityFlyerTakeOff("rep_fly_gunshipbf1propshoot1")
			laanim = 2
		elseif laanim == 3 then
			PauseAnimation("fly3");
			RewindAnimation("fly3");
			PlayAnimation("fly3");
			EntityFlyerTakeOff("rep_fly_gunshipbf1propshoot2")
			laanim = 3
		elseif laanim == 4 then
			PauseAnimation("bombard");
			RewindAnimation("bombard");
			PlayAnimation("bombard");
			EntityFlyerTakeOff("rep_fly_gunshipbombardment")
			laanim = 4
		end
	end
and you might wanna put it in between ScriptPostLoad() and ScriptInit(). Again, I'm not sure, but it's worth trying.
Actually that part is found in the Mygeeto, Utapau, and Kamino campaign scripts. I changed it just a bit (before it was like this):
if laanim == 4 then
PauseAnimation("bombard");
RewindAnimation("bombard");
PlayAnimation("bombard");
EntityFlyerTakeOff("rep_fly_gunshipbombardment")
laanim = 5
I changed it just a little bit so that it is the same thing every time and again (so therefore it is not random), it works fine, but its very picky to me, like if I move the prop/flyer/building that its connected to or change the animation, it doesn't work and I haven't figured out why yet. :? I seriously think it might be the absurd number of people on the map at one time so I will change it back to 16 per team and see if it works.

Re: Online Compatability

Posted: Sun Oct 28, 2012 7:29 pm
by Marth8880
Ah, alright then. Very odd how it's not working online then... Hmm... Do any of your custom units use...unique weapons? Like weapons that aren't very standard, i.e., anything not a standard rifle, pistol, etc.?

Re: Online Compatability

Posted: Sun Oct 28, 2012 7:35 pm
by Cleb
Yes, they use custom weapons but those weapons all use stock effects, models, textures, etc.
EDIT:
The number of units isnt the problem, just changed both to 16 and it didnt work.

Re: Online Compatability

Posted: Mon Oct 29, 2012 6:42 am
by Locutus
Locutus wrote:Try a clean/manual clean and then remunge your map but without the sides and try to play it online again. I expect this to work and then you can be sure that it are the sides.

Next step would be to add one unit after another to your side and see when it starts crashing. (Except you are using the disguise kit which is known to break online stability.)
Have you tried that?