Cube Soccer

Is dead!

After getting labeled one of the worst mods out there (thanks to the various admins who effed it up around the world) I have decided to never work on it again.  It has been removed from AlliedModders and there is no point continuing something that gave no-one any joy.  Cube Soccer had its little moment in history and now it is dead.

I often get abused for not releasing Left4DoD but at least I have been able to control how it runs and feels.  People get an idea of how it should run.

:-D

Posted in Team Fortress 2 Plugins, TF2 Cube Soccer | 2 Comments

Fixing Survival

So I’m thinking hard about saving Survival mode.  It isn’t working and the server numbers stay low.

Headless-Chicken summed it up in this post:

Some of the issues are people who never leave spawn or look for camping areas near the beginning of the map.
Also occasionally about half the players will switch to the Axis right at the start of a round and it makes it impossible for the allies.
Last but not least there’s only 4 maps in the rotation. I usually get bored on the second time through and find myself going to another L4DoD server.

He has some very valid points.

People who don’t leave spawn
I’ve noticed this quite a few times where some people stay in spawn and don’t come out.  Fortunately the spawn walls are disabled and Zombies have lower gravity so they can still get them.  But to counter this, when the round starts, if you haven’t left spawn after 60 seconds, your health will slowly drop.

Campers
It’s a tactic used on most Zombie servers.  I have no issue with it, however, they won’t win games in Left4DoD:Survival doing that since the objective is to cap flags not beat the timer.  It doesn’t help the team though, so Allies need objectives.  One way would be to continue to award health only to flag cappers.

Switchers
This IS an issue, which I’ve seen and annoys me.  It does affect Allies’ ability to win flags.  So anyone who does this will not get the fast respawn ability of the Zombies and will get less health.
having said that, it’s a tricky thing to figure out, if someone is switching over to help the Zombies, so if the Allies have less wins than the Zombies, then switching players will be penalized.

Maps
There are six maps in rotation, right now.  I will add others.

Posted in Day of Defeat Source Plugins, Left4DoD | 5 Comments

Been a while!

I’ve been negligent in updating this blog, simply because I spend all my time coding!  With my huge development team of one and a real life outside the computer, things take a long time to do!

Lots of changes and good ones too.
Up until now, I had been guessing where the spawn points were and developed waypoints from those locations.  However, it was a bad way to begin waypointing, since many bots got stuck before they even made it out the door.  So I wrote a routine that highlights every spawn point with a ring and from that I can plan routes better.  Some maps like Avalanche and Anzio have strange spawn point positions, and they are a bugger to get out of.  Spending the last couple of nights re-waypointing has been fruitful and now the bots can escape spawn more efficiently.

Bots should now perform a jump while navigating the waypoints.  This is handy for the archway in Avalanche, where Allied soldiers enjoy camping.  I have planned a nice little route across this archway and down through the church and it does reduce the camping there.

My biggest problem, now, are ladders.
It looks like I am going to have to customize each map with ladder locations so that a bot knows what to do.  The problem is this: ladders (or func_ladder) are compiled in the map and are not present as entities.  So there is no way to bump into ladders and detect them.  I might investigate SDKHook’s OnLevelInit but I’m not sure that will work since ladders are compiled right into the BSP.  I might just have to do it the old fashioned way and hard-code where the bottom and top of every ladder on the map is, so that if a bot reaches the bottom of a ladder in Kalt, it know to climb.

Posted in Day of Defeat Source Plugins, Left4DoD | 2 Comments

Survival mode revisited

I added a survival mode to Left4DoD a while ago and it really never took off, partly because I never really gave it chance to develop, but because it was just reinventing the wheel.  Andersso and his EuropeanMarines community had been successfully running a much changed version of Zombie Mod (essentially Zombie Mod but polished off with Andersso’s excellent programming skills and presentation) and Left4DoD never fit into that kind of mod.  The bots could never get at the players anyways!

So I sat down and tried to think how I could change the survival mode to be different from Zombie Mod and yet have that Left4DoD chaos and mayhem.

From the survival mode, there were not many features that I wanted to keep.

I liked the idea of Allied players joining the Zombies once they died.  It added a lot more impetus to remain alive.

The timed rounds I felt were annoying, especially when barricading, or ‘cading’ was an important part of the game.  Pushing pianos and furniture into place is OK, but the Allies simply have to keep the Zombies out for the duration of the time and, for me, it gets stale quickly.  So I removed the timer.
Besides the maps that Left4DoD uses are stock maps that do not provide many ‘cade’ opportunities.

