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

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2189
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] [50] [55]
Lord_Crusare - Törzstag | 1290 hsz       Online status #174631   2012.02.12 19:52 GMT+1 óra  
Egyszerű, a képre kört, csillagot, vagy bármi más szabálytalan alakzatot rajzolsz, a hátteret pedig átlátszóvá teszed a rajzoló programban. Ezekután négyzetként kirajzolod.

   
Pixi - Tag | 206 hsz       Online status #174626   2012.02.12 18:30 GMT+1 óra  
Sziasztok. Tudom 1x már megkérdeztem csak akkor nem válaszolt rá senki. Szóval XNA-ban alapból van egy kirajzoló négyzet amit megadunk a sprite.batch-nál. De ez ugye négyzet. Van lehetőség teljesen szabálytalan alakú kirajzolást létrehozni? Egyszerűen nem négyzetet akarok mozgatni a textúra atlaszon, hanem pl. egy kört, vagy csillagot, vagy teljesen egy általam megrajzolt lyukat, ami minden más csak nem téglalap vagy négyzet. Ha nincs ilyen, akkor nincs, nem nagy gond.

   
Bukta - Tag | 308 hsz       Online status #170330   2011.12.09 15:46 GMT+1 óra  
Igen ezek a mátrixok mindig megszivatnak, pedig tom, h a sorrend nem mind1. Egyszerűen mindig belekeveredek... De ismét a sikerült megcsinálni. Végre van ütközés bármilyen transzformálás után is . Am csináltam egy teszt winform-ot xna mellé aztán ábrázoltam mindig a "BoundingCircle"-t. Ez a legbiztosabb mindig látom mi a baj. Rectangle-ra is megcsinálom majd a köveztkező körbe, de az még arrább lesz nemlényeg.
Már csak a következő kódot kéne átírni xna-ra:
Kód:
System.Drawing.Drawing2D.Matrix scaleMtx = new System.Drawing.Drawing2D.Matrix(1, 0, 0, 1, 0, 0);
            scaleMtx.Scale(drawed.Scale.X, drawed.Scale.Y);
            System.Drawing.Drawing2D.Matrix rotateMtx = new System.Drawing.Drawing2D.Matrix(
                (float)Math.Cos(drawed.Rotate),
                (float)Math.Sin(drawed.Rotate),
                -(float)Math.Sin(drawed.Rotate),
                (float)Math.Cos(drawed.Rotate),
                0, 0);
            scaleMtx.Multiply(rotateMtx);
            System.Drawing.PointF[] p = new System.Drawing.PointF[1] { new System.Drawing.PointF((drawed.Texture.Bounds.Width / 2f) - drawed.Origin.X,
                (drawed.Texture.Bounds.Height / 2f) - drawed.Origin.Y) };
            scaleMtx.TransformPoints(p);

Itt kisebb a mátrix mint az xna-s mátrix. Azt ugye jól tudom, hogy az M41, M42, M43 és az M44 felel meg az x,y,z,w -nek?
Jah és kösz Asylum a helpet!
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Asylum - Törzstag | 5455 hsz       Online status #170129   2011.12.06 15:06 GMT+1 óra  
eltol(-pozicio) * forgat() * eltol(pozicio)

Ugyanis forgatni az origo korul lehet.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Bukta - Tag | 308 hsz       Online status #170089   2011.12.06 09:44 GMT+1 óra  
Pixi: sztem a Color-ból felépített pálya lenne az első lépés. Egy kis Math.Sin() igazítást végezve az X tengely mentén. Aztán onnéttől már lehet lesz egy jó ötleted.

Mindenki:
Ez a matek része a jatekprognak már az agyamra megy. Egy ... pontot akarok elforgatni már n ideje, de így csak a hajam fog kihullani. Először próbálkoztam a sima (x: x + Cos(rad) * offsetX, y : y + Sin(rad) * offsetY) párossal sokféleképpen megvariálva, de semmi. aztán a beépített Matrixokkal probálkoztam:
Kód:
public void OnRotation(..., ...)
{
      // drawing.Position: 100,100    -       circle.Position: 122.5,100
      //float x = (float)(drawed.Position.X - (Math.Sin(drawed.Rotate) * 22.5f));
      //float y = (float)(drawed.Position.Y + (Math.Cos(drawed.Rotate) * 22.5f));     
      System.Drawing.Drawing2D.Matrix mm = new System.Drawing.Drawing2D.Matrix(
                (float)Math.Cos(drawed.Rotate),
                -(float)Math.Sin(drawed.Rotate),
                (float)Math.Sin(drawed.Rotate),
                (float)Math.Cos(drawed.Rotate), 0, 0);
       System.Drawing.PointF[] p = new System.Drawing.PointF[1] { new  System.Drawing.PointF
                (drawed.Position.X + 22.5f, drawed.Position.Y) };
        mm.TransformPoints(p);
        circle.Position = new Vector2(p[0].X, p[0].Y);
        if (Rotating != null && HasRotateEvent)
        {
           Rotating(child, e);
        }
}

