Randomizer Revisited...

Discuss and provide feedback on Maps.
User avatar
pooty
Posts: 4358
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Randomizer Revisited...

Post by pooty »

So we've got a few Randomizer maps and they are pretty popular.

Topic 1.
I've been thinking of revisiting the Randomizer algorithm. Right now it uses a point system as part of the vehicle assignment, basically each node/core pair is assigned a point value and it fills based on points... so you don't end up with 37 minos. (Each vehicle can be tagged as unique so there's only one pair per map). So its not truly random....

I've thought about, from Enyo's dislike of the slow TMU style randomizer (DJY, MinusTMU Randomizer) which are light on flyers, that it might be worth expanding the randomizer functionality, to perhaps classify categories of vehicles Ground, Flying, MAS, or even break out the Ground into sub categories and then be able to have a bit more control over what gets placed where, so you could have a node say that gets 3 ground, 1 flyer so you'd always get at least 1 random flyer.

Spawn points for vehicles are called a Factory.
Today you can make a ForcedVehicleFactory -- that always spawns same vehicle on randomizer map.
There's also a Random Vehicle Factory which select a vehicle from a list for just that Factory. So you could have a node say center node on TAL, that could spawn 1 of 5 MAS variants...

Hmmm I wonder if I can make the generic Randomizer ignore Random Vehicle Factories, like it does Forced ones...

Topic 2
Vehicles on Randomizers. So a few vehicles might need to be removed from the Randomizers:
- Mega Spanker (I think this is done but have to check)
- Spanker ? I think its best just to increase the point value and its already unique

Any others?
Some I know are less popular, and I've already removed things like stock bender, scorp, Goliaths. But any that truly need to be deleted.
User avatar
captainsnarf
Posts: 2632
Joined: Tue Jul 06, 2021 1:51 pm
Location: Washington
Server Sponsor: Yes
Server Admin: Yes
Contact:

Re: Randomizer Revisited...

Post by captainsnarf »

Mega spanker really only makes sense on mega arena where it has the other megas to balance it.

Regular spanker is definitely a powerful vehicle already. That's why it has the fancy paint job.

I understand Xexx's complaint. I wouldn't say delete it, but it could use more nerfing. I think I killed him 3 times in a row, each time he was in a good vehicle also. Didn't matter. He got spanked out of it. I think the alt fire interval should be longer. It's .75 right now. It should probably be more like 2.0+. That way it's not so spammy.
User avatar
pooty
Posts: 4358
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Randomizer Revisited...

Post by pooty »

So I updated the Randomizer maps and removed the MegaSpanker. I also increased the spawn times on the regular spanker and increased its point value... I think its 80s at nodes...so if you do kill it you don't have to contend with it right away. I think it makes sense to reduce the ROF on it...I don't know about 2.0+ but maybe try 1.5? Or maybe you get 2 shots then 3 second recharge?
User avatar
pooty
Posts: 4358
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Randomizer Revisited...

Post by pooty »

So I think a good next project is to update the randomizer. Not sure what changes you made Snarf to CSVehicleRandomizer?

First thing is the bCanFly (from Engine.Pawn) so I can set for each node group FlyOnly, NoFly, All; meaning for a particular node group I can make it all flyers, no flyers or all random.

Second is to ignore RandomVehicleFactories (below). So where a ForcedVehicleFactory doesn't get randomized it only gets one vehicle choice hence the forced. If it ignores RandomVehicleFactories too, it gives me some good flexibility on nodes. So maybe 3 or 4 vehicles are truly random but you always get a link vehicle, or whatever... just for that spawn point.

This should give great flexibility and control on the randomizers.
User avatar
pooty
Posts: 4358
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Randomizer Revisited...

Post by pooty »

Reminder to me to look into this...but I think its good thing, so I can have better control on randomizer maps.
User avatar
captainsnarf
Posts: 2632
Joined: Tue Jul 06, 2021 1:51 pm
Location: Washington
Server Sponsor: Yes
Server Admin: Yes
Contact:

Re: Randomizer Revisited...

Post by captainsnarf »

If I recall correctly, the things I changed were things I needed to change to get it to compile.

I didn't have a package for ONSPowerNodeSpecial or ONSForceVehicleFactory so I commented that stuff out. It's still in the file but commented out.
User avatar
pooty
Posts: 4358
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Randomizer Revisited...

Post by pooty »

Ah Ok, yes you need forcedVehicleFactory as that's the one that it does not replace. I think this might have to be packaged with ForcedVehicleFactory and RandomVehicleFactory so it will compile properly, might as well put those in the VehicleRandomizerOmni.u package when it gets created.
User avatar
pooty
Posts: 4358
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Randomizer Revisited...

Post by pooty »

So I updated this to VehicleRandomizerOmni

- Depends on OnslaughtSpecials.u (PowerNode/Core Special), this allows the custom node/core health.
- (Sort of) Depends on UltimateMappingTools (UltimateONSFactory - allows random vehicles per factory (factory is vehicle spawner), and mapper adjustable health for vehicles
- (Sort of) Depends on OnslaughtToys1.u (ONSTurrets ignored think the turrents on the roof of minus, or near core on dria)
I say sort of, I fixed the code you so don't need the last two to compile the VehicleRandomizerOmni, but you still need OnslaughtSpecials.u
[Using the function someclass.IsA('UltimateONSFactory'), kind of like the class.name == thing]

So all that being said what does that get us:
Random Vehicles like it works now by node/node group
ForcedVehicleFactory - Always spawns the same vehicle in this spot, so not random (eg. Minotaur in Minus)
UltimateONSFactory (does RandomVehicleFactory)- One spot specific list of vehicles..so this spawn point has its own list that can be Random or even Sequential (vehicles spawn in sequenital order, maybe first a manta, then a raptor, then a cicada etc.), this also can give different vehicles for red/blue team (so maybe close to blue core blue gets a better vehicle, while red gets a weaker different one)

This gives the mapper (mainly me) flexibility as to what spawns where, I can make a spawn point only spawn specific vehicles...eg make a list of just flyers to spawn at a particular spot.

@Snarf, I tried to make a bFlyingOnly parameter, but UT Script fails
var() class<Vehicle> VehicleClass;

Vehicles[m].VehicleClass.bCanFly
Compiler complains it can't find bCanFly (which is a property of Pawn of which Vehicle is subclass) but complier just sees VehicleClass as 'Class' not 'Vehicle' If you know a quick fix I can work on it, but with the above I think that gives the mapper some good flexibility, just takes a bit more cut and paste in the map editor.
User avatar
captainsnarf
Posts: 2632
Joined: Tue Jul 06, 2021 1:51 pm
Location: Washington
Server Sponsor: Yes
Server Admin: Yes
Contact:

Re: Randomizer Revisited...

Post by captainsnarf »

pooty wrote: Wed Nov 09, 2022 2:55 pm @Snarf, I tried to make a bFlyingOnly parameter, but UT Script fails
var() class<Vehicle> VehicleClass;

Vehicles[m].VehicleClass.bCanFly
Compiler complains it can't find bCanFly (which is a property of Pawn of which Vehicle is subclass) but complier just sees VehicleClass as 'Class' not 'Vehicle' If you know a quick fix I can work on it, but with the above I think that gives the mapper some good flexibility, just takes a bit more cut and paste in the map editor.
Yeah, that won't work how you want it to. The compiler is correct there, it's a class reference, not a 'vehicle' variable.

https://wiki.beyondunreal.com/Types#Class

You would have to spawn the class to check the bFlyingOnly parameter

Code: Select all

local Vehicle V;
V = spawn(VehicleClass);
if(V.bCanFly) 
{
   ...
}
V.Destroy();
User avatar
pooty
Posts: 4358
Joined: Sat Apr 03, 2021 10:22 am
Location: Michigan
Server Sponsor: Yes
Server Admin: Yes

Re: Randomizer Revisited...

Post by pooty »

Yep and I don't think that'd be worth it, plus it would have to spawn them at each factory while its assigning vehicles which would take too long and too much potential for bugs/side effects.

Easy enough now between the two other factories to control or ensure certain nodes always get certain vehicles.
Post Reply