Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 16. leden 2012, 22:59:39 Předmět: |
|
|
Pro ty, kteří byli liní to stáhnout a spustit a popř. zahrát si to se svým kamarádem, jsem nahrál na YT video. Bohužel, nesehnal jsem druhého hráče, takže si tam hraji sám.
Až přijede Poky na kolej (a bude se mu chtít), tak bych možná nahrál celou bitku (tedy v případě, že to vůbec dohrajeme )... _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
Poky

Založen: 29. 06. 2009 Příspěvky: 184 Bydliště: Písek / Plzeň
|
Zaslal: 17. leden 2012, 17:32:03 Předmět: |
|
|
Voda:
Já sem nemocnej, takže přijedu asi až zítra večer ... tak pak to video teda nějak spachtíme  |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 17. leden 2012, 19:39:22 Předmět: |
|
|
OT poznámka: Když je to multiplayer, proč čekáš až přijede Poky na kolej Ono to nejde hrát po síti ?  _________________ Perry.cz |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 20. leden 2012, 21:18:05 Předmět: |
|
|
perry napsal: |
OT poznámka: Když je to multiplayer, proč čekáš až přijede Poky na kolej Ono to nejde hrát po síti ?  |
Dobrá poznámka. Problém je v tom, že jednak nemám kam umístit server a navíc bych se bál veřejného přístupu (na větší zátěž jsem server netestoval). Rovněž si myslím, že hraní po netu by v tomto případě nebylo vůbec možné (lagy). I když, nezkoušel jsem to, takže nevím... _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 26. leden 2012, 11:37:20 Předmět: |
|
|
Update
1. Omezil jsem maximální počet suroviny na 50 bodů, takže teď bude muset hráč opravdu přemýšlet kdy a kde udělá jednotky. A zároveň bude schopen vytvořit všech 5 jednotek najednou (každá jednotka spotřebuje 10 bodů suroviny)
2. Přidal jsem odpočet času na 15 min. Po 15 minutách vítězí ten, kdo má nejvíce obsazených flagů.
Bohužel se mi stále nepovedlo přijít na to, proč na linuxech (a zkoušel jsem to na Ubuntách, Debianech, OpenSUSE) v neblokujícím režimu socketu, po zavolání connect, je socket ihned připraven k zápisu (select), aniž by se navázalo se serverem spojení...asi to bude chyba v jádře, protože to dělá i u příkladů co jsem zkoušel z netu...ve Windows (Winsock) to kupodivu funguje bez problému, podle očekávání.
Binárka opět pro Windows i Linux (32bit) zde. _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 26. leden 2012, 12:33:48 Předmět: |
|
|
Chyba v jádře to nebude, jelikož tohle je docela základní věc a ke všemu Linux dodržuje normu POSIX, zatímco Windows ji úplně ignoruje. Je potřeba se nejdřív podívat, jak to POSIX specifikuje a na tom stavět, nikoliv to porovnávat s Windows, který si dělá věci podle sebe. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 26. leden 2012, 14:08:03 Předmět: |
|
|
No já to hlavně porovnával s kódy na root.cz, které jsou psány pro linux a hledal v různých diskuzích, jak se to přesně programuje. Nejprve jsem si myslel, že je to virtuálkou, ale nou mi říkal, že i na nativních linuxech se mu nezobrazuje hláška, jejíž zobrazení je správnou funkčností podmíněno. Svůj kód jsem kontroloval snad tisíckrát, v tom to není...
A nesnaž se mi říci, že všechny návody na netu, jak pracovat se sockety v neblokovacím režimu (v linuxu) jsou špatně...
Dokonce i v dokumentaci na bsd sockety je uvedeno, že to tak má být.
citace: |
When the connection has been established asynchronously, select() and poll() shall indicate that the file descriptor for the socket is ready for writing. |
viz. http://pubs.opengroup.org/onlinepubs/009695399/functions/connect.html _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 26. leden 2012, 14:48:08 Předmět: |
|
|
citace: |
Dokonce i v dokumentaci na bsd sockety je uvedeno, že to tak má být. |
Pozor, Berkley sockets se trošku liší od Posix sockets - nejsou to stejné.  _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 26. leden 2012, 18:15:53 Předmět: |
|
|
Zkrátka používám to, na co jsem odkázal v linku, takže to prostě nefunguje... _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 27. leden 2012, 16:42:38 Předmět: |
|
|
Tak už jsem to vyřešil, ale logiku v tom najít nemohu.
Bylo to v tom, že když zavolám select v neblokovacím režimu po volání connect (kdy connect vrátí -1 a errno == EINPROGRESS) a spojení nelze navázat, tak select namísto toho aby vrátil -1 nebo alepoň 0 (select vrací počet socketů na kterých došlo ke změně) tak vrátí 1 (což by každý inteligentní člověk pochopil tak, že je možno na socket zapisovat, tudíž by se dalo předpokládat, že spojení je navázáno). Po dlouhém googlení jsem našel jeden článek, kde na to jeden pán také nadával, ale napsal tam i řešení.
Takže jsem nakonec kód mé metody canWrite obohatil o kousek dalšího kódu (pro linux) v případě, že select vrátí 1.
kód: |
if (!blockingMode)
{
int so_rv = 0;
socklen_t sockLen = sizeof(int);
if (getsockopt(socketDesc, SOL_SOCKET, SO_ERROR, (void*) &so_rv, &sockLen) < 0)
{
return -1;
}
if (so_rv)
{
return -1;
}
} |
Teď už to tedy funguje, ale možná bych to měl vyzkoušet i v blokovacím režimu, jestli náhodou po nezdařeném připojení nevrací pan select také 1.
Docela mě tohle zklamalo, já myslel že nelogické jsou akorát Windows...  _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
franz
Založen: 30. 07. 2007 Příspěvky: 1325
|
Zaslal: 15. únor 2012, 15:33:36 Předmět: |
|
|
Ta hláška "connecting to server.." po kliknutí na login se mi na linuxu zobrazuje.
Linuxový server není?
V kombinaci linuxový klient a windows klient se mi vždy ten linuxový po zahájení hry ukončí a na windows se zobrazí you win!
Dva win klienti se hraje bez problémů.
Co mi vadí, že každý sebe vidí modrého a soupeře červeného, při pohledu na monitor protihráče to mate.
Taky mi chybí na minimapě, že vidím jen svoje území a není rozlišeno neutrální od soupeřovo.
A celkově je celá hra k ničemu (myslím ten 3D svět), hraji to pouze přes minimapu, kde k dokonalosti chybí možnost vybrat jednotku kliknutím  |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 15. únor 2012, 21:31:13 Předmět: |
|
|
Hm, kombinace klientů na z různých OS jsem nezkoušel...linuxový server je také, spustíš ho z terminálu s parametrem -s (viz. úvodní stránka)...chtělo by to ještě poladit, ale už na tom dále pokračovat nebudu. Účel to splnilo, dostal jsem 39 bodů ze 30 možných (byla to semestrálka na sítě), na dni otevřených dvěří se to celkem líbilo, takže já jsem spokojen.
Ty věci, co jsi vyjmenoval (barva, svět)...neměl jsem čas si s tím více hrát, protože mě tlačil termín. Původně to měla být strategie klasičtějšího ražení, ale nedostatek času mě přinutil to vše udělat co nejjednodušeji.
Teď už chci dělat jen Sollertii (no a bakalářku). _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
|