[v0.9.0] ZetaBot: The ZScript Bot

Projects that alter game functions but do not include new maps belong here.
Forum rules
The Projects forums are ONLY for YOUR PROJECTS! If you are asking questions about a project, either find that project's thread, or start a thread in the General section instead.

Got a cool project idea but nothing else? Put it in the project ideas thread instead!

Projects for any Doom-based engine (especially 3DGE) are perfectly acceptable here too.

Please read the full rules for more details.

[v0.9.0] ZetaBot: The ZScript Bot

Postby Gustavo6046 » Sun Dec 24, 2017 10:59 am

title.png

The ZetaBots are here to kick some lazy butts!

Status: Late Beta

Download Links:

ZetaBots are an early attempt at reviving the Doom bot scene, made possible by the new implementation of ZScript being made stable. Their predecessors, DecoBots, did perform well, but needed a player to follow, and were rather dumb at times.

The main concerns with ZetaBots are universal game support and node pathing and saving; in fact, a single CVar stores the whole node list for the maps of a single game! (Doom II's nodelist CVar differs from Heretic's)
The CVar stores a serialization format that allows multiple levels into one. The navigation system was heavily inspired by Unreal Tournament (1999) - so if you know UnrealScript and how to use PathNodes in Unreal, you might know how to use ZTPathNodes here!

ZetaBots will be capable of using any weapon they find, because they use a special model where a ZetaBot class controls a 'doll actor' (made to look and sound like a player), which can pick up any weapons, which are used. The kinds of dolls and weapons are known thanks to special modules - ZetaModules.

Main Features:
  • Multiple male and female voices!
  • Pathnode system with A* pathfinding!
  • Supports any weapons and player classes! (given there are modules for them, supplied by their respective modders)
  • Constraints akin to real players! (max speed, max firing rate, etc etc)
  • Weapon rating system!
  • Can open doors, use lifts, and other Use linedefs!
  • Elaborate noding system, including Use and Shoot nodes!

"Screenshots or didn't happen!" It's just the plain old skins you always knew (for Doom, Strife or Sentient Mushes). Except with a pretty Zeta Cape... But since you insist, here we go!

Spoiler: Screenshots!
Last edited by Gustavo6046 on Mon Sep 16, 2019 2:57 pm, edited 66 times in total.
User avatar
Gustavo6046
 
Joined: 13 May 2017
Location: In an urban area in Brazil.
Discord: Gustavo6046#9009

Re: [45%] [WIP] ZetaBots: The ZScript Bot

Postby Funky Gnoll » Sun Dec 24, 2017 1:58 pm

ZetaBots: The ZScript Bot
ZetaBots are an early attempt at reviving the Doom bot scene


I've never opened a thread this quickly.
Funky Gnoll
 
Joined: 21 Jul 2009
Location: Round Rock, TX

Re: [45%] [WIP] ZetaBots: The ZScript Bot

Postby Gustavo6046 » Sun Dec 24, 2017 5:27 pm

You are right, I should probably try and resume its content. But I'm not good at presentation of work :P
User avatar
Gustavo6046
 
Joined: 13 May 2017
Location: In an urban area in Brazil.
Discord: Gustavo6046#9009

Re: [45%] [WIP] ZetaBots: The ZScript Bot

Postby Dark Pulse » Mon Dec 25, 2017 2:06 pm

As an Unreal Tournament veteran (hell, I helped run BeyondUnreal for a number of years), I know quite well how PathNodes work... but then you've got me wondering how this would be supported in non-stock maps.

Would the mapper have to include these ZTPathNodes in their map? Does ZetaBots generate them on-the-fly through priority of powerups/pickups and knowing that there (should) be fixed MP/Co-Op starts? Would the end-user just generate these for maps and have them in a separate WAD or something?

Definitely intrigued by this, but if there's not some way of "automating" how the pathnode network is built, you're reliant on the mappers adding those to their maps or the end-user being able to do that somehow.
User avatar
Dark Pulse
Should I be happy or miserable that I enjoyed SNES Doom? What about PS1 Hexen?
 
Joined: 21 Nov 2014

Re: [45%] [WIP] ZetaBots: The ZScript Bot

Postby Gustavo6046 » Mon Dec 25, 2017 4:24 pm

Like in Unreal, it is mostly the mapper's job right now - pathing usually takes up to 5 minutes for maps like MAP01. It can be saved in a CVAR named nodelist.