Látható, hogy már a System.Drawing-ot is bevetettem, hátha az XNA-s mátrix szivat csak meg, de nem ám. Mindegyik mártix mást ad eredényül. A koverzió a 2 mártix között sztem ez:
Kód:
Matrix m = new Matrix((float)Math.Cos(drawed.Rotate), -(float)Math.Sin(drawed.Rotate), 0, 0,
                (float)Math.Sin(drawed.Rotate), (float)Math.Cos(drawed.Rotate), 0, 0,
                0, 0, 0, 0, 0, 0, 0, 0);

Ez lenne az XNA-s megfelelője a fenti mátrixnak. De a lényeg most, hogy még véletlenül se a megfelelő forgatást végzi el a kör középpontján. Valaki segítesen mert vagy lesz a vége
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Pixi - Tag | 206 hsz       Online status #169119   2011.11.21 15:51 GMT+1 óra  
Hali mindenki.

Egy olyan kérdésem lenne, hogy a terep (terrain) stílusú játékok pályáit hogyan hozzák létre? Pontosan ilyenre gondolok:

http://www.youtube.com/watch?NR=1&v=icfSr_kbuDg

Most az egyszerűség kedvéért csak gondolok sima Rectangle ütközésre. Tehát nekem van már egy kész Sprite amit betöltök, és szeretném, ha egy kocka belelóg, akkor azt a részét törölje csak, mint amikor egy képszerkesztőben áthúzzuk a radírt valami felett. Ilyen esetben mi a teendő? Pixelekre bontunk fel egy sprite-ot? Ha igen akkor hogyan?

   
bit.0x8000 - Törzstag | 574 hsz       Online status #168217   2011.11.08 00:20 GMT+1 óra  
Idézet
Parallax :
Linuxra .NET és XNA kicsit olyan jobb kézzel bal fület vakarás.


Attól függetlenül plusz egy lehetőség, főleg, ha a már kész játékokat módosítás nélkül (vagy csekély módosítással) lehet fordítani...

Idézet
Parallax :
Egyébként a Gartner felmérései szerint a Linux piaci részesedése kemény 1.8%.


Ezzel meg az a baj, hogy ez nem homogén piac, ha pl. a Humble Bundle statisztikáit nézed, ott az az 1.8% valahogy mégis jelentős bevételt generált...
   
Parallax - Tag | 591 hsz       Online status #168216   2011.11.07 22:59 GMT+1 óra  
Linuxra .NET és XNA kicsit olyan jobb kézzel bal fület vakarás. Egyébként a Gartner felmérései szerint a Linux piaci részesedése kemény 1.8%.

   
bit.0x8000 - Törzstag | 574 hsz       Online status #168200   2011.11.07 18:54 GMT+1 óra  
   
Bukta - Tag | 308 hsz       Online status #165463   2011.09.27 14:40 GMT+1 óra  
Akkor nincs benne nagy varázslat. Am lehet 3D-s is lesz azt ott is van magasság(térkép | pont). 2Dbe az a baj, hogy akkor komoly grafikus kell aki meg tudja csinálni a pályát, meg a random map generálása is necces, meg a perspektíva is problem, állandó méretezés... Hú ez sok .Igazad van Matzi, mindenképp 3D lesz.
Thx
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Matzi - Szerkesztő | 2521 hsz       Online status #165461   2011.09.27 14:13 GMT+1 óra  
Bukta:

Sima magassag terkep es offszeteles. Megnezed hova esik a karakter a terkepen, az ottani magassag perspektivaval torzitott mertekevel eltolod a poziciojat. Meg esetleg figyelsz ra, hogy meredek teruleteken lassabban mozogjanak azt kesz. A terepet meg ha fixen 2D akkor render, vagy valami kis ugyeskedes a shaderben, nem egy etvasz. Ezt a mennyiseget akar 3Dben is ki lehet tenni.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Bukta - Tag | 308 hsz       Online status #165458   2011.09.27 13:57 GMT+1 óra  
sztetek 2d-be hogy lehet megoldani az ilyen dimbes-dombos map elkészítését? Mert a képen ugye az emberkék igazodnak a talajhoz is... Meg az ilyen kanyarokat, hegyeket is hogy a fenébe csinálták meg ?
Eddig arra jutottam, hogy a fény, árnyék trükközésével meg lehet csinálni, de vannak kétségeim. Meg gondoltam arra is, hogy a pályát csak egy grafikus megcsinálta és vmiféle magasságtérkép alapján igazodnak az emberek. És az utolsó ötletem az a gömb effekt, ami képernyőkímélőként is volt még vmelyik windowson.
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Kuz - Törzstag | 4455 hsz       Online status #164539   2011.09.20 06:56 GMT+1 óra  
Idézet
Pixi :
"Ha csak belehánysz egy List-be x db ojjektumot, amik random pozícióban lehetnek," - lényegében nálam pont ez az eset áll fent.



