CTF-MeinKraft][ 2015-04-11 Updated to V3

Tutorials and discussions about Mapping - Introduce your own ones!
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: CTF-MeinKraft][

Post by Higor »

Yeah, step height isn't a replicated variable.
It's best to fix it with invisible semisolid stairs lol.

In the meantime I'll start coding the optimized blocks.
User avatar
memsys
Adept
Posts: 394
Joined: Mon Jul 15, 2013 9:21 pm
Personal rank: Silicon Lifeform

Re: CTF-MeinKraft][

Post by memsys »

I was not aware the step height change thingy was problematic.
User avatar
FraGnBraG
Inhuman
Posts: 930
Joined: Sun Jun 13, 2010 5:13 pm
Personal rank: Good news everyone!
Location: Canada
Contact:

Re: CTF-MeinKraft][

Post by FraGnBraG »

I haven't had a chance to check out the new map yet, but regarding bots and FC i would suggest that you abandone alternate path actor (it does not work properly) and instead use Bot40's SmartAlternatePath actor. You can get the actor from any FNB CTF map. It actually works quite well at the balancing the routes during the match... You do have to play with the values at first though, until you get them right -- as for exactly how it works

This Bot40's code btw - if you use this you better give him CREDIT :)

(simple and practical i'm sure, i think sometimes there is some negative side effects if the path network is already too big...
anyways, just putting it here for the curious coders and so Higor and sektor2111 can check it if they have not already seen it :)

Code: Select all

//=============================================================================
// SmartAlternatePath.
// When touched, the selection weight of all other alternatepaths increases by AdjustAmount
//=============================================================================
class SmartAlternatePath expands AlternatePath;

var(AlternatePath) float AdjustAmount;	//Amount to adjust selection weight by
var float ReTouchTime;		//Delay so selection weights don't get altered many times if we get touched more than once in rapid succession


function Touch( actor Other ) {
	local SmartAlternatePath A;
	if ( Level.TimeSeconds - ReTouchTime >= 4 )
		ReTouchTime = Level.TimeSeconds;
		foreach AllActors( class 'SmartAlternatePath', A )
			if (A != Self)
				A.SelectionWeight += 0.5;
}
look forward to playing the new MC map!

Cheers
-=FraGnBraG Level Design=- ***UPDATED! even works on your phone!***
User avatar
EvilGrins
Godlike
Posts: 9731
Joined: Thu Jun 30, 2011 8:12 pm
Personal rank: God of Fudge
Location: Palo Alto, CA
Contact:

Re: CTF-MeinKraft][

Post by EvilGrins »

papercoffee wrote:Did you fix the pit? Bots tend to jump into it ...even your own team members do this with pleasure.
Which pit? The one in front of each castle or that whole mess under the bridge?

My bots handled both just fine.
http://unreal-games.livejournal.com/
Image
medor wrote:Replace Skaarj with EvilGrins :mrgreen:
Smilies · viewtopic.php?f=8&t=13758
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: CTF-MeinKraft][

Post by Higor »

This is a very alpha prototype of the optimized blocks.

What you need to do:
- Specify if it's touching a solid wall from a certain direction (so it treats that direction as VisBlocking)
- Insert a CacusBlockController actor for network replication support (and avoid log warning spam, i did this on purpose)
- Not overlap them!!!

What the block does:
- Neighbour detection
- Automatic VisBlocking capability detection on blocks (translucent and modulated blocks are not VisBlocking)
- Automatic self-hiding based on neighbour state
- Spawn a fragmentation spawner

What the controller does (you may insert more than one):
- Hold 4096 block references
- Block detection via radius and/or zone
- Replicates block status in a compressed fashion (INT[128] array) using bitwise operators to encode/decode
- Hides/unhides blocks on clients based on status

What the fragmentation spawner does:
- Generate/replicate a random seed
- Spawn all the fragments (8) using the same semi-random directions/velocities on both client/server
- Doesn't spawn fragments on dedicated server boxes, only clients
Reference: viewtopic.php?f=15&t=4935&p=52332

================
What's to be added

- Back cube render rejection, using the controller to grab the player camera's location and rotation.
- Sound
- Half block model support
- Maybe something else :)
Attachments
Block_Alpha.7z
BlockTest.unr
CacusBlock.u
(8.86 KiB) Downloaded 51 times
User avatar
sektor2111
Godlike
Posts: 6411
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: CTF-MeinKraft][

Post by sektor2111 »

As I could see and understand AlternatePath, this thing is randomized with 80% chances to get sorted by Bot respawned and 50% for Bot having Flag. Algorithm from CTFGame looks too complex vs random created. I experimented a simple CTFNode which has an internal timer. With internal timer this node look for a Flag Carrier. When carrier is detected all PATHS are free immediately else will react randomly at another time interval (around 30 seconds) blocking and/or unblocking path. Things can be configured more or less smarty. If is wise placed will randomize attack so cute - it's all about bSpecialCost, also it can be coded to take in account distance between Flags and Pawn between Enemy Flag or any factor increasing A.I. efficiency.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: CTF-MeinKraft][

Post by Higor »

Guys...
He's using AssaultRandomizers...

Cubes:
On a bright note, my cube system has reduced the mesh render calls from 400-510 to 250-380 when watching the whole middle of the map, which has reduced render time in 2.5 milliseconds.
Sure, it's almost nothing but the entire system itself allows the mapper to use ridiculous amounts of blocks now.

BSP:
Map is broken, not in release state, play it a bit and you'll find the endless fall...
I'm gonna apply the "semisolid terrain over substractive base" technique which is a barely used yet standard for minimum functionality in outdoor maps.
I'll also rezone the middle portals and separate the unreachable zone using a different method.

Other:
I might replace these AssaultRandomizers with something else that operate on their own and I'll also add a dependancy to XC_Siege_r3.u file as it contains the necessary mapping resources to make the map work on Siege and fix the paths so they don't require extra BSP build for jumping over obstacles.


EDIT:
After rezoning mid, watching from blue gate into red base now takes 19ms to render instead of 22ms on my computer.
I have also turned the whole upper hills into substractives + semisolids and they're perfectly mirrored on both sides.

EDIT2:
Bots can now walk on my blocks, and said blocks don't use an Actor channel, which means lowering it from 600 to 150 on a normal server.
User avatar
sektor2111
Godlike
Posts: 6411
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: CTF-MeinKraft][

Post by sektor2111 »

Higor wrote:Guys...
He's using AssaultRandomizers...
BAD move !!! :loool:

Code: Select all

ScriptWarning: AssaultRandomizer CTF-MeinKraft][.AssaultRandomizer8 (Function Botpack.AssaultRandomizer.CostEnabled.SpecialCost:0046) Accessed None
ScriptWarning: AssaultRandomizer CTF-MeinKraft][.AssaultRandomizer8 (Function Botpack.AssaultRandomizer.CostEnabled.SpecialCost:004E) Accessed None
ScriptWarning: AssaultRandomizer CTF-MeinKraft][.AssaultRandomizer7 (Function Botpack.AssaultRandomizer.CostEnabled.SpecialCost:0046) Accessed None
ScriptWarning: AssaultRandomizer CTF-MeinKraft][.AssaultRandomizer7 (Function Botpack.AssaultRandomizer.CostEnabled.SpecialCost:004E) Accessed None
ScriptWarning: AssaultRandomizer CTF-MeinKraft][.AssaultRandomizer8 (Function Botpack.AssaultRandomizer.CostEnabled.SpecialCost:0046) Accessed None
ScriptWarning: AssaultRandomizer CTF-MeinKraft][.AssaultRandomizer8 (Function Botpack.AssaultRandomizer.CostEnabled.SpecialCost:004E) Accessed None
ScriptWarning: AssaultRandomizer CTF-MeinKraft][.AssaultRandomizer7 (Function Botpack.AssaultRandomizer.CostEnabled.SpecialCost:0046) Accessed None
ScriptWarning: AssaultRandomizer CTF-MeinKraft][.AssaultRandomizer7 (Function Botpack.AssaultRandomizer.CostEnabled.SpecialCost:004E) Accessed None
ScriptWarning: AssaultRandomizer CTF-MeinKraft][.AssaultRandomizer8 (Function Botpack.AssaultRandomizer.CostEnabled.SpecialCost:0046) Accessed None
ScriptWarning: AssaultRandomizer CTF-MeinKraft][.AssaultRandomizer8 (Function Botpack.AssaultRandomizer.CostEnabled.SpecialCost:004E) Accessed None
ScriptWarning: AssaultRandomizer CTF-MeinKraft][.AssaultRandomizer7 (Function Botpack.AssaultRandomizer.CostEnabled.SpecialCost:0046) Accessed None
Is this a joke ??? :omfg:
Guys, all craps from Assault Game aren't for external usage, capish? Simply Assault(Level.Game) doesn't run in CTF and neither MH or whatever kinda game-type. You can ruin them happily.
User avatar
FraGnBraG
Inhuman
Posts: 930
Joined: Sun Jun 13, 2010 5:13 pm
Personal rank: Good news everyone!
Location: Canada
Contact:

Re: CTF-MeinKraft][

Post by FraGnBraG »

SmartAltPath = proven best option for CTF balancing, for years now, many users -- Bot40, IronBlayde, Chrysaor, others, me, etc.

so simple, and you can actually make the little robots take loopy long routes with the flag that they would _never_ otherwise take under normal circumstances...

how to use:
1. determine how many routes you have (lets say there's four routes in each base - long upper middle, short lower middle, short side, long side)
2. finish your paths (without any alt paths) and be sure your routes connect flag to flag.
3. spectate a few matches with 2-4 bots to see what the bot FC does. This should reveal the shortest path. He will usually always use this route.
4. place a SAP in this path leaving the base (find a good spot, obviously with no bypass along the same route). Do this for both bases, and give the SAP a high value.
5. rebuild paths and go back to watching.
6. you'll see the FC at some point starts using another route all the time. This is the next route to fix. repeat step 3, but use a lower value this time.
7. rebuild paths and rinse repeat.
8. I would suggest even the longest route have SAPs on it, just use a very low value.

The main idea idea here is to get the four routes to look more "even" to a BOT... to essentially fooling the FC to take different routes.
You do have to play a bit with the selection weight values but eventually it works out -- very easy method to follow ...

that's all I'm saying about this
Cheers
-=FraGnBraG Level Design=- ***UPDATED! even works on your phone!***
User avatar
sektor2111
Godlike
Posts: 6411
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: CTF-MeinKraft][

Post by sektor2111 »

Hint No. 2:
Start game with 0 Bots. Go to Enemy Flag Base (don't touch it) put "RememberSpot" there. Move to your Flag and input "ShowPath". You might see the almighty shortest route between Flags which is recommended to be blocked randomly else Bot will always behave as moron using only that way.
In other case this moron-bot route can be different due to JumpSpot stuff addressing BOT only. Simply human and monster cannot use such path because is owned only by almighty Bot (and MBot). Anyway that short route can be detected by adding ONE Bot and spectating which way is using all the time to get enemy Flag. Alternatepath is advisable for other long routes, custom blockers are advisable for this(these) shortest road(s) - depending on spawn location.
Checking if Bot has sorted an AlternatePath can be done spectating it directly and typing command "verbose" in console. Using a simple pencil and a piece of paper you can note which AlternatePath is often used and which is not very used. That one less used need to be fine tuned a bit - that SelectionWeight.

At end of mapping you won't get hurt if you'll be writing in Editor's console "Set AlternatePath bTwoWay True".
User avatar
memsys
Adept
Posts: 394
Joined: Mon Jul 15, 2013 9:21 pm
Personal rank: Silicon Lifeform

Re: CTF-MeinKraft][

Post by memsys »

hehe, I love how this topic turned into an advanced actor/script discussion.
Not that I understand most of it :ironic:
User avatar
papercoffee
Godlike
Posts: 10451
Joined: Wed Jul 15, 2009 11:36 am
Personal rank: coffee addicted !!!
Location: Cologne, the city with the big cathedral.
Contact:

Re: CTF-MeinKraft][

Post by papercoffee »

memsys wrote:hehe, I love how this topic turned into an advanced actor/script discussion.
Not that I understand most of it :ironic:
phew ...Now I'm relieved, I thought I would be the only one.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: CTF-MeinKraft][

Post by Higor »

Here's a gift:
MeinKraft_CacusFix.7z
CTF-MeinKraft]C[.unr
CacusBlock.u
XC_Siege_r3.u
XC_Siege_r3 README.txt
(456.74 KiB) Downloaded 71 times
BSP:
- Rezoned the fortresses.
- Rezoned and rebuilt the high part, now mirrored on each side.
- Fixed a huge BSP hole on blue base.
- Turned some solid structures in the lava river into semisolids.

Pathing:
- Usage of XC_LinkedNavs (XC_Siege_r3), forces connection to another Teleporter type path.
- Created XC_LinkedNavsBaseReq, same as above, but disables itself is there's nothing below it.
- Created ActionPathCoster actor, located in the center of the map.
- Moved some LiftCenter a bit into the walls so FerBotz work better with elevators (I should fix this on FerBotz instead, but this will do for now)
- Repathed the entire lava river, bots can recover if they fall into lava.
- Bots can climb up from the lava river using the blocks, if said blocks are there.
- Bots won't attempt to cross the bridge if the center has been destroyed.
- Removed ExtraCost on lower path LiftCenters.
- Added ExtraCost on some paths near the right window
- Removed all AssaultRandomizers.
- Simplified pathing on mid bridge.
- Simplified pathing on pit traps.
- Added shortcuts from sniper towers, now with jumps onto trees or the escape window.
- The entire navigation network doesn't need extra BSP to be rebuilt.

ActionPathCoster:
The real way of making a CTF map work with bots.
Based on a set of conditions it will find players around it, and each player will count towards the ExtraCost set to nearby paths.
In the map, the players that count are:
- Snipers in towers.
- Snipers in bases.
- Players in the middle zone.
Each player will add 470 cost to the paths around the bridge (and below it).
On low player count games bots will take straight routes, but when it gets crowded you'll start becoming victim of more sneak attacks.

CacusBlock:
Channel-less blocks that use some simple auto-hiding rules.
They are subclassed from Mover so that Bots and Players may walk over them.
Use a random seed system to spawn the chunks, and that frees some server load.
The blocks requires a CacusBlockController actor to contain them so that they get a 'NetIndex'
Each controller can hold up to 4096 CacusBlock actors and detection is done via a user specified radius.
I did not replace the fortress blocks as they're not touching other blocks, but the remaining blocks on the middle of the map and the pit traps are all CacusBlock.

Other info:
Removed the StochasticTrigger actors that were no longer needed.
No AlternatePath actors are being used, the ActionPathCoster should do a nice job anyways.
Added a XC_BuildFilter actor (XC_Siege_r3) on the high zone, should only do anything on Siege gametypes (prevent construction up there).
Moved some items that were buried onto the floor a bit higher.
Moved the UDamage a few units lower so bots prioritize the XC_LinkedNavsBaseReq paths instead of the InventorySpot when running through the bridge.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: CTF-MeinKraft][

Post by Higor »

No word yet?
Shall I promote the map as it is or do I wait for your final touch @memsys?
User avatar
memsys
Adept
Posts: 394
Joined: Mon Jul 15, 2013 9:21 pm
Personal rank: Silicon Lifeform

Re: CTF-MeinKraft][

Post by memsys »

I am very sorry, Higor. I have not gotten around to do anything other then download and play a quick match to see the bots are fixed!
Something I noticed is that the way you zoned the fort caused the snipers to be in the battlefield zone. I also noticed that the defense point need to be moved to that backstabbing the bot there will be a lot harder.

Many thanks for all the work!
I hope I can find the energy to make some small tweaks this week and release the latest version.
Post Reply