Archived

This topic is now archived and is closed to further replies.

GameDev: Arena

This topic is 5063 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Our next contest is quickly approaching its start date, but before we actually kick this one off, we're going to let you review the rules and give us feedback in case there is anything we may have missed or needs to be explained in better detail. The next contest is called "GameDev: Arena". The idea will be to develop a bot AI to fight in deathmatch battles against other bots. The last bot standing at the end of the double elimination tournament is the winner. Bots will be programmed in C++ using a predefined bot template provided to you by GameDev.net through a "bot generator". Bots are compiled as DLL's, which are loaded and executed by the GameDev: Arena core executable. The interface specifics will be available at the start of the contest. Please note that we anticipate this to be a difficult contest. Entrants will probably not be able to program their bot AI using "traditional" AI techniques. Please review the rules at http://www.gamedev.net/community/contest/gdarena/ and post any feedback you have here. Do not email us. We will not reply to any emails about the contest.
Kevin "Khawk" Hawkins
CEO and News Director, GameDev.net
Software Engineer, Raydon Corporation
Author, OpenGL Game Programming Contributing author, Game Development: Tricks of the Trade , "Using the UML in Game Development" Developer Diary

Share this post


Link to post
Share on other sites
It''s probably way over my skill level, but I''m excited I hope I actually know enough to be able to participate.

Share this post


Link to post
Share on other sites
Why C++ only? Other languages can generate DLLs. For instance "L33t War" (which was news here a long time ago) was a C++ program that used DLL files. For that I wrote a Delphi port (with additional Object Oriented Wrapper classes) without much problem. Without the extra wrapper it''s simply a matter of translating the header, an easy task.

Perhaps I should (finally) make a post about the need for a .NET style bytecode standard, so that we can start seeing some serious scripting possibilities in games .

Share this post


Link to post
Share on other sites
All entries must be received by the Midterm Entry Date. At this point, all bot DLL''s will be available for download. During the following two weeks, entrants are advised to adjust their bot strategies in response to other bots that have been entered. All official bot entries must be received by the Final Date.

What is to prevent people from submitting very basic bots and then basically rewritting their bot once they see the competition? And, even if it''s not intentional, what is someones "adjusted" bot turns out to be a basic rewrite? Perhaps this rule could be changed. Instead of allowing full bot editing after this point, only non-executable data files may be changed (though there would have to be clarification as far as scripting languages are concerned, since you could make your "bot" nothing more then a script reader)

Share this post


Link to post
Share on other sites
quote:
Original post by Michalson
Why C++ only? Other languages can generate DLLs. For instance "L33t War" (which was news here a long time ago) was a C++ program that used DLL files. For that I wrote a Delphi port (with additional Object Oriented Wrapper classes) without much problem. Without the extra wrapper it''s simply a matter of translating the header, an easy task.

Perhaps I should (finally) make a post about the need for a .NET style bytecode standard, so that we can start seeing some serious scripting possibilities in games .


Because I will be building the DLL''s myself, and I have to verify source code as well. All I own is VC++.

Share this post


Link to post
Share on other sites
quote:
Original post by Michalson
What is to prevent people from submitting very basic bots and then basically rewritting their bot once they see the competition? And, even if it''s not intentional, what is someones "adjusted" bot turns out to be a basic rewrite? Perhaps this rule could be changed. Instead of allowing full bot editing after this point, only non-executable data files may be changed (though there would have to be clarification as far as scripting languages are concerned, since you could make your "bot" nothing more then a script reader)


That''s actually the purpose. Source code will not be downloaded - only DLL''s and supporting data files. This makes it more challenging and levels the playing field.

Share this post


Link to post
Share on other sites
It is said the interface specifics will be available at the start of the contest, but will the executable be available? Or are we suppose to program a DLL without being able to test it?

Share this post


Link to post
Share on other sites
Failure of entry to execute its update cycle within a reasonable time frame (i.e. Entries must execute their update cycle within a TBD amount of time)

That''s why I''m interested in a bytecode standard (which I still haven''t posted about...). You can easily turn out a special case virtual machine that executes instructions one by one, ensuring 100% fair gameplay.

Problems here: Reasonable amount of time differs based on machine (even if you adjust for Mhz). Perhaps an "average" of so many interations. I think you also need a rule about threads here (as a clarification of "does not interfere with proper arena execution"), since they can steal CPU time (either to get extra time or to downgrade their opponent) with an extra thread.

Share this post


Link to post
Share on other sites
quote:
Original post by Mastaba
It is said the interface specifics will be available at the start of the contest, but will the executable be available? Or are we suppose to program a DLL without being able to test it?


Yes, the executable will be available, as well as documentation for the interface and the arena "rules".

Share this post


Link to post
Share on other sites
quote:
Original post by Khawk
Because I will be building the DLL''s myself, and I have to verify source code as well. All I own is VC++.




What''s to stop entrants from using this then:

"Entrants may use external libraries if desired, provided the bot DLL remains compatible with the latest version of the GameDev: Arena executable and does not interfere with proper arena execution."

One could just as easily make a C++ DLL which is simply a wrapper to yet another DLL. Even without the case of other languages this should probably be addressed in the rules.

Share this post


Link to post
Share on other sites
quote:
Original post by Michalson
Failure of entry to execute its update cycle within a reasonable time frame (i.e. Entries must execute their update cycle within a TBD amount of time)

That''s why I''m interested in a bytecode standard (which I still haven''t posted about...). You can easily turn out a special case virtual machine that executes instructions one by one, ensuring 100% fair gameplay.