Na látod pont ez a hozzáállás az, amit le kell vetkőzni mielőbb. Te formáld a problémádat, ne az formáljon téged. Az indiaiak kódolnak csak az első ötlet alapján, mindenki más átgondolja a problémát, és megpróbálja azt arról az oldalról megközelíteni, ami a legjobb a felhasználó számára. Te jelenleg a legegyszerűbb megoldásra törekszel, mert fárasztó bonyolult, de hatásos kódot írni. Ezen előbb, vagy utóbb (inkább előbb) változtatnod kell.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Pretender - Törzstag | 2498 hsz       Online status #164537   2011.09.20 05:45 GMT+1 óra  
a sprite batch instancinges módszerrel rajzol, tehát ha értelmesen hívod a draw-t (pl. textúra szerint rendezve), akkor nem lesz az lassú... képekről meg téglalapokról van szó

Mellesleg én úgy csináltam, hogy van egy screen rect-em, ami alapból {0,0,width,height}, egy "kamerám", aminek van egy pozíciója. Miután frissítettem a kamera pozícióját, eltolom a sprite-ok pozícióját, frissítem a "bounding rectangle"-jüket (= {x,y,texwidth, texheight}) és erre a két rectangle-re hívom meg azt a hihetetlenül bonyolult 4 if-ből álló metódust.

Namármost: lehet olyannal trükközni, mint 3d-ben az octree például:
Fogod a pályát, felosztod mondjuk 4 nagy rectangle-re. Mindegyiknek lehet gyereke és szülője is, ezeknek most az utóbbi nincs.
Ezt a 4 nagy rectnagle-t felosztod megint 4-4-4-4-re úgy, hogy nyilván a nagynak a gyerekei, így a gyerekek szőlője nyilván a 4 nagy. És így tovább...
Így amikor vizsgálod, először a nagy rectangle-kre kell csak megvizsgálni, hogy egyáltalán látható-e, aztán a nagy rectangle-k gyerekeit, stb-stb. Annyi, hogy ebben el kell találni, hogy hány szintre vágod ezt a fát, túl sokra sem érdemes nyilván.

3d-ben is hasonlóan működhet, de nem csak ilyenfajta vágásra használják, hanem az ütközésdetektálás gyorsítására is. Pl. minek számoljunk az 1km-re lévő oszloppal ütközést, ha tuti nincs?

   
fpeti - Törzstag | 1291 hsz       Online status #164536   2011.09.20 01:33 GMT+1 óra  
Pár ezer elemre semmi se túl lassú, ennyivel az egész játékot el lehet készíteni. Ha majd lassú lesz, akkor foglalkozz vele. Addig csak csináld meg az osztályt, ami majd kezeli a térbontást, de egyelőre minden inputra visszaadja az egész listát. pl (pseudo)

Kód:
vmiList& GetObjectsInArea(aabb& a)
{
   return fullList;
}


Ha majd kell, megcsinálod a többi részét is. Ezzel a módszerrel sok most fontosnak, később zavarónak tartott kódtól (és munkától) szabadíthatod meg magad, de előre megvan az 'interface' mindenkinek amivel lekéri az obj listát.
   
Pixi - Tag | 206 hsz       Online status #164531   2011.09.19 23:19 GMT+1 óra  
"Ha csak belehánysz egy List-be x db ojjektumot, amik random pozícióban lehetnek," - lényegében nálam pont ez az eset áll fent.

És ezért gondoltam ami nagyon nincs a játékosom közelében azt minek rajzoljam ki fölöslegesen. Amúgy meg nem gondolkoztam még 3D-n kicsit sem, de ha már megemlítetted tudtommal olyan egyszerűbb megoldás is létezik, hogy nem csak úgy a semmiből hirtelen megjelenik a kép, hanem az előbbi eset történik, tehát megjelenik, de először csak nagyon halványan, azután ha közelítünk felé, akkor egyre jobban látszódik, nem is tudom melyik játékban láttam már ezt, de valahol tutira, lehet éppen a GTA SA, és addig amíg nem látszódik valami ideiglenes ködszerű effekt van ott, mintha ott lenne a látótér vége, mivel az még "messze van" hogy lássuk. Szerintem ez is egy szép megoldás a maga módján, de 2D-nél ez egyáltalán nem játszik szerepet, mert ott ami van a képernyőn azt ki kell rajzolni, ami meg nincs azt nem...

