It's handled by the threadded tile conditioner (Bottom right corner).
Basically, in there, I've added a couple of conditions which will run if anything interesting happens such as:
No worker = terminate the thread.
Tile is no longer marked = terminate thread.
Tile is destroyed = terminate thread and make necessary preperation for other stuff.
If any of these do happen a code is run that passes all workers to the job asigner, bottom middle of the image, which decides if the imps should do more tasks or not.
I was busy at school. Anyhow, as I promised I'll show you a mockup of my AI. Of course, there are a lot of custom functions, actions, conditions etc. behind this system but it will give you a general idea of how mine works.
What I found quite interesting is that it works really well. Video showing how it performs on Battle.net:
Does copyright matter? In the end, Blizzard owns it and so does everyone else in the community. You can't lock the map expecting your work to be protected.
1) Assign task to a worker
2) Assign the target to the worker
3) Assign a specific behavior to the worker that stores his current task type (conquest, dig, fortify,
etc)
4) Start an action definition that loops, storing the worker, his target and his current task type
(behavior type)
5) While looping check if the worker has the same task type and the same target, else re-assign the
target task to another worker
Adding custom behavior seems interesting, however, I got another method which I've worked on this morning.
This whole thing will be threaded meaning that each imp has its own process for doing work. Basically, this will make sure that imps will continue to do their job and not depend on an overarching system nor loops.
1) Idle state, contains a wait for condition action until a work is available.
2) If work is available, pass the unit via parameter to another task manager to get specific job.
3) In the task manager action, the unit will be sent to the highest prioritized job available, passed via parameter.
Now we enter the block of Custom Action Definition that will handle the work itself. Let's take digging as an example:
4) Get unit from the parameter, look if there are any work left in this task, if any is then send unit to the work parameter, if none then send unit back to Idle State where the process will start again.
5) ... Do work .... Done send unit back to 4 where he'll see if more work is available.
Using the auto cast you would have the problem of imps trying to achieve the same task at the same time.
For the AI I'm going to use looping triggers.
Each time you assign a work to an imp you flag a variable to 1 (or add a behavior to the work dummy unit) and start a looping trigger that checks if the worker is still alive and with the same task. If something happened re-assign the work.
What's the best way of linking 2 units using data editing? I mean to check with triggers if the unit is still targeting another unit...
Order of unit equal to follow or attack.
I'll share my thoughts on how the AI should be handled later once I got things working. It ain't exactly easy to explain.
Bibendus, have you been working on AI concepts so far? I'd like to ask you for some suggestion on how to solve an issue related to imps changing tasks, after being dropped by you, to nearby tasks. Got some ideas?
Anyhow, I've figured out I might as well remake the AI. If you need some help with it just ask.
Actually I was thinking to something more "zergish" for reinforced walls and conquered terrain, that would be awesome too :D
Something like a wall with zerg creep or eggs on it would be awesome (alien style)
I'm just not entirely sure if I am willing to change the theme too much away from creepy medieval dungeon. Anyhow, I was thinking about using some WoW resources for icons and units since Blizzard seem okay with the whole cross game resource deal.
Yep but the problem is to associate these room variables to tiles, I think we should assign unique IDs to each room tile.
It will be hard to update ids when rooms get splitted or joined but I suppose I can manage it :P
I can see that becoming an issue. Or, whenever something happens to a room all tiles within will be recounted. If some tiles are missing and are not removed they'll be categorized as a second room. Will have to do some testing on that before I can settle on a specific method.
Anyhow, I created a thread in the request resource section asking for some texture and models. Figured we would be needing some soon.
EDIT: How did you do the selection/deselection of dirt walls? I'll be posting my method tomorrow in the first post. Perhaps I can learn something from yours.
Hi, I'm currently working on a dungeon keeper project as most of you already know but I lack substantial amount of resources to make the map look decent. If possible I'd really appreciate if anyone could help me and other Dungeon Keeper developers out there by creating some of these resources for us?
Basically I'd like 5 types of cube shaped models with different textures. These would be:
Regular dirt wall (tall model)
Reinforced wall (tall model)
dirt wall with gold spots (tall model)
claimed floor (flat model)
dirt floor (flat model)
If it isn't possible to have team-color for standalone actors, such as doodads like in WarCraft 3, then do not include team-color in your textures. This is to prevent having to make like 2* 4 players different models and textures.I'll just have to have a team-colored red dot doodad actor placed on top of the models to simulate the same effect. Would save lots of time.
Thanks in advance and credit where its due!
Concept art. It must not look entirely alike but keep the same tune. I want to avoid intellectual property infringement.
As I said we can check just the border room tiles (adjacent to walkable tiles) and make a comparsion with that. I think that the room size check should be done before you start calculating the distances.
Well, we could seperate the room size checker into a seperate thread altogether which updates with new information on how big these rooms are (whenever changes are being made such as rooms destroyed and player is building) and store all available rooms in an variable[]. So whenever a creature needs to enter a room one could simply check all rooms in that variable[].
What's a spider system? lol
However I was meaning that, depending on the position of a unit he should go to the nearest rooms he's interested in.
For example the unit want's to eat, what's the nearest hatchery to it? U can't just check the distance from the middle of the room but you must do it with all room external tiles :|
I think that we require a system that stores the amount of rooms with their type, location and size. That's required to choose what kind of monsters are attracted and what room variable must be edited when I modify the room shape.
Let me know about how such a system works once you get one. It ain't exactly easy to make.
I've spend all morning on trying to remake the map. Basically I updated the entire code base in order to address conflicts I would get later on during development such as having to make silly workarounds in order to incorporate building, and selling etc. Anyhow, it works more fluently now and will work with future changes.
EDIT: Well, let's take the farm as an example. Basically you'd loop through all farm tiles and calculate their distance from the creature. Once you get the closest one simply check the size of the farm via that tile and if it isn't full already then allow the creature to come.
I dont like this solution :D
Consider that trying to dig on a single square wall (4 faces) for example of gems it will allow worker to dig from diagonal positions too.
I think i'll use 4 dummy invis units like minerals with max 3 workers a time, when the resources go down the wall is destroyed. I can share the resources between the 4 spots with triggers ;)
Edit:
Now I'm thinking to the detection of room sizes and keeping the AI informed on rooms position.
That won't be easy :|
A spider system would easily handle that. Just crawl through each tile connected to the room and give it a occupation value to only allow a certain number of creatures to be directed there at one time. How to check how large the rooms are I'm not sure.
I think I have the overall idea, however I'll try to work thinking to the whole engine and the small mechanics that can cause problems later when ignored.
So I started writing down all variables i need to store and how to store them.
I'm still trying to figure out how to limit the amount of workers to 3 for each wall face
Edit:
Maybe something that has to do with harvesting that limits the amount of workers on the same spot!
Since workers will have to be able to dig from all angles you could simply make their colission big enough to only fit 3 on each sides which I decided to go with. Then again, sometimse they can be misplaced and only allow 2 guys at a time. Other than that it works nicely.
Converting into x264 will yield you the best size/quality ratio, but you'll probably have to intstall codecs first.
Using VirtualDub is pretty much the easiest way:
1) You open your .avi in VDub.
2) Make sure that Video -> Full Processing Mode is selected.
3) Click on Video -> Compression
4) Select ffdshow and click Configure.
5) Set the Encoder to MPEG-4 (or H264 if you have that) and hit OK twice.
6) Make sure that Audio -> Full Processing Mode is selected.
7) Click on Audio -> Compression
8.) Select any compression on the left side that makes something show up on the right side.
9) Click on the entry on the right side and hit OK.
10) Click on File -> Save as AVI
11) Eat a cookie.
If you do not have the option ffdshow then you can get it from here: http://ffdshow.en.softonic.com/
It's a pack of video and audio codecs, very useful. Usually it's already installed (comes with VDub?).
This method works perfectly. OP try this if you want great quality.
0
It's handled by the threadded tile conditioner (Bottom right corner).
Basically, in there, I've added a couple of conditions which will run if anything interesting happens such as:
If any of these do happen a code is run that passes all workers to the job asigner, bottom middle of the image, which decides if the imps should do more tasks or not.
0
I was busy at school. Anyhow, as I promised I'll show you a mockup of my AI. Of course, there are a lot of custom functions, actions, conditions etc. behind this system but it will give you a general idea of how mine works.
What I found quite interesting is that it works really well. Video showing how it performs on Battle.net:
Yeah, I'm still alive.
0
Does copyright matter? In the end, Blizzard owns it and so does everyone else in the community. You can't lock the map expecting your work to be protected.
0
Adding custom behavior seems interesting, however, I got another method which I've worked on this morning.
This whole thing will be threaded meaning that each imp has its own process for doing work. Basically, this will make sure that imps will continue to do their job and not depend on an overarching system nor loops.
1) Idle state, contains a wait for condition action until a work is available.
2) If work is available, pass the unit via parameter to another task manager to get specific job.
3) In the task manager action, the unit will be sent to the highest prioritized job available, passed via parameter.
Now we enter the block of Custom Action Definition that will handle the work itself. Let's take digging as an example:
4) Get unit from the parameter, look if there are any work left in this task, if any is then send unit to the work parameter, if none then send unit back to Idle State where the process will start again.
5) ... Do work .... Done send unit back to 4 where he'll see if more work is available.
Hope you get the idea.
0
Order of unit equal to follow or attack.
I'll share my thoughts on how the AI should be handled later once I got things working. It ain't exactly easy to explain.
0
Bibendus, have you been working on AI concepts so far? I'd like to ask you for some suggestion on how to solve an issue related to imps changing tasks, after being dropped by you, to nearby tasks. Got some ideas?
Anyhow, I've figured out I might as well remake the AI. If you need some help with it just ask.
0
I don't play my own maps. It's just not funny.
0
I'll be at school today so could you mention some of the lacking information?
I'm just not entirely sure if I am willing to change the theme too much away from creepy medieval dungeon. Anyhow, I was thinking about using some WoW resources for icons and units since Blizzard seem okay with the whole cross game resource deal.
0
I can see that becoming an issue. Or, whenever something happens to a room all tiles within will be recounted. If some tiles are missing and are not removed they'll be categorized as a second room. Will have to do some testing on that before I can settle on a specific method.
Anyhow, I created a thread in the request resource section asking for some texture and models. Figured we would be needing some soon.
http://forums.sc2mapster.com/development/artist-tavern/requests/12457-request-dungeon-keeper-resources/
EDIT: How did you do the selection/deselection of dirt walls? I'll be posting my method tomorrow in the first post. Perhaps I can learn something from yours.
0
Hi, I'm currently working on a dungeon keeper project as most of you already know but I lack substantial amount of resources to make the map look decent. If possible I'd really appreciate if anyone could help me and other Dungeon Keeper developers out there by creating some of these resources for us?
Basically I'd like 5 types of cube shaped models with different textures. These would be:
If it isn't possible to have team-color for standalone actors, such as doodads like in WarCraft 3, then do not include team-color in your textures. This is to prevent having to make like 2* 4 players different models and textures.I'll just have to have a team-colored red dot doodad actor placed on top of the models to simulate the same effect. Would save lots of time.
Thanks in advance and credit where its due!
Concept art. It must not look entirely alike but keep the same tune. I want to avoid intellectual property infringement.
Dirt Walls :
Claimed floor
Small worker standing on the flat dirt floor
How the gold looks like :
General overview
0
You're right. Isn't an option with such a huge resource demanding map.
Well, we could seperate the room size checker into a seperate thread altogether which updates with new information on how big these rooms are (whenever changes are being made such as rooms destroyed and player is building) and store all available rooms in an variable[]. So whenever a creature needs to enter a room one could simply check all rooms in that variable[].
Just brainstorming atm.
0
Let me know about how such a system works once you get one. It ain't exactly easy to make.
I've spend all morning on trying to remake the map. Basically I updated the entire code base in order to address conflicts I would get later on during development such as having to make silly workarounds in order to incorporate building, and selling etc. Anyhow, it works more fluently now and will work with future changes.
EDIT: Well, let's take the farm as an example. Basically you'd loop through all farm tiles and calculate their distance from the creature. Once you get the closest one simply check the size of the farm via that tile and if it isn't full already then allow the creature to come.
Info on spider crawlers : http://en.wikipedia.org/wiki/Web_crawler
0
A spider system would easily handle that. Just crawl through each tile connected to the room and give it a occupation value to only allow a certain number of creatures to be directed there at one time. How to check how large the rooms are I'm not sure.
0
Since workers will have to be able to dig from all angles you could simply make their colission big enough to only fit 3 on each sides which I decided to go with. Then again, sometimse they can be misplaced and only allow 2 guys at a time. Other than that it works nicely.
0
This method works perfectly. OP try this if you want great quality.