Automatic generation will be eventually supported, but it will be a Node.JS program that uses node-wad to parse the map and generate the pathnodes.
User avatar
Gustavo6046
 
Joined: 13 May 2017
Location: In an urban area in Brazil.
Discord: Gustavo6046#9009

Re: [45%] [WIP] ζetaBots: The ZScript Bot

Postby Nash » Tue Dec 26, 2017 10:57 pm

Commenting to try this later. I am fucking stoked to read about this!
User avatar
Nash
 
 
 
Joined: 27 Oct 2003
Location: Kuala Lumpur, Malaysia
Github ID: nashmuhandes

Re: [45%] [WIP] ζetaBots: The ZScript Bot

Postby Gustavo6046 » Wed Dec 27, 2017 4:57 pm

Nash wrote:stoked!


Have fun with a pathnode (de)serialization thing that saves and loads from a nodelist server CVar, and a bot that crashes on load because it can't use UserCMDs. :(

I began this project thinking on finishing it. I actually came close to it. But I needed help. I could not do it alone. I needed someone that cared. Even knowing that it might be very rare for someone to even give a shit with helping, each person that goes by and glares in the thread raises a little the smirk in my face.
User avatar
Gustavo6046
 
Joined: 13 May 2017
Location: In an urban area in Brazil.
Discord: Gustavo6046#9009

Re: [45%] [WIP] ζetaBots: The ZScript Bot

Postby kadu522 » Tue Jan 02, 2018 5:53 pm

I can try to playtest this since i play mostly single player.

Do you have a idea where the crash usualy happens and recomended mods to test with?
User avatar
kadu522
A gameplay lover,heck i play a ASCII Based game is your gameplay is good enough.
 
Joined: 03 Mar 2017
Location: Brasil,Rio de janeiro
Discord: kadu522#0658
Twitch ID: kadulal

Re: [45%] [WIP] ζetaBots: The ZScript Bot

Postby Nash » Thu Jan 04, 2018 7:59 am

So how do I test this? The ZScript is a little daunting for me to figure out on my own.
User avatar
Nash
 
 
 
Joined: 27 Oct 2003
Location: Kuala Lumpur, Malaysia
Github ID: nashmuhandes

(ζetaBots: The ZScript Bot) Current Status

Postby Gustavo6046 » Thu Feb 08, 2018 3:02 pm

Sorry for the somewhat long time I was off, as I moved to Linux and I'm struggling to get SLADE3 to work, which might require me to install GCC 7.0.0... Why don't they just update Xubuntu to Ubuntu 16.10?

Anyway, I will work on the ζetaBots, making it some sort of super smart monster with node-based navigation and universal weapon usage. (We will probably not see custom player classes being used by the bot for a long while...) But that would be a very large change, so I'll schedule that for later. First off I want to update the DecoBots and give it female voices which I might reuse later with the ζetaBots. Hey, I might even make a similar controller scheme, but that works for any monsters (including some player class adapted for the bot)!

Node-based navigation will probably not be a large hassle (it probably works the way it is already), but universal weapon support (i.e. being able to use any weapon a normal player would) will be difficult.