Ezt a hozzászólást Pixi módosította (2011.09.19 23:26 GMT+1 óra, ---)

   
Kuz - Törzstag | 4455 hsz       Online status #164517   2011.09.19 21:53 GMT+1 óra  
Tudni kell, hogy ezek a bizonyos 'blokkok' hogyan épülnel fel. Ha csak belehánysz egy List-be x db ojjektumot, amik random pozícióban lehetnek, akkor meg kell írni - kb 5-6- sor -, hogy a te-féle vágásod gyorsít-e. Célszerű az egyre nagyobb content mennyiség függvényében többször is csekkolni.
Ugyanakkor el lehet azon is gondolkodni, hogy a contenteket be lehet-e rakni egy erre a célra megfelelő adatszerkezetbe, ahol esetleg elérhetnéd, hogy nem minden rendernél 100000000, csak mondjuk 8-10 ojjektumot kell vizsgálnod.
Vegyünk egy roppant egyszerű esetet, van 10 db képed egymás mellett, amik a pályát jelképezik. Ha tudom, hogy 1 kép kitölti a képernyőt, akkor az is biztos, hogy két képnél nem kell többet vizsgálni, mert 8 biztosan nem látszódik egyszerre, csak maximum 2. Ugye két eset van:
- 1 kép látszik teljesen (ilyenkor 9 nem, de ezzel az esettel célszerű nem foglalkozni),
- 1 kép látszik valamekkora arányban, de ekkor az egyik mellett lévő is látszik.
Ha a játékos pozíciója adott, abból mindig meg lehet állapítani, hogy 'melyik kép előtt áll a játékos', tehát már csak azt kell nézni, hogy a kép első, vagy második felénél jár a játékos. Ha az első felénél, akkor a kép előtti kép is látszik, minden más nem. Ha a második felénél jár, akkor a kép utáni kép látszik, és a többi nem.
Ha 10-nél több képed van, megpróbálhatod felbontani blokkokra a listát, így mindig csak egy blokk elemeit kell vizsgálni.
Később aztán, 3D-nél már komolyabb megoldások kellenek, szintérgráf, meg miegymás.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Bukta - Tag | 308 hsz       Online status #164506   2011.09.19 19:37 GMT+1 óra  
Igaz, logikus. De a tesztek nem tudom mit mutatnának. Majd holnap meglesem h melyik a gyorsabb.
Am nem olyan gépre gondoltál ami csak akkor lassul be ha lesujtanak rá de akkor nagyon... Me ha lassu akk nem csak a nehéz feladatokat csinálja lassan és két feladat végrehajtása között ugyanakkora lesz a különbség (10-20-50-100-150-xxx %), mint a gyors gépen... elméletileg, gyakorlatilag nem hiszem
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Pixi - Tag | 206 hsz       Online status #164505   2011.09.19 19:25 GMT+1 óra  
Csak mert néztem egy 3D-s autós játékot XNA-ban lett írva, és látszódott, hogy a távolban egy pillanat alatt előbukkannak a tárgyak, ahogy egy bizonyos távolságon belül esnek az autótól. Gondolom ez egy 2D-s játéknál annyira nem is lesz észrevehető (vagy hát ki tudja majd odáig is eljutok lassan, hogy meglássam), de én úgy vok vele ha már sok a kép, akkor mindig apránként rajzolja ki és törölje is párhuzamban, minthogy egyszerre mindent. Persze ilyenkor a legjobb ha az embernek birtokában van egy eléggé gyenge teljesítményű gép, amivel tesztelni tudja.

   
Bukta - Tag | 308 hsz       Online status #164503   2011.09.19 19:17 GMT+1 óra  
Hát az biztos belassítja a gamét, ha a foreach-ba egy 100000 elemű tömböt kell bejárni De ha a clippelés sokba kerül akkor azt se érdemes x100szor vizsgálgatni. A clippelés alatt most a te if-edre gondoltam. De arra énis kiváncsi lennék, hogy mit csinál a spBatch.Draw ha nincs a képernyőbe a textura. (a tippem az hogy van igazi clip is)
De a WPFbe ha kikapcsiom a clip-et akkor áltólag gyorsabb az app tőle. (WPFbe 100 h van)
Jah és sztem a gpu csinálja a kirajzólást, a gpu meg hamar ledarálja az összes adatot. Én csak akkor foglalkoznék ilyennel ha sok texturám van, vagy ha kevés textura van de a méretük kiteszi a sok kicsi(j)ét. De ezek csak találgatások. Majd valaki expertre kell bizni a témát

Ezt a hozzászólást Bukta módosította (2011.09.19 19:26 GMT+1 óra, ---)
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Pixi - Tag | 206 hsz       Online status #164501   2011.09.19 19:02 GMT+1 óra  
Üdw. újra. Bár még nem jutottam odáig el, de gondoltam megkérdezem: Gyorsabb lesz-e teljesítményben a játék, ha tegyük fel platform játékról van szó, és jó hosszú a pálya, de egyszerre soha se nincs kirajzolva az egész? Úgy értem ha mindig csak a ténylegesen látott képet rajzolom ki...Íme egy példa ahogy gondoltam:
Kód:
            foreach (blokkok blok in blokkok._blokkok)
                if (player.forras_negyzet.X < blok.forras_negyzet.X + 1000 && player.forras_negyzet.X > blok.forras_negyzet.X - 1000)
                spriteBatch.Draw(blokkok.blok_Kep, blok.forras_negyzet, blok.rendeltetesi_negyzet, Color.White);