The flags I liked.  It is an intricate part of DoDS and L4DoD so I left them enabled.  Instead, I disabled them for Axis.  This meant that Zombies could not recapture flags, allowing Allied players to progress.  Of course, as they died off, it became harder and harder to cap.

So I will give this a thorough testing and see if it fits.

Posted in Day of Defeat Source Plugins, Left4DoD | 1 Comment

More bots

As a proof of concept, I wrote an entire DoDS Bots plugin, before I added the new code to the Zombie Mod.

With this plugin, both Allies and Axis have bots and have separate waypoint systems – eight sets each.  With waypoint sets continually crisscrossing each other throughout the map, bots can find a better route through obstacles and towards targets.  It avoids the heavy programming of A* navigation (which I will eventually look at) but is much more complicated than the simple waypointing of bot plugins for DoD1.3 such as Sturmbot.
It is still incomplete.  The bots do not duck, or crawl, yet.  They cannot use primary weapons that require right clicking (such as the MG or Rocket), yet.

But it is pretty functional and they do not get stuck as much as the old Zombie bots did.
They analyze the target and if the target is achievable then they make their way towards it, otherwise they search for a different target.

So I will run a test on a server to see if people like them and if so, may eventually get around to releasing it.

Posted in Day of Defeat Source Plugins | 6 Comments

Bot AI

To be honest (and I’m embarrassed about it), I haven’t changed the bot AI since October 2009.
I have been concentrating on making a game of it and adding loads of features to make it fun and playable.

So last week, I began re-writing the whole AI concept and changing the way the bots worked.

When a bot is spawned, its default mode is one where it runs around and bumps into stuff.  If it hits a wall, it changes direction.  I’ve seen VALVe’s bot code.  I know how they do it.  My mod simply changes the direction the bot looks.  VALVe have added code to make the bot twitch back and forward, I guess to avoid being hit.  This is all very well, but it also means that the bots cannot go through doorways and arches and inside buildings.  Something is happening on a level undetectable by plain sight.  The bot has already changed direction (as per its C++ code) but then my code makes it go back on course.  As a result, the bot hull is spread over a wider area and thus it explains why the bots bounce off doors and arches.

The problem is solved when you switch on bot_zombie (oh, the irony).  But then the bot just stands there, doesn’t fire or do anything.
So my new code deals with this.
Just to experiment, I switched off the code where a bot looks for an enemy and instead, looks for any target.  As a result, I had a bot follow me all over the map, up stairs, through doors without getting stuck.  Once you add code to allow it to fire, when in range (or switch to melée when close up) , then bot becomes more …well…bot like.

So the next big update of L4DoD is going to create a furore.  Players will have gotten used to bots that won’t chase them through doors.  They will turn around to do their “Nya nya na na na” at the bot, at the final flag at Anzio and die!
I have also edited to code to add Allied bots, in the hope that, one day, I will release a bots plugin for DoDS.  Fascinating to watch the bots run around the map and kill each other!  But it’s a LOT of work to waypoint now.  It will probably take between 2-3 hours to waypoint a map properly, so it will be a while before the plugin ever gets released, especially since I hate waypointing! Anyway, watch this space…

Posted in Day of Defeat Source Plugins, Left4DoD | Leave a comment

HL2 Zombies and DoDS?

When I wrote scripts with EventScripts a few years ago, I tried to spawn the HL2 Zombies in a DoDS map, for fun.  Well, ES couldn’t even do that without crashing, so I thought I’d try again with SourceMod.

Reading through their forums, FoxMulder, posted a video showing working HL2 Zombies in TF2 and this intrigued me.  He didn’t want to share the code (understandable) so I had to start from scratch.

I tried spawning all sorts of npc_* entities, cycle* entities, monster_* entities.  Most were not supported by DoDS and the rest spawned zombies that’s didn’t animate.  So I had to look at a different type of entity.  Prop_dynamics can do animations so I started messing around with them.  Sure enough, the entities were spawned but they moved on the one spot…which is kinda hopeless!  Next job was to work out how to move them along, determining their velocity and make them point towards the player.  Then, once they had reached the player, to change the animation to the attack mode.
It all began to take shape.

This was the end alpha result.  Still a lot of work to do but it might be usable.

