Originally Posted by
tripwire
Maybe you can...
If there was a symbolic link in /scripts that pointed to somewhere else, Toribash wouldn't have to go outside of /scripts.
I know windows doesn't have sym links, but theres a version of Toribash for linux right?
I'll just make a ram-disk on linux and have it save files to it using a link from within the /scripts folder
![headbang](https://cache.toribash.com/forum/images/smilies/headbang.gif)
I'm pretty sure hampa restricted that already. If he didn't, he will soon, now that you mentioned it. Lua should only be able to write things to the /scripts folder, regardless of how you do it, because else it's a great security risk.
Originally Posted by
tripwire
Jok: these gigantic posts could all be avoided if you read what NEAT is.
It's not a simple feed forward perceptron neural net like what you are thinking; its a system for growing neural nets from individual parts called "genes" and evolving them to be better over time. It's a LOT more advanced than what you are talking about, and its being used to solve much harder problems than what I'm suggesting.
It should be obvious to you why the argument "I tried to do x in toribash and i gave up because it was too hard, therefore x is impossible in toribash" is silly.
Imagine you are building a bridge across a stream, and the builder you are asking for help tells you "Don't waste your time, I tried to build a bridge and it was a lot of work and I never got anywhere, so no one ever will".
Actually, it's more like 'I tried to do x in toribash, but I came to the conclusion that x wouldn't work right regardless of what is done, so anyone who tries it will spend the same time I did to find out what doesn't work, so I should tell them the problems with what won't work from the start, so they can notice them sooner, to either work around them, or simply give up.'
Addressing your other points:
1. Training neural nets is fun. I won't deny that. However, you again underestimate the strength of modern neuroevolution methods. Toribash right now has no single player a.i., so every game will strictly be against yourself. If you don't think people would love the chance to fight a challenging opponent in single player mode you are not being honest with yourself.
There is my botnn.rar which uses a very simple 'neural net', which isn't a neural net at all, but whatever. It's packed with Toribash and can learn quite a bit if given time, however will only be effective against one move.
2. There ARE ways of getting around the frame/tic limiter or any other locks Toribash has in place to control the speed of execution. Like I've explained before, its possible to write a "wrapper" that fools toribash into thinking its drawing, but all the opengl calls don't do anything or waste any computational power. There are probably easier ways than this as well; in other words this is not an unsolvable problem, or even a very hard one. I do NOT want to go to all the effort of writing my own openGL wrapper until I hear back from Hampa on if there is a simpler way.
Yeah, just what I meant. Those other ways may or may not exist, but talking to hampa to get a limit-free version would be an easier way.
3. Your understanding of how good neural nets are is based on your experience with fixed topology networks, which is an entirely different approach than what I'm talking about. With NEAT, the network changes dynamically to become better, so control systems and the like evolve without any special effort on the programmers part.
Like I said, I haven't tried this kind of neural net, so I don't know first-hand what it can or can't do. I am simply speculating up to a point. The problem I still see is that to train, you're basically interfacing Toribash with Java, and unless they're spot on, something's going to happen. But if you work together with hampa to get Lua fixed, that could work. By getting Lua fixed, I mean adding the stuff that's needed, and fixing I/O, which still won't exactly run perfectly. (Slow file-writing, for one. Takes up to a second for it to actually write a small number. Last time I tested was 2.8, however.)
If you wanted to evolve a Toribash AI that could both block, and jump, and dodge, there is no better way to do this than with NEAT; if you don't believe me, ACTUALLY READ WHAT IT IS and check out some of the experiments performed with it. Control systems emerge automatically if you set up the fitness criteria cleverly. For an example of this, check NERO at nerogame.com which actually uses a realtime implementation of NEAT to control little soldiers in an RTS kind of environment. It's quite easy to evolve soldiers that can choose between complex behaviors like fleeing or attacking on the fly based on their environment.
I see you've played NERO too. I have, and have used its source code to study neural nets myself, at start. However, the problem I see is that even in NERO. You
can get multiple behaviors, but it won't always work right. Less than 20% of the cases in my case. And I had been training them on walking through a maze for the previous 72 hours straight. And yet, they couldn't travel through one that is simply reversed. As soon as I moved anything 1 unit to the left, everything broke down.
If you are interested, the part I'm stuck on now is trying to reduce I/O use in the communication between Toribash and the other program. Right now, everytime toribash wants to talk to the other program, it has to save a file, and vice versa. I have a feeling its probably good to avoid writing to the hard drive about 10000 times a second for weeks on end, but I can't figure out how to save files outside of /data/scripts.
I believe, but I'm not sure, you could ask hampa to implement either a socket function, or a small memory heap dedicated to Toribash, to/from which other programs can write.
From what i see so far everyone seem to backup Jok and flame Tripwire....
Which shouldnt be the case , judging from the explanations he gave he really knows what he is talkin bout ... unlike Jok...
From what I see, you know nothing about coding nor neural nets, and simply came in, and saw one of the sides, and chose to be on that side. No-one was 'winning' the argument, we were basically going on about two different things in the first half, because I misunderstood what kind of neural net it would use.
Also, I did not ask nor want people 'backing me up'. It's their choice, and they based it off of how well they know me. I've been a member here for close to two years, and have shown them what I can do several times.