Az ablak mérete tehát 800x600, így ha csak a vízszintes scroll-t nézzük, akkor ha 1000-el számolok, és ha kicsit ki is sétálna a játékos a képernyőből még akkor sem történne az, hogy egyik oldalt eltűnne a kép. De a kérdésem, hogy teljesítményileg ez a módszer kedvező-e a játékban? Valójában minden ott volna, csak a textúrája láthatatlan. Vagy az XNA alapból null-nak érzékeli azt a Sprite-ot ami kilóg a képernyőből? Szóval fölösleges ezt megcsinálni így, vagy nem?

   
Parallax - Tag | 591 hsz       Online status #163000   2011.09.08 07:37 GMT+1 óra  
Milyen reklámok ezek, hol? Lehet másik internetet nézünk. A mintapéldákat, meg csak a retardáltak akarják úgy használni, hogy belinkelik a projectbe és minden működik. Ugyanezt a DirectX-el is megcsinálja meg mindennel, nincs különbség. És ott is ugyanolyan használhatatlanok élesben, mint XNA-nál.

Mint mindennél azok járnak jól, akik értenek a programozáshoz. WP7-en muszáj mindenkinek ezt használni és jóval könnyebb, mint mondjuk Androidon C++ al OpenGL ES-el szenvedni, ahol gyakorlatilag 0 dokumentáció áll rendelkezésre, nem beszélve a példákról.

   
Pretender - Törzstag | 2498 hsz       Online status #162997   2011.09.08 05:51 GMT+1 óra  
Már melyik része?

   
Ferke - Tag | 27 hsz       Online status #162927   2011.09.07 20:48 GMT+1 óra  
Idézet
Lord_Crusare :
Pofon egyszerű. A Microsoft nem csak azt ígéri, hogy az XNA-val azonnal és könnyen játékot tudsz készíteni, hanem ráadásul azzal is kecsegtet, hogy amit készítesz, az azonnal szép lesz és jó lesz, nincs tanulás fázis. Hisz ott van a menő versenyautós példa, az is milyen remekül fest, nem? Sőt, tele a net példákkal, ha elakadsz, azok kisegítenek.

Valójában azonban a C# / XNA kombóhoz is kell tudni programozni, sőt, engine-t is kell írni, mert az XNA önmagában nem engine. Lehet, hogy itt sokan közülünk kisujjból kódolnak le egy ilyen alap motort, de a kezdő, aki először lát életében kódot, nem valószínű. Ebben a folyamatban a példakódok sem segítenek, sőt, inkább ártanak, mert az XNA-s hivatalos példákból nem lehet összeollózni egy ép-kéz-láb engine-t, ráadásul a legtöbb borzalmasan van megírva (beleértve az említett autóversenyes példaprogramot is), olyan hibákkal és assembly kódrészletekkel (!) tűzdelve, hogy azt egy kezdő egész biztosan nem fogja használni.

Szóval nem tudom, mi volt a Microsoft célja ezzel a reklámozással, de ha el akarták venni a lelkes kezdők életkedvét, akkor mission accomplished.



...és milyen igaz...

   
Parallax - Tag | 591 hsz       Online status #162759   2011.09.06 21:11 GMT+1 óra  
Idézet
Asylum :
Akkor mért nem az irrlicht, ogre, stb. topicok vannak tele mindig ilyenekkel?


Ha a hivatalos fórumokra gondolsz akkor ott is van rengeteg ilyen, hogy majd ő letölti a zendzsínt és megírja a krájzis mmo fps rpg gta Sőt C++ al is valaki így indul neki, de szerintem itt ezt nem kell különösebben elemezni láttunk már ilyet.

   
Lord_Crusare - Törzstag | 1290 hsz       Online status #162756   2011.09.06 20:54 GMT+1 óra  
Pofon egyszerű. A Microsoft nem csak azt ígéri, hogy az XNA-val azonnal és könnyen játékot tudsz készíteni, hanem ráadásul azzal is kecsegtet, hogy amit készítesz, az azonnal szép lesz és jó lesz, nincs tanulás fázis. Hisz ott van a menő versenyautós példa, az is milyen remekül fest, nem? Sőt, tele a net példákkal, ha elakadsz, azok kisegítenek.

Valójában azonban a C# / XNA kombóhoz is kell tudni programozni, sőt, engine-t is kell írni, mert az XNA önmagában nem engine. Lehet, hogy itt sokan közülünk kisujjból kódolnak le egy ilyen alap motort, de a kezdő, aki először lát életében kódot, nem valószínű. Ebben a folyamatban a példakódok sem segítenek, sőt, inkább ártanak, mert az XNA-s hivatalos példákból nem lehet összeollózni egy ép-kéz-láb engine-t, ráadásul a legtöbb borzalmasan van megírva (beleértve az említett autóversenyes példaprogramot is), olyan hibákkal és assembly kódrészletekkel (!) tűzdelve, hogy azt egy kezdő egész biztosan nem fogja használni.

Szóval nem tudom, mi volt a Microsoft célja ezzel a reklámozással, de ha el akarták venni a lelkes kezdők életkedvét, akkor mission accomplished.

   
Asylum - Törzstag | 5455 hsz       Online status #162749   2011.09.06 20:23 GMT+1 óra  
Akkor mért nem az irrlicht, ogre, stb. topicok vannak tele mindig ilyenekkel?
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Parallax - Tag | 591 hsz       Online status #162723   2011.09.06 15:42 GMT+1 óra  
Idézet
Asylum :
Azért mert a májkroszoft szerint ezzel lehet játékot csinálni! Söt ez az ikszená ez pont játékfejlesztésre Van! Programozni? Ugyan már.