I’m not sure how to insert it into L4DoD.  Should it be a drop from a Zombie or should it spawn with the Grey Dude or should I create a whole new Zombie, replace the Gasman or the Emo and get him to spawn them all over the map.  Unlike the bots, I am not restricted in numbers, other than CPU power.  I have it set to a maximum of 64 and with the bots, my own computer chugs along, so I will have to do a lot more testing.

Posted in Left4DoD | 1 Comment

Friendly Fire – a blessing and a curse

I love playing with Friendly Fire.
It’s good to know that you aren’t just shooting wildly all over the place and that every bullet has to count and every bullet has to find the right target.

In L4DoD, it adds a certain level of difficulty to the game, making it harder for the US team to shoot the Zombies.  The machine gunner, in particular, has to pay close attention. With FF off, machine gunners tend the spam the crap out of targets and don’t pay attention to what is going on in front of them.  With FF on, they need to focus.

However, given the levels of 1 day bans recently, I’m figuring out that there are a hell of a lot of idiots out there.
Let me explain why.

In Left4DoD, if you team kill, the victim has five options -

  • forgive,
  • forgive with a slap,
  • forgive and slay,
  • forgive with melee
  • not forgive at all.

After five unforgiven teamkills, the attacker gets a 1 day ban.  So people are either being a bunch of unforgiving bastards, which is not that likely since the stats show a large number of forgiven players or the team killer did it intentionally.

I display a message to the victim, reminding them to forgive accidents.  Accidents do happen.  It’s understandable.
It’s the intentional team killers that need to be kicked out of the game.

I was playing last night and an asshole called Cthulu (STEAM_0:0:28270417) came on the server and shot a few guys then left.  I watched HLSW on my other screen as he joined one of the other servers and shot up people there.  Then he came back.  Then he was banned.  It’s a pity that scum like that, exist in the gaming world, out to ruin other people’s enjoyment.

So friendly fire is a fun addition to the game, but it is also a curse because of the dumb asses who team kill…

Posted in Day of Defeat Source Plugins, Left4DoD | Leave a comment

Stability :)

We got stability!
And it wasn’t my plugin – which kinda pisses me off because I spent hours rewriting routines in my code!

Friendly fire is back on and I have written my own forgive routine which gives players the options of slaying, slapping, forgiving or killing/not forgiving.  It is much simpler and uses a point_hurt to kill rather than ForcePlayerSuicide (which doesn’t work in spawn in DoDS).  With a bit of lightning and some sound, it makes a good slay effect!

Those couple of days playing with FF off made me realize how important FF is part of this game.  It makes it harder to play for Allies.  They just can’t spam and shoot everywhere.  They have to think.  And that is what makes Left4DoD what it is.  I feel bad for all those players who joined and didn’t realize FF was part of the game: it always has been, from day 1, and I will always try to keep it that way.

So now I can sit down and think about a few more drops.

  • ESP, allowing Allied players the chance to see through walls and spot the Zombies, for 15 seconds.
  • Multiple nades…every nade thrown doubles into two more, creating a wider explosive area.
  • Increased rate of fire
  • Explosive barrels and props that can be picked up and thrown
Posted in Day of Defeat Source Plugins, Left4DoD | Leave a comment

Server resets fixed

Since May, I have been trying to figure out the reasons for the game crashing.
It’s so annoying to watch a server get to 16/16 and then for no apparent reason whatsoever, crash and burn.  Fortunately due to the overwhelming popularity of the game, the server refills in a flash.  But that’s not the point.  I hate crashes of any kind.  It indicates bad code and I’m anally retentive when it comes to clean code.

Whole sections of code have been rewritten to improve efficiency and to make sure there are no memory leaks, which plague many mods.  Timer functions, of which there are many, are now much improved.

Well, the past 24 hours have been good and I have finally figured out what has been causing the problems.

Friendly fire is the problem, or the SimpleTK plugin that allows players to forgive one another.
I’m not sure, yet, why but it gives me something to work on.  I have checked my code for friendly fire issues and there are none.  So either the OrangeBox is not happy with friendly fire or SimpleTK is borked.  I’ve checked that plugin’s code and I can’t see anything in it that would cause issues.  Lebson is a good coder.  So I’ll check out both for a while and see what happens.  Whatever I find, it doesn’t matter because the crashes have stopped!!

Posted in Day of Defeat Source Plugins, Left4DoD | Leave a comment