Ok overdhose question .... if I have seen your videos in the right way .... one could easily clear a whole mountainous area with the Oreo s and make it a flat landscape w/mountains in the background (like the landscape in above video) while one is away from the room doing other things ???
pretty much yeah... although they are pretty slow at it atm... if you really like I can speed them up a bit again, but I slowed them down as it was a good way to introduce the stat system josh is working on. so they could level up and become faster.
Anyway yeah it's still a bit clumsy and i haven't tested with entire mountains so yeah if you do test let me know if you notice slowdowns or anything of the kind. The way to do it is use the zoning tools, click 2 blocks and all blocks that aren't invisible (like air) will get added to a cubic zone that will be slowly gathered. The controls might be a bit technical, you click 2 blocks with the zone selection tool (similar to the scissors), and once you see the blue selection, you switch to the zone book, open it, it will propose a default name for the zone but you can alter it, and press save, the book will close. Then you select a minion, assign the zone you created to a minion and set his behaviour to gather. and yes you can go grab a coffee meanwhile . Best way is to make not to big zones and assign an army of oreons to each to clear faster. you can assign multiple oreons to the same zone, but the speedup is not times 2. One oreon per zone is fastest I think. Anyway, if you still have specific questions or can't figure out how to use it, nudge me. User input is best way to smooth a process.
PS : the zone also has a width and height etc in the book you can edit, but editing them has no
effect for now.
PS2 : reminds me i should test what happens when their inventory is full...
PS3 : clicking the zone tool a 3d time will clear the selection, and then clicking again will start a new one.. hope this is the last PS
it's to bad I wasn't recording... lost a minion he had, how embarrasing.
anyway, trying to figure out where he wandered of to, I got shot up in the air jumping out of water... and guess who I encountered on my way down? yupp... the minion.
so rest assured, we aren't the only ones affected by this "feature", and it made me lol for a while...
metouto, I did some testing with larger zones, I figured there was a reason a reason Begla chose not to render all cubes in the selection as blue, and i know why now. if you select a large enough area of blocks, performance goes down drastically, to a level where the game comes to a crawl. You can still save the zone and deselect (with some patience) but it's far from optimal.
And I know why, it's because it also renders renders all blocks you can't see, so I'd have to start determining which blocks are visible and should be rendered in the selection, I'll see what i can do, because I'd really like to keep some kind of outline to indicate what exactly you selected. If not, I'll have to resort to only showing the start and end position, or limiting the size of zones you can select. I'm not sure which solution people would like most, so any ideas / input is welcome. Another option is to add a setting and let you decide what behaviour you want, all selected blocks or only begin/end. But if you happen to forget the check it (or don't know about it) it's still an issue. Because I fear that even if I optimize it, given a large enough selection this problem will probably remain. Not to mention what will happen if you move far enough from the starting chunck. So a size limitation will be in order anyway from some point. But I wanted to give a heads up about this. I changed the gather speed to supercharged for testing, the lil guy sounds like a machine gun gathering blocks now.
To trigger a thread notification I'm posting here that overdhose updated the first post with a ton of details on the new system - unfortunately mega-edits do not trigger forum subscriptions
Nice icon usage btw
If you do some wiki edits make a Miniion page in the GitHub wiki instead of the Xenforo one? I'm figuring use GH for documentation and XF for design (if we should need that sometime).
Also, for those curious you can use ...
... to get the names of the interesting items in the Miniions module (which of course needs to be enabled for a world - OreoMinions too! Or you won't get any options for cards). Example way to get one:
as I actually had a bit of content to play with, I'm finding some skeletons left and right, which I started dusting off as I encounter them. As things evolved a lot many times I started over with new worlds, hiding some of those skeletons.
It's sometimes discouraging to see how many issues start popping up while you play, but that's the key, you can actually start to play a bit with the miniions now. I find myself building dirt pillars to have a block at a certain position to define a zone. I noticed miniions wouldn't start gathering when I launched the same world again, because of the way I used the gametime. The follow behaviour got broken.
However, I sometimes forget that I had launched the game to test something, and should save my world instead of just hard stopping the debug session and lose my progress. So expect less skeletons as I play around with the bit I have now.
I looked a bit at the threading, and in the end just copied code from Immortius (from the growth simulator) to use a thread for generating buildings. Even though the operation isn't that heavy, and I know I still need to add some threadsafing to the classes involved (mostly minioncomponent), if anyone could review the code at some point (no rush) in the simpleminionai class to let me know if it's acceptable, that would be greatly appreciated. I would also like to use a similar system for the minion pathfinding, which will be a lot more demanding.
The entity system is not thread safe, I would advice against putting anything that manipulates entities in a background thread at this stage. This may be fixed at some point when the entity system is changed to defensively copy components on request, and to keep a version number for each to detect conflict - although to really get this sort of thing working you would need transactions and atomic operations and it gets messy. May need to look into in-memory databases again sometime.
This will make calling saveComponent() and ensuring component fields are set up for persistence important. I would suggest in the meantime have changes queued and applied on the main thread in the next update().