szerk.: ez nem a c# és nem az xna ellen szól, hanem az idióta reklámozás ellen.


Szerintem mindenhez ugyanígy állnak hozzá, tök mindegy milyen keretrendszer, vagy egine, vagy bármi, legalábbis ezt vettem itt észre. Büdös a munka és a tanulás, rögtön eredmény kell a semmiből. PD Software eredmények a semmiből.

   
Asylum - Törzstag | 5455 hsz       Online status #162721   2011.09.06 15:37 GMT+1 óra  
Azért mert a májkroszoft szerint ezzel lehet játékot csinálni! Söt ez az ikszená ez pont játékfejlesztésre Van! Programozni? Ugyan már.

szerk.: ez nem a c# és nem az xna ellen szól, hanem az idióta reklámozás ellen.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Pretender - Törzstag | 2498 hsz       Online status #162720   2011.09.06 15:29 GMT+1 óra  
Látom hiába írtam bármit is, ugyan olyan ronda maradt a kód
miért mindenki mmofpsrpgtps-t akar csinálni elsőre, és nem tanul programozni?

   
Kuz - Törzstag | 4455 hsz       Online status #162718   2011.09.06 14:20 GMT+1 óra  
Vegyük észre (próbálom tagolni, hogy jobban feltűnjön):

if (
blok.forras_negyzet.Intersects(
blok.forras_negyzet))

Röviden, ha A tartalmazza A-t, akkor töröld A-t... Azaz, ahogy te is mondtad:
"egyszerűen megsemmisíti az egészet, mintha Clear() parancsot adnék neki"

Namármost, ha az egész példát jól értelmezem, te minden ütközésdetektálásnál létrehozol egy maximum ugyanakkora listát, mint az eredeti, majd ez alapján törlöd az eredetit, ahol kell? Mit szólsz egy ennél egyszerűbb megoldáshoz, pl:

Kód:
int blockIndex = 0;

while(blockIndex < _blokkok.Count)
{
   int targetIndex = 0;

   while(targetIndex < _blokkok.Count && !_blokkok[targetIndex].Intersect(_blokkok[blockIndex]))
      if(targetIndex != blockIndex) //ezt biztos lehet okosabban is szűrni :D
         targetIndex++;

   if(targetIndex <_blokkok.Count)
      _blokkok.RemoveAt(blockIndex);
   else
      blockIndex++;
}

Vagy valami ilyesmi, most nincs időm átnézni, fejből ilyesmi jött elsőre.

Ja és apróság, de foreachnél fölösleges ez az if:
Kód:
if (torles.Count > 0)
                 foreach (blokkok blok in torles)

Ezt a hozzászólást Kuz módosította (2011.09.06 14:51 GMT+1 óra, ---)
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Pixi - Tag | 206 hsz       Online status #162714   2011.09.06 13:42 GMT+1 óra  
Húúú NAGYON KÖSZÖNÖM ISTEN VAGY!!! 2. próbálkozásra sikerült

   
Matzi - Szerkesztő | 2521 hsz       Online status #162712   2011.09.06 13:26 GMT+1 óra  
Pixi:
Két foreach ciklust teszel egymásba, és minden lépésben ellenőrzöd, hogy nem önmagával próbál e ütközni.
Valami olyasmi lesz, hogy:

Kód:
  foreach (blokkok A in _blokkok)
    foreach (blokkok B in _ blokkok)
      if (A != B && A.intersects(B))
        ....

Ez persze kicsit pazarlás, mert minden párra kétszer nézi meg, egy sima for ciklussal ki lehet ezt küszöbölni.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Pixi - Tag | 206 hsz       Online status #162711   2011.09.06 12:58 GMT+1 óra  
Akadt egy kis probléma a saját lista elemeivel. Ha két különbözővel csinálom akkor persze működik. Pontosabban arról van szó, ha olyasmit akarok csinálni, hogy egy lista egy elemét akarom ütköztetni a saját lista egy másik ugyanolyan elemével, akkor egyszerűen megsemmisíti az egészet, mintha Clear() parancsot adnék neki, pedig nem ezt csinálom és nem is ez lenne a cél. Vagy lehet csak nem ismerem hogyan szokás ilyenkor a feltételt megírni:

Kód:
        List<blokkok> _blokkok = new List<blokkok>();
        List<blokkok> torles = new List<blokkok>();

       public blokkok ..............

            foreach (blokkok blok in _blokkok)
            {
                 blok.forras_negyzet = new Rectangle(........);

                 if (blok.forras_negyzet.Intersects(blok.forras_negyzet))   // itt van a gond, ezt nem tudom hogy szokás ilyenkor megadni
                    torles.Add(blok);
            }

            if (torles.Count > 0)
                foreach (blokkok blok in torles)
                    _blokkok.Remove(blok);


Most (csak) gondolom az a baja, hogy az if-en belül úgy adtam meg a feltételt, mintha egy elem saját magát ellenőrizné, így mintha önmagát detektálná, vagyis a saját forrás négyzetét, és így mindegyik elem törli önmagát. De hogyan lehet ilyenkor azt megadni, hogy ha egy saját magával azonos másik elemmel ütközik (és ne egymagát ellenőrizze ilyenkor) csak az a kettő darab semmisüljön meg és ne az összes? Mert itt eleve úgy vannak betöltve, hogy nem is ütközik egymással egyik sem, mégis törlődnek. Lentebb amit írtam kódot, ott észre sem vettem, mert két külön listával csináltam az ellenőrzést, és úgy tökéletesen működött.

   
Ferke - Tag | 27 hsz       Online status #162459   2011.09.03 18:31 GMT+1 óra  
Idézet
Pretender :
Ha nem kell nagyon himbálóznia, akkor csinálhatod azt is, hogy a karakterhez csinálsz egy csontot, amin le van animálva a fegyver mozgása (az a himbi-limbi), és ahhoz a csonthoz illeszted hozzá a fegyvert. Van ilyen sample is apphubon. (baseball-ütő a kezében)



Kössz a tippet, tuti megnézem
Meg is van : Skinned Model Extensions Tutorial

   
Pretender - Törzstag | 2498 hsz       Online status #162458   2011.09.03 18:26 GMT+1 óra  
Ha nem kell nagyon himbálóznia, akkor csinálhatod azt is, hogy a karakterhez csinálsz egy csontot, amin le van animálva a fegyver mozgása (az a himbi-limbi), és ahhoz a csonthoz illeszted hozzá a fegyvert. Van ilyen sample is apphubon. (baseball-ütő a kezében)

   
Ferke - Tag | 27 hsz       Online status #162453   2011.09.03 16:48 GMT+1 óra  
A koncepcióm az volna, hogy két fegyvere van a játékosnak, amit cserélgethet...Amit nem használ azt a hátára dobja és az majd ott elhimbálódzik...
Szerintem, akkor külön leanimálom a kettőt és hozzáillesztem a karakterhez, de lehet, hogy tényleg az lesz, hogy vagy egy hátizsákban eltűnik, vagy egyszerűen magára csatolja .

   
Pretender - Törzstag | 2498 hsz       Online status #162396   2011.09.03 10:16 GMT+1 óra  
Az ilyen tárgyakat, mint hogy fegyver, sisak, ilyesmi (ha cserélhető érdemes külön kezelni. Vagy úgy, ahogy mondtad, hogy leanimálod előre a fegyverét is és csak "hozzáilleszted", vagy fizikát használva ütközteted a mozgó játékossal. Ha meg a kézbe akarod illeszteni, az egyszerű, mert csak hozzá kell "kapcsolni" egy csonthoz

   
Parallax - Tag | 591 hsz       Online status #162394   2011.09.03 10:11 GMT+1 óra  
Idézet
Ferke :
Nah újra segítségért gyüttem...
Van egy animációm (egy futó karakter)...és azt szeretném csinálni játék alatt, hogy felvesz egy fegyvert...és fut vele... Nah és nincs ötletem, mert a fegyver a karakter hátán lenne és himbálózna futás közben a szíjon....Akkor azt, hogy egyszerűbb XNA alatt? Külön animáljam le a fegyvermozgást és csatoljam (pozicionáljam) a karakter hátára??? Vagy a fegyver felvétel után rögtön kezdjek el hasznáni egy teljesen új animációt amiben már a karakter és a fegyver egyszerre megjelenik?
Lehet hogy valami nagyon alap kérdést tettem fel...ezért ezer bocs .
Kössz előre...


Unreal-ban például csak van egy hátizsákja és a fegyver eltűnik. Nem kell ezt ennyire túlbonyolítani. De ha annyira kell, hogy himbálódzon és nincs 26 féle fegyvere csak ez, akkor a karakter animációba belerakod. Ugyanígy, ha van a fején egy himbilimbi, vagy mitudomén, azt is, mielőtt még ez lenne a következő kérdés.

   
Ferke - Tag | 27 hsz       Online status #162389   2011.09.03 08:30 GMT+1 óra  
Nah újra segítségért gyüttem...
Van egy animációm (egy futó karakter)...és azt szeretném csinálni játék alatt, hogy felvesz egy fegyvert...és fut vele... Nah és nincs ötletem, mert a fegyver a karakter hátán lenne és himbálózna futás közben a szíjon....Akkor azt, hogy egyszerűbb XNA alatt? Külön animáljam le a fegyvermozgást és csatoljam (pozicionáljam) a karakter hátára??? Vagy a fegyver felvétel után rögtön kezdjek el hasznáni egy teljesen új animációt amiben már a karakter és a fegyver egyszerre megjelenik?
Lehet hogy valami nagyon alap kérdést tettem fel...ezért ezer bocs .
Kössz előre...

   
Parallax - Tag | 591 hsz       Online status #162374   2011.09.02 23:07 GMT+1 óra  
Ja, hogy az ellenseg is egy Game típus volt. Ezen az apró ténye át is siklottam, de amúgy az egész kód úgy ahogy van kukázandó az remélem azért érezhető.

   
Pixi - Tag | 206 hsz       Online status #162372   2011.09.02 23:00 GMT+1 óra  
Na kedves fórumtársak, a fene gondolta volna, hogy így éjszaka kómásan felkelek (nem tudom miért), odaülök a gépem elé, még szinte fényérzékeny is vagyok a kómától, belemegyek az "ellenseg.cs" fülbe, majd úgy egész véletlen kíváncsiságból (mivel másra nem tudok már gondolni) kikommentezem eme kedves sorból ezt a részt hogy:

Kód:
    public class ellenseg  //: Microsoft.Xna.Framework.Game


Aztán tadam NEM FAGY LE!!! MŰKÖDIK!!!!! TÖLTHETEK EZERREL MINDENT!!!

Bocsi hogy ezt is megosztom mindenkivel, de talán egy erre tévedő hozzám hasonló noob-nak is segíteni fog 1x.

   
Parallax - Tag | 591 hsz       Online status #162347   2011.09.02 18:41 GMT+1 óra  
Az már titoksértés lenne, de jót derültünk rajta a főprogramozóval. Rácsodálkoztunk jó kis fél oldalas kódra, hogy mi a jó isten ez, hát egy sima interpoláció. Na de már lehet meg is sértettem a titoktartást, jönnek a fekete ruhás emberek. Mindenesetre C#-ot OOP-t tanulni a videói, meg könyvei kezdőknek jók azt el kell ismerni. Csak aztán tovább kell fejlődni.

   
Kuz - Törzstag | 4455 hsz       Online status #162277   2011.09.02 07:29 GMT+1 óra  
Hát azért megnézném én azt, de az már nem ezen topic témája.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Parallax - Tag | 591 hsz       Online status #162188   2011.09.01 14:46 GMT+1 óra  
Idézet
Kuz :
Hát Hernyák pont az, aki tudja és tanítja. Már ha még tanítja. Fősulin tanárom volt. Majdnem meg tudott szivatni államvizsgán, amikor véletlenül kinevettem, amikor mondta, hogy ő akkor 1 hónap alatt megtanulja a dx-et.


Ja értem, ezek után semmin se csodálkozok. Voltak forráskód részletek a "doksiban". 4-5 soros algoritmust megírt 20-30 sorban, szóval tanárnak lehet jó, de programozni azt nem tud.

   
Kuz - Törzstag | 4455 hsz       Online status #162186   2011.09.01 14:44 GMT+1 óra  
Hát Hernyák pont az, aki tudja és tanítja. Már ha még tanítja. Fősulin tanárom volt. Majdnem meg tudott szivatni államvizsgán, amikor véletlenül kinevettem, amikor mondta, hogy ő akkor 1 hónap alatt megtanulja a dx-et.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Parallax - Tag | 591 hsz       Online status #162174   2011.09.01 14:02 GMT+1 óra  
Idézet
Kuz :
Hernyák-féle anyag? Csak nem Egerben tanultok?


Nem, én csak munkakapcsolatban vagyok vele. Épp migrálom egyik faszányosra sikerült programját. Ami doksit csinált hozzá az valami röhej, na de mindegy. Aki tudja csinálja, aki nem tanítja.

   
Kuz - Törzstag | 4455 hsz       Online status #162171   2011.09.01 13:55 GMT+1 óra  
Hernyák-féle anyag? Csak nem Egerben tanultok?
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Parallax - Tag | 591 hsz       Online status #162144   2011.09.01 10:13 GMT+1 óra  
Pixi: El tudom képzelni, hogy akár ettől is kifagyhat:
Kód:
List<ellenseg> torles = new List<ellenseg>();


Létrehozol egy listát a metódus scope-jába, aztán rögtön meg is szűnik, mindez másodpercenként 60-szor. Nem csodálkoznék rajta, ha a GC-nek előbb-utóbb teli lenne a töke. A másik, hogy az ellensegek lista is simán telítődhet, ha nem rendelkezel végtelen memóriával.

Kitanulmányoztad már a Hernyák féle anyagokat? Azzal kéne kezdeni, mert alapokkal se vagy tisztában.

   
Kuz - Törzstag | 4455 hsz       Online status #162137   2011.09.01 07:39 GMT+1 óra  
De ugye nem írtad át a foreachet for-ra, mert akkor csak indexelési problémád lesz. Ha listából törlünk bizonyos elemeket, akkor a legegyszerűbb megoldás a while használata, ahol az indexet csak akkor növeled, ha nem volt törlés, így ha töröltél valamit, akkor az index marad a helyén, mert a törölt elem helyére "becsúszik" a következő elem.
Amúgy nekem nem elégséges az információ, hogy érdemben válaszoljak.

Azt a static listát meg tűntesd már el onnan. Nem tudom mi célt szolgál, de tuti f***ság.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Frissebbek | Korábbi postok
[1] [2] [3] > 4 < [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55]