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

AutoDoom available to download

Recommended Posts

Jimmy said:

E4M1 straight-up murders this thing.

From what I've tested so far, most maps do.

Share this post


Link to post

I should improve it so it can beat whatever Eternity can run. This means understanding advanced Boom maps or even DEH/ACS/EDF-heavy maps. It's complex but I need to overcome it.

Share this post


Link to post

Cool. It would be pretty sweet if you could make a mode where it could "cheat" and know the location of all the monsters, items, and what it needs to do to make it to the exit for a so called speedrun mode. I'm not sure how doable that would be, just an idea. Also, may I ask why you choose eternity as opposed to zdoom? Is it easier to work with eternity for some reason?

Share this post


Link to post

Eternity is vanilla demo compatible: you can use it to record such demos that will play with vanilla (doom2.exe). And for that purpose I also think it's easier to work on it than on PrBoom+ or Chocolate-Doom. I may move my code away if I think there's a better choice.

Share this post


Link to post

I noticed it crashed when I tried to run E1M8B, which kind of surprised me, since the level only uses vanilla features.

Share this post


Link to post
Linguica said:

I noticed it crashed when I tried to run E1M8B, which kind of surprised me, since the level only uses vanilla features.


Really? E1m8b worked for me, though it got stuck in a loop

Share this post


Link to post

I kept downloading necessery DLL files up untill this message appeared when I got the last needed DLL file : "entry point of ucrtbase.abort couldn't be found in api-ms-win-crt-runtime-l1-1-0.dll"

Share this post


Link to post

I wonder how hard it would be to:
1. Turn this into a friendly AI (think UT bots), with the ability to issue simple commands (stand here / follow me / kill that monster).
2. Turn this into a monster AI (think Scaarj), with the ability to customize it's behaviour (charge, keep distance, flee, lure to specific point / drive away from specific point) and with some sort of group coordination (try to surround the player, scatter, group together).
3. Port this to ZDoom (because, youknow, reasons and stuff).

Share this post


Link to post
joe-ilya said:

I kept downloading necessery DLL files up untill this message appeared when I got the last needed DLL file : "entry point of ucrtbase.abort couldn't be found in api-ms-win-crt-runtime-l1-1-0.dll"

Download also "ucrtbase.dll", it helped in my case (although I needed to download 18 more .dlls after that). But do it only if the proper solution (installing Visual C++ Redistributable for VS 2015) didn't help you in the first place.

Share this post


Link to post

Just a hint about reporting AI bugs: Things like avoiding slime, choosing the right weapon, dodging, etc: I'm sure printz is aware of those, at this stage. My point is that the hard stuff is already done. Being able to navigate a Doom map, pick up goodies, and aim at the bad guys is enormous progress! I'm not trying to speak for printz, I'm just saying that this is an early release, and I'm glad that printz shared his code and project this early. It shows what's possible. Actually making it an awesome player is when the coding gets fun. Bugs at this stage are understandable.

@printz: Some questions:
1. Do you/are you implementing a 'fog-of-war' thing, where the bot's knowledge of the map is limited by what it has currently 'seen'? Or does it automatically know about the entire level at level start? I'm just curious, I don't know if it would be beneficial in a Doom game or not.
2. Are you considering good support for the different game modes, deathmatch, co-op, etc?
3. Are you considering a way to talk to the bots? ("Guard this area", "Spread out", "Get over here and help me!", etc.)?
4. Are you sold on the name "AutoDoom"? I'm hoping for something with 'Bot', or, 'AI', or something, so I can remember it and find it in the forums :)

Share this post


Link to post
kb1 said:

1. Do you/are you implementing a 'fog-of-war' thing, where the bot's knowledge of the map is limited by what it has currently 'seen'? Or does it automatically know about the entire level at level start? I'm just curious, I don't know if it would be beneficial in a Doom game or not.

AutoWolf already has that, and it's also saved on disk so it doesn't forget when reopening level. In Doom this feature is partially given for free, thanks to how the automap needs to be drawn. But I'll add it once I nail the main gameplay. I don't need more hindrance.

2. Are you considering good support for the different game modes, deathmatch, co-op, etc?

I really need to add this, yes, but only once I understand the Doom netcode (or maybe I can learn from how multiplayer demos work?). It looks very complex for me now. A mediocre AI like now would actually be quite useful for coop: it can respawn and it can't survive on its own to steal your thunder in a player-vs-environment campaign.

If it's real multiplayer, it will have to be a separate client process (or be hosted on the server).

Saving processing time sounds critical here.

3. Are you considering a way to talk to the bots? ("Guard this area", "Spread out", "Get over here and help me!", etc.)?

If I add that, it definitely must be based on natural language, and not just similar to console commands.

4. Are you sold on the name "AutoDoom"? I'm hoping for something with 'Bot', or, 'AI', or something, so I can remember it and find it in the forums :)

Dunno, it sounds catchy, except that in many languages "auto" really means car. Initially I wanted to call it Robocop Doom or Doomocop, because I liked how in the movies the robotic police officer was turning so quickly and precisely to shoot the villains.

Share this post


Link to post

Too no-name/self-descriptive.

