- ivar
- Medlem ●
- Stockholm
Hej
Tänker programmera ett schackspel vars enda syfte är att spela matcher mot en annan människa och framförallt via nätet.
Ska givetvis gå att spela 2st på samma dator, men alltså ej med datorn som motspelare.
Helt klart en brist på bra schackspel som är gratis där man enkelt kan spela en match och inte behöva lida för dåligt skrivna program med minnesläckor eller ful grafik.
Sökes:
* Någon som är bra på nätverksprotokoll och kan programmera sådant för det har jag personligen ingen koll på (men ser fram emot att lära mig).
* Någon duktig grafiker som kan ordna snygga 2D-pjäser som skall vara justerbara i storlek utan kvalitetsförluster(det går va?)
* folk som är intresserade av att diskutera olika tillvägagångssätt för att lösa diverse problem som uppstår i och med olika schackregler m.m.
Bäst är om ni skriver på i den här tåden tills vidare men är det något särskilt så kan ni maila mig.
Trevligt trevligt!
Låter ju utmärkt.
Vill att varje del i programmet ska vara bra gjord.
Tror inte det ska vara så jättesvårt iof
Men redan nu kan säkert någon bistå med koden för tex en enkel chatt.
Har surfat runt hela dagen och hittat intressanta länkar och olika tekniker för att göra ett schackspel.
Hoppas på mer intresse för jag kommer nog inte lyckas ro i land det här själv.
Jajjemän.
Det är tanken i alla fall.
Jag kan programmera java och har läst två kurser i programmeringsmetodik men är inte så värst vass på cocoa så jag väljer ObjC mest för att det lär vara mest optimerat.
Utveckla gärna din fråga.
Är det så att du gärna deltar men inte kan objC?
Är du genuint intresserad finns det säkert massor att bidra med ändå.
Har redan fått kontakt med flera och hittat massor av fakta så det här går minsann vägen
Just shack är väl ganska trist, men programmeringen är ju intressant ändå.
Jag har gjort ett liknande projekt i java, som tyvärr inte blev helt färdigt. Det gick dock att spela över nätverk och det var ganska fräckt.
Jag har börjat titta på Obj-C, men inte gjort något riktigt i det. Har dock läst en hel del java, och är mycket intresserad av att lära mig Obj-C. Har dessutom läst en del datakommunikation, så jag vet iaf vad sockets är.
Jag kan inte programmera(ännu) men skulle vara intresserad av att få lite inblick hur det går till. Kanske ni har någon syssla som inte kräver så mycket kunskap som jag kan hjälpa er med annars vill jag gärna titta på under tiden om jag får. Jag har tittat lite på Obj-C men ska nu under våren läsa C som förstudie innan jag ger mig på att lära mig Obj-C. Målet är att jag ska lära mig att programmera med Obj-C så därför skulle det vara intressant att i stora drag se hur det går till i verkligheten så att säga. Om ni gör en mailing-lista så vill jag gärna få vara med på den om jag får.
Skrevs ursprungligen av klas
Just shack är väl ganska trist, men programmeringen är ju intressant ändå.
Jag har gjort ett liknande projekt i java, som tyvärr inte blev helt färdigt. Det gick dock att spela över nätverk och det var ganska fräckt.
Jag har börjat titta på Obj-C, men inte gjort något riktigt i det. Har dock läst en hel del java, och är mycket intresserad av att lära mig Obj-C. Har dessutom läst en del datakommunikation, så jag vet iaf vad sockets är.
Programmeringen är mycket intressant i just schack. Fast det är framförallt om man implementerar datorstöd.
Klart det hjälper om man är genuint intresserad av slutprodukten men om du är mycket intresserad av bra skriven kod och gillar programmering så ska det väl funka ändå
Skrevs ursprungligen av John Stalberg
Jag kan inte programmera(ännu) [...] Om ni gör en mailing-lista så vill jag gärna få vara med på den om jag får.
Ja visst! Det lär fungera utmärkt!
Kanske är smart att använda sig av en mailinglista för idéer m.m. där folk kan hojta till om de kommer på andra förslag och så...
Skrevs ursprungligen av Ciryon
Spelet måste givetvis ha Rendezvous-stöd. Jag har gjort ett enkelt program som använder Rendezvous, så jag vet lite hur det funkar.
Ciryon
Haha, det kom jag också på imorse när jag stod och borstade tänderna
Toppen att du kikat på det!
Jag håller på för fullt att kolla upp olika tekniker för att hålla reda på pjäserna och snabbast räkna ut om ett drag är tillåtet eller inte.
Hur man håller reda på historiken i spelet osv.
Läser överallt om hur bitmapping är det bästa men artiklarna jag läser är ofta flera år gamla ('94-'02) så jag undrar om man kanske kommer komma på en egen teknik med snabba inbyggda funktioner.
Vad som saknas är någon riktigt duktig grafiknisse
Självklart skall spelplanens storlek gå att justera och då skall grafiken inte bli helt förstord utan snarare kunna bli mer detaljerad och ännu snyggare
Skrevs ursprungligen av Ciryon
Spelet måste givetvis ha Rendezvous-stöd. Jag har gjort ett enkelt program som använder Rendezvous, så jag vet lite hur det funkar.
Ciryon
Vilket protokoll använder Rendevouz? För Rendevouz är väl bara ett sätt att "upptäcka" varann?
Någon som har teorier kring vilket protokoll som bör användas för ett shackspel och tillhörande chatt ?
Skrevs ursprungligen av ivar
Vilket protokoll använder Rendevouz? För Rendevouz är väl bara ett sätt att "upptäcka" varann?
Någon som har teorier kring vilket protokoll som bör användas för ett shackspel och tillhörande chatt ?
Ja, Rendezvous är framför allt en metod att upptäcka DNS tjänster. Det fina är att de vanliga TCP/IP och DNS protokollen används.
Jag skulle tro att de bästa är att använda ett förbindelsefritt protokoll, UDP, och sedan ha egen felkontroll som kollar att allting kommit fram ordentligt.
Ciryon
Ja, Rendezvous är framför allt en metod att upptäcka DNS tjänster. Det fina är att de vanliga TCP/IP och DNS protokollen används.
Jag skulle tro att de bästa är att använda ett förbindelsefritt protokoll, UDP, och sedan ha egen felkontroll som kollar att allting kommit fram ordentligt.
Ciryon
Hola,
verkar vara ett mkt roligt projet men UDP är ganska "stökigt", jag skulle rekommendera TCP/IP då denna är mycket "snällare" mot dig som kodare & det finns mkt mkt mer dokumentation + hjälp på nätet.
Vill ni bygga hjulet igen och hitta på ett helt eget protokoll -> kör, men det kommer ta mkt längre tid. Jag har bara kodat java på mac (= jag har ingen aning om vad Object C stöder) men jag tycker println med instruktionen på socketen är enklast alt. varje meddelande har sin längd i "headern" så vet man hur mkt man ska läsa. Jag har inte järnkoll på ämnet men har kodat en del socket appar.
Hola,
verkar vara ett mkt roligt projet men UDP är ganska "stökigt", jag skulle rekommendera TCP/IP då denna är mycket "snällare" mot dig som kodare & det finns mkt mkt mer dokumentation + hjälp på nätet.
Vill ni bygga hjulet igen och hitta på ett helt eget protokoll -> kör, men det kommer ta mkt längre tid. Jag har bara kodat java på mac (= jag har ingen aning om vad Object C stöder) men jag tycker println med instruktionen på socketen är enklast alt. varje meddelande har sin längd i "headern" så vet man hur mkt man ska läsa. Jag har inte järnkoll på ämnet men har kodat en del socket appar.
Det lättaste är nog som sagt att använda TCP, men UDP är inte helt tokigt heller. Just schackspel har låg prioritet på att alla paket kommer fram eftersom det inte händer i realtid. Att spela schack över e-mail var t.ex. länge populärt. Det viktiga är att båda sidor vet när ett drag har genomförts.
Ciryon
Det lättaste är nog som sagt att använda TCP, men UDP är inte helt tokigt heller. Just schackspel har låg prioritet på att alla paket kommer fram eftersom det inte händer i realtid. Att spela schack över e-mail var t.ex. länge populärt. Det viktiga är att båda sidor vet när ett drag har genomförts.
Ciryon
Visst kan du använda både TCP och UDP, men i det här fallet så är det ju enklare och mer naturligt att använda TCP. Schackspel har väl HÖG prioritet på att paketet kommer fram, men däremot så är ju hastighetskraven minimala. Så att använda TCP är det logiska valet. Annars så får du ju själv göra något typ av protokoll, som ser till att motspelaren är garanterad att få ditt paket.
Skrevs ursprungligen av Ciryon
UDP brukar användas av nätverksspel. I det här fallet tror jag inte det behövs en stabil förbindelse.
Ciryon
Brukar inte UDP användas av FPS-nätverksspel där det ska flyta på så bra som möjligt? dvs, försvinner ett paket så får det hellre uppdateras genom att man läser in nästa paket i följden.. medan man i TCP/IP inte läser in nästa paket förrän man fått det som ska fås.
I schack skulle man väl gott kunna vänta in paketen då det inte finns någon riktig tidsstress?
Skrevs ursprungligen av Ciryon
OpenGL !
Ciryon
Jag har läst linjär algebra ialla fall. Läste någonstans att man har användning av det när man ska programmera openGL. Fast det kanske bara gällde vid 3D-programmering. Här ska det framförallt satsas på vanlig 2D. Snyggt, stilrent och funktionellt !!!
Ska kika in mer vad de exakta skillnaderna mellan UDP och TCP/IP är också...
Jag tror jag rekommenderar TCP ändå, verkar lättare att tunnla mot PPP kopplingar t.ex, och hastighetsförtjänsten med UDP är nog försumbar, om man inte spelar RIKTIGT snabbt blixtschack
Skulle gärna hjälpa till med något i projektet, men jag har inte ens fått min iBook ännu, då den landat så ska jag börja kika närmare på ObjC och möjligtvis applescript.
Så i nuläget så sitter jag mestadels med mina hökögon och observerar hur arbetet fortskrider för "er"
Skall vara utomordentligt enkelt att förstå hur man använder programmet.
Precis som det skall vara , à la mac
Då jag är oinsatt i nätverksprogrammering så känns det härligt med någon som är insatt!
Här är länkar jag ännu börjat läsa igenom
http://www.cs.biu.ac.il/~davoudo/tutorials.html
http://www.xs4all.nl/~verhelst/chess/programming.html
http://www.chessbrain.net/beowulf/theory.html#bitboards (bra)
Det är inte helt uppenbart vilken metodman vill använda faktiskt.
Hur ska spelet känna av att kungen står i schack? Hur ska den känna av matt? Man vill ju helst slippa har särskilda kontroller som körs efter/innan varje drag.
Skall programmeras helt optimerat
Har väldigt fullt upp för tillfället så just nu sitter jag inte hela dagarna med det här
Jo, TCP kanske är bättre ändå för ett schackspel. Man skulle kunna tänka sig lite olika sätt att spela på:
* En schackserver som håller koll på olika spel och där spelare kan ansluta och göra sina drag när de har tid (det kan alltså ta väldigt lång tid att spela, men kräver inte att båda spelarna sitter samtidigt).
* En direktanslutning (p2p) där spelet avslutas direkt när någon av spelarna kopplar ner.
* Direktanslutning, men där en av spelarna egentligen är server och har kvar spelet om nedkoppling sker.
Det skulle vara fräckt att skapa något sorts plugin-system så man enkelt kan lägga till olika funktioner som textchat (eller röstchat, hehe), "ångra drag", spela mot datorn eller whatever.
Ciryon
Jag ser framförmig en slags p2p-lösning men det kommer ju bli en lösning som inkluderar en server.
Servern bör ju inte märkas nämnvärt om det skall vara så enkelt som möjligt utan när man väljer typ New Game så finns det join game samt host game där de senare startar en server i bakgrunden.
Jag har tänkt att slutprodukten också skall tillåta observers som kan ansluta till servern och endast beskåda matchen och om de som spelar tillåter det så kan observers'na chatta i nån slags public chat.
Av säkerhetsskäl skall ju klienterna endast skicka sitt drag till servern som i sin tur går igenom draget och kontrollerar att det är ett giltigt drag och så.
Jag ser framför mig att man flyttar sin pjäs genom att flytta den i det grafiska läget och då skall man endast kunna flytta till giltiga rutor. Dvs klienten skall begränsa så man inte kan testa och flytta till fel rutor och på så sätt snabba upp nätverkskommunikationen och minimera kontrollerna hos servern.
Plug-in system ser jag inga fördelar med i dagsläget men det kanske kommer klarna för mig
Angående nätverksprogrammeringen så skall den gärna påminna om enkelheten hos iChat tillsammans med brandväggar (någon sa att iChat var extremt bra på att inte påverkas av brandväggar?)
Milstolpe 1
* Få en skiss på shackbrädet gjord i InterfaceBuilder.
* En skiss av slutprodukten gjord i photoshop för att bli samspelta på målet
Milstolpe 2
* En irc-liknande chatt där den ena agerar server. inget fancy utan bara ett enkelt program som skickar och tar emot text
Personligen satsar jag nästan all energi på att få till lösningen för själva schacket i sig. Hur kontroller ska ske och dylikt.
ps. appropå spel med datorn som motståndare så är det inte ett mål i utgångsläget utan får bli någon att satsa på i senare skede. Dock skall självklart programmeringen göras på sådant sätt att man kan fortsätta skriva och lägga till datorstöd. dvs optimerad kod så att datorns tid för att räkna ut sitt drag blir minimal.
Varför inte bygga in nätverksstöd i Chess.app?
Källkoden finns ju tillgänglig, via "About Chess"
Nepp. Det dög inte... nu har jag hittat ett spel som avspeglar de kvaliteter jag söker. Verkar rätt snabbt och bra kodat.
Ger enkelt möjlighet för att ändra spelet efter egna önskemål (grafikmässigt)
Spelet heter Goban och hittas här.
Tror ändå jag kör vidare på idén att jag ska kika på andras kod men skriva ihop ett eget program som skall vara så optimerat för syftet som möjligt. (syftet = nätverksspelande, människa mot människa.)
Dock skall koden vara så bra gjord som möjligt för att bygga ut och använda sig av en dator som motståndare istället, i framtiden.
Skulle vilja ha 2-3st till med mig som är intresserade av logik och hur man ska gå till väga med olika lösningar.
Ej kodmässigt utan mest teoretiskt snack.