I have a few alternatives for that:

  1. Module-based. The idea here is that weapon support should be provided by separate "module" mods. Each module should give a simple way to rate different weapons - giving each weapon a priority or rating, based on a given scenario or situation -, in a way that is faithful to how the weapons themselves work, and in addition give metadata like minimal safety distance, and rapid-fire (whether it's more efficient to hold than to keep pressing the fire button). It should come with the default Doom II, Hexen and Strife modules (therefore the bots should be able to use the Rocket Launcher, Super Shotgun, the Crossbow, the HE grenades, and sooo on...); people can add support for their mods doing their own modules if they want.
  2. Monster-based. The concept here is that the ζetaBots still have the controller schemes, but instead of controlling player pawns, they control monsters. Each monster has a set of attacks the ζetaBot controller should be able to use. However, playerlike ζetaBots can be created in a similar way to the DecoBots; a custom MONSTER class, that inherits from a player class (or something of the kind), and THAT class should itself decide which weapon to fire, and how: for example. the DoomPlayerBot wouid be able to select from the Doom II array of weapons, while the HexenPlayerBot branches into bot versions of the Hexen classes, and so on.
  3. Mixed. Uses a combination of both bot schemes. In such case, I would make it very similar to the monster-based scheme, but have the playerlike monster classes select any weapon from the loaded modules (from the module-based scheme). This would allow for any supported monster or player class to become a bot, AND select any supported weapon available for the corresponding class. The catch is that both the monster/playerlike classes AND the weapons would need their support implemented, which usually implies extra work.

Which do you think would work better? Please tell me... I should open a poll about that here. (can I open polls in existing threads?)

Nash wrote:So how do I test this? The ZScript is a little daunting for me to figure out on my own.


It can't be tested normally, unfortunately. I scrapped the current idea of how it would work (a controller that spawns and controls a random player class), since player classes are delicate internal stuff, and internal stuff is more inflexible than I imagined. (I bet even UnrealScript allowed compiled UC code to access native stuff!)

We need a good and proficient ZScript debugger, something that helps debugging in ways like inspecting the "variables" of the pointed-at actor (actor variables like position and velocity, custom variables defined in DECORATE and ZScript, and so on), as well as the function stack; but it should come with some GZDoom "debug mode" (who knows the developer CVar?) and somewhat easy to use in a visual way.

However, I presented three possible alternative ways that MIGHT work.

kadu522 wrote:Do you have a idea where the crash usualy happens and recomended mods to test with?


I know why the crash happens, and there is no simple work-around - native/internal stuff.

I recommend mods that (will) support the bots in first place (since I plan to make the bot support for mods (and games/IWADs too!) depend mostly on the modders).

As for game mode, it should work for cooperative mostly (singleplayer, but it should work for multiplayer as well!) I plan to add Deathmatch and other teamgames later on. (Teamgames might have to be supported by modules as well, with the exception of the most common Zandronum gamemodes, like DM and CTF).
User avatar
Gustavo6046
 
Joined: 13 May 2017
Location: In an urban area in Brazil.
Discord: Gustavo6046#9009

Re: [REPLAN] ζetaBots: The ZScript Bot

Postby XavierStudios » Thu Feb 08, 2018 3:47 pm

I cannot claim to fully understand to what extent modders will have to go to add compatibility or what, if any, functionality is being traded between Module- and Monster-based bots, but I can presume that the mixed approach would offer the most flexibility in the end.

As such, in my ignorance, I cast my vote for the Mixed approach if only for the perceived benefits as compared to the other two concepts. Perhaps a more practical explanation of the pros and cons of each would help us (me) understand and make a more informed decision.
User avatar
XavierStudios
 
Joined: 24 Jan 2017

Re: [REPLAN] ζetaBots: The ZScript Bot

Postby Gustavo6046 » Sat Mar 10, 2018 9:26 am

Thanks, buds. I did also bet on that one.

So, now I will write my AUR install script, so I can install SLADE3 in my new Linux system, and hopefully continue working in the ζetaBots once we have a better plan of "action". :)
User avatar
Gustavo6046
 
Joined: 13 May 2017
Location: In an urban area in Brazil.
Discord: Gustavo6046#9009

Re: [REPLAN] ζetaBots: The ZScript Bot

Postby Rachael » Sat Mar 10, 2018 9:36 am

You should probably know that GZDoom currently has plans to ditch its internal bot system completely and use ZScript for its bots, sometime in the future. This is one of the projects I was thinking about when that hit the planning phase, but I don't know if you are interested.
User avatar
Rachael
Webmaster
 
Joined: 13 Jan 2004
Discord: Rachael#3767
Twitch ID: madamerachelle
Github ID: madame-rachelle
Graphics Processor: nVidia with Vulkan support

Re: [REPLAN] ζetaBots: The ZScript Bot

Postby Dark-Assassin » Sat Mar 10, 2018 10:07 am

Any chance that a system like A* could be used instead? This would have to account for line actions and such too.
User avatar
Dark-Assassin
 
Joined: 19 Mar 2009
Location: South Australia

Re: [REPLAN] ζetaBots: The ZScript Bot

Postby Korell » Sat Mar 10, 2018 12:38 pm

Rachael wrote:You should probably know that GZDoom currently has plans to ditch its internal bot system completely and use ZScript for its bots, sometime in the future. This is one of the projects I was thinking about when that hit the planning phase, but I don't know if you are interested.


Would this then mean that botmatches could then be possible within GZDoom?
User avatar
Korell
 
Joined: 28 May 2017

Next

Return to Gameplay Mods

Who is online

Users browsing this forum: Carrotear, Thorogrimm and 8 guests