I'm thinking that most vanilla Doom, and maybe even Boom levels that lack complex systems, can be considered finite state machines, which means that there are only so many states that the tagged sectors can be moved in. This may be useful to be able to exit levels with more switches. Currently I already have gross hacks for basic doors (they are treated as open space) and lifts (floor height is considered both for bottom and top, but never middle). Just try replacing all doors with remote-activated ones where the switch isn't on the door (or where only one side can open). It will confuse the bot.

Share this post


Link to post

It doesn't seem like it ought to be TOO hard to, say, run an A* search or whatever that works backwards from the exit and determines the state a given tagged sector in the way must have in order to be passable, and then add the activating line for that sector as a new target to reach, and keep searching recursively until you get back to the player position. Or am I overlooking something fundamental?

Share this post


Link to post

Do you think you're going to be able to have it be as effective (or close to) as your Automatic Wolfenstein program? I watched some videos of it a while back and it was terrifyingly good! I'm wondering how much more complex it's been designing it for the Doom engine over Wolf3D.

Share this post


Link to post
vadrig4r said:

Do you think you're going to be able to have it be as effective (or close to) as your Automatic Wolfenstein program? I watched some videos of it a while back and it was terrifyingly good! I'm wondering how much more complex it's been designing it for the Doom engine over Wolf3D.

Wolf3D is infinitely simpler, it's literally 2D. Doom has to be abstracted into 2D.

That's how I think about it anyway :D

Share this post


Link to post

Wolf3D doesn't have arbitrary geometry with passages that can be too narrow for the player to go through, doesn't have damaging floors or crushers, doesn't have elevation changes that can make things one-way, doesn't have level changes (such as an elevator button that causes a platform to lower briefly, then climb back up), doesn't have teleporters... There's just tiles you can go through, tiles you can't go through, doors, and doors that need a key.

Enemies and weapons are also simpler. Nearly all enemies are hitscan, so having a routine for dodging projectiles isn't necessary. All weapons are the same, except with increasing rate of fire, so you can just use the biggest one available when you're a bot. (As a human player of Wolfenstein 3D, I tend to use mostly the SMG and only switch to the chaingun for bosses or large amounts of tough enemies, like a room with 10+ SS and officers, because I find that the chaingun goes through ammo too fast and causes a lot of cases of wasting bullets shooting an enemy that's already dead; but the bot with its unerring accuracy in being able to stop shooting in the exact tic an enemy dies wouldn't suffer from this issue.) In Doom, however, there's a real tactical choice to make in which weapon to use in which circumstances. A Doom map may feature situations that require use of infighting (not present in Wolfenstein 3D), explosive barrels (not present in Wolfenstein 3D), and luring monsters towards traps such as crushers (not present in Wolfenstein 3D) to win optimally.

Share this post


Link to post
printz said:

in many languages "auto" really means car

True that. All the Slavic countries are a nice example. And "car" means emperor in our languages too.

Share this post


Link to post
Csonicgo said:

That's a ZDoom wad.

It's going to fail a lot. There's a lot going on with Doom that AutoDoom simply cannot handle right now. Posting "it fails on x wad" in this thread doesn't help.

Yeah, i know that. but i mean, will it be able to do impossible maps?

Share this post


Link to post

Personally I don't care about the bot dying, I care about it not getting stuck! Like in TNT MAP01 for example. :D

Share this post


Link to post

Hello, so I'm not much of a poster here, but I do think this is a really neat idea. I was just curious if you ever had any intention to create a 'report' file, or any sort of statistical document that would provide us with interesting metrics for how well the bot interpreted a level. I think things like deaths/attempts, damage taken, damage dealt, weapon usage numbers, distance run, etc. depending on how you configure AutoDoom would be particularly interesting. Sorry if this seems like a waste of a post. Keep up the good work!

P.S. As you develop this, I'm going to start 'speedrunning' different wads to try and capture competent (or nearly human-like) times. I'm super excited at the possibilities and the idea that some runs could accidentally optimize themselves to an almost impressive level. Hopefully, as the programming improves the times will as well!
Best,

Share this post


Link to post

There is some statistics in user\autodoom, but it's mostly for the bot to process. It has damage received by kills ratio for each monster slot. Currently it's fixed for non-Dehacked or EDF mods.

As for the improvement: currently AutoDoom has some simple combat routines implemented just for fun. I intend to focus on -nomonsters gameplay. It should know to avoid hazards while also finding its way to the exit.

Share this post


Link to post
thesecondcomingdoom said:

Yeah, i know that. but i mean, will it be able to do impossible maps?

Well no, they're impossible.

Running ZDoom maps would require porting the autodoom logic to ZDoom, for a start. Though with the progresses in ACS support and Hexen format support it might become possible to run old ZDoom maps in Eternity, provided they don't use DECORATE stuff.

Share this post


Link to post

This is very cool. Look forward to future progress. I have it running perditions gate in the background right now and it has made it through map 5 or 6 so far with no deaths on HMP.

As for it avoiding damage floors I had to test the chasm. It has no problems running around, however it also has no problem jumping off to its death into the nukage while dodging fireballs.

In grosse, it was smart enough to grab the invuln sphere just before the cyber, but as soon as it opens the final door it doesn't even engage the cyber, rather it runs and hides in one of the side rooms. I'm guessing it craps out because it doesn't understand the keen dolls?

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
×