Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
wallabra

ZDoom: Replace ZCajun by ZDoomBot 5.2

Recommended Posts

The new ZDOOMBOT would have more nodes, path building like Unreal Engine, obviously support to OpenGL and the newest ZDoom version, would have a non-glitched fullscreen mode (only for Intel GPU maybe that ZDoomBot 5.1 has fucked up fullscreen mode?), would have cool team AI (somehow like Marine's Best Friend), would replace voodoo dolls in maps which mapinfo isn't marked with //BOT_NOVOODOOREPLACE in map definition, and would have smart coop AI. Would only use the direction the player was facing when adding the use node, would run slower in tight places, would have better navigation by map NODS (the BSP stuff, not ZDoomBot nodes) in the lack of ai nodes and would react to use linedefs in the lack of nodes. It would also chat like ZCajun.

Why?

ZCajun is terribly bad on playing coop, it runs like chickens and nick my ammo and health and only that. Deathmatch it is not good at navigating, and when finding a enemy won't shoot in coop, another bot or player in Deathmatch and will just terribly shoot all the place randomly instead of kicking asses with a BFG.

Bonus question: Which is the best offline coop bot to replace friends?

Share this post


Link to post
Gustavo6046 said:

The new ZDOOMBOT would have more nodes, path building like Unreal Engine,


If these are user supplied nodes, they will be few and far between.

Gustavo6046 said:

obviously support to OpenGL and the newest ZDoom version,


You would have to keep your bot updated for every new ZDoom version.

Gustavo6046 said:

would have a non-glitched fullscreen mode (only for Intel GPU maybe that ZDoomBot 5.1 has fucked up fullscreen mode?),


A bot does not need fullscreen, does not need a video card

Gustavo6046 said:

would have cool team AI (somehow like Marine's Best Friend),


The dogs in MBF are just things with slightly modified monster AI.

Gustavo6046 said:

would replace voodoo dolls in maps which mapinfo isn't marked with //BOT_NOVOODOOREPLACE in map definition,


Voodoo dolls are used for script-like features and other things, if they are removed then they will break the map that uses them.

Gustavo6046 said:

and would have smart coop AI.


Smartness varies. You would want a bot that does not get in another player's way and can assist players (i.e. when they say "HELP!").

Gustavo6046 said:

Would only use the direction the player was facing when adding the use node,


What does this mean?

Gustavo6046 said:

would run slower in tight places,


In my bot tests, the bots do not need to move slow at all in tight places. I have made bots which can run down the 4-8 pixel wide pathways in that Doom II level.

Gustavo6046 said:

would have better navigation by map NODS (the BSP stuff, not ZDoomBot nodes) in the lack of ai nodes and would react to use linedefs in the lack of nodes.


You would be required to concentrate on the NODES/SEGS data yourself. Also, I hope you know how to actually generated subsectors from the data. And watch out for the maps which have some screwy NODES and SEGS data such as E1M1.

Gustavo6046 said:

It would also chat like ZCajun.


Useful or useless chat? Stuff such as "My trigger finger is itchy" being spammed every 3 minutes would be annoying fast.

Gustavo6046 said:

Why?


Why?

Gustavo6046 said:

ZCajun is terribly bad on playing coop, it runs like chickens and nick my ammo and health and only that. Deathmatch it is not good at navigating, and when finding a enemy won't shoot in coop, another bot or player in Deathmatch and will just terribly shoot all the place randomly instead of kicking asses with a BFG.


Cajun is best for simple Deathmatch maps.

Share this post


Link to post

I also don't know what he expects anybody to do without any sourcecode, for this antiquated bot that also just as likely isn't fit for purpose either in modern ZDoom.

Share this post


Link to post
GhostlyDeath said:

In my bot tests, the bots do not need to move slow at all in tight places. I have made bots which can run down the 4-8 pixel wide pathways in that Doom II level.

I guess he wants the bots to look like real players and not like... bots.

Share this post


Link to post

Oh and DB 5.2 would play in spawned PlayerPawns and would act differently according to the PlayerPawn.

GhostlyDeath said:

Voodoo dolls are used for script-like features and other things, if they are removed then they will break the map that uses them.

Just put //BOT_NOVOODOOREPLACE in the map definition. The usual ZDoomBot 5.2 will read it. Instead it will teleport near the player.

GhostlyDeath said:

What does this mean?

It means they will press the use key the direction of the node, e.g. not the instead way of a exit switch as happened with DB5.1 when I pathed MAP02.

GhostlyDeath said:

Useful or useless chat? Stuff such as "My trigger finger is itchy" being spammed every 3 minutes would be annoying fast.

Obviously useful, showing the bot's thoughs and situation and other data.

GhostlyDeath said:

Cajun is best for simple Deathmatch maps.

Simple. Always simple... That is ok though.

Share this post


Link to post
Gustavo6046 said:

Just put //BOT_NOVOODOOREPLACE in the map definition.

Aside from the fact that this is not at all how MAPINFO works (comments will be ignored by the parser), this really is a feature that should be opt-in, not opt-out.

Also it'd make more sense to use multiplayer starts (player 2, 3, 4, etc. start) instead of voodoo dolls. MBF used this approach when you enabled its dogs.

Share this post


Link to post

Yes the bot is intended to use multiplayer starts when added from console, however it ALSO will replace voodoo dolls if the map has a thing "VoodooReplaceBot" from ZDoomBot decorate in the same sector as the player starts of voodoo dolls.
It will also take most PlayerPawn summoned from console.

Share this post


Link to post
Gustavo6046 said:

Yes the bot is intended to use multiplayer starts when added from console, however it ALSO will replace voodoo dolls if the map has a thing "VoodooReplaceBot" from ZDoomBot decorate in the same sector as the player starts of voodoo dolls.
It will also take most PlayerPawn summoned from console.


So is this ZDoomBot a thing you -file with or an actual modification of ZDoom source code?

Share this post


Link to post

Those so-called ZDoomBots are, in fact, friendly monsters. You can't create an actual bot without changing the source code.

Basically none of what Gustavo is talking about is possible without changing the actual source code.

There is no reason to make a GZDoomBot. Actor logic is exactly identical between ZDoom and GZDoom, there are no behavior differences other than the maximum camera pitch -- and actor pitch is basically not used by monsters.

Share this post


Link to post

He is talking about this: http://www.doomworld.com/idgames/deathmatch/doombot/dbot51

There is no info about where to get the source code, so forget about implementing this on ZDoom. It was never part of ZDoom either.

Try asking KINDLY to the devs to improve ZCajun instead. If they say "no", go learn some programming and see if it is simple and do it yourself, in case you care enough, that is.

Share this post


Link to post
XCOPY said:

either.

Try asking KINDLY to the devs to improve ZCajun instead.



don't even try. The bot code must be considered abandoned and deprecated. The only reason it's still there is that bad bots are still better than no bots.

Share this post


Link to post
Graf Zahl said:

don't even try. The bot code must be considered abandoned and deprecated. The only reason it's still there is that bad bots are still better than no bots.


I never understood this mentality as the cajun bots back in the doom legacy versions of the cajun bot port were very competent and would waste no time in killing you. They also worked in coop competently and didn't stay in nukage, and they sure as hell didn't eat the wall blindly.

Whatever happened to cajunbots since then has to be due to a lack of information given to the bot. As what I remember, CB was to follow nodes (represented as lightpoles in Single player) for bot traversal, and if that wasn't available, it would grab things (all things, even ones not used in that skill level or mode) and use those for traversal. This wasn't carried over in the zdoom version I guess - that's when the bots really shone. They just munch wallcandy now, and it's a shame.

They aren't a mess because they suck - they're a mess because the port's features rapidly expanded, and the bots weren't given the same treatment, or likely weren't even told to be aware of the features at all. Surely someone can salvage it.

Share this post


Link to post

It's not so much they can't be updated, but rather updating them would actually involve rewriting them anyway. The ZCajun logic as it is, is currently near-unmaintainable.
There's some code there that could be reused, but not much.

Share this post


Link to post
Gustavo6046 said:

ZCajun is terribly bad on playing coop, it runs like chickens and nick my ammo and health and only that. Deathmatch it is not good at navigating, and when finding a enemy won't shoot in coop, another bot or player in Deathmatch and will just terribly shoot all the place randomly instead of kicking asses with a BFG.


Well, then just program it with a script that goes straight for the BFG and then spams all spawn points, and you'll have just created a Brit10 grieferbot ;-)

Share this post


Link to post

Bots were a thing in the late 90s and early 2000s. Haven't seen a good one since then tbh.

Why not code a new implementation? For instance, I started hacking at the old DeathBot some time ago (the one packed into 3DGE) and discovered that it wasnt going to be worth it to update such old code. Rather than waste time hacking, I took time and researched popular Quake bots (open-source) and slowly started writing new stuff.

DeathBot is great in Deathmatch. Coop is...well, coding a DDF creature with BOT_ routines would make a smarter "bot".

Why not take the same route I went and do some research? Perhaps Zdoom isn't the best place to start either...try PrBoom or Chocolate DOOM.

Good luck!

Share this post


Link to post

It's kinda of a paradox that in the quest of trying to make bots "more human", they actually end up being less efficient/less of a challenge for human players. In theory, a bot could snipe a human opponent with perfect pinpoint accuracy from well beyond visual range with hitscan weapons ("pixeling", but WHILE MOVING), or calculate 100% accurate leading for projectiles. A bot could also simply run up to a player, and orbit around him while destroying him with melee attacks, avoiding retaliation, instantly turning etc.

I'd say, make a bot which simply uses the superior reflexes and control accuracy of a computer vs human opponent, and then let's see if anybody considers those "fair" or "not a serious challenge". Mobility or subtle strategies would be secondary, before such overwhelming fighting skill, especially on a 1-on-1, where the bot can simply focus on damaging a single adversary, and even exploit/anticipate spawning information INSTANTLY. Kinda like a VERY skilled human opponent seems to be able to do, no? ;-)

An infamous example of such a bot is Xaero from Quake 3, where the only way to defeat him is to manage to out-spawncamp him. It's pointless trying to beat him with a direct railgun face-off, because he will always be able to aim at the player, even when he's smaller than a pixel, and he can kill a player as soon as he spawns.

Another interesting goal for bots would be to replicate what Brit10 "champions" do: just focus on spamming spawn points with area-damage weapons. It doesn't matter if a dedicated/"truly skilled" player can go out of his way and outsmart/kill the spammer, outside of a 1-on-1 match: in the time he manages to (maybe) accomplish that, the spammer will have racked up 5-10 easy kills against those who don't try specifically to stop the spammer, and still come on top.

Share this post


Link to post

It should be easier to just use modern resources and node things as that will make bot making much easier than back in 1996.

Share this post


Link to post

Just because it is 2015, that doesn't magically change anything about an engine written in 1993.

Share this post


Link to post
Gustavo6046 said:

It should be easier to just use modern resources and node things as that will make bot making much easier than back in 1996.


2D point nodes are not really needed for an AI and are rather really bad in a game such as Doom because of the freedom of movement and various differences in sectors and objects blocking the path of the player.

Also, if you are going to manual placement of these 2D point nodes, are you going to add nodes to every single map in the idgames database?

Also consider that for compatibility the nodes must be kept separated from the map data because otherwise if you start placing unknown things in the level, vanilla will crash and some other source ports will replace it with a "What the hell is this?" object.

The only thing making bots easier to create today compared to 1996 is more computing power and the better algorithms which have been discovered.

Share this post


Link to post

And better AI skills as proven in Unreal Tournament.
If nodes are so bad then why UT's bot AI, which is nodebased, is so good? Huh? And the focus -- ZDoomBot?

Share this post


Link to post

Pretty much all modern game engines use a polygonal mesh for navigation purposes. Here's how Unreal Engine 3 generates these automatically: https://udn.epicgames.com/Three/NavigationMeshReference.html Source (version 1 at least) uses a slightly different approach that produces rectangular navigation areas, but the end result is the same: https://developer.valvesoftware.com/wiki/Navigation_Meshes In both cases what you end up with is a detailed map of the areas that an AI entity can walk.

Share this post


Link to post
Gustavo6046 said:

If nodes are so bad

The problem is not that nodes are bad. The problem is their integration into the Doom engine and into all existing Doom maps.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×