játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5441
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2519

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2186
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
Frissebbek | Korábbi postok
[1] > 2 < [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [46]
Asylum - Törzstag | 5441 hsz       Online status #205998   2015.01.03 15:23 GMT+1 óra  
Version és a tapasztalat... made my day
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Parallax - Tag | 574 hsz       Online status #205972   2015.01.02 17:42 GMT+1 óra  
Manapság ezeknél a framework-öknél a tapasztalat abban merül ki, hogy ki tudja gyorsabban forgatni a dokumentációt. Az ilyen mélyebb kérdéseknél, hogy melyik konténer milyen algoritmust használ sajnos megáll a tudomány, de aki nem ezen nőtt fel az is max csak tippelni tud.

   
BlueDeath - Törzstag | 1035 hsz       Online status #205971   2015.01.02 16:45 GMT+1 óra  
Version: az sincs hiába, hogy te 15 év után is...
   
versio - Tag | 659 hsz       Online status #205970   2015.01.02 14:52 GMT+1 óra  
Viperion : a szo amit keresel, "tapasztalat" , nem hiaba van az hogy 15 evnyi programozas alatt barmelyik ember csak vicckategorias
   
jUsTaMan - Tag | 1 hsz       Online status #205969   2015.01.02 14:22 GMT+1 óra  
Hello! Most kezdtem el programozni, és van 1 hiba amit nem tudok megoldani, mégpedig ez: 'Expected class, delegate, enum, interface,or struct' Segítségeteket kérném és előre is köszönöm.

   
Viperion - Tag | 540 hsz       Online status #204406   2014.08.02 18:04 GMT+1 óra  
Honnan tudthatom meg tesztelgetések nélkül,hogy egy gyűjtemény bizonyos metódusai constant vagy liner time idő alatt végzik el a dolgukat?Nincs valami jó feljegyzés ezekről valahol?

   
Instalok - Tag | 532 hsz       Online status #204375   2014.08.01 18:04 GMT+1 óra  
[EDIT]
Hát persze, hogy néhány óra szenvedés után írtam meg a hozzászólást, majd megoldódott.

Ezt a hozzászólást Instalok módosította (2014.08.01 18:10 GMT+1 óra, ---)

   
Instalok - Tag | 532 hsz       Online status #204359   2014.07.31 22:16 GMT+1 óra  
Minimális szinten ismerem a Qt-t, de nem szívesen rángatnék be egy third-party libet. Főleg nem egy ekkorát. Amikor én utoljára néztem, hatalmas volt. Ettől függetlenül kétség kívül egy hasznos dolog, csak nem szeretném használni.

   
Parallax - Tag | 574 hsz       Online status #204356   2014.07.31 19:36 GMT+1 óra  
Én azért csak úgy a poén kedvéért ránéznék a QT-re. Van olyan, hogy például QGLWidget, ahova a zendzsín init, beginScene, endScene stb részeit berakod és már kész is az editorhoz a render control. Ezek után nincs szenvedés a nyelvek közötti konvertálásokkal, hívásokkal, kiakadások és egyebekkel. Továbbá van sytax highlight is, ha az ditorban scriptelés lesz, meg még egy halom hasznos dolog.

   
Instalok - Tag | 532 hsz       Online status #204355   2014.07.31 18:58 GMT+1 óra  
Na jó, még egy akkor. Sajnos nem vagyok egy nagy C#/Winforms guru, szóval legfeljebb csak csúnya megoldást tudnék adni bizonyos esetekben. Betettem egy próba PropertyGridet egy próba osztállyal. Azt vettem észre, hogy miután az egyik elemet szerkesztettem, nem tudtam úgymond kikattintani belőle. Azaz hiába kattintottam más panelre, szerkesztés módban maradt. Erre a csúnya megoldás az lenne, hogy a többi panel Click eventjéhez hozzárendelem, hogy elvegye a fókuszt a PropertyGridtől. De biztosan van szép megoldás is erre.

   
Instalok - Tag | 532 hsz       Online status #204347   2014.07.31 13:43 GMT+1 óra  
Igen, egyébként pontosan ez a jelenlegi cél.

Sajnos minimális szinten muszáj tudnia, mert nekem a main loop is el van rejtve, normál esetben csak egy run függvényt hívok meg az alkalmazásból, és az onnantól intéz mindent. De egyébként van benne valami, hogy ne szóljon visszafelé, úgyis viszonylag kevés ilyen esetre számolok.

Akkor marad a folyamatos lekérdezés, végül is nem gond, az editornak nem a sebességről kell szólnia. Egyébként meg sajnos valóban, a mappeléseket meg kell csinálni, legyen az enum, vagy struktúra. Cserébe viszonylag könnyű a GUI-t megépíteni, és rengeteg lehetőségem van, szóval szerintem megéri ezt a plusz munkát és csúnyaságot.

Köszi!

   
MaNiAc - Szerkesztő | 1735 hsz       Online status #204344   2014.07.31 13:15 GMT+1 óra  
"Például egy objektum kijelölése után, milyen adatokkal töltse fel az "Inspector" ablakot, illetve ehhez hasonlóak."

Az inspector az nem véletlenül egy WinForms PropertyGrid?

Ha jól sejtem, ott tartasz, ahol én, pár éve, mikor még volt lelkierőm a C++hoz Szóval van egy C/C++ engine-ed és egy toolt vagy editort építesz köré .NET-ben, igaz? Ez esetben design-ügyileg az lenne a legjobb, ha az engine nem tudná, hogy ő most egy editorba van behúzva. Tehát, szerintem kerüld meg a vissza-irányú kommunikációt!

Kijelölsz valamit, az engine-től meg le tudod kérdezni, hogy mi van kijelölve - visszaad neked egy objektumot (natív pointer), amit bemapelsz a C# oldali megfelelőjébe (sajna muszáj vagy a struct-okat C#-ban újra létrehozni), aztán PropertyGrid-be vele! A propertygridben meg csinálni egy event handlert, ami ha egy adott mezője változik a "wrapper" ojjektumnak, akkor azt megváltoztatja az a natív objektumon is...
Dare to imagine!
http://www.insaneidea.hu
   
Instalok - Tag | 532 hsz       Online status #204342   2014.07.31 13:02 GMT+1 óra  
Azon gondolkoztam, hogy mi lehet a legszebb megoldás a natív C++ kódból meghívott függvényről a C# kódban kapjak értesítést? A másik irány egyértelmű, bizonyos actionök esetén meghívom a dll-ben található függvényt (P/Invoke, DllImport attribútum). Azonban arra is szükségem lesz, hogy a C++ kódból üzenjek a C#-nak. Például egy objektum kijelölése után, milyen adatokkal töltse fel az "Inspector" ablakot, illetve ehhez hasonlóak.

Gondolkoztam egy olyanon, hogy a managed kódból ciklikusan meghívok egy függvényt, ami visszatérési értékben megmondja, hogy történt-e valamilyen action az engine oldalon. Ha igen, akkor meghívja a megfelelő lekérést.

   
Instalok - Tag | 532 hsz       Online status #204326   2014.07.31 07:27 GMT+1 óra  
Az alapok úgy tűnik megvannak. Az engine minimális módosításával sikerült életet lehelni ebbe a megoldásba. Ami érdekességként tűnt fel, az az, hogy a Singleton osztályokkal vigyázni kell. Legalábbis azokkal, amelyek OpenGL objektumokkal dolgoznak. Jó példa erre a FullscreenQuad osztályom, amely létrehoz egy VBO-t, illetve a destruktorában nyilván törli is. Ezek mellett ez az osztály Singleton, és, ha ezt használom a kódban, akkor az editorból való kilépés után crashel a program. Utólag belegondolva teljesen érthető, hogy miért.

Szóval, ha valaki ilyesmin törné a fejét, akkor viszonylag egyszerűen megoldható, és alap típusokkal egyelőre tényleg szépen működik.

   
Instalok - Tag | 532 hsz       Online status #204233   2014.07.24 14:31 GMT+1 óra  
Idézet
MaNiAc :
Instalok :
en anno jo sokat foglalkoztam P/Invoke-kal. Igazabol ott gyult meg vele a bajom, mikor nagyobb osztalyokat szerettem volna oda-vissza passzolgatni. Ha csak alaptipusokat adogatsz at, tenyleg egyszeru a dolog.


Egyelőre nem látom, hogy nagyon más is kelleni fog, persze majd kiderül. Köszi, mindenképpen meg fogom próbálni összedolgozni a kettőt.

   
MaNiAc - Szerkesztő | 1735 hsz       Online status #204232   2014.07.24 12:21 GMT+1 óra  
Idézet
versio :
3 rendszer kozul lehet valasztani: Xamarin, monodevelop, unity ha az ember c#-ben akar programozni, namost ebbol az unity a legjobb, es ez egy c# topik, ugyhogy nem tudom miert lennek offtopic

Egy framework, egy IDE és egy toolkit... Felsorolhattál volna még egy HDD-t, egy WC kefét és egy narancsot is.

Idézet
versio :
a blogodba meg nyilvan azert bofogtem be, mert azt hittem nem ismered a unityt, pedig de csak utalod , errol en nem tehetek

Tetted ezt annak ellenére, hogy sokadszorra kértelek, felejs már el a prédikálásoddal. Nem utalom, csak hidegen hagy. Nem mindenki erez szexualis izgalmat a legujabb buzzword-ok hallatan. A Unity is csak egy toolkit a sok kozul, semmi mas, kar egyhazat alapitanod kore. De most már tényleg rohadtul zárjuk le a Unity témát ebben a topikban...

Instalok :
en anno jo sokat foglalkoztam P/Invoke-kal. Igazabol ott gyult meg vele a bajom, mikor nagyobb osztalyokat szerettem volna oda-vissza passzolgatni. Ha csak alaptipusokat adogatsz at, tenyleg egyszeru a dolog.
Dare to imagine!
http://www.insaneidea.hu
   
versio - Tag | 659 hsz       Online status #204231   2014.07.24 12:04 GMT+1 óra  
en probaltam , igaz hogy egyutt fejlesztve a c++-os engine-t , de meg debuggolni se tudtam rendesen , es nem valt be
   
Instalok - Tag | 532 hsz       Online status #204230   2014.07.24 11:56 GMT+1 óra  
versio:
Egyrészt a Unity-nek van külön fórumtémája, másrészt továbbra sem ez volt a kérdés.

Egyébként miért ne lehetne C#-ban "csak úgy" programozni? Ott a .NET is hozzá, szuper kis GUI-t lehet összerakni. És nekem pont ennyi kell, az engine már ott van C++-ban megírva, és nem az érdekel, hogy milyen engine illetve framework létezik C# alá.

Minden esetre a tapasztalataimat meg fogom osztani a két rendszer összehangolásáról, ha érdekelni fog valakit.

   
versio - Tag | 659 hsz       Online status #204229   2014.07.24 11:47 GMT+1 óra  
3 rendszer kozul lehet valasztani: Xamarin, monodevelop, unity ha az ember c#-ben akar programozni, namost ebbol az unity a legjobb, es ez egy c# topik, ugyhogy nem tudom miert lennek offtopic

a blogodba meg nyilvan azert bofogtem be, mert azt hittem nem ismered a unityt, pedig de csak utalod , errol en nem tehetek
   
MaNiAc - Szerkesztő | 1735 hsz       Online status #204227   2014.07.24 10:45 GMT+1 óra  
Idézet
versio :
Maniac: na es hogy allsz a java + opengl multiplatform cuccal ,most hogy az apple METAL-ra valtott ?

Királyul, köszi. De ha már így kérded...

1. Nincs és nem is lesz Apple termékem - és ívben nem érdekelnek azok, akinek van...
2. A MeTAL az S3 bejegyzett grafikus API-ja, ezeknek a gyíkoknak annyi esze sem volt, hogy saját nevet találjanak ki.
3. Nem mindenki olyan idióta, hogy állandóan buzzword-ök után rohangjáljon.

+1 Egyszer már kértelek, hogy fejezd be az offolást marketing-boy, mert a következő nem ide passzoló hozzászólásod megy a /dev/null-ba.

Ikszdé.
Dare to imagine!
http://www.insaneidea.hu
   
versio - Tag | 659 hsz       Online status #204226   2014.07.24 10:30 GMT+1 óra  
Maniac: na es hogy allsz a java + opengl multiplatform cuccal ,most hogy az apple METAL-ra valtott ?
   
MaNiAc - Szerkesztő | 1735 hsz       Online status #204222   2014.07.24 09:53 GMT+1 óra  
Annyira unalmas már ez a rohadt unity hype versio... A blogomba képes voltál Java + OpenGL posthoz odakommentelni a unity-t, mintha kicsit is érdekelne... Jó lenne már leszakadnod arról, hogy mindenhova ezzel offolj. Kthxbye.
Dare to imagine!
http://www.insaneidea.hu
   
Instalok - Tag | 532 hsz       Online status #204219   2014.07.23 14:02 GMT+1 óra  
Nem arra voltam kíváncsi, hogy használjak-e Unityt, vagy sem. Minden megoldható, csak akarni kell. Ráadásul egy editornál egyszerűen megoldható a kommunikáció az engine-el - szövegek, számok, alapvetően csak ennyi kell.

   
versio - Tag | 659 hsz       Online status #204218   2014.07.23 13:30 GMT+1 óra  
azert nem olyan egyszeru az, mert bizonyos osztalyok mind a ket nyelven jelen kell lenniuk, en nem ajanlom hogy ilyennek nekialljon, egyszerubb unityt hasznalni, az ugyanezt csinalja , csak 400 fejleszto tutujgatja hogy jo legyen
   
Instalok - Tag | 532 hsz       Online status #204215   2014.07.23 08:40 GMT+1 óra  
Igazából nem egy nagy ördöngősség a C++ és C# együtt használata. Csak kell egy dll, néhány, dll-be kiexportált C függvény, majd ezeket P/Invoke segítségével meghívni C# oldalon. Ettől féltem én is, hogy szét kell bontanom a függvényemet, hogy kézzel meghívható legyen a renderelés része, és a fő ciklust így a Form biztosítaná.

   
Parallax - Tag | 574 hsz       Online status #204212   2014.07.23 00:48 GMT+1 óra  
A PictureBox tudtommal GDI+ t használ, nem igazán renderelésre való. A QT-vel egyszerűbb együttműködni, mint 3 féle nyelven oda-vissza konvertálgatni. Itt van .NEt megoldás, ha mindenáron agaszkodsz ehhez a megoldáshoz.

   
Instalok - Tag | 532 hsz       Online status #204209   2014.07.22 17:11 GMT+1 óra  
Használt már esetleg valaki natív C++ engine-t C#-os GUI-val? Nem konkrétan a függvények meghívásával van a gond, inkább elméleti problémám van. C# oldalon készítek egy PictureBox jellegű elementet, amibe az engine rajzolni fog. Alap esetben úgy néz ki C++ oldalon, hogy meghívok egy run() függvényt, ami elindítja a main loopot. Ez C#-ban így nem fog működni, mivel akkor sosem lép ki a ciklusból, és még a form létrehozásakor beakad az egész.
Valamiért az új thread indítása nem tűnt a legjobb ötletnek, az OpenGL device panaszkodott rá. Gondolom nem igazán szereti, ha nem a main threaden készül el.

   
Parallax - Tag | 574 hsz       Online status #204128   2014.07.13 14:28 GMT+1 óra  
Idézet
Viperion :
Értem.
És a láncolt lista és a lista közt szintén nem látok különbséget mert egy sima listát is kezelhetek úgy mint egy egyszeresen vagy kétszeresen láncoltat.Ha ez igaz akkor miért használjak linkedListet List helyett?


Performancia okokból, ahogy a többit is, attól függ mire kell használni:
Append
•LinkedList<T>.AddLast(item) constant time
•List<T>.Add(item) amortized constant time, linear worst case

Prepend
•LinkedList<T>.AddFirst(item) constant time
•List<T>.Insert(0, item) linear time

Insertion
•LinkedList<T>.AddBefore(node, item) constant time
•LinkedList<T>.AddAfter(node, item) constant time
•List<T>.Insert(index, item) linear time

Removal
•LinkedList<T>.Remove(item) linear time
•LinkedList<T>.Remove(node) constant time
•List<T>.Remove(item) linear time
•List<T>.RemoveAt(index) linear time

Count
•LinkedList<T>.Count constant time
•List<T>.Count constant time

Contains
•LinkedList<T>.Contains(item) linear time
•List<T>.Contains(item) linear time

Clear
•LinkedList<T>.Clear() linear time
•List<T>.Clear() linear time

Hash, illetve Dictionary (keresőfa) adatszerkezeteknél meg mégdurvább lehet az eltérés, attól függően, hogy melyik művelet a fontosabb.

   
Viperion - Tag | 540 hsz       Online status #204127   2014.07.13 14:27 GMT+1 óra  
Még mindig nem jó a vs mi lehet a baja:

C:\Windows\system32>sxstrace.exe
WinSxs Tracing Utility.
Usage: SxsTrace [Options]
Options:
Trace -logfileileName [-nostop]
Enabling tracing for sxs.
Tracing log is saved to FileName.
If -nostop is specified, will not prompt to stop tracing.
Parse -logfileileName -outfilearsedFile [-filter:AppName]
Translate the raw trace file into a human readable format and
sult to ParsedFile.
Use -filter option to filter the output.
Stoptrace
Stop the trace if it is not stopped before.
Example: SxsTrace Trace -logfilexsTrace.etl
SxsTrace Parse -logfilexsTrace.etl -outfilexsTrace.txt

   
Viperion - Tag | 540 hsz       Online status #204119   2014.07.11 22:42 GMT+1 óra  
Értem.
És a láncolt lista és a lista közt szintén nem látok különbséget mert egy sima listát is kezelhetek úgy mint egy egyszeresen vagy kétszeresen láncoltat.Ha ez igaz akkor miért használjak linkedListet List helyett?

   
MaNiAc - Szerkesztő | 1735 hsz       Online status #204116   2014.07.11 12:15 GMT+1 óra  
Event log - http://support.microsoft.com/kb/308427

List - amikor listába akarod fűzni az objektumokat és végig akarsz menni rajtuk, vagy adott elemet kiválasztani. Listából van több fajta, attól függően, hogy mire akarod használni őket (láncolt, 2x láncolt, arraylist, stb)

Queue - amikor FIFO (first in, first out) megvalósításra van szükséged, anélkül, hogy érdekelne az elemek száma vagy indexe. Tipikus példa: van egy vagy több szálad, ami kiszámol vagy betölt valamit és belevágja egy objektumba, azt meg egy queueba, egy másik szál pedig sorban veszi ki onnan őket és dolgozza fel.
Dare to imagine!
http://www.insaneidea.hu
   
Viperion - Tag | 540 hsz       Online status #204102   2014.07.10 18:05 GMT+1 óra  
Nem találom,hogy hol van.Ez a baj. :-(
Mikor használjak Queue és mikor List objektumot?
Queue<int> q = new Queue<int>();
List<int> l = new List<int>();

Ezt a hozzászólást Viperion módosította (2014.07.10 23:40 GMT+1 óra, ---)

   
MaNiAc - Szerkesztő | 1735 hsz       Online status #204101   2014.07.10 16:42 GMT+1 óra  
És nézted az event log-ot?
Dare to imagine!
http://www.insaneidea.hu
   
Viperion - Tag | 540 hsz       Online status #204100   2014.07.10 13:18 GMT+1 óra  
De nem jó.
Mert telepítés után ezt írja ki mikor indítani akarom:
Az alkalmazást nem sikerült elindítani, mert párhuzamos konfigurációja helytelen. A problémáról részletesebben az alkalmazás eseménynaplójában, vagy az sxstrace. Exe parancssori eszköz elindításával olvashat.

   
Tunyu - Tag | 447 hsz       Online status #204095   2014.07.09 20:30 GMT+1 óra  
Viperion :

http://www.visualstudio.com/downloads/download-visual-studio-vs

Ajánlom figyelmedbe a Microsoft Visual Studio Express 2013 for Windows Desktop-ot, és ne töltsd le az iso-t , hanem az Install now lehetőséged válaszd.

   
Pixi - Tag | 205 hsz       Online status #204087   2014.07.08 09:43 GMT+1 óra  
Viperion: Próbáld meg, hogy mindent törölsz a gépről, ami ezzel kapcsolatban áll, tehát a programok telepítésénél és hozzáadásánál abból a szép listából (a VS-t is). Nem tudom hogyan próbáltad telepíteni a VS-t, de ajánlatos akkor a teljes telepítőt leszedni (valszeg ISO-ban lesz, ez tartalmazza az általad leírtakat is, .NET meg minden egyéb ami a VS futtatásához kell). Érdekes én is utána néztem, és a Microsoft Visual C++ Redistributable Package-ra hivatkoznak, de nálad ugye ez nem segít. Azt sajnos nem tudom, ha mindent törölsz az később milyen problémákat okozhat pl. MonoDevelop-ban. Hanyas VS-t próbálltad feltenni? Én azt ajánlom 2012-től ne legyen újabb (én most is 2010-et használok). Legrosszabb esetben meg ugye ott van az op reinstall. Habár olvasom sokaknál az sem oldotta meg a problémát.

   
MaNiAc - Szerkesztő | 1735 hsz       Online status #204086   2014.07.08 08:12 GMT+1 óra  
Viperion - mit is akarsz pontosan? C#-ban kódolni? Akkor miért a Visual C++t telepíted?

Ha C#-ról van szó, amit Geri írt, az nem segít, a C::B egy C++ IDE...
Dare to imagine!
http://www.insaneidea.hu
   
Geri - Törzstag | 2186 hsz       Online status #204083   2014.07.08 02:59 GMT+1 óra  
viperion: http://www.codeblocks.org/

ez nem a kérdésedre válasz, hanem a problémádra.

   
Viperion - Tag | 540 hsz       Online status #204082   2014.07.07 22:05 GMT+1 óra  
Nem tudna segíteni rajtam valaki mert már 2 napja szenvedek a visual studio express elindításával.
A probléma az,hogy amikor elindítom akkor kapok egy olyan hibaüzenetet,hogy "Az alkalmazást nem sikerült elindítani, mert párhuzamos konfigurációja helytelen. A problémáról részletesebben az alkalmazás eseménynaplójában, vagy az sxstrace. Exe parancssori eszköz elindításával olvashat." mindig ezt kapom.
Kerestem a fórumokon megoldásokért de kipróbálásuk után nem oldódott meg a probléma.
Felraktam a visual c++ 2005,2008 verziókat is sőt az összeset amit csak találtam de akkor sem volt jó nem indul el bármit csinálok nem jó.

Miket telepítsek fel,hogy jó legyen?
mincrosoft.net keretrendszer verziók közül hányas verziókat?
És a visual c++ ból hányas verziókat?

Egyébként felraktam én már az összeset de nem jó.
Amúgy nem kell minden verziót telepíteni ugye?

Ezt a hozzászólást Viperion módosította (2014.07.07 22:10 GMT+1 óra, ---)

   
Pixi - Tag | 205 hsz       Online status #202369   2014.04.08 13:24 GMT+1 óra  
Na Kipróbáltam ezt Console (szerver) + XNA/MonoGame-val (kliens), és amitől tartottam, hogy esetleg nem fog működni, az működik szerencsére.

Viszont olyan problémám van, hogy időnként nem megfelelően működik, az "add", "remove" üzenet feldolgozása. Pontosabban két féle hiba szokott jelentkezni véletlen időközönként, persze tutira nálam van a hiba.

A helyzet úgy áll, hogy a saját gépemen ki van nyitva a szerver mellett akár 8-10 kliens is (320x240 méretű kis game amennyi kb. kifér), majd amilyen gyorsan csak tudom megpróbálok egyszerre csatlakozni mindegyikkel (váltogatok az ablakok között), valamint ugyanezt megkísérlem a lecsatlakozáskor is:

1. Egyes kliensek időnként nem érzékelnek minden csatlakozni kívánó Playert, vagy pedig pont az ellenkezője, ugyanazt a játékost többször is addolják.
2. Lecsatlakozáskor előfordul, hogy egyes klienseknél ott marad a már offline játékos, ilyenkor a többi online még aktív marad és érzékelhető.

A hiba előfordulásának aránya úgy vettem észre csökkenthető, ha a "System.Threading.Thread.Sleep()"-et is beiktatom szerver és/vagy kliens oldalon is megfelelő értékkel.

A már csatlakozott játékosok mozgatásával ("move" parancsával) nincs semmilyen gond, pedig azt küldik egyszerre valós időben szinte minden pillanatban (nem iktattam be még FPS korlátot), ettől nem akad ki a szerver. Gondolom én valamilyen ellenőrzést kéne bevezetni a szerver-kliens között az új vagy éppen eltávolítandó elemek érzékeltetésére. Csak azt nem tudom, mikor az említett problémák egyike bekövetkezik, akkor szerver vagy kliens oldalon lehet-e a probléma? Mintha szerver odalon beragadna az üzenet időnként, és többször küldené el a kliensek egy részének, vagy pedig kliens oldalon nem frissül a beérkező üzenet, és többször addol...Nem tudom jobban elmagyarázi. Már arra is gondoltam ha online történne mindez 10 vagy 10+ playerrel, akkor nem fordulna elő a hiba, mert az a bizonyos szintű lagg megakadályozná hogy mindenki egy pillanatban küldjön üzenetet. Milyen technikák vannak erre?

ui: A legmegbízhatatlanabb metódust csak mozgatásnál használom (Unreliable), a hozzáadás, eltávolítás vagy fontosabb infó az mindig legmegbízhatóbb (ReliableOrdered).

   
Pretender - Törzstag | 2498 hsz       Online status #202284   2014.03.31 08:30 GMT+1 óra  
Konkrét indokot nem tudok mondani, hogy miért nem így szokták csinálni. Talán csak annyi, hogy megnövekedik az adatforgalom, illetve a szerializálás is sokkal lassabb. Míg integer számok esetén csak little-endian <-> big-endian konverzióra kell figyelni, stringek esetén először szerializálni kell, majd deszerializálni a szöveget. Néhány playerig valószínűleg nem vesz észre különbséget az ember egyébként, szóval még akár működhet is. Nyilván ilyenkor azért tudni kell, hogy ha pl. floatokat küld az ember, akkor lesznek a küldő és fogadó oldalon eltérések. Ugyan nem túl nagyok, szóval, ha nem számít, akkor jó.

   
Pixi - Tag | 205 hsz       Online status #202280   2014.03.30 22:58 GMT+1 óra  
Ti mennyire tartjátok jónak a string splittelését hálózati értékek átadására? Mondjuk egy kisebb, de mozgalmasabb játék esetében? Több helyen a byte-os, azon belül enumerátoros megoldásokat láthatom a különböző adatcsomagok küldésére, fogadására és értelmezésére, valamint érték átadására...de mi van akkor, ha átküldök egy komplett stringet (hosszabb sor), majd ott szóközzel el van választva minden? Az első szó mindig megmondja mit kell csinálni, a második pedig hivatkozna az aktív elemek megfelelő index jelöltjére vagy nevére, vagy egyből adattagra...a többi az érték átadás...azon kívül, hogy ez nagyobb adatforgalmat generálhat így, van más rossz mellékhatása? Én most konkrétan a LidgrenNetwork.dll -t használom, ez UDP-s és ez tűnik legjobb megoldásnak .NET -es környezetben...

Csak egy nagyon egyszerű példa (most tanulgatom), legyen szerver oldali kódrészlet:

Kód:
using Lidgren.Network;
using .......
.....
..
if ((incmsg = Server.ReadMessage()) != null)
{
    switch (incmsg.MessageType)
    {
        case NetIncomingMessageType.ConnectionApproval:
        case NetIncomingMessageType.Data:
            {
                string[] pieces = incmsg.ReadString().Split(' ');
                if (pieces[0] == "connect")
                {
                    incmsg.SenderConnection.Approve();
                    ...
                    ...
                    ...
                    label2.Text = Server.ConnectionsCount.ToString();
                }
                else if (pieces[0] == "disconnect")
                {
                    incmsg.SenderConnection.Disconnect("bye");
                    ...
                    ...
                    ...
                    label2.Text = Server.ConnectionsCount.ToString();
                }
                else
                {
                    if (pieces[0] == "add"..."remove"..."move")
                    {
                       for (int i = 0; i < p.Count; i++)
                       {
                           if (p[i].con == incmsg.SenderConnection)
                           {
                            ......akármi......
                            p[i].adattag_a = pieces[1];
                            p[i].adattag_b = pieces[2];
                            .....
                            ..
                           }
                       }
                    }
                 } 
              }
            break;
        case NetIncomingMessageType.StatusChanged:
        default:
            break;
    }
    Server.Recycle(incmsg);
}


public class Player
{
    public NetConnection con;
    public Label l;
    public string name;
    public int x, y;

    .....
    ...
    .


(Tudom itt a Connect meg a Disconnect is a "Data"-ban lett megoldva az egyszerűség kedvéért)

   
Pretender - Törzstag | 2498 hsz       Online status #200991   2014.02.11 07:02 GMT+1 óra  
Más elven működik a c# meg a c++, nem biztos, hogy érdemes összehasonlítani.

   
Viperion - Tag | 540 hsz       Online status #200977   2014.02.10 21:39 GMT+1 óra  
Itt van ez a kód:
Script1
class Program {
private static void Main() {
Other x = new Other();
}
}

Script2
class Other { }

Ez c++ ban csak úgy működne,ha a script2 be volna includelve a script1 be.
De ebben a c# kódban ez nem történik meg és mégis működik,lefordul?

Csharp ban automatikusan betöltődik az egyik fájl a másikba?

   
Parallax - Tag | 574 hsz       Online status #200249   2014.01.09 11:37 GMT+1 óra  
Kód:
foreach (int value in arr)
    ...;


Működik de két egymásba ágyazott for ciklus olvashatóbb.
Kód:
for (int x=0; x < arr.GetLength(0); x++)
{
    for (int y=0; y < arr.GetLength(1); y++)
    {
        int value = arr[x, y];
    }
}


Persze akkor, ha erre gondoltál "2D tömb" alatt:
Kód:
int[,] arr = new int[2, 5];

Ezt a hozzászólást Parallax módosította (2014.01.09 11:47 GMT+1 óra, ---)

   
Viperion - Tag | 540 hsz       Online status #200238   2014.01.08 19:37 GMT+1 óra  
A gyakorikerdesek.hu weboldalon nem kapok korrekt választ arra,hogy eggyetlen egy foreach ciklussal,hogyan lehet végigmenni egy egész 2D tömmbön.Egyébként szerintem sehogy.

Ilyen tömbön:
Int[][] arr = new int[2][5];
Egyenetlen(jagged) tömb.

Ezt a hozzászólást Matzi módosította (2014.01.08 20:22 GMT+1 óra, ---)

   
Parallax - Tag | 574 hsz       Online status #200132   2014.01.01 17:43 GMT+1 óra  
Idézet
Viperion :
De parallax ha a GC.SuppressFinalize(this) törli a managed erőforrásokat a Dispose() metódusban,akkor miért van szükség erre a kódrészletre a CleanUp()-ban?
If(disposing) { felügyelt erőforrások törlése }


Például írhatok egy ilyet is:
Kód:
If(disposing)
{
    base.Dispose();
}


Idézet
Viperion :
Én úgy tudom,hogy a suppressfinalize csak annyit csinál,hogy megmondja a gc nek azt hogy erre az objektumra már nem kell destruktort hívnia.Tehát managed memóriát ez nem szanadítt fel vagy mégis?
Nem kell az oda ha a suppressfinalize felszabadítja a managed memóriát.


A suppressfinalize-nál megjelölődik szemétnek az objektum és amikor sorra kerül nem hívódik meg a "desktruktor". Managed memóriát sehogy nem lehet felszabadítani, ezt a .NET kezeli.

   
Viperion - Tag | 540 hsz       Online status #200127   2014.01.01 15:54 GMT+1 óra  
De parallax ha a GC.SuppressFinalize(this) törli a managed erőforrásokat a Dispose() metódusban,akkor miért van szükség erre a kódrészletre a CleanUp()-ban?
If(disposing) { felügyelt erőforrások törlése }

Én úgy tudom,hogy a suppressfinalize csak annyit csinál,hogy megmondja a gc nek azt hogy erre az objektumra már nem kell destruktort hívnia.Tehát managed memóriát ez nem szanadítt fel vagy mégis?
Nem kell az oda ha a suppressfinalize felszabadítja a managed memóriát.

   
Parallax - Tag | 574 hsz       Online status #200124   2014.01.01 14:36 GMT+1 óra  
Viperion: Azt írtad már több C++ könyvet is kitanulmányoztál. Akkor biztosan tudod hogyan kell dinamikusan memóriát foglalni és mi az a pointer és, hogy valahol a lefoglalt területet kézzel fel kell szabadítani a delete-el. Ez a natív, vagy .NET-es szóhasználattal unmanaged futtatás.

Mivel .NET-nél nincs delete, de előfordulhat, hogy natív objektum keletkezik egy managed objektumban natív DLL-es hívás segítségével azt kézzel fel kell szabadítani ezért van ez a dispose patternes dolog. Ezúttal a delete utasítást a Dispose()-al tudjuk szimulálni, ahol a managed objektumot a GC.SuppressFinalize(this);-el "töröljük", a natív objektumot pedig a megfelelő natív DLL-ben lévő hívás segítségével. A "destruktor" mindeképpen lefut .NET-nél, de fel kell készíteni arra, hogyha a Dispose()-t nem hívjuk meg, akkor is törlődjön a natív objektum.

A különbség az, hogy a "destruktor" lefutása .NET esetében nem determinisztikus, vagyis mivel nincs delete utasítás a GC egyszer csak kitörli azokat objektumokat, amik szemétnek vannak megjelölve valamilyen szisztéma alapján, amit az aktuális .NET verzió algoritmusai döntenek el. Ennélfogva a hozzá tartozó unmanaged/natív objektum élettartama is "véletlenszerű" lesz.
A közvetlen Dispose() hívással annyit lehet elérni, hogy legalább az unmanaged objektum azonnal felszabadul a .NET-es objektumot pedig megjelöljük szemétnek és majd egyszer csak törlődik. Ez csak a natív objektumok kezelését teszi természetesebbé, hiszen ott megszoktuk, hogy akkor törlődik valami, amikor a programozó akarja és nem csak úgy találomra.

Ezt a hozzászólást Parallax módosította (2014.01.01 14:42 GMT+1 óra, ---)

   
Matzi - Szerkesztő | 2519 hsz       Online status #200122   2014.01.01 11:54 GMT+1 óra  
Viperion:
Unmanaged objektum például az, ha meghívsz egy C++ban írt dll-ben lévő kódot. Arról semmit nem tud C#, szóval nem managelt.Az általa lefoglalt memóriát ha nem szabadítja fel automatikusan, akkor neked kell gondoskodnod róla.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Frissebbek | Korábbi postok
[1] > 2 < [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [46]