Problems here: Reasonable amount of time differs based on machine (even if you adjust for Mhz). Perhaps an "average" of so many interations. I think you also need a rule about threads here (as a clarification of "does not interfere with proper arena execution"), since they can steal CPU time (either to get extra time or to downgrade their opponent) with an extra thread.


Ok, I can clarify that rule more. Threads are not allowed.

The issues you have brought up so far are not as much a factor as you''re thinking (minus the threads). I will clarify the time execution more, or maybe provide a different way of specifying time delay. In the end, if an AI is taking up too much processing time, it''s only hurting itself as much as the other guy. Everything is realtime-based.

Share this post


Link to post
Share on other sites
quote:
Original post by Michalson
What''s to stop entrants from using this then:

"Entrants may use external libraries if desired, provided the bot DLL remains compatible with the latest version of the GameDev: Arena executable and does not interfere with proper arena execution."

One could just as easily make a C++ DLL which is simply a wrapper to yet another DLL. Even without the case of other languages this should probably be addressed in the rules.



I''ll address it. Libraries cannot be proprietary, must be open source.

Share this post


Link to post
Share on other sites
Just a small request for clarification. Under contest rules you say that the submitted source will be placed in the public domain, but under legalities you say that authors retain the rights and ownership to their works. I though that public domain == abandonment of rights to the work. Or maybe I just don''t have my definitions straight

---
Visit Da Shovvkejs.

Share this post


Link to post
Share on other sites
quote:
Original post by TheSalmon
Just a small request for clarification. Under contest rules you say that the submitted source will be placed in the public domain, but under legalities you say that authors retain the rights and ownership to their works. I though that public domain == abandonment of rights to the work. Or maybe I just don''t have my definitions straight

---
Visit Da Shovvkejs.


You''re right, it''s a contradiction. I''ll change public domain to "publically available for download".

Share this post


Link to post
Share on other sites
quote:
Original post by Khawk
quote:
Original post by Michalson
What''s to stop entrants from using this then:

"Entrants may use external libraries if desired, provided the bot DLL remains compatible with the latest version of the GameDev: Arena executable and does not interfere with proper arena execution."

One could just as easily make a C++ DLL which is simply a wrapper to yet another DLL. Even without the case of other languages this should probably be addressed in the rules.



I''ll address it. Libraries cannot be proprietary, must be open source.



Not to sound like I''m whining/riding you, just to bring up legitimate concerns before the contest is actually running (that is what you asked for):

What if the "open source" DLL is written in another language. What if the DLL, or the AI DLL itself is written in C++, but doesn''t compile in your particular version of Visual C++ (anyone who''s ever used C++ knows how bad incompatiblity can be). Might I suggest having the AI DLLs compiled using a standard, easily available version (exact version, down to the build number) of something like GC++, that way everyone (even those without your version of VC++, I''m still using 5 for example) can be using the same compiler and we can hopefully avoid any problems?

Share this post


Link to post
Share on other sites
quote:
Original post by Michalson
quote:
Original post by Khawk
quote:
Original post by Michalson
What's to stop entrants from using this then:

"Entrants may use external libraries if desired, provided the bot DLL remains compatible with the latest version of the GameDev: Arena executable and does not interfere with proper arena execution."

One could just as easily make a C++ DLL which is simply a wrapper to yet another DLL. Even without the case of other languages this should probably be addressed in the rules.



I'll address it. Libraries cannot be proprietary, must be open source.



Not to sound like I'm whining/riding you, just to bring up legitimate concerns before the contest is actually running (that is what you asked for):

What if the "open source" DLL is written in another language. What if the DLL, or the AI DLL itself is written in C++, but doesn't compile in your particular version of Visual C++ (anyone who's ever used C++ knows how bad incompatiblity can be). Might I suggest having the AI DLLs compiled using a standard, easily available version (exact version, down to the build number) of something like GC++, that way everyone (even those without your version of VC++, I'm still using 5 for example) can be using the same compiler and we can hopefully avoid any problems?


I do appreciate it. This is exactly what I asked for.

That works for me. The idea is to prevent cheating, and I just need to be able to build the "official" version of a bot entry. Any DLL's submitted with the entry will be deleted immediately, so we have to be able to build the bots ourselves. The main reason is, and as you're bringing up, I don't know what code those submitted DLL's might be executing, and I'm not going to trust anyone.

Edit:
I will make Visual Studio the standard, but at a minimum it must compile with gc++. The "bot generator" generates the source code and VC++6 .dsp, but I won't be giving any instructions on how to setup DLL's in gc++ or any other version of VC++ (other people can choose to submit instructions, however).

Share this post


Link to post
Share on other sites
Now, with the main reason for compiling source code being the detection of hostile code, how does one deal with obscuration? C/C++ are basically the kings of obscuration among popular languages, even code written by a beginner or by someone with a different code style can difficult to read (imagine reading 1000-2000 lines of that code). Then consider both intentional obscuration, and the use of inline assembler (even if it''s not meant to obscure things)

Share this post


Link to post
Share on other sites
This is a damn good idea for a compo!
Too bad I''ve never done AI programming before.


"For crying out loud, she has fishes coming out of her head on either side. How can you find this hot?!"

"If anyone sees a suspicious, camouflaged factory being carried across the desert, they should report it immediately."

Share this post


Link to post
Share on other sites
This is great. I''ll join!

BTW. Kevin, you should include a "sample bot", only to ease the pain of getting everything to work before having to begin with the real AI.

/MindWipe

Share this post


Link to post
Share on other sites