Advertisement

GameDev: Arena

Started by July 06, 2003 03:39 PM
538 comments, last by khawk 20 years, 7 months ago
quote: Original post by d000hg
Can we create a big array to store a representation of the level that way, or have no memory of previous events (which would also rule out any type of ''learning'' bot?


Khawk: You mentioned allowing a scripting, how is file access setup? Could we read and write to the harddrive during a bot battle in the finals? If so, what sort of setup is going to be done? That would quite easily allow for a learning bot.

Just note that I am not worried about others reading my strategy learning file, because it would be insane not to expect that.
[ Six Hour Game Contest | ( Thread | Blog | Wiki | 6hour Bio ) ][ Website | (Blog | Gallery ) ]
quote: Original post by d000hg
Oh and if we are on a 1.6GHz machine why would it take 4s to update - surely 4ms or even 4us is more realistic?


The numbers I gave were purely for the sake of example. Sometimes it''s easier to see the effects of something when you look at it in everyday terms.

quote:
How about a seperate prize for best entry by a non-professional, or some such idea?


We''ll see. Until the prizes are determined, I can''t make guarantees about anything.

Admin for GameDev.net.

Advertisement
quote: Original post by DakeDesu
quote: Original post by d000hg
Can we create a big array to store a representation of the level that way, or have no memory of previous events (which would also rule out any type of ''learning'' bot?


Khawk: You mentioned allowing a scripting, how is file access setup? Could we read and write to the harddrive during a bot battle in the finals? If so, what sort of setup is going to be done? That would quite easily allow for a learning bot.

Just note that I am not worried about others reading my strategy learning file, because it would be insane not to expect that.


You could do that.. I''m a little worried about the hard drive access time during an actual battle, though (initialization is fine). Just keep that part in mind.. if the framerate starts dropping, then we''re going to have some issues. The arena interface isn''t going to provide anything for outputting data to files, so anything of the sort will have to be done by you in the DLL.

Admin for GameDev.net.

quote: Original post by Khawk
quote: Original post by Xgkkp
quote: Original post by NatasDM
Good News!
...


Uhh..... My thikning goes along the lines of: Why not just write directinput into a test bot or something.


That would actually be the best way to make a manual test bot.


I''m worried about messing up the controls for the program. With Windows Hooks, I can install a filter without removing the keystroke.

Fortunately, I also have code for Direct Input too. I can take that route if it wouldn''t mess up the input for the Arena Executable.

See, Using Buffered Data in DirectX flushes the Data from the buffer. I would have to peek the data, which I''m sure I can do with some flag. All of this is dependant on whether or not the Arena execuatble has an exclusive lock on the keyboard. If it doesn''t, then great, I can probably use DirectInput without problem. If it does
There sure;y shouldn''t be a speed problem with such a simple level layout on a modern machine that would make hard-drive access a problem. I take it these battles are being run real-time not speeded up by a factor of several thousand (which would give a winner in a coupla minutes without having to watch any fights )
quote: Original post by NatasDM
quote: Original post by Khawk
That would actually be the best way to make a manual test bot.


I''m worried about messing up the controls for the program. With Windows Hooks, I can install a filter without removing the keystroke.

Fortunately, I also have code for Direct Input too. I can take that route if it wouldn''t mess up the input for the Arena Executable.

See, Using Buffered Data in DirectX flushes the Data from the buffer. I would have to peek the data, which I''m sure I can do with some flag. All of this is dependant on whether or not the Arena execuatble has an exclusive lock on the keyboard. If it doesn''t, then great, I can probably use DirectInput without problem. If it does



If you really want to test, then make an MFC app that receives a keypress from one of the function keys (i.e. F5). Tie DInput in there and see if you can still receive the F5, or if DInput takes it over. The arena executable doesn''t have an exclusive lock on the keyboard.. it''s just using MFC and OpenGL.

Admin for GameDev.net.

Advertisement
quote: Original post by Khawk

And yes, it does suck that it hurts the faster bot as well. For this particular contest, it's just part of the challenge.



Hi,

I wondered if it wouldn't be possible to reward faster bots? I mean, what's the point to write fast bots if the other bot take 3X the computation time you take? All you get is that you'll be less accurate... sure you can brag about your fast update function, but in the end, the same level of AI with more computation time is most likely to win...

Just my 2 cents...

e.

[edited by - xEricx on July 10, 2003 12:38:51 PM]
quote: Original post by Khawk
quote: Original post by DakeDesu
Khawk: You mentioned allowing a scripting, how is file access setup? Could we read and write to the harddrive during a bot battle in the finals? If so, what sort of setup is going to be done? That would quite easily allow for a learning bot.

Just note that I am not worried about others reading my strategy learning file, because it would be insane not to expect that.


You could do that.. I''m a little worried about the hard drive access time during an actual battle, though (initialization is fine). Just keep that part in mind.. if the framerate starts dropping, then we''re going to have some issues. The arena interface isn''t going to provide anything for outputting data to files, so anything of the sort will have to be done by you in the DLL.


What would the working path be in comparison to the DLL? I was thinking of reading something via fin.open("./blah.bla"); but that just might cause things to get weird.
[ Six Hour Game Contest | ( Thread | Blog | Wiki | 6hour Bio ) ][ Website | (Blog | Gallery ) ]
quote: Original post by xEricx
I wondered if it wouldn''t be possible to reward faster bots? I mean, what''s the point to write fast bots if the other boths take 3X the computation time you take? All you get is that you''ll be less accurate... sure you can brag about your fast update function, but in the end, the same level of AI with more computation time is most likely to win...


It is about reaction time. If a bot''s AI is faster, it does not matter if another bot is more accurate if it takes three times as long, because in that three times, the faster bot gains three more moves. That means after two moves on the more accurate bot, the faster bot has had six moves. After three moves on the more accurate bot, the faster bot has had nine moves.

You follow?

-=-
"Boy? Girl? It does not matter, all that matters is power, and beauty is power. I am beautiful, so I have power and that is all that matters."
Got Immortality?
[edited by - Timestamp_Zero on January 1, 1970 00:00:00 AM]
[ Six Hour Game Contest | ( Thread | Blog | Wiki | 6hour Bio ) ][ Website | (Blog | Gallery ) ]
I thought of a better idea for the whole timing issue.. I''ll just lock the framerate. That way there''s a set amount of time for bots to finish their update cycle. I''ll figure out a reasonable number in the coming weeks.

Admin for GameDev.net.

This topic is closed to new replies.

Advertisement