.[ ČeskéHry.cz ].
Řetězce
Jdi na stránku Předchozí  1, 2, 3
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
frca



Založen: 28. 07. 2007
Příspěvky: 1561

PříspěvekZaslal: 24. květen 2012, 16:09:55    Předmět: Odpovědět s citátem

Trololo?
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 25. květen 2012, 09:57:52    Předmět: Odpovědět s citátem

VladR napsal:
Tak predovsetkym je to posrane v Linuxe (nie ze by ma to ale prekvapovalo).

Pod Winom som s lokalizaciou nemal nikdy vyraznejsi problem, ci uz WTF-8 alebo WTF-16.


boze ty ale pletes jabka a hrusky - jedna vec je michani wchar_t a char a druha je vec je schopnej framework na lokalizace - treba v linuxu je mnohem lepe dostupnej gettext a hlavne v linuxu s neoperuje s pochybnym WCHAR (ktery je Unicode nikoliv UTF-16 - je to rozdil!) ale ciste s UTF-8 Wink - alespon v zakladnim libc API
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Aroidzap



Založen: 14. 11. 2011
Příspěvky: 68

PříspěvekZaslal: 25. květen 2012, 15:43:04    Předmět: Odpovědět s citátem

Tak muzu se jeste jednou zeptat? Jde mi tu o nacitatni xml dat, presneji collada, jde mi o rychlost a o to, aby se zbytecne nepouzivala pamet. chtel jsem pouzit char* z toho duvodu, ze si myslim, ze tam nejsou zadne zbytecnosti co by zrali pamet a zadne zbytecne skryte funkce, kdyz se s nima manipuluje. Pokud si myslite, ze pro nacitani collady neni char* dobry, poradite mi prosim neco lepsiho? diky Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
if.then



Založen: 13. 04. 2008
Příspěvky: 579

PříspěvekZaslal: 25. květen 2012, 16:15:24    Předmět: Odpovědět s citátem

Na tvou otázku: char * použít můžeš, ale rozhodně bych to nedoporučoval. Jsi pak vázaný na ANSI C funkce k manipulaci s řetězci, které by dnes nikdo nepoužíval, protože nejsou ani bezpečné, ani příliš intuitivní. Svoje vlastní si taky můžeš napsat, ale bude to z louže do bláta, pokud neznáš ukazatele jako svoje boty.

To už je lepší std::string a z toho to rozházet do hiearchické struktury (Collada je v XML).

A pokud bych neměl odpovídat na tvou otázku? Collada je děs, příšerně obsáhlá a většinou neurčitá specifikace, každý nadává, když si píše vlastní importer.
Takže použij Assimp. Ušetří ti to mnoho nadávek.
_________________
For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
OndraSej



Založen: 28. 07. 2007
Příspěvky: 767
Bydliště: Brandýs nad Labem

PříspěvekZaslal: 25. květen 2012, 16:44:53    Předmět: Odpovědět s citátem

Aroidzap> Pokud neprogramuješ něco hodně specifického (a pokud ano, tak bys to věděl), tak úspora daná použitím char* místo std::string nestojí za řeč a za práci navíc.

Jinak pokud potřebuješ parsovat XML, rozhodně použij nějakou existující knihovnu, XML je podstatně složitější formát než na první pohled vypadá a kdybys měl správně ošetřit všechny možnosti, tak u toho strávíš podobně času jako u zbytku hry. A pokud existuje kód pro parsování přímo Collady, tak nejlepší co můžeš udělat je použít přímo ten.
_________________
http://trionteam.net
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 25. květen 2012, 19:26:27    Předmět: Odpovědět s citátem

Na parsing XML doporučuju TinyXML.. rozhodně to nepsat ručně Smile Na Colladu jsem si to napsal ručně pak s pomocí toho.. ale byla to k**** práce Very Happy
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Lemik



Založen: 30. 07. 2007
Příspěvky: 138

PříspěvekZaslal: 25. květen 2012, 19:35:29    Předmět: Odpovědět s citátem

VladR napsal:

Kedze uz tu riesime ten string a kopol som si do C++ kvoli C#, tak v ramci ferovosti to musim spravit aj naopak, lebo pod C# runtime jedna instancia stringu leakuje 4 KB ! Cize, v hre clovek si nemoze len tak jednoducho pouzit string (ale stringBuilder), lebo po par sekundach leakne 1 MB a uz sa pusta GarbageCollector. Z jedneho stringu...


Můžeš mi k tomu prosím dát konkrétnější info?


citace:
tak tak - alespon neco ve smyslu "Muj ultimatni %1 text, kterej obsahuje %2 reference" - s timhle uz se da pracovat protoze nikdo mam nema problem napsat preklad typu "Hoi tong %2 tong hong honky tonky %1."


To mě nikdy nenapadlo, díky za radu, proč nekonkatenovat.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Lemik



Založen: 30. 07. 2007
Příspěvky: 138

PříspěvekZaslal: 6. červen 2012, 17:11:03    Předmět: Odpovědět s citátem

