Click to See Complete Forum and Search --> : Code war
Gabriel Fleseriu
January 12th, 2003, 07:35 AM
As we actually are a programmer community, I thought we could start a little game, if enough of you are interested. The idea is not new and we'd need to refine it, but basically here it is how it works:
It is a simulation of a very simple environment (a rectangular grid) populated with a number of "creatures". The environment is a host program and the creatures are instancies of some classes, all of which expose the same public interface. Each of the classes is coded by one participant to the "fight".
The creatures can move on the grid, can query what is on the eight grid positions surrounding them (e.g. nothing, other creature, wall), can harvest resources, can breed, can fight each other, can get hurt and can die. Each creature has a number of capabilities (e.g. strength, speed, breeding rate) which are coupled with each other by some simple rules. For example, a big and strong creature needs to harvest more resources to survive.
The game is turn based and its maximum duration is a fixed number of turns. The winner is the one whos creatures survive best.
Of course, all of this has to be refined in order to work. There are some things that I find important:
- everything is open-source. The ultimative goal is to learn from each other.
- cheating, like 'hacking' the environment, leads to the immediate disqualification
- as we want programmers using other languages than C++ to be able to participate, we need to find a solution that allowes programming a "creature" in as many languages as possible (COM?)
Well, basically that's it. I'm posting this here in the Chit-chat and not in Programming projects or so, because I want to see whether you guys are interested in the first place.
Any ideas, feedback and critique are welcome. :)
Simon666
January 12th, 2003, 09:01 AM
Originally posted by Gabriel Fleseriu
...
No comprehendo. Could you formulate this more simple? As I understand it:
1. We write a somple game in open source, e.g. using simple OpenGL or DirectX for visualisation together.
2. We write a number of simple rules together.
3. We try apart to write the best AI routine for a creature and set the creatures parameters optimal.
I think this comes down to allow the person with the best knowledge of neural networks and artificial learning to win.
Gabriel Fleseriu
January 12th, 2003, 09:07 AM
Originally posted by Simon666
No comprehendo. Could you formulate this more simple? As I understand it:
1. We write a somple game in open source, e.g. using simple OpenGL or DirectX for visualisation together.
Yes and no. I was rather thinking about a more simple host -- a program that logs each turn to a file. Some other program could "visualize" the battle.
2. We write a number of simple rules together.
Yes.
3. We try apart to write the best AI routine for a creature and set the creatures parameters optimal.
I think this comes down to allow the person with the best knowledge of neural networks and artificial learning to win.
At first, yes, the one with the best knowledge about AI would win. But as his code for the creature also is open source, the others can quickly learn the tricks.
[Edit:]
Oh, one more thing: of course there won't be one battle, but something like a tournament, where everyone is allowed to check the code of ALL creatures from the previous battle, and improve his own creature. And this goes on as long as we have fun.
mwilliamson
January 12th, 2003, 01:31 PM
Sounds cool, but I say we make it c++ only. Its much easier than com which will make things harder for everyone.
Goodz13
January 12th, 2003, 11:00 PM
Not everyone in the community programs in C++.
Gabriel Fleseriu
January 13th, 2003, 12:52 AM
I'd say "C++ only" is not an option. As Goodz13 said, "Not everyone in the community programs in C++". The host may be written in C++ (as it is not very relevant), but people coding in C#, Basic and Java should also be in the position to participate if they wish.
dimm_coder
January 13th, 2003, 08:59 AM
Great idea Gabriel!!!
Some time ago, I had read about such game for c# programmers. Some developers from M$ made it for popularization of c# and every programmer can create own creatures which can live in this virtual world. Did U hear about it? I can find some links to it.
And there are some open championants was made.
So, after I had read it (near 1 month ago), I had idea to write my own virtual world with creatures! But I hadn't enough time. After 1,5 weeks I will be more free. If U are interested to, we can discuss it together. For ex. we can organize "open project" somewhere, take peoples for it from Codeguru for ex.
So I agree to take part and If U've spoke about it seriously we can discuss it :)
proxima centaur
January 13th, 2003, 10:11 AM
So this would be like a robo war kinda of game?
Sounds cool.
Andreas Masur
January 13th, 2003, 11:49 AM
Originally posted by proxima centaur
So this would be like a robo war kinda of game?
Sounds cool.
Well...I do not know what robo war is (is it actually a known game or just a description for the kind of a game??)...but I thought more into the direction of Doom.... :D
DSJ
January 13th, 2003, 12:07 PM
Microsoft already has a game like this... check out http://www.gotdotnet.com/terrarium/
Simon666
January 13th, 2003, 12:38 PM
Originally posted by DSJ
Microsoft already has a game like this... check out http://www.gotdotnet.com/terrarium/
gotdotnet? What if dontgotdotnet like me? :D
DSJ
January 13th, 2003, 12:47 PM
I guess getdotnet!! :D
Simon666
January 13th, 2003, 12:57 PM
Originally posted by DSJ
I guess getdotnet!! :D
What is the price for dotnet again? I'm afraid it will remain dontgotdotnet for a long time. :rolleyes: :(
TheCPUWizard
January 13th, 2003, 01:03 PM
.NET Framework - Free download from MSDN
VC.NET or VB.NET - $105 (US) From Microsoft Direct
VS.NET - Close to $1000 (US)
DSJ
January 13th, 2003, 01:53 PM
You can also upgrade for around $550 (US) if you have licensed copies of several MS packages.
Andreas Masur
January 13th, 2003, 03:30 PM
Originally posted by Simon666
gotdotnet? What if dontgotdotnet like me? :D
Then I would say that youhavelost.com.... :D
JeffB
January 13th, 2003, 03:52 PM
Interesting Gabriel.
Do you plan on a game that is turn-to-turn based or something that is more fluid? I mean each creature act one by one or, depending on the time your code takes, your creature just sit there thinking its next move?
JeffB
mwilliamson
January 13th, 2003, 07:25 PM
I thought it was going to be something with out any visual output per say, other than maybe statistics. I thought that game would work on a grid basis.
I thought that there would be several base classes, that you could dervive your creature from. They would all have different values set for health, vision distance, movement speed, etc. You are not allowed to change those values. The base classes would have some built in functions that you over-ride, and some that you can't. For example, there may be a decide movement function that you override, which calls a move function and makes sure you move is with-in your set movement distance. The basic idea would be move around the grid, pick up health / power ups and attack other creatures. Whoever uses the best logic to decide when to move, attack, etc. would win. Some base classes may even have added functions that could give you useful information, like other player's statistics so you can decide to attack them. Maybe less powerful base classes would give you an inaccurate estimate of your oponents.
I think you would be allowed to do certain things on your turn, like move with in your movement range, reveal x number of squares with in your vision range, attack an adjacent player, put up defences...
For compatibility, maybe would could develop classes for c++, c#, vc and java and have the users make a .dll which exports the necessary functions called by the host.
I did also like the idea about processing time effecting your creature. Maybe have a time run while the class decides his move and increase the stats of players who use the least amount of processing time, on a bell curve system. ie. top 25% percentil (fastest) get 5% movement, attack, health etc increase of the class's choice :) This would add an interesting effect to the game, that if you are wounded badely, you can not move and regain health. By not moving you could gain health. This would punish languages that don't run as fast though. For example, identical code written in vb compared to c, or even assembly runs at completely different speeds.
We should also implement a catch all exception type system and punish players for causing access violations and not handling thier exceptions :)
Let me know what you think!
CBasicNet
January 13th, 2003, 09:17 PM
Originally posted by TheCPUWizard
.NET Framework - Free download from MSDN
VC.NET or VB.NET - $105 (US) From Microsoft Direct
VS.NET - Close to $1000 (US)
Well, Simon can get Academic edition of VS.Net Pro (for non-commercial use) since he is a student.
In my country, VS.Net AE costs US$120 and VC.Net AE is US$114, obviously MS is encouraging students to get VS.Net AE.:D
TheCPUWizard
January 13th, 2003, 09:22 PM
That is correct, but the AE does impost some very strong limitations. If you want to play, it is not a bad deal, if you want do develop and have a low budget:
1) Pick one language and just by the full version of that part $105
2) If you are not affraid of command lines and have a good editor you can program (e.g. SlickEdit), down load the free command line only version and wrap up your own IDE $Free [editor not included].
CBasicNet
January 14th, 2003, 12:55 AM
Looks like I'm not qualified to participate in this code war. I don't know any AI or Neural Networks; Programming by 'brute force' without AI is not going to work. It will take me at least 6 months to master it (in my free time). Just checked with my neighbourhood library database, it seems that they do not have AI books!:mad:
Andreas Masur
January 14th, 2003, 01:35 AM
Originally posted by CBasicNet
Looks like I'm not qualified to participate in this code war. I don't know any AI or Neural Networks; Programming by 'brute force' without AI is not going to work. It will take me at least 6 months to master it (in my free time). Just checked with my neighbourhood library database, it seems that they do not have AI books!:mad:
Well...I do not think so...I do not know very much about AI myself but I think Gabriel's idea is more a generic one. It should not be only a game for people with highly AI skills but rather a 'fun' project where actually everybody can learn some things.
To my mind the whole thing (at least since it is originated here at CodeGuru) would only make sense if the knowledge is actually transferred and being explained between every participant....
Gabriel Fleseriu
January 14th, 2003, 03:03 AM
Originally posted by Andreas Masur
Well...I do not think so...I do not know very much about AI myself but I think Gabriel's idea is more a generic one. It should not be only a game for people with highly AI skills but rather a 'fun' project where actually everybody can learn some things.
Yes, that's exactly what I was thinking. I myself am not an AI expert, I never coded an AI.
To my mind the whole thing (at least since it is originated here at CodeGuru) would only make sense if the knowledge is actually transferred and being explained between every participant....
Yes. Transfer of knowledge and fun are the main goals of the project. That is why I said that everything should be open source -- and, come to think of it, it should be more than that, meaning that the participants should agree to explain their design and their code (to a reasonable extent, of course).
Other people who want to contribute could write programs for visualizing the battles (i.e. interpreting the log files the host outputs).
I know that Microsoft already has such a game. They are not the first ones -- the idea is not new, but rather a very old one. I see the fact that this was already done before not as an argument why we shouldn't do it.
As for the game design, my idea was starting with a simple, but solid base, and refine that afterwards. I think that solving the problem on how to design it so people using other languages than C++ can participate is more important right now than talking details about the creature design.
dimm_coder
January 14th, 2003, 03:20 AM
Gabriel, so may be it will be right to open project on SourceForge or somewhere on CodeGuru, if it will be possible.
Then about people are interested about it. Is it open for everyone, I mean to take part in coding all mechanizms? Can I take part for ex. I have wrote above, that I had such idea to.
Gabriel Fleseriu
January 14th, 2003, 05:01 AM
Dmitriy,
this is open for anyone i.e. every piece of information is open to all participants and to the entire CG community. Everyone is invited to participate, with code, ideas, suggestions, comments and so on.
If there are at least 5-6 persons seriously interested in coding, we can ask Brad to open a forum for us in the Programming Progects.
dimm_coder
January 14th, 2003, 05:25 AM
Originally posted by Gabriel Fleseriu
If there are at least 5-6 persons seriously interested in coding, we can ask Brad to open a forum for us in the Programming Progects.
Nothing else matters :) Ok! As for me, I will be happy to take part in coding.
Does we have minimum 2 persons now?
Simon666
January 14th, 2003, 05:44 AM
Originally posted by dimm_coder
Nothing else matters :) Ok! As for me, I will be happy to take part in coding. Does we have minimum 2 persons now?
Count me in for the visualisation. I'm willing to learn some more about that in the process.
Andreas Masur
January 14th, 2003, 05:54 AM
Originally posted by Gabriel Fleseriu
If there are at least 5-6 persons seriously interested in coding, we can ask Brad to open a forum for us in the Programming Progects.
Well...as long as you will not push me with deadlines and such you know my answer... :cool:
(And for the remaining readers: Yes...I am willing to try coding as well....) :eek:
CBasicNet
January 14th, 2003, 06:15 AM
Originally posted by dimm_coder
Nothing else matters :) Ok! As for me, I will be happy to take part in coding.
Does we have minimum 2 persons now?
You meant coding for the host program or coding as a participant or both?
If both, I hope you will not implement 'backdoors' for yourself which you can request for hidden features that other participants have no access to, like where are all the locations of the rival's food and creatures. :p :D
P.S. Just a joke!
Simon666
January 14th, 2003, 06:25 AM
Originally posted by CBasicNet
If both, I hope you will not implement 'backdoors' for yourself which you can request for hidden features that other participants have no access to, like where are all the locations of the rival's food and creatures.
You foooolllll!!!! You have just given me an idea. Mwooaaahahahaha. :D No, I guess that is impossible if it is open source. Unless the code is unreadable, which might be an issue.
CBasicNet
January 14th, 2003, 06:40 AM
Originally posted by Simon666
You foooolllll!!!! You have just given me an idea. Mwooaaahahahaha. :D No, I guess that is impossible if it is open source. Unless the code is unreadable, which might be an issue.
Actually, in my previous post, what I was wanting to say was that those agreed to code, should state clearly whether coding as a volunteer coder or as a participant coder.
Simon666
January 14th, 2003, 06:44 AM
Originally posted by CBasicNet
Actually, in my previous post, what I was wanting to say was that those agreed to code, should state clearly whether coding as a volunteer coder or as a participant coder.
In that case, volunteer coder.
Andreas Masur
January 14th, 2003, 07:07 AM
Originally posted by CBasicNet
You meant coding for the host program or coding as a participant or both?
I would say both... :cool:
Originally posted by CBasicNet
If both, I hope you will not implement 'backdoors' for yourself which you can request for hidden features that other participants have no access to, like where are all the locations of the rival's food and creatures. :p :D
P.S. Just a joke!
That is why it will be open source... :cool:
dimm_coder
January 14th, 2003, 07:47 AM
Originally posted by Simon666
You foooolllll!!!! You have just given me an idea. Mwooaaahahahaha. :D No, I guess that is impossible if it is open source. Unless the code is unreadable, which might be an issue.
U've opened my plans .. arghhh...
Yeh, Simon, but look depper. If this game will be popular ( ohh ahh ohhh dreams :rolleyes: ), we will have many client programs with backdoors to get access to users comps :)
If seriously, I am interested in coding both part (I think that this program must be client-server (but we can discass it detailed later).
So it seems that we have some peoples are interested in codding: Gabriel, I am, Simon, Andreas.
Is anybody else?
I think Yves may be. But where is he?
Ohh, and about safety of open source code.
As I remember, at 70-th years Thompson made one test.
Everyone think: If we need to check some program for safety and we have it's sources, that means we will be check sources and will not disassembly binary code. He removed original compiler or some of it's libs to own, which could provide backdoors. So as result when code was analized all be ok, but after it was compiled, it got backdoor in it.
This shows a way to do it. U can for ex. give putched sys lib for all developers and say that it is latest and best version :)
Elrond
January 14th, 2003, 08:06 AM
I might give it a try as participant later, but I don't have much time now.
I can still participate a little in the definition of the game (board, creatures, ...).
mwilliamson01
January 14th, 2003, 01:41 PM
I am willing to participate, or volanteer...
As for how to involve all langauges, why don't we require every to produce .dlls that export the functions or classes that are required by our host program. We will need the source from everyone who participates, to make sure they aren't cheating though :)
Andreas Masur
January 14th, 2003, 02:40 PM
Originally posted by mwilliamson01
I am willing to participate, or volanteer...
As for how to involve all langauges, why don't we require every to produce .dlls that export the functions or classes that are required by our host program. We will need the source from everyone who participates, to make sure they aren't cheating though :)
Well...it might be already too late for me...so excuse me....but I do not understand the above part. Without having thought about the whole design yet I would be under the impression that the host actually would be just the server...where clients will connect...via TCP/IP mainly I would assume...
So, I do not see why we need to wrap something within a dll...but as I said...it might already be too late for me... :cool:
Gabriel Fleseriu
January 14th, 2003, 04:25 PM
Duh -- this was a rather stressful day -- I hardly managed to have a look on CG. I'll try to answer all issues, in no particular order:
- I understand the word "participate" (to this project) very broadly: most of us have a job, a family, school, and other things that simply have priotity -- it is just normal that each of us will be able to invest more or less time in this. Some will code, some will just post ideas, it doesn't matter, as long as the interest remains. More than that, it is just normal that someone will have more time to spend now and less in future and that this will fluctuate. So, to directly respond to you Andreas -- if we do it, we do it for fun, so no one will set dead lines. Ok, maybe we will set some deadline for delivering the creature code for a battle some day -- but I think it is premature to think about that right now.
CBasicNet:
-I don't see any difference between 'volunteer coder' and 'participant coder'. We all are volunteers. Or did I misunderstand your statement?
Andreas:
Server, TCP/IP: that might be a good thought. Could you refine it a little bit? (To be honest, I was thinking on some DLLs or so :) )
Err...I'm tired. Did I miss something? I'm counting 7 people willing to participate (Yves also said in a IM that he is interested). I'd say let everyone interested make a small post clearly stating this, so we can count and write to Brad.
See you,
Andreas Masur
January 14th, 2003, 06:09 PM
Originally posted by Gabriel Fleseriu
So, to directly respond to you Andreas -- if we do it, we do it for fun, so no one will set dead lines. Ok, maybe we will set some deadline for delivering the creature code for a battle some day -- but I think it is premature to think about that right now.
Well...more or less I was just joking anyway... ;)
Originally posted by Gabriel Fleseriu
Server, TCP/IP: that might be a good thought. Could you refine it a little bit? (To be honest, I was thinking on some DLLs or so :) )
I will...tomorrow after some coffee and after figuring out whether it was already too late for me when I wrote the statement... :cool:
Andreas Masur
January 14th, 2003, 06:11 PM
Originally posted by Gabriel Fleseriu
Err...I'm tired. Did I miss something? I'm counting 7 people willing to participate (Yves also said in a IM that he is interested). I'd say let everyone interested make a small post clearly stating this, so we can count and write to Brad.
Okay...I will start with the small posts...I will participate... :cool:
CBasicNet
January 14th, 2003, 07:31 PM
Originally posted by Gabriel Fleseriu
CBasicNet:
-I don't see any difference between 'volunteer coder' and 'participant coder'. We all are volunteers. Or did I misunderstand your statement?
You must be too tired out or something.:)
Volunteer coders programs for the main host program to run other participants' code.
Participant coders programs as contestants.
They can be both!
*Now I imagine myself to be a very tired-out Gabriel and read the above, oh ****, Arghhh 'I' still don't understand!*
P.S. Just a joke, please don't ban me!!! :( :D
dimm_coder
January 15th, 2003, 02:59 AM
I will participate... :)
Andreas and Gabrial:
About remote TCP clients. I thought about it to. But this idea has some big disadvantages: every client must be online every time while battle has place and it will be enough low speed if every creature will be on remote client comp. It is not possible for most part of theoretical users. Now I think about other. We will have only some program for remote user which can look for all what has place on "virtual world" on the remote host at time when he wants. But creature, I think, must be on the main host and can work without his parent (this means user which wrote it).
But...but..but... Now we must have special thread somewhere where we can discuss it later :)
Elrond
January 15th, 2003, 04:54 AM
Having all creatures running on the same computer has the advantage to make comparison easier. It might be difficult to compare two creatures if one runs on a P133MHz (there must still exist some) and if its opponent runs on a P4GHz.
That's with the tcp/ip may not be the best solution, even more because it would be a real trouble having every combatant connected at the same time for the whole length of the battle. :eek:
On the other hand, if we make DLL, it allows a better comparison of all creatures, but it requires some impartial referee(s) that will run all the programs on his computer. But it seems the best solution to me for the moment.
Doctor Luz
January 15th, 2003, 05:22 AM
This project could be fascinating!
I would like too much to parcipate in it but I'm a poor bad programmer and it's a certaninty that my programming skils are very far from yours.
Will you accept a poor bad programmer who can only contribute with some ideas and bad english? :(
Gabriel Fleseriu
January 15th, 2003, 05:23 AM
I have sent a PM to Brad, asking him to open a forum for us in the Programming Projects. If he agrees, we will be able to split the various topics into separate threads there.
Gabriel Fleseriu
January 15th, 2003, 05:27 AM
Originally posted by Doctor Luz
This project could be fascinating!
I would like too much to parcipate in it but I'm a poor bad programmer and it's a certaninty that my programming skils are very far from yours.
It's maybe not the best, but certainly a very entertaining way to polish up your skills.
Will you accept a poor bad programmer who can only contribute with some ideas and bad english? :(
Of course! Welcome on board! :D
Andreas Masur
January 15th, 2003, 07:01 AM
Well...I did not have time to expand my thoughts about the TCP/IP thing yet since for some unknown reasons it is a pretty busy day at work...
Anyway as I saw many others seem to prove me right...in the sense that I was too tired yesterday... :eek:
I guess I will wait until we have a decision whether we will get our own forum or not before starting with big design discussions.
However, I would like to ask the others for the general design thinkings (having a host and such, what they are doing etc.) since it definetely looks like that I am missing some kind here... :confused:
Elrond
January 15th, 2003, 07:11 AM
Originally posted by Doctor Luz
This project could be fascinating!
I would like too much to parcipate in it but I'm a poor bad programmer and it's a certaninty that my programming skils are very far from yours.
Will you accept a poor bad programmer who can only contribute with some ideas and bad english? :(
Honestly, I hope I'm not a bad programmer, but I'm certainely not one of the best around as well. I'm still very interested getting involved in this project, as It should improve my skills, and I could still have a few good ideas.
My first idea would be about organization. I think we should have one thread in the forum that we will use in which ONLY one of us will write ALL the rules/definitions/... we will agree on. The ideas, rules, ... will be defined in other threads, and once we agree on one, the one responsible for this special thread will complete it with this new rule. This solution has the advantage that any of us or any new comer can consult all the rules simply by reading this thread. Probably Gabriel, who initiated the idea should be the one.
This thread should contain the technical rule, and also some "philosophical rules" such as "every participant must share its code with enough comments about the design of the creature to make it understandable" ...
Or may be all this can be splitted into a few threads (one for the game rules, one for the technical rules, one for the general code(board, DLL interface, ...)). Anyway, I think that would be probably one of the first things to set up before starting anything else.
Brad Jones
January 15th, 2003, 08:09 AM
I've created a forum called Code War. A copy of this thread has been put there by Yves.
Link to Project: Code War (http://www.codeguru.com/forum/forumdisplay.php?s=&forumid=50)
Brad
Brad Jones
January 15th, 2003, 08:18 AM
Here are a few recommendations:
Keep the initial project simple. Get it working. Once working, you can make a new project that has enhancements. If you build this correctly, it should be easy to build on existing code.
Gabriel/Yves: Create a sticky, closed thread at the top of the forum. Call it the Code War FAQ. Use this to post Q&As (FAQ) for this forum and for the project. This would include "What is Code War?", "Who can participate?", "What is the Goal of the project?", "How Code War works", "How to create a xxxx to compete in a Code War... (or whatever)", etc.
Remember to keep it fun!
By the way, I'll be interested in seeing a graphical front -end added at some point. To answer someone else's questions/comments.... Terrarium is Microsoft's 'battle' game. Someone also mentioned Robo wars. It is a similar concept done in java.
Brad!
Goodz13
January 15th, 2003, 09:36 AM
I'm interested in the Java side of this program, But I was wondering on the time line. I understand that this project is only in the planning stage, but I was wondering if someone could give me a rough idea.
Yves M
January 15th, 2003, 09:50 AM
Well, there is not really a time-table yet. Actually we're still trying to decide on the best architecture. COM has certain advantages for VB, is OK with C++, but not that easy.
The basic idea for the contest is that when we have finished the server and some sample clients in each language, there will be a weekly (or every two weeks) tournament. Something like this:
- Registration (may be optional, we'll have to see) by Tuesday
- Entry of programs by Wednesday
- Results published on Friday along with the source code of the entries
- Every participant is expected to provide some documentation along with the source code, such as what the strategy is and how it is accomplished.
- Each winner will post a medium-sized article in this forum to explain his program in more detail.
- The organisers will post the scores and the log of the contest alongside with comments.
Goodz13
January 15th, 2003, 11:13 AM
I asked another member of the Java Forum if he'd be interested in helping create the Java side of this program. Unfortunatly at the moment he is a little reluctant, but has brought up some very good questions.
Here's the orgional question I asked him:
Hi ***,
I'm not sure if you've read the threads on the Code War game that some of the members have been talking about.
Code War.
But I was wondering if you'd be interested in helping me with integrating Java with it (If the time line allows me to be able to work on it). The reason I'm asking is that you have a lot more knowledge/experience that I do with Java. I'm not sure on the Time Line yet, or the specs.
Here's another thread on the subject.
http://www.codeguru.com/forum/showt...threadid=226639
Derrick
and here's the responce with some questions that I beleve are of some value.
BTW I asked him if he minded if I posted his responce before I posted it.
Hi Derrick,
I had a quick browse of the Code War thread, and it looks superficially interesting, but very confused. Until there is a rational design and architecture, it will just go round in circles.
Why all the talk of DLLs? How can this be reconciled with using Java and other languages? What about people on Unix and Linux and other OS's? Has anyone mentioned CORBA?
Is it definitely a client-server application? if so, what's on the client? what's on the server?
In what way do the 'creatures' compete? In some virtual environment? Directly against each other? Managed by some controller?
Do they reproduce? grow? move? mutate?
What constitutes success or failure, winning or losing?
What does a client see?
What are the protocols?
How will it function, logically?
Someone needs to write a proper specification of what it is they're trying to achieve.
I might be interested once I know what Code War is actually supposed to be, but I probably won't have much time to spend on it. I usually get a few minutes here and there. However, priorities can change if things get really interesting
He also said that he'd hoped that the responce wasn't to negitive, but found that the thread was very vague, and I have to agree with him.
[Goodz13:edited to protect usernames]
Yves M
January 15th, 2003, 11:31 AM
Yes, the idea is pretty vague until now, but part of the fun is that we work on it together as a team, so it would be a bit bad if someone just said "This is how it is done, so live with it".
I'll answer the user's questions:
Why all the talk of DLLs? How can this be reconciled with using Java and other languages? What about people on Unix and Linux and other OS's? Has anyone mentioned CORBA?[Q/UOTE]
From the looks of it we will use local TCP/IP. An entry has to be submitted in source code that is compilable on Windows (with VC / VB / .NET / any java compiler that you guys would recommend). They are run against each other on the judge's computer.
[QUOTE]Is it definitely a client-server application? if so, what's on the client? what's on the server?
The server is handling the world data, the evolution of the world and stores the state of the creatures.
The client can store its state (the server will provide it with regular updates about health / food level and location) and has to tell the server which actions it takes.
In what way do the 'creatures' compete? In some virtual environment? Directly against each other? Managed by some controller?
They compete on the server. This means both connect to the server, the server handles the state information and the creatures choose their moves.
Do they reproduce? grow? move? mutate?
In line with the message in the other thread, creatures will not reproduce initially but will be able to move and get "powerups" from the environment.
What constitutes success or failure, winning or losing?
Good question. Initially I guess success would mean surviving against the opponent(s).
What does a client see?
I guess it will be turn-based (this is open to discussion), so a client can do one action in each turn. These actions will include scanning the environment and the response will be some sort of list of locations of objects / creatures / hazards in the viewing angle of the creature.
What are the protocols?
This is yet to be decided, but probably some custom TCP/IP thingy.
Goodz13
January 15th, 2003, 02:09 PM
...As for the Java Compiler, the Latest from Sun Micro Systems would be Java 1.4.1 Standard Edition (j2se 1.4.1_01).
I'll do a poll on the Java Forum to see what versions everyone is using.
I don't think there is anyone using MS J++ anymore.
Goodz13
January 15th, 2003, 02:12 PM
That shouldn't be a problem. I'll work on one this evening and post it here.
Yves M
January 15th, 2003, 02:16 PM
Hey, I didn't mean that you had to do it tonight :p The problem is that none of the network protocols is defined yet :/ But maybe you can give us indications on how we would do this.
galathaea
January 15th, 2003, 03:00 PM
This project seems very fun, and I would love to be a part of it! I have two other major projects I am committed to at the moment(one of which is my job...), but I don't see this as being much of a problem, since this project appears basic enough to work with that I don't see it consuming much resources to get a basic creature up (I'm interested on that end, mostly, since the server seems more involving), and more advanced algorithms can be added as time allows. But I need something fun to do right now, and this seems perfect!
*** galathaea strikes a vicious battle pose, exposing 4 eyes and a hungry tooth ***
Andreas Masur
January 15th, 2003, 05:32 PM
Originally posted by Elrond
My first idea would be about organization. I think we should have one thread in the forum that we will use in which ONLY one of us will write ALL the rules/definitions/... we will agree on. The ideas, rules, ... will be defined in other threads, and once we agree on one, the one responsible for this special thread will complete it with this new rule. This solution has the advantage that any of us or any new comer can consult all the rules simply by reading this thread. Probably Gabriel, who initiated the idea should be the one.
Well...this is a pretty important thing to my mind. Right now it is already pretty hard to read several threads which are related (like the TCP/IP, COM etc. thingie) before creating an answer. And even having this answer you need to decide where to post without having too much redundancy. I asked Brad whether there could be a little bit more organized 'subforums' within this forum to split up the individual tasks.
Everyone who is interested can read this here (http://www.codeguru.com/forum/showthread.php?s=&threadid=226630)...
Andreas Masur
January 15th, 2003, 05:43 PM
Originally posted by Brad Jones
Keep the initial project simple. Get it working. Once working, you can make a new project that has enhancements. If you build this correctly, it should be easy to build on existing code.
That is a pretty important thing I was thinking about yesterday as well while reading the thread. It is pretty important (to my mind) that we all forget about the nice and cool features we would like to see for now and do not take the Microsoft game as an example that we need to compete with. If you think about an application you want to build it is always easy to come up with many cool features etc. but most of the time this will end up with just thinking about it since the work would be that much that you will lose the fun while coding it...
Originally posted by Brad Jones
By the way, I'll be interested in seeing a graphical front -end added at some point.
Don't you think you are raising the expections again too high after just explaining how important it is to start with a simple thing... :cool: *Just kidding*
Andreas Masur
January 15th, 2003, 05:45 PM
Originally posted by Yves M
Judging from Gabriel's tries with VB and VC, the TCP/IP solution is not hard and is surely the most portable one. The only drawback I have is that I have no experience with this at all, so I hope someone else knows how to do this stuff (at least for VC and VB).
No problem...I can provide experience in this case... :cool:
Further information can be found in the appropriate thread...
XWing
January 18th, 2003, 11:36 PM
Does anyone remember AT Robots? It was a simple game where you wrote code for a robot in a simple form of assembly. The assembly defined how the robot would act etc. You interfaced with memory ports to get information on the location of other robots in the area through your sensors, you controlled the gun turret by rotating it a certain angle, you could view your armor etc.
In my opinion this was an awesome game, but it is an old game by today's standard. A remake of this game online with unlimited robots in a tournament style play would be awesome. But after reading your comments here's where I stand on this issue.
1) The code the creature is written in would have to be compiled/parsed down to an intermediary form such as a bytecode that would execute on a created execution engine which would regulate timing through the bytecode instructions themselves. This would allow each creature to maintain precisely the same time alotment by making the Virtual Machine rotate execution to each creature in the arena every VM instruction. This will make sure no creature/program has a timing advantage. Some instructions could be weighted with wait states where by a multiply has a wait state of 2 versus an add or assignment having a wait state of 0. This would emphasize good coding practices and efficiencies in algorithms and reflect real world computers.
2) An intermediary back-end could be written for perl/java/C#/etc fairly easily since it would just require recoding the back-end generator to the created execution engine. It might even be possible to use the Java VM as a start for the effort.
3) The execution engine would prevent any malicious code.
It would be difficult to allow certain compiled languages to compete since there exists no such easy ways to make them interface with a Java like VM due to there inherently unsafe practices (ie C/C++ pointers). Though I'm sure it is possible as I've seen many things come to be that I never dreamt of.
Didn't mean to go throw a big idea in your guys face but thats my 2 cents on the subject, I'm new hear too so i don't mind if you feel i'm butting in!
-XWing
Goodz13
January 19th, 2003, 02:26 PM
I'm not sure if you understand what was discussed. The idea of the Code War is a Client/Server application, where all the creatures are the Clients and they compeate on the Server.
I think the Server would decide who's turn it is, so there's no need for regulating time, because the server would do it automatically. The server would probally tell the Client Creature (if the creature requested it) if there is another creature, wall etc in the viewing range.
Because of the use of Sockets, the different languages should be able to communicate with the server with little problems. The only problem I can see is deciding how the communication process is done; port #, how the data is transmitted (Strings, bytes, etc), and how the data is processed.
As far as the Security is conserned, all source code will have to be submitted, reviewed, and compiled. I dought that these creatures will need any kind if FILE IO, so if there is, that sends up a flag, if they try to connect to another Socket (Flag), try to access the Registry (Flag), etc.
There should be enough people involved with enough experience in different languages to know what to look for if someone writes malicious code.
I think we could provide an interface that all creatures would have to go through inorder to connect to, and communicate with the server, ie a Class in Java, DLL for C++ and VB (Maybe C# I don't know), a script for perl (Don't know enough about this language to know it it has the ability to use Sockets), etc. Therefor if the creatures source even trys to make a Socket object, or access the server directly, it would be considered malicious.
galathaea
January 19th, 2003, 06:49 PM
I want to be able to write a creature with particular learning algorithms that evolve from tournament to tournament. Can I write to and read from a binary file for this purpose (I know how to do this, the can is asking if this is allowed)? This would act as the memory. Also, to know what actually happened during a game, can I make a logging text file that I can place summaries of what my creature knows about its environment and what choices it is making, so that I can analyze a game after a tournament to see if my algorithms need tweaking? What I think it basically comes down to is: will I receive my project directory back after a tournament so that I can evaluate any changed files? Because, I could expand my executable and place these memories into a separate section of the file structure, but I still would need to get my file back afterwards.
An alternative could be that I would open a nonlocal tcp/ip connection and communicate directly with my computer at home all of this information, but that opens a different line of questions.
And I guess it goes without saying that our creatures can't use socket interception code to take control over other creatures or place bomb code to blow up other peoples processes :rolleyes: ... Just thought that might be nice to say explicitly, since it would be quite easy to do and I doubt that is what is intended here (though, of course, such higher artillery wars could still be quite interesting, though they wouldn't emphasize AI techniques nearly as much and would likely destroy the host's computer several times each tournament)...
Anyway, this project is coming along nicely:)!
Gabriel Fleseriu
January 20th, 2003, 05:59 AM
Originally posted by galathaea
I want to be able to write a creature with particular learning algorithms that evolve from tournament to tournament. Can I write to and read from a binary file for this purpose (I know how to do this, the can is asking if this is allowed)? This would act as the memory. Also, to know what actually happened during a game, can I make a logging text file that I can place summaries of what my creature knows about its environment and what choices it is making, so that I can analyze a game after a tournament to see if my algorithms need tweaking? What I think it basically comes down to is: will I receive my project directory back after a tournament so that I can evaluate any changed files? Because, I could expand my executable and place these memories into a separate section of the file structure, but I still would need to get my file back afterwards.
Well, as long as you are explaining to the rest of us how your code works, you are allowed to write as many files as you want, and you will get them back of course (along with the complete log files from the server). Both the input and the results of a battle are open. Everything that is produced (code, files, logs) are accessible to everyone and may be reused.
An alternative could be that I would open a nonlocal tcp/ip connection and communicate directly with my computer at home all of this information, but that opens a different line of questions.
Nope, that's not a good idea
And I guess it goes without saying that our creatures can't use socket interception code to take control over other creatures or place bomb code to blow up other peoples processes :rolleyes: ... Just thought that might be nice to say explicitly, since it would be quite easy to do and I doubt that is what is intended here (though, of course, such higher artillery wars could still be quite interesting, though they wouldn't emphasize AI techniques nearly as much and would likely destroy the host's computer several times each tournament)...
Anyway, this project is coming along nicely:)!
You're right. Such things are not permitted. We will make a comprehensive list with all the rules a client has to adhere to.
aamirnadil
January 23rd, 2003, 05:58 AM
Hello guys!
I was thinking about the idea it looks very interesing how about i add some more.
What if we also introduce "Special Weapon" for every creature which will be devastating and will badly damage the opponent but the creature who uses its special weapon should pay some panelty in the form of some points (may be 20 or 30) and also a creature should be able to "retreat" like it can take a jump of 10 15 grids when it wants to run from fight but it will have to pay the panelty (20 or 25 point again ):D . How about that!
Aamir!
Elrond
January 23rd, 2003, 08:26 AM
aamirnadil:
We will probably think about this kind of thing in a later version, but we try to keep the first version simple. The main objective is to make something work!
SolarFlare
January 24th, 2003, 07:59 PM
Haven't seen this thread before...
This is a really cool idea! I'd be interested in controlling a "creature," despite my limited skills ;):eek:.
kbomb987
January 27th, 2003, 03:15 PM
Cool, so someone give a formal outline and let's start.
It sounds like we need someone to make:
1. The server program (which will have all the rules and process client requests etc). Will we need a dedicated IP address to host the server?
2. Client "monster" programs which each of us will make our own to connect to the server and run around in the world.
Uhg, we would need to define a whole client/server protocol!
Gabriel Fleseriu
January 27th, 2003, 04:03 PM
Originally posted by kbomb987
Cool, so someone give a formal outline and let's start.
It sounds like we need someone to make:
1. The server program (which will have all the rules and process client requests etc). Will we need a dedicated IP address to host the server?
2. Client "monster" programs which each of us will make our own to connect to the server and run around in the world.
Uhg, we would need to define a whole client/server protocol!
Have you seen this thread (http://www.codeguru.com/forum/showthread.php?s=&threadid=227457) ? ;)
DaveF
January 27th, 2003, 04:10 PM
Hi, I'm new to the forum so plz 4give my indescretions:
Has anyone been to:
http://sourceforge.net/projects/arianne/
???
might feed your hunger for game development.
Elrond
January 28th, 2003, 08:32 AM
Originally posted by DaveF
Hi, I'm new to the forum so plz 4give my indescretions:
Has anyone been to:
http://sourceforge.net/projects/arianne/
???
might feed your hunger for game development.
I haven't, but the purpose here is not really about game development (IMHO), but about learning to code communication protocols, AI and so on. It's more about technical learning in a way we can enjoy than about developing anything really serious (I think).
Everyone, even the best around here, will probably have to learn from each other in this project.
BertW
February 4th, 2003, 02:43 PM
Hi,
what is the goal of the game?
Is it fighting, so all of the creatures have to fight until one wins?
Or ist some kind of an artifial life simulation, the species having the biggest population and surviving longest are winning?
Will there be herbivores (can they attack?) and carnivores??
Bert
DaveF
February 4th, 2003, 04:00 PM
Bert,
This is kind of straying off of the topic of this thread (my fault). SourceForge's Arianne is a game engine that allows the easy creation of massively multiplayer games. (quote from their site) I play a game called Asheron's Call (AC) and program for a living. I'd like to combine the 2 pursuits and so have stumbled on SourceForge's site. It is basically OpenSource software. There's another one out there: www.worldforge.net that is trying to build an engine for more role playing oriented games.
Back to the intent of the thread... to learn to and improve one's technique's in programming communication protocols and AI.
SolarFlare
February 4th, 2003, 04:06 PM
Originally posted by BertW
what is the goal of the game?
That's a good point... how can we rank the creatures? Here's an idea: institue some sort of currency. Creatures can sell food, or rob creatures they've killed to gain money. This may not be the best way to give out the currency... we need to decide what matters the most. Possibly just the number of kills?
Originally posted by BertW
Is it fighting, so all of the creatures have to fight until one wins?
Or ist some kind of an artifial life simulation, the species having the biggest population and surviving longest are winning?
I was under the impression that creatures that died would be regenerated somewhere else on the field of play.
DaveF
February 4th, 2003, 04:50 PM
What is the point of the game... hmm.
Is this game intended to have creatures that are controled by users? or creatures that are programmed by users (AI)? (I like the concept of the later)
What about this...
1 - if a creature has enough mass accumalted it multiplies (or rather divides like an aoemba).
2 - a creature gains mass through game play. by consuming 'findables' as an herbivore or defeating another creature as an carnivore. What about omnivores?
3 - a creature looses mass by moving, fighting, digging, etc.
4 - once a creature dies... it is dead!
SolarFlare
February 4th, 2003, 04:57 PM
Originally posted by DaveF
What is the point of the game... hmm.
Each player programs a creature to play.
Originally posted by DaveF
What about this...
1 - if a creature has enough mass accumalted it multiplies (or rather divides like an aoemba).
2 - a creature gains mass through game play. by consuming 'findables' as an herbivore or defeating another creature as an carnivore. What about omnivores?
3 - a creature looses mass by moving, fighting, digging, etc.
4 - once a creature dies... it is dead!
Many rules have already been created by general consensus. If you look at the other threads in this forum, you will get a better idea of what the game will be like.
Elrond
February 5th, 2003, 04:31 AM
Originally posted by DaveF
What is the point of the game... hmm.
Is this game intended to have creatures that are controled by users? or creatures that are programmed by users (AI)? (I like the concept of the later)
AI.
It is not a game where people play with their creatures. They have to survive by themselves.
About the rules, there is another thread that gives more information, one of the things being to keep it very simple for the first version.
BertW
February 5th, 2003, 04:28 PM
Hi,
I have read the other thread about the environment rules. And I also understud that you want to keep it simple at the beginning.
But having the environment rules its not all. To write a client, the creature, I need to have a strategie. The env. rules only tell me what happend if I do some thing.
The goal defines my strategie, for example attack every thing I see or simply survive?
I would prever not a stupid attack everything. In the real world thing also going worser.
So my idea is to create a digital worlds of plants and animals.
Let us create animals with different surviving strategies, how to find food, hide or look for prey...
Bert
Krishnaa
February 10th, 2003, 02:13 AM
We need to FIX the game rules................. and protocol toooo..
BTW who will fix the peoples /responsibilities for server development ??
Gabriel Fleseriu
February 13th, 2003, 08:06 AM
Originally posted by Krishnaa
We need to FIX the game rules................. and protocol toooo..
Yes, we do need to do that.
BTW who will fix the peoples /responsibilities for server development ??
Hummm...I don't know. I posted a server skeleton code (http://www.codeguru.com/forum/showthread.php?s=&threadid=227457) but did not receive much feedback until now...not to speak about code enhancements or such.
Marina Vaillant
February 13th, 2003, 08:18 AM
wow, this thread is already very long!!
I'd like to participate... if I have time... But I guess then I would have to buy some Visual Studio environment, because I'm used of it at work. But I don't have it at home.
I have some AI knowledge since I studied some specific subject for it. And a bit at work too. But I understand this is not the goal of all this. I'm always in for some fun!
What else? I'm not sure to have time for it... I'll try.
Whatn else can the creatures do?? I read harvest and feed. Breed, does that mean reproduct? great! :)
So we have to define what they do when they find another creature : fight or mate.
Have you ever seen technosphere?? www.technosphere.org
Have a look, they have a 3D world (which we don't see much of) where thousands of creatures evolve and interact. It's fun to follow your own creature, and its kids afterwards when it got some before death.
They take into account the age of the creature too. Pretty interesting.
I'll read page 2 to end of this thread later.
Marina
Gabriel Fleseriu
February 13th, 2003, 08:52 AM
Originally posted by Marina Vaillant
So we have to define what they do when they find another creature : fight or mate.
LOL. I know it's around Valentine's Day, but I think for a first version we will have them fight, and not mate :D
I'll read page 2 to end of this thread later.
Marina
First of all, it'd be nice if you would participate. Don't worry if you cannot invest too much time in this, none of us can. And yes, it's for fun, in the first place.
I suggest you read thru the threads -- all of the info is here, somewhat spread across the threads, however.
So, welcome on board!
Marina Vaillant
February 13th, 2003, 09:31 AM
So, what does breed means?
Gabriel Fleseriu
February 13th, 2003, 09:45 AM
Originally posted by Marina Vaillant
So, what does breed means?
It means more or less that one creature divides into two creatures; like a bacteria or so. The resources of the original creature are devided among the new creatures. And it costs a turn.
Andreas Masur
February 13th, 2003, 09:46 AM
Originally posted by Gabriel Fleseriu
Hummm...I don't know. I posted a server skeleton code (http://www.codeguru.com/forum/showthread.php?s=&threadid=227457) but did not receive much feedback until now...not to speak about code enhancements or such.
Oooppsss...it seems that I have forgotten about some things last weekend hmmm?? Sorry about that...I am not sure when I will be able to leave the company today but I will take a look tonight...
Marina Vaillant
February 13th, 2003, 11:00 AM
I have a question. I've just read the beginning of the thread where you post the skeleton for the server (I did not download it yet).
You discuss about using or not MFC.
I wonder, if one use MFC, another uses STL, another uses another library (sorry I can't speak for other languages then C++) and all the source codes are on the server ...
I think I just answered my question. But let's go on.
So we deliver the source code before the fight, AND an exe ? And the referee have to trust that the exe is really the one of the source code?
OR
the referee has to compile all projects on the server machine in order to get proper exe? But then we have to tell him what libraries are used, and it gets pretty difficult for the referee to make it.
I'm talking about that because even with my projects I'm not sure sometimes about my compilation options. And I think it's a mess where they are bad to find why and how to correct them (for ex. optimization options!)
Marina
dimm_coder
February 13th, 2003, 11:19 AM
I haven't free time practicaly now, because I must rent the new place of live (flat) for me. That is problem now.
Nevertheless I've downloaded sources and will try to find some time to see it.
I didn't read this thread during last time, may be I lost something :( After quick view, I don't like MFC for network purposes. This is not crossplatform way and those big fat MFC. But I will try to see it more soon.
Andreas Masur
February 13th, 2003, 12:24 PM
Originally posted by Marina Vaillant
You discuss about using or not MFC.
I wonder, if one use MFC, another uses STL, another uses another library (sorry I can't speak for other languages then C++) and all the source codes are on the server ...
Well...the server will be written with only one programming language...most-likely C++...
For the clients it should not matter which languages has been used. That is why we did decided to use TCP/IP in the first place.
Originally posted by Marina Vaillant
So we deliver the source code before the fight, AND an exe ? And the referee have to trust that the exe is really the one of the source code?
OR
the referee has to compile all projects on the server machine in order to get proper exe? But then we have to tell him what libraries are used, and it gets pretty difficult for the referee to make it.
Basically I think there is only the possibility one...since I would not assume that one person does have all needed compilers and libraries....
Krishnaa
December 28th, 2006, 06:53 AM
Wow....no one has posted here since early 2003, is this project off or what?
Mr. C
January 4th, 2007, 05:17 PM
Has anyone here ever played the game roborally? I think alot of ideas could be derived from that.
PeejAvery
March 1st, 2007, 04:54 PM
Wow....no one has posted here since early 2003, is this project off or what?
In fact, who has the bots? Did anyone submit any? Who won?
Ejaz
March 2nd, 2007, 09:06 AM
It looks like that this thread had died its own death. Most of the contributers are no more around, and none from the next generation step in. Isn't it like a dead ship?
...Sniff Sniff, :( hay whats this smell? WATCH OUT ... :eek:
RapchikProgrammer
August 22nd, 2007, 04:52 PM
Very nice idea, i am up for this if there are more coders and someone for graphics! I think that instead of com dlls there shud be a basic scripting language for making your own creatures tho! That wud help a lot!
codeguru.com
Copyright Internet.com Inc., All Rights Reserved.