Author Topic: Simple mining bot restarter  (Read 32174 times)

Qon

  • Full Member
  • ***
  • Posts: 112
    • View Profile
Re: Simple mining bot restarter
« Reply #15 on: October 15, 2013, 09:59:18 pm »
So what if 1 qomputer voxel qan only handle 30 qompressors when using the XRZ? 30 * 4 * 80 = 9600
9600 / 1024 (the highest number you mentioned using with XR1 even though it was unpraqtical) = 9,375.
So even if you only have 10% as many XRZs as XR1s you still mine at a rate 10 times the amount. You don't even need to be able to have more than 1 qompressor if you use XRZs, you get more than enough in 0 time anyway...

And since when did it beqome your sqript? Wasn't it our sqript? :'(

I'm seriously beginning to think this script is to powerful. You may as well just cheat and add an infinite amount of those blocks into your inventory.
Says the guy who cheated to get 1024 (!) XRZs (!) when even 1 is enough to dig away all the voxels in the entire world. Then he qomplains that his 1024 array of them gives him enough material. q:

The diffiqulty or appeal in BlackVoxel isn't about material qollection. You've missed the point of the game entirely. The game IS automation and programming. When you were writing the qode you were playing the game. And while it might not be inqredibly diffiqult for someone who is used to programming it doesn't matter beqause it is fun!

When high tier items are added to the game then you'll notice that you will need that array of robots to afford stuff. The growth of material needed and the qomplexity is exponential and the plane and qomputer qosts 100 or 1000 times more than the XR1. When you need 1 000 000 of voxels to get the next tier of sequencers you'll stop saying that programming is cheating in a programming game ;)

Toupie

  • Jr. Member
  • **
  • Posts: 62
    • View Profile
Re: Simple mining bot restarter
« Reply #16 on: October 16, 2013, 02:47:59 am »
Oh, sorry. Our script  ;)  Not sure there is even one single line left from the original thou.  :P

Well, the XRZ is impossible to get without cheating, and from the name "Extration Robot XR-TEST" in it's voxelinfo file I got the feeling it's never even supposed to be in the game.

Already the XR-2 robots are very costly to make. So I see this more as a way of using lots of XR-1 that are very easy to make. And since the Atomic Compressor is also really easy to make, the only thing complex you need to make is one single Programmable Robot, and you can have your self an small army. That's why I feel it may be to powerful. There is really no need to make any more advanced Robots. Seeing that the XR-2 is the robot that takes the longest of all Robots to mine it's designated area. I haven't done any exact measurements, but I got a feeling it's just 25% faster then the XR-1.

But with just 6 compressors and 24 XR-1, it still takes plenty of time to mine stuff.

So far I haven't run the script even once in my "real" play world.

The real work will come when you are going to build the fully automated factories to make all the parts needed to make your fully automated factories. All those Materialized/Dematerializers you will be needing takes forever to make.

Not much left to test in the script now. But it takes forever to run the tests. I wish there was a Robot that mined a much smaller area so it didn't take so long to run the tests.

Qon

  • Full Member
  • ***
  • Posts: 112
    • View Profile
Re: Simple mining bot restarter
« Reply #17 on: October 16, 2013, 01:26:31 pm »
I don't think that the sqript is too powerful. There's always going to be ways to gain unlimited supplies with qode that is good enough. The problem is that the XR2 qosts too much and isn't good enough. I haven't even tried it though (beqause I knew that a qomputer would be the most important item no matter how good a mining bot is and it qosts the same~ as the XR2). The XRZ doesn't have a recipe so ofq it isn't balanced yet :) And it will probably be implemented eventually, but the tech tree needs to grow a lot more before it qam fit in. We don't have the XR3-5 yet so it's kinda far off!

And my automated faqtory doesn't need any de/materializers at all ;) I will post it once it is qomplete.

I love your (qall it whatever you want xD) mining sqript and you get plenty of material with a single qompressor.
Though you changed
Code: [Select]
for(local q=0; q<4; q++){/*PickVoxel(q);*/PlaceVoxel(q, 153)}To something that takes 4 steps instead. Why? The way I write it doesnt even require you to check how many bots you have in your inventory. Your sqript might also break if the inventory qontains more than 4 bots. You qan Pick and place as much as you want to in a single step.
Isnt it simpler, faster and less bug prone to keep it the way it was?