Pardon za bump, ale vidím, že VladR už je přítomen, tak upozorňuji na můj dotaz výše.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 7. červen 2012, 00:11:05    Předmět: Odpovědět s citátem

No, problem je, ze .NET kod v style "string A = B+C" je v hlavnej smycke neskutocne zverstvo. Pretoze, aj ked kodim pomaly 30 rokov, tak toto sa mi este fakt nestalo, ze by jeden sprosty string zral tolko RAMky. O tomto sa budem hadat kludne aj do krvi. Toto proste nemozes ocakavat !
To je ako keby si povedal, ze je normalne, ze int Num zozerie 4 KB...

Ja som vyrastal na strojovom kode 6502, takze ked vidim nieco take, tak sa mi proste obracia zaludok...

Na PC si to nevsimnes, lebo tam sa ti GC spusta na osobitnom jadre, takze ti to beh nespomaluje.

Ale z XBOXU si veeeelmi zretelne spominam, ako som cumel na vypis z toho debug toolu od MS jak puk, ze kolko RAMky vlastne leakuje jeden sprosty string. Co si spominam, tak to bolo 8 KB na 1 instanciu. Cize na vyssie uvedeny riadok zozeries 3*8=24 KB. Pri 60 framoch za sekundu to mas 24*60 = 1 MB+, takze sa ti kazdu sekundu (vzdy po prekroceni 1 MB) spusti Garbage Collector.

Co na XBOXe, prirodzene, vdaka GC implementacii v .CF znamena, ze ti hra kazdu sekundu na pol sekundy zadrhne.

Ked som vyssie uvedeny riadok vyremoval, tak samozrejme sekanie na XBOXe prestalo. Na PC ziadna zmena (logicky).

Takychto pruserov je pod .NET viacej. A nejde len o (Un)Boxing. Ked som naraz bindoval 3 vertex buffery na mesh, tak by ma tiez v zivote nenapadlo, ze to bude leakovat jak hovado. A ono leakovalo (workaround bol sice jednoduchy, ale WTF to bol teda riadny) Smile

Implementacia CF ma proste svoje, nazvime to, specifika Laughing


Ak si chces byt isty, tak udajne musis skumat IL kod. Ale to je blbost ! to si mozem zacat kodit rovno v assembleri. Nejdem predsa do hi-level jazyka ako C# preto, aby som detailne skumal, ze co za paseku tam ten sprosty kompilator narobil.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
OndraSej



Založen: 28. 07. 2007
Příspěvky: 767
Bydliště: Brandýs nad Labem

PříspěvekZaslal: 7. červen 2012, 04:23:58    Předmět: Odpovědět s citátem

VladR napsal:
Ak si chces byt isty, tak udajne musis skumat IL kod. Ale to je blbost ! to si mozem zacat kodit rovno v assembleri. Nejdem predsa do hi-level jazyka ako C# preto, aby som detailne skumal, ze co za paseku tam ten sprosty kompilator narobil.


U .NET nemusis zkoumat primo IL, existuji hodne dobre dekompilatory do C#/VB.NET (napr. Reflector); zdrojaky od nekterych nejmenovanych "programatoru" dokonce vypadaji lepe po dekompilovani Wink

Jinak ten rozdil mezi desktopem a XBoxem je mozna i v tom, ze na XBoxu je .NET CF, ktery dost pravdepodobne ma i uplne jiny GC nez ta desktopova verze. Ze by XBox nemel dost vykonu (nebo dost procesoru) na to, aby spustil GC nekde mimo si nemyslim...
_________________
http://trionteam.net
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Ladis



Založen: 18. 09. 2007
Příspěvky: 1537
Bydliště: u Prahy

PříspěvekZaslal: 7. červen 2012, 08:13:15    Předmět: Odpovědět s citátem

O tom VladR mluvil už dřív, že problém je v použítí .NET CF. XBox360 má samozřejmě dost výkonný CPU (3jádrový 3,2GHz PowerPC).
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 7. červen 2012, 14:59:47    Předmět: Odpovědět s citátem

OndraSej napsal:
Jinak ten rozdil mezi desktopem a XBoxem je mozna i v tom, ze na XBoxu je .NET CF, ktery dost pravdepodobne ma i uplne jiny GC nez ta desktopova verze. Ze by XBox nemel dost vykonu (nebo dost procesoru) na to, aby spustil GC nekde mimo si nemyslim...
No ved to som pisal, ze je to kvoli Compact Framework.

To, ze ti hra zatuhne pri GC zatuhne aj na 2.5 sekundy (a pravidelne, ak leakujes vela) je priodzene problem implementacie GC. Aj ked su na X-ku 3 jadra, GC bezi len na tom, na ktorom bezi CF, cize aj XNA. Takze multithreading ti tu nepomoze absolutne, lebo ked fici GC, tak vsetko ostatne stoji...


Na WP7.5 , prirodzene, nebol problem zmenit implementaciu GC na mark-and-sweep, ale na X-ko sa MS zvysoka vysral...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2, 3
Strana 3 z 3

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna