Posts for qFox


Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Ok so I'm thinking of a short trial contest to get things straight. After some discussion with Xkeeper we'll try it without a limit. That means you're responsible for your own constraints. However, be warned that I'll knife yer bot if it takes too long. You can do the math for yourself. If it takes 2 seconds for each frame to finish computation, it takes too long. I've put two example scripts on the site to play with ( http://cbc.qfox.nl/news ). Unfortunately FCEUX seems to be bugged at the moment (for me anyways) and won't accept player 2 input when you set player 1. Kinda weird that nobody reported this so far. Anyways, I think we should start with a short compo, say two weeks, with an easy game. Just to see if things work out properly. So I'd like a simple game that doesn't take a lot of work. Probably a two player game like tetris, boxing or something like that. Something that doesn't take a whole lot of time :)
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Xkeeper: I'll ask, should be possible... Bisqwit: I see no problem with that, every bot can read it so there's no advantage. It's a matter of strategy.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
No, a function will be programmed in C to kill a function after x operations have been executed. I'm not sure yet on the specs of what constitutes an operation, but you can be certain that it can't be avoided or ignored. :) This way everybody will have EXACTLY the same constraints as everybody else, and better yet, can test this on any computer (since the operations limit is time independent). This allows contestants to test their bots at home and be sure that the bot will function properly on the (possibly slower) computer of a judge. If the constraint was time, a coder on a fast computer would have to anticipate the speed of the computer of the judge and adjust the bot to a guessed time constraint.... And to repeat, the fceux.run(function, ops) will execute a function and kill it if it crosses the given number of operations. Killed by C, so it cannot be influenced by Lua (nor the bot). It's like you can't prevent yourself from dying, eventually, but "god" can ;) But you can take your own life, like the bot function can just return :) The exact number of operations will have to be found by trial and error. I have no idea at the moment.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
I don't see that problem really. As the framework shows, there is a number of allowed operations (equal to everybody). The framework will create its own savestate prior to calling both bots to ensure they both get a "clean" state and the second call is to make sure the bot gets a proper chance of supplying input (in case computations exceed the given max). I don't really care how far ahead a bot wants to look, trial and error or whatever. All bots have the same restriction/options so I don't see this as unfair in any way? However, if everybody feels savestates should be out then that's what we'll do, obviously. But as far as implementation goes, I don't see the problem. Optionally we can make savestates more expensive (note that savestates are already implicitly limited by the max number of operations per frame).
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
I see that problem, however you can train it and initialize the node values and edge weigths by the script's init function.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
And you can still have a bot that relies on heuristics. Lua has it's own rng so you don't have to implement one. Also, I'd love to see a neural bot! Seriously!
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Ok, I've asked zero (the lead programmer on FCEUX) and he'll add a special function in Lua for this purpose. I hope DeHackEd will add a similar function to Snes9x some day. I've also started on the framework, which looks something like this: http://lua.pastey.net/97692 I haven't tested this at all (right now I don't even know whether _G actually works ;) but this is basically what I had in mind. Note that fceu.run(x,y) is a function that executes function x for max y operations. I think operations is the best thing because it makes things deterministic for in as far time goes (meaning people can test their bots properly at home and the speed of the judges machine won't matter). Also, I just thought about the movies and the result should obviously be recorded and published on the site as fceux/snes9x movie (and youtube later).
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Hmmm, there are pro's and cons to deterministic bots. Trust would however no longer be an issue, as it would be as if you're playing back a movie; everybody should see the same results.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
My intent was always to have scripts submitted and one person (or whoever run it) actually running the bots. Taping performance or whatever. I don't really see a network come into play here. Although you may have unintentionally created a netplay server for FCEUX and Snes9x ;) :D But the way I see it is that the contestants have to submit their work before the deadline. The last submission will be the one used. Once the deadline is over the bots will be set up and ran. Video's will be made (if this is feasible, uploading multiple passes of this is going to be a biiiiiitch, and maybe boring, but may also be the only "fair" way?) and the results posted. I do suppose there is some trust involved here as the judges are the only ones that actually run the stuff. Aside from deterministic bots (obviously), what's to say a judge won't just use the worst case of somebody's bot. But dunno how other people look at that possible issue. Obviously judges won't compete. But that's about as much as I can do about bias.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Bisqwit did you ever manage to get IUP running under Linux? I've heard it's a real bitch and so far I don't remember anyone doing it in conjunction with FCEUX.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
It's a nice framework, but don't you think the latency will make battling over a network take forever and ever? I'd prefer some framework that gives each agent a certain timeframe to do their computations and cutting them off when this limit has been reached, continuing the frame when all agents are done (one way or the other) untill a certain number of frames (or whatever goal) have been reached. This framework can then also pass on information like the playernumber for that bot. In such a framework, the agent can do whatever it likes in his time. When the framework advances a frame each agent is asked for it's input, the framework sets the input accordingly and advances one frame. The system should be easy, not sure about timing issues (since regular Lua has no Threads or anything). The reason we weren't picking versus games yet was because there was no such framework. But if you guys want to start with a versus game, a decent framework has to be agreed uppon, created and tested. Before the contest starts (obviously) :)
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
mz: any suggestions?
DaTeL237 wrote:
point-based championship (not a knock-out system).
In all fairness, I did mean knock-out system but a matrix system can work if that's preferred. Also makes multiple passes easier to do :)
DaTeL237 wrote:
Fair enough, but the number of reruns should be made available before the people start scripting
Yes, the aim is to publish every detail about a contest at the start of one.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Ah I missed that point, but that's a good point. I guess Arkanoid or Tetris are too generic for this. What about Dr Mario or another point scoring game?
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
From what I've read, there aren't a whole lot of bugs or glitches to exploit. Except for spamming the robots etc. It's more about acrobatic movement and near-misses. Also, the viewer has no idea how much trouble the runnerh as to go to to hit all the enemies with a CUS (rather then just hit it, which isn't very hard).
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Ah fuck the stats. I've set up a little website for it. It's very plain, but "designed" that way (read: too lazy to actually design anything, also because I'm not a designer). Anyways, that's basically what I had in mind. Gotta work on a submit system and what not, but I figure that stuff can be done later since it's not required right now. We do need to make sure all bases are covered though. Are we going to work with a framework? Or just try without for the time being? What game will we do first? A lot of people showed interest in Bomberman. Is the timeframe ok? Or should it be longer/shorter? Etc. Link: http://cbc.qfox.nl/ (Name is still up for grabs, but I'm going with "Console Bot Contest" for now)
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Well, this is about the best I can do: With this, perhaps the name should be The Marob Contest :p But I like the logo thing as well! My ps skillz are just suck suck.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Fauslebf21k? A bit hard to pronounce I think.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Also, if anybody has a name for it, please do tell :) Otherwise it'll be emulua contest or something like that.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Anyone wanna design a logo for the site? I'm thinking Mario's head on a R.O.B., bloody and all as if it's been ripped off :p
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
I've seen your comments ;) All I can say is that I don't like to barrel roll through the system all the time. I prefer to stay out of the way of obstructing views. When there are obstacles I do like to play around with them. When (and if...) I make the actual run I'll do it the way I like, submit it here and post it on youtube. If whatever I create isn't good enough here, well then that's tough luck really. From what I've seen so far, it's usually hard enough just to catch 'em all.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Ok, I'm slowly picking up Meepers' run. For the moment that means I'm just trying to match her score. 20 kills in and I've already found an annoying "feature" of the game. The scoring system works like this. You get points for killing enemies and you can get bonuspoints by killing enemies just for being within the blast radius of a charged up shot (CUS). Nothing new here. However, you actually GET the bonuspoints when you see the +x and the killpoint when the enemy CRASHES. The latter is important here. When the enemy dies some distance behind you, the point does NOT count. Most likely the game destroys leveldata behind you (since you can't ever go back there) including or excluding the enemy, but the enemy does never crash either way and thus never registers the point. Demonstration: http://nl.youtube.com/watch?v=k022FAeKhqg (0:40) I'm happy to say that I've redone the wip and am now matching the score at the same endpoint. Won't be posting another Corneria wip untill I'm done (let's not spam up youtube anymore than it already is ;)
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Technically, you can. Open the rom as file and read the appropriate byte from it :) (But point taken :)
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
Seriously, don't vote.
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
New suggestion: WIP-bench :p
qfox.nl
Experienced Forum User
Joined: 4/25/2004
Posts: 615
Location: The Netherlands
DeHackEd: the protection was ripped from fcuex due to it crashing iup scripts... But yeah, we can use a framework and regulation.
qfox.nl