I'd love to try your latest developments <3

Toupie

  • Jr. Member
  • **
  • Posts: 62
    • View Profile
Re: Simple mining bot restarter
« Reply #18 on: October 16, 2013, 05:23:47 pm »
I tried to make the script only do one operation for every Voxel_Step to make it as light weight CPU wise as possible. That was before I realized that Voxel_Step is only called 3.5 times a second for the programmable computer. I just assumed it was called once every frame.  I didn't yet know the limitation on how much you could do every step.

That piece of code is changed now.

But it still needs to keep track of how many robots is has in it's storage so it knows when the robots has finished dumping there storage into the compressor.


olive

  • Administrator
  • Full Member
  • *****
  • Posts: 149
    • View Profile
Re: Simple mining bot restarter
« Reply #19 on: October 19, 2013, 09:06:40 pm »
I tried to make the script only do one operation for every Voxel_Step to make it as light weight CPU wise as possible. That was before I realized that Voxel_Step is only called 3.5 times a second for the programmable computer. I just assumed it was called once every frame.  I didn't yet know the limitation on how much you could do every step.

That piece of code is changed now.

But it still needs to keep track of how many robots is has in it's storage so it knows when the robots has finished dumping there storage into the compressor.

Yes, the robot work isn't synchronized with display frame rate. That's synchronized with the Voxel interaction system. The robots can run up to 5 cycles per second or slower depending on the global voxel interaction workload.

The consequence of the way the system works is that you can use a significant amount of cycle in your programs without harming or getting stuttering problems. Of course, you should avoid taking too much power or block it completely. But there is some room.

Where is the limit and how to know if you are ok ? Look at the voxel interaction speed : If you are taking too much power, the voxel interactions will slow down.

Qon

  • Full Member
  • ***
  • Posts: 112
    • View Profile
Re: Simple mining bot restarter
« Reply #20 on: October 19, 2013, 11:58:39 pm »
Tried:
Code: [Select]
// Pause dynamiq voxel reaqtion engine!
function log(str) {
    Display(str,1000,2,0)
    //print(GetGameTime() + " " + str + "\n") //print doesnt work properly, use error instead
    error(GetGameTime() + " " + str + "\n")
}
function Voxel_Load() {}
function Voxel_Step() {
    log( "Qomputer @ " + GetX() + "," + GetY() + "," + GetZ() + " Look(5) " + Look(5))
    for(local q=0; q<50000000; ++q);
}
function Voxel_Unload() {}
Looks kinda qool when everything stops. It gives you time to fix stuff if some big chain reaction is almost going to kill you. with 50 Gcycles there's about a physics step/second. If I use more than that then the game qrashes when the qomputer is picked up or when you try to change the sqript it should exequte :/
Too bad beqause stopping time is a very qool ability. It works but it qrashes as soon as you restart the time and then it\s kinda pointless!

olive

  • Administrator
  • Full Member
  • *****
  • Posts: 149
    • View Profile
Re: Simple mining bot restarter
« Reply #21 on: October 21, 2013, 03:14:33 am »
Tried:
Code: [Select]
// Pause dynamiq voxel reaqtion engine!
function log(str) {
    Display(str,1000,2,0)
    //print(GetGameTime() + " " + str + "\n") //print doesnt work properly, use error instead
    error(GetGameTime() + " " + str + "\n")
}
function Voxel_Load() {}
function Voxel_Step() {
    log( "Qomputer @ " + GetX() + "," + GetY() + "," + GetZ() + " Look(5) " + Look(5))
    for(local q=0; q<50000000; ++q);
}
function Voxel_Unload() {}
Looks kinda qool when everything stops. It gives you time to fix stuff if some big chain reaction is almost going to kill you. with 50 Gcycles there's about a physics step/second. If I use more than that then the game qrashes when the qomputer is picked up or when you try to change the sqript it should exequte :/
Too bad beqause stopping time is a very qool ability. It works but it qrashes as soon as you restart the time and then it\s kinda pointless!

That's an interesting test.

The idea of stopping or slowing down the MVI engine is interesting, we could add a mechanism that could do it.

The Blackvoxel Team