Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Maar idd, ik zou wel kunnen beginnen op localhost, maar dat is geen goede oplossing als je cht de performance gaat testen (en dus ook systeemeisen e.d. gaat vaststellen)
-niks-
En die 0.1 seconde mag wel wat langzamer zijn denk ik. Als je binnen 0.1 sec je data op moet sturen, is dat 100 ms. Heb je gem. 40 ms nodig om de data te ontvangen, nog 40 ms om het naar de server op te sturen, 10 ms buffer, houd je 10 ms over voor je aiMLM schreef op donderdag 24 februari 2005 @ 14:08:
Mja, wel vergezocht, maar op zich als je wil dat mensen binnen 0,1 sec reageren, en je hebt een ping van 50, heb je nog maar de helft van je tijd over. Server moet er wel rekeneing mee houden dat het pakketjes naar host met hogere ping eerder verstuurd als de pakketjes naar mensen met een lagere ping... Test dat maar eens op localhost
Maar idd, ik zou wel kunnen beginnen op localhost, maar dat is geen goede oplossing als je cht de performance gaat testen (en dus ook systeemeisen e.d. gaat vaststellen)

Verwijderd
Je hebt daar een goed punt. Ik zou daarom nogmaals mijn idee willen pluggen om rondes te laten plaatsvinden met de maximale snelheid mogelijk (zoals ik hier heb geschetst).MLM schreef op donderdag 24 februari 2005 @ 14:08:
Mja, wel vergezocht, maar op zich als je wil dat mensen binnen 0,1 sec reageren, en je hebt een ping van 50, heb je nog maar de helft van je tijd over. Server moet er wel rekeneing mee houden dat het pakketjes naar host met hogere ping eerder verstuurd als de pakketjes naar mensen met een lagere ping...
Een vaste tijd per ronde introduceert alleen maar complexiteit en timing problemen waar je eigenlijk geen last van wilt (en hoeft!) te hebben. Het gaat tenslotte toch om het programmeren van een botje, laten we het dan niet overdreven moeilijk maken.
Verwijderd
Euh ja, vaak zat gedaan toen ik de netwerkcode voor coronel indoor kartracing aan het schrijven wasMLM schreef op donderdag 24 februari 2005 @ 14:08:
Mja, wel vergezocht, maar op zich als je wil dat mensen binnen 0,1 sec reageren, en je hebt een ping van 50, heb je nog maar de helft van je tijd over. Server moet er wel rekeneing mee houden dat het pakketjes naar host met hogere ping eerder verstuurd als de pakketjes naar mensen met een lagere ping... Test dat maar eens op localhost
Gewoon een kwestie van kunstmatige lag inbouwen, aan een server heb je ook niet veel omdat dat ook maar 1 specifieke situatie is. Als je het kunstmatig maakt kun je een hele range testen.
Dat is een stuk meer dan de AI in een beetje game van tegenwoordig te besteden krijgt
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Dat is zeer zeker een goed ideeVerwijderd schreef op donderdag 24 februari 2005 @ 14:53:
[...]
Je hebt daar een goed punt. Ik zou daarom nogmaals mijn idee willen pluggen om rondes te laten plaatsvinden met de maximale snelheid mogelijk (zoals ik hier heb geschetst).
Een vaste tijd per ronde introduceert alleen maar complexiteit en timing problemen waar je eigenlijk geen last van wilt (en hoeft!) te hebben. Het gaat tenslotte toch om het programmeren van een botje, laten we het dan niet overdreven moeilijk maken.
* MLM heeft daar overheen gelezen denk ik
Als mietje niet reageert vandaag zal ik es wat bijmekaar proggen dit weekend/volgende week
-niks-
Met tijd is naar, er moet gewoon zat tijd zijn. Stel dat ik een bot wil laten lopen op PHP, dan maak ik geen kans tegen C, no matter hoe briljant mijn algoritme is..oisyn schreef op donderdag 24 februari 2005 @ 17:26:
[...]
Dat is een stuk meer dan de AI in een beetje game van tegenwoordig te besteden krijgt
[ Voor 5% gewijzigd door Skaah op 24-02-2005 19:51 ]
Ja... dat is dus niet te doen, want als je het topic wel gelezen had, dan had je gezien dat we juist een server opzetten zodat iedereen met de programmeer/scripttaal van zijn keuze kan meedoen. De scripts op de server laten uitvoeren is niet doable, omdat je dan meerdere OS'es en ontwikkelomgevingen moet hebben.Mischa_NL schreef op donderdag 24 februari 2005 @ 20:02:
ik heb de topic niet gelezen maar waarom niet een script wat je upload naar de server waar deze gewoon dat script aanroept... niks lag lijkt me ?
Overigens, wat visualisatie betreft, we kunnen daar ook mooi een IRC-botje voor schrijven.
[ Voor 9% gewijzigd door Korben op 24-02-2005 20:26 ]
.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?
Ik heb nog wel een machine staan die hiervoor gebruikt kan worden, met een 10mbit verbinding van de TU/e (via Vestide)MLM schreef op woensdag 23 februari 2005 @ 19:55:
ik prog wel een server dan... probleem is ik heb geen serv om op te testen (wegens niet-door-mij-configureerbare-NAT op mijn kamer), thuis kan ik het wel testen, maar daar kom ik komende anderhalve week niet, dus als iemand daar iets voor heeft, dan doe ik het wel
maar dat is dus pas, als mietje morgen niet reageert op mijn meel
Het probleem is echter dat ik al vijf computers op mijn naam geregistreerd heb, en ik voor deze zesde dus geen IP meer kan krijgen. Maar als jij (of One, of iemand anders van de TU/e) het MAC-adres wil registreren, moet dat volgens mij wel werken. De machine kan (iig voor een paar maanden)volledig gebruikt worden voor de contest, en in principe kan ik er een OS naar keuze op installeren (al heeft Slackware of een BSD mijn voorkeur, zodat ik 't zelf kan fixen als er iets fout gaat).
Overigens ben ik ook van plan om gewoon mee te doen, indien niemand daar problemen mee heeft.
"Happiness is a way of travel, not a destination."
--Roy Goodman
AI misschien wel, maar die is geschreven in snelle talen, en geoptimaliseerd. Dit is voor elke taal, met elke snelheid, en elke moeilijksheid graad.oisyn schreef op donderdag 24 februari 2005 @ 17:26:
[...]
Euh ja, vaak zat gedaan toen ik de netwerkcode voor coronel indoor kartracing aan het schrijven was
Gewoon een kwestie van kunstmatige lag inbouwen, aan een server heb je ook niet veel omdat dat ook maar 1 specifieke situatie is. Als je het kunstmatig maakt kun je een hele range testen.
[...]
Dat is een stuk meer dan de AI in een beetje game van tegenwoordig te besteden krijgt
Waarschijnlijk gebruik ik alleen winsockAPI-calls, dus ik denk dat je dat met Wine oid wel kan draaien...
anywayz, ik zal binnenkort er eens aan gaan werken...
-niks-
Dat is natuurlijk dikke onzin. De briljantheid van een algoritme hangt niet af van z'n tijd, en daarnaast kun je óók in PHP in 10 ms behoorlijk wat doen.Skaah schreef op donderdag 24 februari 2005 @ 19:50:
[...]
Met tijd is naar, er moet gewoon zat tijd zijn. Stel dat ik een bot wil laten lopen op PHP, dan maak ik geen kans tegen C, no matter hoe briljant mijn algoritme is.
Je vergeet dat die AI wel een stuk meer doet dan wat hier de bedoeling is, en meestal in een veel kortere tijd.Pulsher schreef op donderdag 24 februari 2005 @ 21:51:
[...]
AI misschien wel, maar die is geschreven in snelle talen, en geoptimaliseerd. Dit is voor elke taal, met elke snelheid, en elke moeilijksheid graad
Dit alles neemt niet weg dat ik ook wel meer naar een turn based systeem neig, dit neemt de last van lag weg en geeft iedereen gelijke kansen. Maar ik zou er dan wel een tijdslimiet op zetten, van zeg een halve seconde. Het moet wel enigszins responsief blijven.
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Ik ben geen voorstander van een turn based systeem aangezien je zo 'afgesproken' attacks in de hand werkt. Als je met 10 bots bent kunnen 9 bots je meteen afmaken zonder dat je er iets kan aan doen..oisyn schreef op donderdag 24 februari 2005 @ 23:41:
Dit alles neemt niet weg dat ik ook wel meer naar een turn based systeem neig, dit neemt de last van lag weg en geeft iedereen gelijke kansen. Maar ik zou er dan wel een tijdslimiet op zetten, van zeg een halve seconde. Het moet wel enigszins responsief blijven.
If you can't beat them, try harder
meer info
www.fendt.com | Nikon D7100 | PS5
Verwijderd
flat schreef op donderdag 24 februari 2005 @ 20:53:
[...]
Ik heb nog wel een machine staan die hiervoor gebruikt kan worden, met een 10mbit verbinding van de TU/e (via Vestide)
Het probleem is echter dat ik al vijf computers op mijn naam geregistreerd heb, en ik voor deze zesde dus geen IP meer kan krijgen. Maar als jij (of One, of iemand anders van de TU/e) het MAC-adres wil registreren, moet dat volgens mij wel werken. De machine kan (iig voor een paar maanden)volledig gebruikt worden voor de contest, en in principe kan ik er een OS naar keuze op installeren (al heeft Slackware of een BSD mijn voorkeur, zodat ik 't zelf kan fixen als er iets fout gaat).
Overigens ben ik ook van plan om gewoon mee te doen, indien niemand daar problemen mee heeft.
Heeeeej flat, hang jij hier ook rond?
Helaas heb ik ook al 5 MACs op mijn naam geregisteerd, dus heb ik helaasch niks over. Misschien komt er binnenkort eentje vrij, dat moet ik nog even zien.
En waarom niet Debian? Totaal geen moeite kwa installatie en werkt perfect.
Overigens was dit dus behoorlijk offtopic
Waarom dan? Turn based impliceert niet dat iedereen z'n eigen timeframe krijgt en de laatste dus effectief de sjaak is. Als je alle actions queued en pas uitvoert als iedereen z'n beurt heeft gehad heb je daar geen last van.dingstje schreef op vrijdag 25 februari 2005 @ 00:00:
[...]
Ik ben geen voorstander van een turn based systeem aangezien je zo 'afgesproken' attacks in de hand werkt. Als je met 10 bots bent kunnen 9 bots je meteen afmaken zonder dat je er iets kan aan doen.
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
1
2
3
4
5
6
7
8
9
| while(aantal bots > 1) { - server vraagt iedereen om een actie te bedenken, start timer van 5 secs - clienten sturen de actie - alle clienten waarvan de actie niet ontvangen is nadat de timer afloopt, voeren geen actie uit - clienten waarvan 10x nix is ontvangen timen out en verlaten de match - server voert acties uit } - overgebleven bot heeft gewonnen |
ik zal dit weekend (geen beschikking PC wegens center parks
wellicht ook broncode, immers ik ben een mens, dus maak fouten
ik ga er van uit dat niemand in de broncode gaat snuffelen om te kijken of je oneerlijk voordeel kan behalen
[ Voor 47% gewijzigd door MLM op 25-02-2005 11:29 ]
-niks-
Dan ken jij de gemiddelde tweaker nog nietMLM schreef op vrijdag 25 februari 2005 @ 11:24:
ik ga er van uit dat niemand in de broncode gaat snuffelen om te kijken of je oneerlijk voordeel kan behalen
Ben benieuwd!
Fijn weekend!
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Verwijderd
Ik vind het gehalte jumping to solutions bijzonder hoog. Misschien kunnen we een poging doen een functioneel ontwerp op te stellen ? En zo nee, hoe maken we dan een ontwerpje ?Diverse tweakers schreven:
... en ik ga dit bouwen !
/me Checkt profiel bloog: AaaaaahVerwijderd schreef op vrijdag 25 februari 2005 @ 12:11:
[...]
Ik vind het gehalte jumping to solutions bijzonder hoog. Misschien kunnen we een poging doen een functioneel ontwerp op te stellen ? En zo nee, hoe maken we dan een ontwerpje ?
Nee joh! Wij tweakers beginnen gewoon met bouwen en zien wel waar we stranden
Effe serieus: Bedoel je functionele specificaties "voor iedereen"? Want als we een protocol en regels hebben hebben we volgens mij wel genoeg, en is het juist leuk om te zien hoe iedereen die regels interpreteert en "de grenzen aftast" om maar zo goed mogelijk uit de battle te komen.
[ Voor 5% gewijzigd door RobIII op 25-02-2005 12:19 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
-niks-
Verwijderd
Als. Ik zit te denken aan de manier waarop we aan deze regels en protocollen gaan komen. Wie vindt wat fair ? Wie doet er eigenlijk mee ? Wie heeft welke faciliteiten nodig om zn botje in te pluggen ? Wie zullen er worden uitgesloten en hoe erg vind de rest dat ?RobIII schreef op vrijdag 25 februari 2005 @ 12:18:
[...]
Want als we een protocol en regels hebben hebben we volgens mij wel genoeg, en is het juist leuk om te zien hoe iedereen die regels interpreteert en "de grenzen aftast" om maar zo goed mogelijk uit de battle te komen.
Het protocol wordt misschien nu al door iemand uitgewerkt. Anderen zijn nog aan het brainstormen of ze PHP, UT2004, C(obol), VB of wat dan ook zouden willen gebruiken. Het lijkt me niet handig nu al diep in technische details te duiken.
Verwijderd schreef op vrijdag 25 februari 2005 @ 16:36:
[...]
Als. Ik zit te denken aan de manier waarop we aan deze regels en protocollen gaan komen. Wie vindt wat fair ? Wie doet er eigenlijk mee ? Wie heeft welke faciliteiten nodig om zn botje in te pluggen ? Wie zullen er worden uitgesloten en hoe erg vind de rest dat ?
Het protocol wordt misschien nu al door iemand uitgewerkt. Anderen zijn nog aan het brainstormen of ze PHP, UT2004, C(obol), VB of wat dan ook zouden willen gebruiken. Het lijkt me niet handig nu al diep in technische details te duiken.
Volgens mij waren we het er over eens dat het protocol gewoon "plain ASCII" wordt/me (XML is ook te doen, maar wat te "bulky"/me *). Regels zijn er in grove lijnen al (de details worden hier in dit topic uitgewerkt). Ik ben het wél met je eens dat ze effe "samengevat" moeten worden.
En wat bedoel je met faciliteiten? Als je een inet verbinding hebt ben je er toch? De rest is "up to you" om in te vullen naar je eigen inzicht. De een zal dat doen met VB6, de ander is ASM, C++, PHP of <insert_language_here>.
En waarom zouden we iemand of iets buitensluiten? Het is juist de bedoeling (zie ook de waarschuwing) dat in principe alle talen mee mogen doen...enige vereiste is dus dat ze moeten kunnen babbelen met je NIC en strings moeten kunnen uitpluizen...
Misschien ben ik wel wars, of zie ik het te simpel. Kun je iets specifieker zijn wat je bedoelt? (Of een voorzetje geven?)
/me MLM heeft dat al op zich genomen, nadat mietje niets meer van zich liet horen:
MLM schreef op vrijdag 25 februari 2005 @ 11:24:
ik zal dit weekend (geen beschikking PC wegens center parks) een protocol bedenken (terwijl ik in een subtropisch zwemparadijs mezelf amuseer) en de komende week iets simpels online zetten
/me * En al wordt het XML, da's ook gewoon platte tekst met meuk erin
[ Voor 55% gewijzigd door RobIII op 25-02-2005 16:49 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Idee voor de nieuwe GoT contest: Schrijf de server!Verwijderd schreef op vrijdag 25 februari 2005 @ 12:11:
Diverse tweakers schrijven:
[...]
Ik vind het gehalte jumping to solutions bijzonder hoog. Misschien kunnen we een poging doen een functioneel ontwerp op te stellen ? En zo nee, hoe maken we dan een ontwerpje ?
XML kan je in principe zo bulky maken als je zelf wilt. Punt is wel, dat voor vrijwel alle ontwikkelomgevingen goede XML-parsers te vinden zijn, wat het parsen van server-berichten stukken makkelijker maakt, zodat je daar in ieder geval weinig tijd aan hoeft te besteden. Is er geen XML-parser voor je dev-omgeving, dan kost het weinig meer tijd om te implementeren dan wanneer het een nieuw plain text-based protocol is. * Korben is in ieder geval voor XML.RobIII schreef op vrijdag 25 februari 2005 @ 16:39:
[...]
Volgens mij waren we het er over eens dat het protocol gewoon "plain ASCII" wordt/me (XML is ook te doen, maar wat te "bulky"/me *). Regels zijn er in grove lijnen al (de details worden hier in dit topic uitgewerkt). Ik ben het wél met je eens dat ze effe "samengevat" moeten worden.
Ik ben het ook sterk eens met .oisyn, dat een semi-turnbased (of semi-realtime, hoe je het ook wilt noemen) model de beste optie is. Ik zie overigens dat iedereen wijd uiteenlopende meningen heeft over de verschillende details. Nou kan iemand de leiding op zich nemen en zeggen 'zus en zo moet het', maar we kunnen het ook mooi democratisch oplossen door een serie polls te maken over elk aspect waar onenigheid over is. Just my two cents.
.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?
Verder is XML totaaaal overbodig voor de data die hier tussen de server en spelers heen en weer wordt gestuurd. Simpele commando's hoeven niet in XML verpakt te worden, een paar simpele strings zijn daar veel geschikter voor. Een aantal talen hebben gewoon geen simpele XML parser, en waarom zou je moeilijk gaan doen met XML als het makkelijker kan plain text?
Inderdaad, hier ben ik het helemaal mee eens. XML is bedoeld voor ingewikkelde protocollen, waar je met plain tekst niet goed uit de voeten kunt. Hier kan dat echt wel.Mithrandir schreef op zondag 27 februari 2005 @ 13:46:
[..]
Verder is XML totaaaal overbodig voor de data die hier tussen de server en spelers heen en weer wordt gestuurd. Simpele commando's hoeven niet in XML verpakt te worden, een paar simpele strings zijn daar veel geschikter voor. Een aantal talen hebben gewoon geen simpele XML parser, en waarom zou je moeilijk gaan doen met XML als het makkelijker kan plain text?
We zijn geen overheid hier, als mensen het echt niet kunnen vinden met de server hebben ze gewoon pech.
Dat hoop ik ook... verontrustend dat we zo lang nix meer van hem gehoord hebbenOrphix schreef op zondag 27 februari 2005 @ 13:54:
Het is jammer dat Mietje er geen tijd meer voor heeft (laten we hopen niet erger).
That would be meToen schoten we namelijk het meest op. Het probleem bij gezamenlijke (vooral open-source) projecten is dat het project in het begin al direct verzand in oeverloos discussie over details. Eén persoon die er de tijd en capaciteiten voor heeft (zo makkelijk is het niet!)
schatting: eind deze weekmoet gewoon lekker die server beginnen te schrijven. Dan wacht de rest tot de server af is.
Ik heb wel wat verzonnen, nadat ik heb gezien hoe goed/makkelijk het implementeerbaar is,zal ik het hier ff zettenDan wordt er wat gekissebist over protocollen e.d..
Denk van wel jaMisschien moet er ook wat worden aangepast,
Het wordt ieg simpel ASCII-over-TCP (is dat een woord?) based, dat moet op elk platform wel implementeerbaar zijnmaar dan heb je iig wat!
We zijn geen overheid hier, als mensen het echt niet kunnen vinden met de server hebben ze gewoon pech.
-niks-
Ik bouw server in C++
(ow ja,het is niet de bedoeling dat DIT een issue wordt in dit topic, das namelijk heel erg OT (zelfs als ik het in VB.NET had geprogt
-niks-
Verwijderd
Ik las hierboven ergens dat je het servertje voor windows gaat maken (met winsock dus). Ik heb eventueel nog wel een Linux doos beschikbaar voor de server. (60 kb/s upstream XS4ALL, moet genoeg zijn voor zown low-bandwidth text protocol lijkt me?). Punt is dat ik het draaien onder wine een beetje een smerige oplossing vind. Ik zou eventueel kunnen helpen met het porten van de socket code, dit heb ik al vaker gedaan voor Windows C apps naar Linux C apps.MLM schreef op maandag 28 februari 2005 @ 11:57:
[...]
Ik bouw server in C++
(ow ja,het is niet de bedoeling dat DIT een issue wordt in dit topic, das namelijk heel erg OT (zelfs als ik het in VB.NET had geprogt))
Verder zou ik de server applicatie open source maken, zodat iedereen kan helpen met het spotten van bugs. Want ik neem aan dat we niet willen eindigen met een server applicatie die "illegale moves" toelaat, etc.
Daar ben ik het wel mee eens, het is lelijk. Maar probleem is, ik draai geen linux op mijn laptop, en dat maakt het testen wat ingewikkeld. Ik ga zo min mogelijk WSAxxx calls maken, aangezien die windows specifiek zijn. Als je dan gaat porten zal het ongetwijfeld makkelijker zijn. Zijn er andere punten waar ik rekening mee moet houden als iemand dit later makkelijk wil kunnen porten?Verwijderd schreef op maandag 28 februari 2005 @ 12:27:
Allereerst, zeer cool topic! Ik had een jaar geleden al een soort gelijk idee om zoiets te starten, maar kon toendertijd niet genoeg animo vinden, hier op GoT is dat duidelijk wel aanwezig.
[...]
Ik las hierboven ergens dat je het servertje voor windows gaat maken (met winsock dus). Ik heb eventueel nog wel een Linux doos beschikbaar voor de server. (60 kb/s upstream XS4ALL, moet genoeg zijn voor zown low-bandwidth text protocol lijkt me?). Punt is dat ik het draaien onder wine een beetje een smerige oplossing vind. Ik zou eventueel kunnen helpen met het porten van de socket code, dit heb ik al vaker gedaan voor Windows C apps naar Linux C apps.
Das heeft twee kanten, zie ook [rml]RobIII in "[ Alg] Nieuwe GoT contest?"[/rml]Verder zou ik de server applicatie open source maken, zodat iedereen kan helpen met het spotten van bugs. Want ik neem aan dat we niet willen eindigen met een server applicatie die "illegale moves" toelaat, etc.
edit: typo's
-niks-
Verwijderd
Pulsher schreef op vrijdag 25 februari 2005 @ 16:58:
[...]
Idee voor de nieuwe GoT contest: Schrijf de server!
Ik vind dit goede voorbeelden van jumping to solutions. Wat nu functionele eisenRobIII schreef op vrijdag 25 februari 2005 @ 16:39:
[...]
Volgens mij waren we het er over eens dat het protocol gewoon "plain ASCII" wordt/me (XML is ook te doen, maar wat te "bulky"/me *). Regels zijn er in grove lijnen al (de details worden hier in dit topic uitgewerkt). Ik ben het wél met je eens dat ze effe "samengevat" moeten worden.
En wat bedoel je met faciliteiten? Als je een inet verbinding hebt ben je er toch? De rest is "up to you" om in te vullen naar je eigen inzicht. De een zal dat doen met VB6, de ander is ASM, C++, PHP of <insert_language_here>.
En waarom zouden we iemand of iets buitensluiten? Het is juist de bedoeling (zie ook de waarschuwing) dat in principe alle talen mee mogen doen...enige vereiste is dus dat ze moeten kunnen babbelen met je NIC en strings moeten kunnen uitpluizen...
[...]
Of een rauwe inet verbinding een faciliteit is hangt denk ik af van de gekozen aanpak. Een php-scripter die zijn volgende move van z'n webservertje wil laten pullen kan er niets mee. Maar expliciet wordt zo iemand natuurlijk niet buitengesloten.
Bijgaand plaatje vind ik erg toepasselijk. Waar is een goblin-smile als je m nodig hebt
http://www.magiclibrary.n...oblin-raiders-english.jpg
Het is me nog niet duidelijk, ben niet bekend met jts.Verwijderd schreef op maandag 28 februari 2005 @ 14:55:
[knipje]
Ik vind dit goede voorbeelden van jumping to solutions. Wat nu functionele eisen. Terwijl de discussie nog loopt is daar ineens de oplossing
.
faciliteit? het is wel een feature als je dat bedoelt, simpeler als dat kan ik het niet makenOf een rauwe inet verbinding een faciliteit is hangt denk ik af van de gekozen aanpak.
ik zou natuurlijk daar een feature voor in de server kunnen bouwen, maar je webserver zorgt voor veel overhead, dus lijkt me zowiezo niet zo'n goede keus...Een php-scripter die zijn volgende move van z'n webservertje wil laten pullen kan er niets mee. Maar expliciet wordt zo iemand natuurlijk niet buitengesloten.
Los daarvan, ik ga zo'n extensie pas bouwen als er serieuze kandidaten met PHP gaan werken, en de server met ASCII-over-TCP af is.
???Bijgaand plaatje vind ik erg toepasselijk. Waar is een goblin-smile als je m nodig hebt.
http://www.magiclibrary.n...oblin-raiders-english.jpg
-niks-
Verwijderd

Verwijderd
Kewlness. En dan logt de server met ssh inVerwijderd schreef op maandag 28 februari 2005 @ 15:46:
Als iemand het perse in php wil doenkan ie toch gewoon een script schrijven en dat runnen met de CLI. Komt geen webserver aan te pas en het is net een echt prog
Verwijderd
Attention to all visitors: Don't feed the trolls. I mean goblins. I mean trolls.Verwijderd schreef op maandag 28 februari 2005 @ 16:24:
[...]
Kewlness. En dan logt de server met ssh in?
Je hoort heel wel te weten dat je PHP CLI applicaties gewoon vanuit een shell kan draaien, en hoe elke user dat doet is zijn verantwoordelijkheid. Ik geloof namelijk dat het plan vooralsnog is dat de clients op gebruikers hun thuiscomputers gaan draaien.
Op zich ben ik daar niet helemáál voorstander van, omdat het het onmogelijk maakt -- of althans moeilijk -- om geautomatiseerde toernooitjes te draaien elke nacht. Maar om te voorkomen dat alle gebruikers in een vast gespecificeerde omgeving moeten gaan werken lijkt me dit de beste oplossing. En wie weet kunnen we in de toekomst nog faciliteiten opzetten voor die automatisering. Sockets laten in elk geval genoeg mogelijkheden open voor nu.
Volgens mij zou je het helemaal zonder WSAxxx calls moeten kunnen trekken. Een select() driven loopje zou het moeten doen denk ik (kan toch wel op Windows, nietwaar?). En anders gewoon een brak lusje dat alle open sockets peekt en aan het eind een paar milliseconden slaapt; het geheel hoeft geen super-performance te hebben...MLM schreef op maandag 28 februari 2005 @ 13:08:
Daar ben ik het wel mee eens, het is lelijk. Maar probleem is, ik draai geen linux op mijn laptop, en dat maakt het testen wat ingewikkeld. Ik ga zo min mogelijk WSAxxx calls maken, aangezien die windows specifiek zijn. Als je dan gaat porten zal het ongetwijfeld makkelijker zijn. Zijn er andere punten waar ik rekening mee moet houden als iemand dit later makkelijk wil kunnen porten?
Ben ik het niet mee eens. Open source heeft maar één kant, namelijk dat de fouten makkelijk gevonden en gefixt kunnen worden. Ik ben hier iig zwaar voorstander van.Das heeft twee kanten, zie ook [rml]RobIII in "[ Alg] Nieuwe GoT contest?"[/rml]
Voor veel mensen is het makkelijker reacties te geven op een werkend product dan out of the blue specificaties te bedenken. En zeker als er via internet alleen gedicussieerd wordt maar niets gedaan, is het het makkelijkst als iemand gewoon eens het voortouw neemt. Ik zou het zelf gedaan hebben, maar ik heb helaas geen tijdVerwijderd schreef op maandag 28 februari 2005 @ 14:55:
Ik vind dit goede voorbeelden van jumping to solutions. Wat nu functionele eisen. Terwijl de discussie nog loopt is daar ineens de oplossing
.
Zoals ik hierboven al zei: er moet toch iemand zijn die het boeltje leidt... anders gaat het helemaal nergens heen. En ik zie jou ook nergens het initiatief nemen om specs op te schrijven.Bijgaand plaatje vind ik erg toepasselijk. Waar is een goblin-smile als je m nodig hebt.
http://www.magiclibrary.n...oblin-raiders-english.jpg
Ergens heb je natuurlijk wel gelijk, maar dit is een contest voor "the fun of it" als ik het goed heb. Ik vind niet dat we dan meteen een bedrijfsmodel er op los moeten laten, blauwdrukken gaan schrijven, funspecs schrijven en dat soort "onzin".
We zijn allemaal programmeurs hier (min of meer
Neemt overigens niet weg dat de 'server' wel met zo veel mogelijk van dit soort "problematiek" rekening hoort te houden. Maar dat is dus de taak van degene die de server schrijft. Mocht 'ie bij niemand in de smaak vallen, dan laten we gewoon iemand anders een poging wagen
Ho, ho! Wacht effeVerwijderd schreef op maandag 28 februari 2005 @ 17:30:
[...]
Ben ik het niet mee eens. Open source heeft maar één kant, namelijk dat de fouten makkelijk gevonden en gefixt kunnen worden. Ik ben hier iig zwaar voorstander van.
Met alle respect, No flame Intended, maar dan organiseer je toch ook een contest? Of laat je deze links liggen? Je MOET niet meedoen hoor.raptorix schreef op maandag 28 februari 2005 @ 17:35:
[...]
Te behandelen, puur een wedstrijd gebaseerd op algoritmes lijkt me gewoon onzin.
Wat ik bedoel te zeggen is dat deze contest een beetje draait om het "AI" gedeelte. Ja, er zullen wat hordes genomen moeten worden voordat je uberhaupt aan je AI kunt beginnen (lees hierboven maar ergens). Maar daarna komt het dus op de "AI" aan, en daar gaat het in deze contest om als ik het goed begrijp. En dan komt er dus inderdaad veel algoritme werk, wiskunde en andere ongein bij kijken.
Afhankelijk van wat je verstaat onder "plaintext"... Het is "gewoon platte ASCII", dat bedoelt men hier. Dat er tags omheen staan en dat er een structuur in zit en blablabla maakt het niet minder "platte ASCII".
Begrijp me niet verkeerd: Ik wil ook graag dat er zo veel mogelijk mensen mee doen, en ik zou het ook niet leuk vinden als 75% uitgesloten wordt van deelname bij voorbaat. Ik bedoel alleen te zeggen dat een kok nooit kan koken voor alle monden... De één zit achter een firewall waardoor 'ie een "pushed" pakketje niet binnen krijgt, de ander kan juist weer niet "pullen". De één werkt met een scripted (i.h. algemeen trager) taal, de ander optimaliseert het tot op pipeline niveau. Hoe wil je dat dan gaan oplosen en eerlijk houden? Het gaat toch om de lol? Ja toch? Niet dan?
Somebody stop me
[ Voor 74% gewijzigd door RobIII op 28-02-2005 17:51 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Ehm, XML is geen plaintextPulsher schreef op zondag 27 februari 2005 @ 13:48:
[...]
Inderdaad, hier ben ik het helemaal mee eens. XML is bedoeld voor ingewikkelde protocollen, waar je met plain tekst niet goed uit de voeten kunt. Hier kan dat echt wel.
Wat ik niet begrijp is waarom iedereen in p & w zo kickt op zaken als protocollen en algoritmes.
Algoritmes hebben veel meer met wiskunde te maken als met programmeren, net zoals protocollen meer te maken hebben met..... (in ieder geval weinig programmeren).
Kortom wil je een context maken die elke programmeur aanspreekt dan dien je juist veel breder te gaan imo, dus zaken als:
-Creativiteit
-Efficientie
-Dataafhandeling/opslag
-Interface design
Te behandelen, puur een wedstrijd gebaseerd op algoritmes lijkt me gewoon onzin.
Verwijderd
Hohoho! Merry christmas!raptorix schreef op maandag 28 februari 2005 @ 17:35:
[...]
Wat ik niet begrijp is waarom iedereen in p & w zo kickt op zaken als protocollen en algoritmes.
Algoritmes hebben veel meer met wiskunde te maken als met programmeren, net zoals protocollen meer te maken hebben met..... (in ieder geval weinig programmeren).
Ik zal er niet op ingaan om niet het risico te lopen een gigantische discussie te starten die het doel van deze thread doet ondersneeuwen.
Maar ik wil nog wel even zeggen dat ik het niet met je eens ben. (Al zal dat genoeg met mijn opleiding te maken hebben
Als genoeg mensen zin hebben in een nieuwe thread hierover, geef dan even een gil; er is vast wel een modje die even wil afsplitsen. Vooralsnog hou ik me even gedeisd.
[ Voor 16% gewijzigd door Verwijderd op 28-02-2005 17:54 ]
Zal er nog 1 ding over zeggen, scholen gaan veel op algoritmes in omdat het een gebied is waar docenten zich veilig voelen, en het stof is die goed te testen valt, als er dan toch een wedstrijd gehouden gaat worden over algoritmes, dan kan die beter verplaatst worden naar W & G imo.Verwijderd schreef op maandag 28 februari 2005 @ 17:52:
[...]
Hohoho! Merry christmas!
Ik zal er niet op ingaan om niet het risico te lopen een gigantische discussie te starten die het doel van deze thread doet ondersneeuwen.
Maar ik wil nog wel even zeggen dat ik het niet met je eens ben. (Al zal dat genoeg met mijn opleiding te maken hebben)
Als genoeg mensen zin hebben in een nieuwe thread hierover, geef dan even een gil; er is vast wel een modje die even wil afsplitsen. Vooralsnog hou ik me even gedeisd.
Programmeren is het toepassen van algoritmes, NIET het bouwen ervan.
en humm... ik ge een poging doen een server te schrijven, maar ik kan gewoon niet voor iedereen een perfecte situatie maken.
beste mensen, het gaat om het besturen van een tank, NIET ondergeschikte zaken als sockets/protocols (die zijn ook belangrijk, maar daar gaat de contest niet over)
mensen die het er niet mee eens zijn, je HOEFT niet mee te doen, ik doe mijn best om iets in mekaar te zetten...
WSAStartup om de DLL te laden, en WSACleanup om op te ruimen, ik hoop dat dat alles isVolgens mij zou je het helemaal zonder WSAxxx calls moeten kunnen trekken.
Het bouwen van algoritmes is natuurlijk iets heel anders als programmeren... Hoe bouw jij je algoritmes? van Lego? ik denk tog wel van code, en het typen van code komt tog aardig overeen met programmeren in mijn visie... (shoot me if i'm wrong)Programmeren is het toepassen van algoritmes, NIET het bouwen ervan.
[angela-van-wie-is-de-mol-mode]
En beste kandidaten, het gaat om het plezier dat je eraan beleeft
[/avwidm-mode]
-niks-
Het lijkt me nuttig dat iemand anders daar ook even naar kijkt, zodat eventuele tekortkomingen niet pas aan het licht als MLM al klaar is met de server. Zie het als een soort second-opinion.
Verwijderd
{signature}
Ik bedacht me nog iets mbt het protocol. Wat gebeurt er als er tanks (te) dicht bij elkaar in de buurt komen. Aangezien alle tanks feitelijk op hetzelfde moment een beweging doen, kunnen ze elkaar tegenkomen.
Ik kan me voorstellen dat er dan iets als collision is, of iets simpelers: dat dan de beweging niet kan worden uitgevoerd. Is daar al wat op bedacht?
Koop of verkoop je webshop: ecquisition.com
-niks-
Verwijderd
Et zou jammer zijn als iemands bot tijdens een "match" ineens een technisch mankement heeft omdat hij/zij het niet op een echte server heeft kunnen testen.
[ Voor 18% gewijzigd door Sjaaky op 28-02-2005 22:32 ]
Verwijderd
De server hoeft niet open-source te zijn. Wel hoop ik dat ie beschikbaar wordt gesteld om te testen op je eigen machine.
Voordeel van open-source is dat er door ontwikkeld kan worden en misschien wel een release naar de buiten wereld via sourceforge of zo.
ik speel met het idee om de server een heel simpele bot te laten spelen, zodat de server nooit helemaal leeg is. mss stopt die met spelen zodra een 2e 'echte' bot de server betreed
-niks-
Ik zou toch liever de server open-sourced zien. Ook al krijgen we een exe ter beschikking, veel ben je er niet mee als je linux gebruikt. En het is altijd leerzaam om te zien hoe iemand anders het aanpakt. Ik denk dat deze contest vooral interessant is om uit te leren.MLM schreef op maandag 28 februari 2005 @ 23:10:
voorlopig is de server closed-source (omdat ik erg lelijke code schrijf, als ik mijn code opgeruimd heb, wordt ie mss wel open-source). Ik ga wel de .exe beschikbaar stellen om lokaal testen mogelijk te maken natuurlijk
En het zal je misschien ook motiveren om properder te programmeren
Verwijderd
Eigenlijk heb ik daar wel kritiek op. Ik vind het allemaal veel te ingewikkeld met energie en energie sparen en energie besteden en als je dat niet doet ontplof je en...Verwijderd schreef op maandag 28 februari 2005 @ 20:10:
Mij lijkt dat het oorspronkelijke idee + protocol van mietje geinplementeerd moet worden. Ik geloof dat daar nog vrij weinig kritiek meer op was. Dat scheelt nòg een discussie
Dus.
Maar laat ik maar niet teveel meer zeiken anders komt er nooit iets van
Maar hoe kan het dat je bij zo'n goeie opleiding alleen MS VC++ hebt gehad?
Tipje voor omzetten naar linux/whatever: WxWidgets schijnt eenvoudig om te kunnen zetten naar linux. Tipje voor testen van linux in windows: probeer eens cygwin, daarmee krijg je gewoon bash/gcc/enz, en weet je direct of hij het voor linux ook (waarschijnlijk) doet.
Ik zie dat ik moeilijke weken ga krijgen. Of omdat de client zo moeilijk te schrijven is, of omdat ik mezelf opvreet dat ik er niet aan mee doe...
Als het niet mogelijk is de server hierop te draaien is een publieke testserver een vereiste.
@MLM nieuws: Open-sourcecode netter volgens wetenschappers
Dat is juist een reden om open source te spelen
Nu ook zonder stropdas
Maar ik moet toegeven, ik schijf weinig commentaar en erg overzichtelijk is het niet. Ik ga meestal achteraf pas commentaar schrijven
Ik draai zelf geen linux (meer) (teveel HD-ruimte), dus ik ga dat cygwin tooltje es proberen...
Ik houdt zoveel mogelijk windows-specifieke code in een aparte .cpp, zodat het makkelijker porten is (denk ik).
Het is zowiezo wel handig om een publieke testserver te hebben, anders kom je helemaal geen 'echte' bots tegen (behalve die van jezelf). Het is natuurlijk de bedoeling om te testen tegen de bot van een concurrent
Dat hele energie idee is idd nogal ingewikkeld, ik ga gewoon voor het simpelste (zoals oa .oisyn schreef), uitbreiden kan altijd nog
-niks-
En wie gaat een referentie-implementatie maken? D.w.z. een simpel botje, dat kan lopen en schieten op een beetje zinvolle manier (scannen, lopen naar tegenstander, scannen, schieten, enz). Als niemand die referentie geeft ben ik bang dat veel mensen (waaronder ik) niet echt veel kunnen beginnen zonder direct waanzinnig veel tijd te stoppen in de basisdingen (voordat het leuk wordt dus).
Pas trouwens op met Cygwin: je hebt nog altijd je MFC includes beschikbaar, als je iets voor linux wil maken moet je van die includes afblijven.
En als je gewoon makkelijk te porten code wilt schrijven, moet je Qt nemen. Maar als je daar nog nooit iets mee hebt gedaan zal je dat veel tijd gaan kosten. Eerst een werkende server
Als je een linux-bak nodig hebt om te testen of het compileert etc, stuur me maar een mailtje. Geen gui of zoiets, alleen SSH en wat basisdingen.
MBV schreef op dinsdag 01 maart 2005 @ 10:36:
Ohh, vandaar
Wat grappig. Ik ben naar de Masterbeurs in Utrecht geweest en had idd van TU/e ook de beste indruk gekregen. Ben nu net afgestudeerd HI aan Windesheim, en ben van plan september ook daar voor de master in te schrijven
Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack
zijn dat soort mensen in tha house? mijn server is niet zo heeel groot, dus het zou niet zoveel werk moeten zijn
-niks-
Verwijderd
@MLM: Hoe ver ben je al met de server? zit er voortgang in? loop je tegen probleem aan?
Dat is mooiVerwijderd schreef op dinsdag 01 maart 2005 @ 17:02:
Ik meld me aan voor het porten van de servercode naar Linux. Aangezien het hele geintje in C geschreven gaat worden, moet porten een NIET AL TE GROOT probleem zijn.
@MLM: Hoe ver ben je al met de server? zit er voortgang in? loop je tegen probleem aan?
Ik zie niet waarom het per sé op Linux moet draaien. Wat is er mis met een Windows Server?MLM schreef op dinsdag 01 maart 2005 @ 16:58:
tot mijn spijt moet ik toegeven dat ik geen zin heb om de komende week te besteden aan het leren van Linux en compilen/linken/devven etc @ linux, dus ik heb iemand nodig die mijn windhoos code kan porten...
zijn dat soort mensen in tha house? mijn server is niet zo heeel groot, dus het zou niet zoveel werk moeten zijn
Ik heb nog een dedicated 100Mbit server staan die het eventueel wel zou kunnen hosten (Windows 2000) en nog 1 op een chello lijntje (100KByte up), Windows 2003. Dat zou in princiepe ook al genoeg moeten zijn.
Ik hoor het wel.
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Verwijderd
MBV schreef op dinsdag 01 maart 2005 @ 00:13:
Ik begin me zorgen te maken om mietje, en hoop dat MLM met zijn TU/e Technische Informatica een deftig servertje kan schrijven.
offtopic:
Maar hoe kan het dat je bij zo'n goeie opleiding alleen MS VC++ hebt gehad?
Grappenmaker. Op de TU/e krijgen we niet eens MSVC++ -- als je dat wilt leren moet je dat maar in je eigen tijd doen
En over het gesuggereer van wxWidgets en Qt en wat-niet-al, schiet me daar een ideetje te binnen:
Misschien is het het makkelijkst als de server geen grafische code bevat (die heeft hij tenslote niet nodig), maar clients de mogelijkheid biedt om als observers te connecten (en misschien andere gamestate info te sturen). Dan kunnen die observers gebruikt worden om de gamewereld te visualiseren, te loggen, etc.
Grote voordeel: de server kan eenvoudiger blijven, en makkelijker portbaar, en mensen die willen visualiseren kunnen zelf een grafische schil schrijven voor hun favoriete platform met hun favoriete grafische toolkit (voor mij PyGame denk ik, maar dat terzijde -- het gaat er om dat de vrijheid bestaat).
Dat grote voordeel was bij mij ook al opgekomen, en is de eerste uitbreiding die ik ga maken nadat de server zelf werkt, want dat is immers het belangrijkstVerwijderd schreef op dinsdag 01 maart 2005 @ 17:49:
[...]
offtopic:
Grappenmaker. Op de TU/e krijgen we niet eens MSVC++ -- als je dat wilt leren moet je dat maar in je eigen tijd doen. En terecht ook, eigenlijk...
En over het gesuggereer van wxWidgets en Qt en wat-niet-al, schiet me daar een ideetje te binnen:
Misschien is het het makkelijkst als de server geen grafische code bevat (die heeft hij tenslote niet nodig), maar clients de mogelijkheid biedt om als observers te connecten (en misschien andere gamestate info te sturen). Dan kunnen die observers gebruikt worden om de gamewereld te visualiseren, te loggen, etc.
Grote voordeel: de server kan eenvoudiger blijven, en makkelijker portbaar, en mensen die willen visualiseren kunnen zelf een grafische schil schrijven voor hun favoriete platform met hun favoriete grafische toolkit (voor mij PyGame denk ik, maar dat terzijde -- het gaat er om dat de vrijheid bestaat).
-niks-
Dit is zodat mensen locaal op hun linux bak kunnen testen.RobIII schreef op dinsdag 01 maart 2005 @ 17:10:
[...]
Ik zie niet waarom het per sé op Linux moet draaien. Wat is er mis met een Windows Server?
Ik heb nog een dedicated 100Mbit server staan die het eventueel wel zou kunnen hosten (Windows 2000) en nog 1 op een chello lijntje (100KByte up), Windows 2003. Dat zou in princiepe ook al genoeg moeten zijn.
Ik hoor het wel.
Als we een publieke testserver hebben is dat overbodig. Bovendien scheelt dat tijd, omdat je dan niet hoef te porten. Als we alles gaan porten, kunnen we net zo goed zonder server werken en alle bots als DLL's aanleveren. Met een publieke server hou je alles zo platformonafhankelijk als mogelijk.Pulsher schreef op dinsdag 01 maart 2005 @ 18:47:
[...]
Dit is zodat mensen locaal op hun linux bak kunnen testen.
En over visualisatie gesproken, ik ben toch bezig met een IRC-bot framework (op SourceForge.net), dus zodra de functionaliteit in de server zit zal ik een announcer-plugin maken.
[ Voor 20% gewijzigd door Korben op 01-03-2005 22:16 ]
.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?
Zo redeneer ik dus ook. Die server (al dan niet open source (ik opteer voor wél OS)) moet gewoon data versturen en ontvangen. 't Zal toch worst wezen waar dat ding op draait? Al draait 'ie op een Amiga. Behalve het porten (=mankracht en tijd) scheelt dit ook in de ontwikkeltijd voor MLM als 'ie wat meer op z'n gemak is met de Win API's.Korben schreef op dinsdag 01 maart 2005 @ 22:08:
[...]
Als we een publieke testserver hebben is dat overbodig. Bovendien scheelt dat tijd, omdat je dan niet hoef te porten. Als we alles gaan porten, kunnen we net zo goed zonder server werken en alle bots als DLL's aanleveren. Met een publieke server hou je alles zo platformonafhankelijk als mogelijk.
[ Voor 3% gewijzigd door RobIII op 01-03-2005 22:16 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
C = Client
S = Server
dit is natuurlijk NIET definitief en ff snel uitgedacht
alle foutjes die jullie nu zien, zijn makkelijker nu te verwijderen als straks, dus reply maar ff als je foutes gespot hebt (niet geheel quote plz
ben nu moe, ga slapen, heb dit ook in slaapstand uit mijn mouw geschudt, dus foutjes/en zijn niet onwaarschijnlijk.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
| ---------------------------------- --- flow ------------------------- ---------------------------------- Stap 1: verbinden (d0h) Stap 2: Starten C: start <nick> S: start ok Stap 3: Server vraagt actie S: actie <ronde> C: actie <ronde x> <actie> Stap 4: Stoppen C: stop S: stop ok Stap 5: Verbinding verbreken ---------------------------------- --- client -> server ------------- ---------------------------------- 'start <nick>' begin het spel <nick> : string, bestaande uit slechts alphanumerieke karakters, afgesloten door '#', maximum lengte (zonder #) is 20 'actie <ronde x> <actie>' voer een actie uit <ronde x> : 1 byte, ASCII-teken (0-9), zodat acties niet door elkaar gehaald kunnen worden. je ontvangt het op dat moment geldige rondenummer in het server-commando 'actie' <actie> : de uit te voeren actie, mogelijke waarden: - 'rij <hoek>' waarin: <hoek> : hoek tov rechtdoor (dus een bocht maken), kan zijn 0-360 - 'schiet <hoek> <afstand>' <hoek> : hoek tov rechtdoor (dus een bocht maken), kan zijn 0-360 <afstand> : afstand door de kogel af te leggen (mogelijke waarden moet ik nog bedenken, net als eenheid) - 'scan' 'stop' : verlaat het spel ---------------------------------- --- server -> client ------------- ---------------------------------- 'start <waarde>' bevestiging van het begin van het spel, vanaf nu ontvangt de client 'actie'-s <waarde> : indien 'ok' succes, indien 'fout' invalid nick / whatever voor een probleem 'actie <ronde x>' vraag om de client een actie te laten bedenken <ronde x> : 1 byte ASCII-teken (0-9), client gooit identieke waarde terug 'stop <waarde>' bevestiging van het verlaten van het spel <waarde> : indien 'ok' succes, indien 'fout' nooit gestart / whatever voor een probleem 'info <aantal>[<object>[<object>]] resultaat van een scan-actie, wordt verstuurd voordat de server nieuwe 'actie'-s uitstuurt <aantal> : 2 bytes unsigned integer, geeft het aantal objecten dat volgt aan <object> : 2 bytes hoek tov van de voorkant van de tank + 2 bytes afstand tov de tank + 1 byte type object ('k' = kogel, 't' = tank) |
[ Voor 13% gewijzigd door MLM op 01-03-2005 23:04 ]
-niks-
In principe moet de bot namelijk alleen werken met de gegevens die hij zelf krijgt uit zijn scan-opdrachten. Wanneer er ergens de hele game is te volgend (incl. alle posities) dan kan je die gegevens ook gebruiken om je bot mee te voeden....
Een optie om een game te volgen zal dus altijd een paar cycles achter moeten lopen bij de 'echte' game.
Koop of verkoop je webshop: ecquisition.com
ASSUME makes an ASS out of U and ME
Het hoeft natuurlijk niet 'op mijn manier' te gebeuren, maar als het helemaal misloopt omdat de server niet goed werkt, de clients niet weten waar ze aan toe zijn, of het spelsysteem zelf niet werkbaar of niet leuk is, dan heb ik het niet gedaan.
Mijn voorstel blijft (samenvattend): een persoon stelt een specificatie op en daarmee/-over kan gediscussieer worden, een ander schrijft er een reference-implementatie bij, waarmee getest kan worden (offline of online).
Verwijderd
Okok. Weet je wat goed zou werken [volgens mij]: een wiki.Soultaker schreef op dinsdag 01 maart 2005 @ 23:54:
Ik wil er nogmaals op hameren dat er eerst een (redelijk volledige) specificatie moet zijn voordat het zinnig is om aan een implementatie te beginnen. Die draft van het protocol is aardig, maar schept meer nieuwe vragen dan 'ie beantwoord en is zonder kennis van de spelwereld niet zo veelzeggend.
Het hoeft natuurlijk niet 'op mijn manier' te gebeuren, maar als het helemaal misloopt omdat de server niet goed werkt, de clients niet weten waar ze aan toe zijn, of het spelsysteem zelf niet werkbaar of niet leuk is, dan heb ik het niet gedaan.
Mijn voorstel blijft (samenvattend): een persoon stelt een specificatie op en daarmee/-over kan gediscussieer worden, een ander schrijft er een reference-implementatie bij, waarmee getest kan worden (offline of online).
Als iemand ergens webruimte over heeft en even over zijn hart wil strijken en daar een wiki op wil plempen, dan kunnen we die gebruiken om de details van de spelomgeving, features en protocol uit te werken. Het voordeel is dat iedereen mee kan doen, en de goede ideeën komen dan vanzelf bovendrijven.
Daarmee cheaten is nog behoorlijk moeilijk. Bovendien kan de server er voor kiezen om geen observer connectie toe te staan naar een ip welke al een bot draait.mocean schreef op dinsdag 01 maart 2005 @ 23:17:
Als er een optie komt om het hele spel te kunnen volgen (visueel) dan werkt dat ook cheaten in de hand.
Maar dit valt allemaal onder de nog lang niet boeiende details van een verder gevorderde server. Als de 1e paar battles niet visueel zijn is dat geen ramp.
{signature}
Ik ben het wel met Soultaker eens dat er eerst een goede specificatie moet komen. Al was het alleen maar om dit soort simpele vragen te voorkomen.
www.fendt.com | Nikon D7100 | PS5
Verwijderd
Ben ik het ook mee eens. Maar zoals MLM zei had ie dit even snel gemaakt. er is dus ruimte voor verbetering en discussie (in dit draadje).FendtVario schreef op woensdag 02 maart 2005 @ 01:06:
Ik ben het wel met Soultaker eens dat er eerst een goede specificatie moet komen. Al was het alleen maar om dit soort simpele vragen te voorkomen.
Ok, dus wat missen we? Wat is niet duidelijk? Als iedereen met op- en aanmerkingen komt in deze thread zullen we snel tot een redelijk deftig protocol komen neem ik aan.
Wat ik me oa. afvroeg, gaan we altijd in een leeg vierkant veld spelen? of komen er ook nog "obstakels" ofzo? En er is maar 1 actie per beurt mogelijk right? Wat doet de scan functie *precies*?
Idd, mensen begin maarVerwijderd schreef op woensdag 02 maart 2005 @ 08:21:
Ben ik het ook mee eens. Maar zoals MLM zei had ie dit even snel gemaakt. er is dus ruimte voor verbetering en discussie (in dit draadje).
Ok, dus wat missen we? Wat is niet duidelijk? Als iedereen met op- en aanmerkingen komt in deze thread zullen we snel tot een redelijk deftig protocol komen neem ik aan.
hele energie gebeuren kan altijd nog, maar zoals al eerder gezegd door anderen: het was te moeilijk.
(persoonlijk vondt ik het ook wel een goed idee) dat kan ik later ng wle uitwerken, het is denk ik beter eerst een servertje in mekaar te gooien, zodat we ook echt verder kunnen bouwen/discussiëren.
Ik had eigenlijk wel wat feedback verwacht mbt hoek/afstand systeem, is dit handig, of kan ik beter gewoon coordinaten gebruiken (dat doet de server intern wel)
en als dit zoveel vragen oproept, stel ze dan, als ik (we) die dan beantwoord wordt het geheel duidelijker neem ik aan. hiervoor kunnen we dit draadje gebruiken, maar mss ook wel een wiki als al eerder voorgesteld.
-niks-
Verwijderd
Als je een scan actie uitvoert, wil je denk ik de hoeken en afstanden naar alle tanks die je met die scan hebt gevonden. Ook wil je er denk ik een nick of nummer bij hebben om zo bepaalde tanks te achtervolgen.
Wat FendtVario vraagt mbt. de hoek van de loop: die staat in de opzet als hoek t.o.v. je tank. Je tank wordt dus niet ook gedraaid. Ik dacht dat er eerst gezegd werd dat het veld geen grenzen had; als een soort bol waar je overheen rijdt. Dan hoef je de hoek van je tank niet te weten; voor jou is je startpositie bijv. gewoon noord, voor iemand die precies de andere kant op start is jouw zuid gewoon zijn noord.
Misschien kan MLM als hij tijd heeft beter een specificatie van het totaal maken, van de wereld, de tanks, communicatie met de server, etc. zodat alle benodigde informatie erin staat, iedereen over hetzelfde discussieert en iemand die alleen die specificatie leest weet waar de contest over gaat. Pas daarna zullen echt op- en aanmerkingen op die specificatie gegeven kunnen worden.
[ Voor 4% gewijzigd door Verwijderd op 02-03-2005 10:58 ]
Verder, is een limiet aan de te rijden afstand? Ik kan me voorstellen dat je 1 beurt niet het hele veld kan oversteken. Hoevaak mag je geraakt worden en kom ik te weten dat ik geraakt ben, wat is de hoek van de inslag tov van mijn tank? Hoe ver kan ik per beurt rijden, hoe snel gaat een kogel? Al deze vragen heb ik dacht ik al eens in dit topic gezien, maar duidelijkheid mis ik. Oh ja, wat gebeurt er als ik op een andere tank bots? Kan ik in een scan zien hoe 'heel' een andere tank nog is?
@MLM: het beantwoorden van vragen door 'we' is misschien niet handig omdat jij dat ding gaat maken. Post (uitgebreide) specs ook van de wereld (grootte, eventuele randen, eenheden) en tanks (scannen, health, id's) etc. Dan zeggen wij wel dat het niet goed is
www.fendt.com | Nikon D7100 | PS5
Verwijderd
Een bol speelveld is helemaal niet moeilijk te maken. want technisch gezien is het gewoon een vierkant veld, waarbij als je van de zijkant afrijd je aan de andere weer uit komt, toch? Dus een "echte bol" zou pas een rol gaan spelen bij de visualisatie van het hele gebeuren, zo ver zijn we echter nog lang niet.FendtVario schreef op woensdag 02 maart 2005 @ 11:41:
Ik heb inderdaad ook gelezen over een 'bol'-veld. Wat denk MLM hiervan, ziet hij het zitten om dit te implementeren? Is een bol niet lastig te maken?
Misschien kunnen we met een aantal "action points" per beurt werken. stel je krijgt elke beurt 20 action points, scannen kost bijv. 4 punten en jezelf voortbewegen kost een aantal punten adhv. de afstand die je af wilt leggen.Verder, is een limiet aan de te rijden afstand? Ik kan me voorstellen dat je 1 beurt niet het hele veld kan oversteken. Hoevaak mag je geraakt worden en kom ik te weten dat ik geraakt ben, wat is de hoek van de inslag tov van mijn tank? Hoe ver kan ik per beurt rijden, hoe snel gaat een kogel? Al deze vragen heb ik dacht ik al eens in dit topic gezien, maar duidelijkheid mis ik. Oh ja, wat gebeurt er als ik op een andere tank bots? Kan ik in een scan zien hoe 'heel' een andere tank nog is?
Verwijderd
Verder:
Hoek in grad of in rad?
• Elke robot heeft een 2D positie en orientatie op de kaart.
• Elke robot heeft bovendien een accu met een maximumcapaciteit.
• Elke robot heeft een schild; als het schild 0 is is de robot dood.
De toestand van een robot wordt dus beschreven door een 5-tupel aan waarden, alleen floats: (x, y, hoek, accu, schild). Of een robot identificeerdbaar is, was nog niet beslist; het kan, maar het kan ook een leuk spel worden als het niet zo is.
Het speelveld is een rechthoekige kaart die aan de zijkanten aansluit (dus als hij 10 breed is, dan geldt dat x=10.5 hetzelfde is als x=0.5).
Het spel verloopt in discrete beurten. Per beurt geven alle robots tegelijk hun zet voor de komende beurt weer, die bestaat uit een toekenning van energie aan vier mogelijke acties: draaien, rijden, schieten, scannen. Bij het schieten kan zowel de energie die wordt geinvesteerd in afstand als in explosiekracht worden opgegeven.
Elke beurt stuurt een robot dus een 5-tupel (draai, rij, schiet-afstand, schiet-kracht, scan) naar de server; de waarden zijn hoeveelheden energie en voorwaarde is dat de som van de energiewaarden niet groter is dan de hoeveelheid energie in de accu (anders schaalt de server dat terug ofzoiets).
Als alle geldige zetten ontvangen zijn, wordt de hoeveelheid energie in de accu van elke robot bijgewerkt: de gebruikte energie (voor de zet) wordt eruit gehaald en er wordt een vaste hoeveelheid nieuwe energie toegevoegd met inachtname van de maximumcapaciteit (alles daarboven gaat verloren).
Nu wordt de beurt in vier fasen afgewerkt: (volgorde discutabel)
• alle robots draaien tegelijk;
• alle robots rijden tegelijk (botsingen zijn onmogelijk; simpel maar discutabel);
• alle robots schieten tegelijk een projectiel weg en dat projectiel explodeert direct op een bepaalde afstand en met een bepaalde kracht (voor de schade aan een robot moet een mooie functie verzonnen worden zodat robots die dichter bij het inslagpunt staan meer schade krijgen); schade wordt afgetrokken van het schild van de robot;
• alle robots scannen tegelijk; dat betekent simpelweg dat aan elke robot de positie, orientatie, accu en schild van alle robots binnen een bepaalde straal (die afhangt van de geinvesteerde energie) bekend wordt gemaakt. Mogelijk alternatief: de energie bepaalt niet de straal, maar (samen met de afstand) de nauwkeurigheid van de gegevens (wat betekent dat je altijd informatie van alle robots krijgt, maar dat die gegevens nauwkeuriger zijn naar een robot dichterbij is en je meer energie in scannen stopt).
Het protocol ziet er nu dus als volgt uit; voor elke beurt:
• de server stuurt de status van de robot naar de client (ter referentie)
• de client stuurt zijn zet voor de komende beurt
• de server stuurt het resultaat van de scans
Het lijkt me handig als dit gewoon een op 'regels tekst' gebaseerd protocol is (geen binaire representaties, geen moeilijk te parsen dingen). Als variatie was voorgesteld om alle coordinaten relatief aan de client te maken (de positie van de client is dan altijd 0,0); dat zou handig kunnen zijn (hangt er vanaf in hoeverre je het hele speelveld door kan scannen).
Dit was ongeveer het voorstel geloof ik. Het voordeel van dit systeem is dat het relatief simpel te implementeren is en tegelijkertijd een heleboel parameters heeft die zo afgestemd kunnen worden dat het een gebalanceerd spelletje wordt. Ik zou zelf nog willen toevoegen dat elke actie in een beurt een maximumhoeveelheid energie heeft (zodat je bijvoorbeeld niet heel ver kan rijden in een enkele beurt, of bijvoorbeeld maximaal 60 graden kan draaien).
off-topic:Verwijderd schreef op woensdag 02 maart 2005 @ 12:11:
Een bol speelveld is helemaal niet moeilijk te maken. want technisch gezien is het gewoon een vierkant veld, waarbij als je van de zijkant afrijd je aan de andere weer uit komt, toch? Dus een "echte bol" zou pas een rol gaan spelen bij de visualisatie van het hele gebeuren, zo ver zijn we echter nog lang niet.
Is al eerder genoemd, maar nogmaals: als je een rechthoek neemt en je verbind de zijkanten die tegenover elkaar liggen, dan krijg je een donut (torus) en geen bol. Zowel een bol als een torus in 3D zijn wel extra lastig te modelleren omdat je ze niet kan uitklappen naar een 2D vorm (zelfs geen ingewikkelde) met behoud van verhoudingen (1m in 2D is 1m in 3D). Vandaar ook dat je zoveel rare wereldkaarten hebt.
Soultaker: dit hb ik al eerder voorbij zien komen, maar daarna is vorgesteld dat elke tick er 1 actie wordt uitgevoerd, en het hele energie/accu/actionpoints idee was laten varen.
Desondanks kunnen we er nu voor kiezen om het WEL te implementeren.
De server zorgt ervoor dat een scan resultaten geeft tov de spelers tank, de speler hoeft dus geen rekening te houden met de grootte/vorm van het speelveld
die 2 byte signed int's zijn makkelijker, maar ik kan ze altijd naar ASCII-representatie omzetten, maar dan worden het wel (mogelijk) 5 bytes, en de client moet extra werk verrichtten om weer int ervan te maken.
die unieke identificatie is idd wel het idee, daarvoor laat ik ook die nick's sturen
[ Voor 21% gewijzigd door MLM op 02-03-2005 14:02 ]
-niks-
-niks-
edit:
Het makkelijkste voor de clients is nog wel dat het veld niet rondloopt maar gewoon begrenst is, denk ik.
[ Voor 65% gewijzigd door Soultaker op 02-03-2005 14:19 ]
Wat mij betreft mag de server minder gebruiksvriendelijk.Soultaker schreef op woensdag 02 maart 2005 @ 13:18:
voorwaarde is dat de som van de energiewaarden niet groter is dan de hoeveelheid energie in de accu (anders schaalt de server dat terug ofzoiets).
Het is een fout van de client. Indien geen goed commando ontvangen gaat alle energie naar de accu en na x beurten aan incorrecte of ontbrekende communicatie ontploft de tank.
Je aan het protocol houden is voor de client helemaal niet moeilijk. Bovendien krijg je elke beurt een accu status update en moet je die info maar gebruiken. Aangezien er geen muren zijn, is verder elke commandoset welke niet te veel energie gebruikt gewoon goed.
[q]Nu wordt de beurt in vier fasen afgewerkt: (volgorde discutabel)
• alle robots draaien tegelijk;
• alle robots rijden tegelijk (botsingen zijn onmogelijk; simpel maar discutabel);
• alle robots schieten tegelijk een projectiel weg en dat projectiel explodeert direct op een bepaalde afstand en met een bepaalde kracht (voor de schade aan een robot moet een mooie functie verzonnen worden zodat robots die dichter bij het inslagpunt staan meer schade krijgen); schade wordt afgetrokken van het schild van de robot;
• alle robots scannen tegelijk; dat betekent simpelweg dat aan elke robot de positie, orientatie, accu en schild van alle robots binnen een bepaalde straal (die afhangt van de geinvesteerde energie) bekend wordt gemaakt.Draaien voor rijden is logisch. Scannen van de uiteindelijke plek ook, anders loop je nog een beurt achter (en je moet al vooruitdenken omdat niemand stil staat (tenminste, iemand kan dat doen, maar het is wellicht geen handige tactiek) en omdat het projectiel een tijd onderweg is).
Op zich een leuke variatie, maar misschien is geluk al een te grote factor in dit spel.Mogelijk alternatief: de energie bepaalt niet de straal, maar (samen met de afstand) de nauwkeurigheid van de gegevens (wat betekent dat je altijd informatie van alle robots krijgt, maar dat die gegevens nauwkeuriger zijn naar een robot dichterbij is en je meer energie in scannen stopt).
[q]Het protocol ziet er nu dus als volgt uit; voor elke beurt:
• de server stuurt de status van de robot naar de client (ter referentie)
• de client stuurt zijn zet voor de komende beurt
• de server stuurt het resultaat van de scans
Het startsein van een beurt kan zowel de botstatus als het resultaat van scans bevatten. Client en server kunnen dus heel strak omstebeurt een bericht sturen.
Misschien kan er zelfs een veld ' text' in het pakketje van de server zitten, welke meestal leeg is, maar welke ook foutmeldingen of kills kan aankondigen. Clients kunnen dat dan wegschrijven naar een logfile, voor debug.
Dat is het makkelijkst voor alle platforms. Met (key:value \r\n)+ strings of gewoon getallen met scheidingstekens.Het lijkt me handig als dit gewoon een op 'regels tekst' gebaseerd protocol is (geen binaire representaties, geen moeilijk te parsen dingen).
Mijn idee: max 60 graden, max de helft van een een volle accu voor rijden (anders kan iemand die niet gespaard heeft je niet volgen). Met welke schaal de scanner werkt weet ik niet, je zou de waarde welke equivalent is met 50% van het speelveld kunnen doen.Ik zou zelf nog willen toevoegen dat elke actie in een beurt een maximumhoeveelheid energie heeft (zodat je bijvoorbeeld niet heel ver kan rijden in een enkele beurt, of bijvoorbeeld maximaal 60 graden kan draaien).
De waardes voor kracht en afstand van projectielen hebben geen regels nodig. Als iemand zijn volle accu wil storten in een projectiel welke hij vlak naast zich laat vallen, of een projectiel het hele speelveld over wil schieten en maar 1 damage doen moet hij dat vooral doen.
Dan heb ik nog een idee:
Voor het spel begint, stuurt de server info over hoeveel bots er in totaal zijn. Misschien kunnen hier zelfs op de lange termijn ook parameters van het spel meegegeven worden (grootte speelveld, max waardes commando's instelbaar per potje).
En nog een ideetje welke helemaal op de zaken vooruit loopt: mocht het eindspel te lang blijken te duren (bv. er zijn 2 bots over welke elkaar maar niet vinden en raken), kan op een gegeven moment een dubbele schade, dubbel scanbereik of langzaam leeglopend schild regel in werking gaan op de server.
off-topic:
Zowel een bol als een torus in 3D zijn wel extra lastig te modelleren omdat je ze niet kan uitklappen naar een 2D vorm (zelfs geen ingewikkelde) met behoud van verhoudingen (1m in 2D is 1m in 3D). Vandaar ook dat je zoveel rare wereldkaarten hebt.
Het grafische deel komt wel, maar als het een rechthoek wordt en als iedereen die de beelden bekijkt begrijpt dat de zijden aan elkaar zitten zoals bij Asteroids
{signature}
Als alle data relatief aan jouw bot is, is dit ook geen probleem meer.Soultaker schreef op woensdag 02 maart 2005 @ 14:13:
Een slimme robot moet dus wel weten dat het veld wrapped en bovendien moet 'ie de afmetingen van het veld kennen; als die niet expliciet gegeven zijn kan 'ie ze ook wel afleiden uit het feit dat de server altijd de kortste afstand tot een robot geeft.
En je voorstel tot het limiteren van sommige acties is daarom ook aardig, een move van meer dan de helft van het speelveld moet ook niet kunnen. Zeker als bots niet weten hoe groot het veld is. Als alles relatief is, heb je kans dat je een bot maakt welke continue hard doorrijdt, 100% van de speelveldbreedte aflegt en dus steeds op dezelfde punt blijft. Je kan dan nooit achterhalen dat je eigenlijk stilstaat en energie verspilt.
{signature}
Verwijderd
Ook nog wel relevant: welke kant je op wilt draaienSoultaker schreef op woensdag 02 maart 2005 @ 13:18:
Elke beurt stuurt een robot dus een 5-tupel (draai, rij, schiet-afstand, schiet-kracht, scan) naar de server; de waarden zijn hoeveelheden energie en voorwaarde is dat de som van de energiewaarden niet groter is dan de hoeveelheid energie in de accu (anders schaalt de server dat terug ofzoiets).
Voor de schade aan de robot lijkt een gewone distance-functie tot het centrum van de explosie me wel okee. Verder hoort een hardere explosie ook over een grotere straal invloed te hebben. Misschien exponential falloff (of polynomiaal) vanuit het middelpunt?Nu wordt de beurt in vier fasen afgewerkt: (volgorde discutabel)
• alle robots draaien tegelijk;
• alle robots rijden tegelijk (botsingen zijn onmogelijk; simpel maar discutabel);
• alle robots schieten tegelijk een projectiel weg en dat projectiel explodeert direct op een bepaalde afstand en met een bepaalde kracht (voor de schade aan een robot moet een mooie functie verzonnen worden zodat robots die dichter bij het inslagpunt staan meer schade krijgen); schade wordt afgetrokken van het schild van de robot;
• alle robots scannen tegelijk; dat betekent simpelweg dat aan elke robot de positie, orientatie, accu en schild van alle robots binnen een bepaalde straal (die afhangt van de geinvesteerde energie) bekend wordt gemaakt. Mogelijk alternatief: de energie bepaalt niet de straal, maar (samen met de afstand) de nauwkeurigheid van de gegevens (wat betekent dat je altijd informatie van alle robots krijgt, maar dat die gegevens nauwkeuriger zijn naar een robot dichterbij is en je meer energie in scannen stopt).
Dus iets als: schade = m * e-d (if d <= r)
waarbij
m = de maximale schade van het schot
d = de afstand tot het middelpunt van het schot
r = de straal van de schade van het schot
Eventueel met het tweaken van de constanten tot we een goed-werkende damage functie hebben.
Met de volgorde ben ik het verder helemaal eens. Zo krijg je als robot nog de kans om weg te rijden nadat er op je gemikt is. Waar alleen wel op gelet moet worden is dat als je eerst rijdt, je schot op een andere plek landt dan wanneer je stil blijft staan. Maar dat lijkt me iets voor bot-schrijvers.
En kun je ook schade krijgen van je eigen schot als het te dichtbij ontploft?
Voor de rest ben ik het er helemaal mee eens. En de torus is gewoon goed te visualiseren als een vierkant. Wij als Pacman- en Asteroids-spelers staan niet raar te kijken als een object aan de andere kant van het scherm terugkomt. Desnoods kun je tijdens het visualiseren de focus op één robot leggen en die in het midden van het scherm houden.
Net wel. Als je relatieve coördinaten gebruikt zal dit niet voorkomen -- de andere robot zal consistent op je vóór of achter liggen (tenzij je hem inhaalt, natuurlijkSoultaker schreef op woensdag 02 maart 2005 @ 14:02:
Eigenlijk moet je dat toch wel, want als het spelveld rondloopt dan kan het dus voorkomen dat een bot die eerste 100 meter voor je ligt opeens 100 meter achter je ligt. Vandaar dat de relatieve coordinaten niet heel veel helpen naar mijn idee,
(En zodra je scan minder dan de helft van het speelveld beslaat heb je het probleem dat een tegenstander kan "flippen" van sign ook niet meer (als je altijd de relatieve coördinaten met de kortste afstand opstuurt))
En als dit allemaal te vervelend wordt voor iedereen: gewoon een rechthoekig, begrensd speelveld.
[ Voor 6% gewijzigd door Verwijderd op 02-03-2005 14:36 ]
Mwoa, ik vind het wel leuk eigenlijk, dan heb je wat meer om te managen.MLM schreef op woensdag 02 maart 2005 @ 13:57:
Soultaker: dit hb ik al eerder voorbij zien komen, maar daarna is vorgesteld dat elke tick er 1 actie wordt uitgevoerd, en het hele energie/accu/actionpoints idee was laten varen.
Ik zou wel voor willen stellen om naast de circulaire scan ook een gebundelde scan te doen; daarmee kun je verder kijken, maar natuurlijk maar met een gelimiteerde field of vision.
Desondanks kunnen we er nu voor kiezen om het WEL te implementeren.
Zeker wel, als het speelveld 10x10 is dan is een vijandige tank op (-9, 0) die 2 units naar links beweegt ineens op (9, 0). Als je 'm in de vorige beurt recht aankeek, kun je je energie verbruiken door 180 graden te draaien, maar je kunt ook gewoon meteen schieten en je kogel op 11 units afstand laten ontploffen.De server zorgt ervoor dat een scan resultaten geeft tov de spelers tank, de speler hoeft dus geen rekening te houden met de grootte/vorm van het speelveld
Misschien is het dan wel handig om te stellen dat het speelveld groter is dan je maximaal kunt scannen en schieten, dan maakt het idd niet meer uit. Dit introduceert echter wel weer het probleem dat spelers veel te lang naar elkaar op zoek zijn voordat ze elkaar eindelijk hebben gevonden.
Nou oei, wat een waste of cpu cyclesen de client moet extra werk verrichtten om weer int ervan te maken.
Het moge duidelijk zijn dat dit practisch niets kost
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
• je kunt energie investeren in het regenereren van je schild (relatief kostbaar en met een maximum natuurlijk, anders schiet het niet op).
Mij lijkt dat dit past ergens voor het schieten. Eventueel kan het simpeler gemaakt worden door een vaste regeneratiesneheid in te stellen, of nog simpeler door die op 0 te zetten. (Het gevaar is natuurlijk dat als regeneren te snel gaat of te goedkoop is, bots nooit doodgaan.)
Het is natuurlijk een implementatiedetail, maar het zou flauw zijn dat door een afrondingsfoutje bij het verdelen of het formatteren van de getallen het totaal net 0.0000001 boven de waarde van je accu komt en je daardoor niet mag zetten/ontploft. De server mag daar wel enige tolerantie voor hebben (maar verder ben ik met je eens dat de client verantwoordelijk is voor zijn correcte werking).Voutloos schreef op woensdag 02 maart 2005 @ 14:19:
Wat mij betreft mag de server minder gebruiksvriendelijk.
Het is een fout van de client. Indien geen goed commando ontvangen gaat alle energie naar de accu en na x beurten aan incorrecte of ontbrekende communicatie ontploft de tank.
In mijn situatieschets komt een projectiel meteen aan. Voordeel is dat dat makkelijker is en je nog een beetje kans hebt iemand te raken (denk eraan: iedereen rijdt voordat 'ie schiet, dus om te raken moet je toch al kunnen voorspellen waar iemand heengaat).... omdat het projectiel een tijd onderweg is.
Denk ik ook, maar voordeel van die variatie is dat je als je in een leeg deel van de wereld zit, je in ieder geval weet welke kant je op moet om weer bij de actie betrokken te raken (al is het dan maar een ruwe schatting). Maar de eerste versie lijkt mij ook prima (en wat makkelijker te implementeren voor de server misschien).Op zich een leuke variatie, maar misschien is geluk al een te grote factor in dit spel.
Dat lijkt me een goed idee; dan moet er dus een lijstje zijn van mogelijke parameters en wat ze precies betekenen. Zo kan de server gefinetuned worden zonder dat alle clients verbouwd moeten worden.Voor het spel begint, stuurt de server info over hoeveel bots er in totaal zijn. Misschien kunnen hier zelfs op de lange termijn ook parameters van het spel meegegeven worden (grootte speelveld, max waardes commando's instelbaar per potje).
Lijkt me ook een goed idee! Verder is het natuurlijk leuk om score bij te houden, zodat je niet kunt winnen door je het hele spel lang afzijdig te houden en dan als tweede te eindigen. Maar beide zaken zijn van later zorg.En nog een ideetje welke helemaal op de zaken vooruit loopt: mocht het eindspel te lang blijken te duren (bv. er zijn 2 bots over welke elkaar maar niet vinden en raken), kan op een gegeven moment een dubbele schade, dubbel scanbereik of langzaam leeglopend schild regel in werking gaan op de server.
Dat was dus precies mijn punt..oisyn schreef op woensdag 02 maart 2005 @ 14:29:
Zeker wel, als het speelveld 10x10 is dan is een vijandige tank op (-9, 0) die 2 units naar links beweegt ineens op (9, 0). Als je 'm in de vorige beurt recht aankeek, kun je je energie verbruiken door 180 graden te draaien, maar je kunt ook gewoon meteen schieten en je kogel op 11 units afstand laten ontploffen.
Dat lijkt me dan ook de beste oplossing als we voor de wrappende veldvariant kiezen (die blijkbaar nogal populair is).Misschien is het dan wel handig om te stellen dat het speelveld groter is dan je maximaal kunt scannen en schieten, dan maakt het idd niet meer uit. Dit introduceert echter wel weer het probleem dat spelers veel te lang naar elkaar op zoek zijn voordat ze elkaar eindelijk hebben gevonden.
edit:
Even voor de duidelijkheid: in de situatie die ik schetste schiet je altijd 'recht vooruit'. Dat betekent dat schieten niet bepaald gratis is, want als je een bepaalde kant op wil schieten moet je ook die kant op draaien en kun je dus, als je schiet, alleen in de richting waarin je schiet rijden. Dat is dus vrij beperkend en het voorkomt misschien dat robots altijd en overal maar gaan rondschieten (maar uiteindelijk moet je wel schieten, anders win je nooit). Het betekent ook dat als je als robot een andere achtervolgt, je een groot voordeel hebt omdat je op 'm kan schieten terwijl je achtervolgt terwijl de ander zich niet in een keer kan omdraaien en schieten.
Ben je bekend met het min-teken?Verwijderd schreef op woensdag 02 maart 2005 @ 14:27:
Ook nog wel relevant: welke kant je op wilt draaien
Ah, op zo'n manier. Dat is dan iets voor het protocol (maakt voor het concept niet uit natuurlijk).Verwijderd schreef op woensdag 02 maart 2005 @ 14:40:
Kwam wel bij me op, maar zeggen dat je -30 energie besteedt vind ik tegenintuïtief. En voor het besparen op bandbreedte hoeven we het niet te doen.
[ Voor 46% gewijzigd door Soultaker op 02-03-2005 14:42 ]
Verwijderd
Kwam wel bij me op, maar zeggen dat je -30 energie besteedt vind ik tegenintuïtief. En voor het besparen op bandbreedte hoeven we het niet te doen.
Dus dan zou ik er toch voor kiezen om er L 30 of R 30 van te maken.
Dat is wel eens anders gezegd. Maar direct raken is voorlopig veel leuker. Dan zie je dus ook geen projectielen in de scan, wat toch niet ideaal was, want je kan op basis van 1 scan geen richting bepalen (hoogstens door te gokken bij welke tank hij vandaan komt, maar die tank kan ook buiten je gezichtsveld liggen).Soultaker schreef op woensdag 02 maart 2005 @ 14:32:
In mijn situatieschets komt een projectiel meteen aan.
Projectielen monitoren en ontwijken als client vind ik dus niet leuk. Als je per se een vlucht/verstop tactiek wil aanhouden vlucht je maar weg van de tank die je ziet.
Of het L & R, of - & + is bepaalt de serverdevver wel. Want het maakt echt 3x niets uit. abs(energieInDraairichting) in je energiemanagement is niet zo ingewikkeld.Verwijderd schreef op woensdag 02 maart 2005 @ 14:40:
[...]
Kwam wel bij me op, maar zeggen dat je -30 energie besteedt vind ik tegenintuïtief.
[quote]Soultaker schreef op woensdag 02 maart 2005 @ 14:32:
Een belangrijke actie die mietje wel genoemd had en die ik vergeten had, was de volgende:
• je kunt energie investeren in het regenereren van je schild (relatief kostbaar en met een maximum natuurlijk, anders schiet het niet op).
Een schildregeneratie actie vind ik eigenlijk niet zo geslaagd. Elke beurt iedereen langzaam regeneren kan wel en kan zelfs zonder dat clients het hoeven te beseffen. Gewoon een kwestie van serverside doen. Als client lees je toch elke beurt je status uit.
Je kan zelfs met half schild beginnen en de 1e 10 beurten serverside sterke schilgeneratie doen van in totaal een half schild. Op die manier heb je een soort first blood/first strike/rush voordeel. Dit valt allemaal onder de extra optionele regeltjes. Ik kan er zonder problemen nog 100 verzinnen, dus ik laat het wat betreft extraatjes voorlopig hierbij.
Wel is het zo dat veel van deze toeters en bellen niet per se door clients begrepen hoeven te worden. Dus als de status info vrij compleet is en als iedereen zorgt dat zijn botje elke beurt op zijn status let, is het uitbreiden/aanzetten van dit soort regeltjes serverside heel makkelijk.
[ Voor 64% gewijzigd door Voutloos op 02-03-2005 15:14 ]
{signature}
Dit topic is gesloten.
Voor je ideeën spuit over een nieuwe contest, bedenk dan dat in principe alle talen mee mogen doen en het derhalve vooral gaat om algoritmische implementaties, niet low-level optimalisaties waarin native talen vrijwel altijd een voordeel zullen hebben